Buenos días, soy nuevo en el foro , perdonen si no estoy publicando mi post en el apartado correspondiente .
La cuestión es que me he lanzado al mundillo de Arduino hace tres días.
Y para mi primer proyecto quiero controlar un servomotor un tanto peculiar, no es el típico de 3 cables que recibe señal PWM porque ya tienen driver incorporado.
Este en cuestión es un servo encargado de abrir y cerrar una valvula de escape, se les conoce como EXUP. Tiene 5 cables, 2 de ellos son la alimentación de 12v de la única bobina que tiene, y los otros 3 son para el sensor de posición, todavía no he podido reconocer si es tipo hall o potenciómetro.
Con mi Arduino r4 que todavía lo tengo en la caja, no he encontrado ningún video ni post acerca de ningún servomotor similar.
Por donde debo empezar? Imagino que hacer una lectura de la resistencia dada por el sensor , calibrarlo y demás. Pero, no encuentro el driver adecuado para este servo, algunos videos desmontan drivers de servos de juguete para montarlos en RC , pero al ser este un servo trabajando a 12v, no se si seria adecuado.
Podria controlarlo directamente desde el arduino con mosfets? Hay algún driver para pasar este 5 cables a 3 ?
Espero puedan arrojarme algo de luz, gracias de antemano.
Estoy suponiendo, pero creo que es un motor de DC, por lo tanto deberías usar un puente H para girarlo y una lectura del potenciómetro para saber su posición.
Creo que @PeterKantTropus va por el lado correcto.
Aparentemente (por lo que he leído) tienes 2 cables para alimentación del motor (12V) que cambian de polaridad según avance o retrocede.
Los otros 3 son para el potenciómetro que indica la posición del motor.
Un cable (parece que siempre es azul) que lleva 5V.
Otro para masa (GND).
Y el 3ro. para el cursor.
Los colores varían según el año, y modelo del vehículo solo el azul parece ser una constante.
Agrego:
Parece que la alimentación positiva está compuesta de pulsos a 50Hz y el recorrido completo necesita 100 pulsos.
O sea, para avanzar se envía masa por un cable y los pulsos por el otro.
Para retroceder, se invierte la polaridad de los cables entonces el que era masa ahora recibe los pulsos y el que era positivo (pulsos) ahora está conectado a masa.
Lo que no me queda claro es si los pulsos solo los genera la ECU del vehículo cuando hace el chequeo de la válvula durante la puesta en marcha o es lo mismo en toda situación.
Todavía no lo he desmontado, pero por lo que he estado leyendo parece ser que estos motores vienen sin driver, que un 3 cables habría facilitado mucho el trabajo.
Entonces tenemos un motor CC de bobina única con dos cables de alimentación (12v según manual de la moto) y 3 cables de un potenciometro que según el manual va a 5v.
Por tanto , se necesita un driver de motores dc para alimentar la bobina y poder cambiar el sentido del giro, y el potenciómetro para saber la posición exacta.
Cuando dices que la alimentación positiva esta compuesta de pulsos a 50Hz y que el recorrido es de 100 pulsos a que te refieres? Eso me quiere sonar a un uso en motores tipo stepper, que no es el caso. Lo peor de todo es que este motor encima no tiene tope de giro integrado, pero si que debería tenerlo externamente o sino se rompería el potenciómetro.
Esa info la saqué de alguien que desarrolló un emulador para poder sacar la válvula (como hacen con la EGR en los autos que la traen).
Lo que quiero decir es que el positivo no es 12V de continua por x tiempo sino que la CDI (de Yamaha en este caso) envía en la puesta en marcha un tren de 100 pulsos de 20 mseg (2 seg. en total) para verificar que está el servo conectado y que además se mueve al cambiar la lectura del potenciómetro. Y luego invierte la polaridad de los cables y envía otro tren de pulsos para volver el servo "a cero".
Entiendo que sería algo así:
No pierdas de vista que tiene que trabajar como un servo y que los servos tienen motores de continua, eso no es sorpresa, el tema pasa por controlar la posición.
En particular, esta válvula, forma parte de un servo sistema, el motor es el actuador, el potenciómetro envía la retroalimentación, controlador y servodrive están en la CDi (equivalente a la ECU de un auto).
Por eso no hay solo 3 cables, porque la controladora está separada.
Si desarman un SG90 (por ej.) también van a encontrar 5 cables (o su equivalente), 2 para el motorcito, 3 para el potenciómetro, que van a la plaquita controladora que es la que tiene los 3 cables (Vcc, Gnd y señal de control).
Entonces, el asunto es emular lo que hace la CDi para controlar el sistema, recrear la parte electrónica de un sistema servo.
Buenas tardes.
Lo primero perdonen por la ausencia, he estado desconectado unos días por asuntos personales. Ya retomo el proyecto esta semana, gracias.
Como bien dice MaximoEsfuerzo es un servomotor con sus dos cables de alimentación y su sistema de feedback proporcionado por un potenciometro, abri el motor esta mañana para ver de que se trataba.
Ahora me viene lo más complejo, me he puesto ha trastearlo ya implementando un código con un sistema PID. La cuestión es hacer que dicho motor tenga una mayor precisión a la hora de desplazarse de un punto A al B, puesto que al tener un potenciometro que no es lineal en su recorrido sino que va por secciones me esta complicando un poco la existencia, estoy investigando para ver si podría ponerle uno convencional.
Tampoco se si el motor es el más adecuado para los propositos que tengo con el, la idea es meterle un throttle by wire a un viejo Peugeot 106 con motor de CBR 1000 que estamos montando para una carrera de puerto de montaña del pueblo.
Entonces la idea es poder tirar de los cables del acelerador con un servo o stepper que responda a una señal de un acelerador electrónico. Lo logramos accionar y hacer funcionar, con poca precisión pero moviendolo.
Lo que no entendemos es por que el motor DC este tiene más fuerza en un sentido de giro que en otro. Pongamos que le mando una señal de 1PWN al driver del motor para un sentido de giro. Pues para horario lo mueve bastante fuerte y en antihorario , para equivaler esa fuerza debe generarse un PWN de 80.
Puede ser que la bobina tenga más fuerza en un sentido de giro que en otro?
Y cuando en el código manda 1pwn, a cuantos Hz esta sacandolo? Lo hace de manera generica?