Control de posicion motor dc con encoder arduino

Control de posicion motor dc con encoder arduino

Control de posicion motor dc con encoder arduino

Control de posición del motor de corriente continua de arduino con potenciómetro

dec_position = (pin_state[8] * 256) + (pin_state[7] * 128) + (pin_state[6] * 64) + (pin_state[5] * 32) + (pin_state[4] * 16) + (pin_state[3] * 8) + (pin_state[2] * 4) + (pin_state[1] * 2) + pin_state[0];

Por ejemplo, si la consigna es 0 grados, el motor gira para alcanzarla. La rotación del motor se ralentiza a medida que su posición «ahora» se aproxima a 0 grados, pero el sistema no está libre de sobregiros. Por lo tanto, incluso 1 grado de rebasamiento causa el valor de error es -359 (punto de ajuste – posición actual) y el motor gira de nuevo para alcanzar la posición deseada.

Arduino pid servo control de posición

El tipo de motor de corriente continua como se puede ver en el diagrama del circuito dado a continuación tiene un codificador incorporado. Por lo tanto, es totalmente a usted si desea utilizarlo como el simple motor de corriente continua o desea utilizar el codificador, o puede utilizar el motor y el codificador juntos al mismo tiempo. Como puedes ver en el diagrama del circuito, los cables de alimentación que son los cables Rojo y Negro no están conectados pero los cables del codificador sí. Para este primer ejemplo, sólo usaremos el encoder para entender lo básico, de esta manera entenderás fácilmente cómo funciona un encoder. Entonces, giraremos el eje del motor a mano para ver las señales de disparo.

Un encoder funciona observando los cambios en el campo magnético creado por un imán unido al eje del motor, a medida que el motor gira las salidas del encoder se disparan periódicamente. Cuando el imán gira en el sentido de las agujas del reloj, la salida «a» se dispara primero, y cuando gira en sentido contrario a las agujas del reloj se dispara la salida «b». De este modo, se sabe exactamente en qué sentido está girando el eje del motor. Esto puede ser muy útil en situaciones en las que se necesita controlar el movimiento de avance y retroceso del motor de CC.

Motor 12v dc con encoder arduino

En el post anterior recopilé información sobre una unidad de deslizamiento de cartuchos tomada de una vieja impresora de inyección de tinta. Como descubrí, la impresora utilizaba un motor de corriente continua común para mover los cartuchos en el eje X, sin embargo, con la adición de un codificador óptico con tira, los cartuchos podrían realizar movimientos precisos. Por lo tanto, quiero interconectar esto con Arduino. La electrónica original de la impresora, como los controladores del motor, no sirvieron (circuitos integrados propietarios sin hojas de datos públicas).

Tuve que accionar el motor con un módulo de puente H L298N y para el codificador construí una PCB que sustituyó a la original utilizada en la impresora. El software no es tan sencillo como se puede pensar. Simplemente no puedo encender el motor hasta que la lectura del encoder sea igual a la posición deseada. Si el motor se detiene repentinamente, no se detendrá el bloque deslizante. Debido a la inercia, sigue moviéndose un poco, incluso con el motor cortocircuitado eléctricamente. El enfoque adecuado requiere un algoritmo de control PID (proporcional-integral-derivativo) que ajuste la velocidad del motor mediante PWM.

7:15motor codificado con arduinonikodem bartnikyoutube – 25 mayo 2019

No estoy del todo seguro de qué motor estás hablando. Has enlazado a un motorreductor que no tiene codificador, pero también mencionas que estás usando un motor «sin usar codificador que ya está conectado».

Tampoco estoy seguro de si tu objetivo es el control de posición o de velocidad. Sin embargo, serías capaz de obtener un control más preciso de cualquiera de los dos si utilizas la retroalimentación del encoder. Hay muchos artículos útiles sobre el control PID en Internet. (Puedes empezar con este artículo de Wikipedia). Podrías considerar revisar nuestra biblioteca de codificadores de rueda, que se describe dentro de nuestra biblioteca AVR C/C++. Este post del foro de Ben explica cómo afinar las constantes del PID.

Estoy buscando un control preciso de la posición y la velocidad para mi motor de corriente continua. En la situación actual, soy capaz de hacer funcionar mi motor hacia adelante, mantenerlo, y hacia atrás, pero todavía necesito controlar la velocidad que necesita ser lenta y la posición que necesita ser hacia adelante de 0 a 90 grados y hacia atrás de 90 a 0 grados.

Dado que ya tienes un motor de corriente continua con escobillas, el uso de codificadores sería una buena manera de obtener un control más preciso sobre la velocidad y la posición. Sin embargo, también podrías considerar el uso de motores paso a paso, que podrían ser más fáciles de usar para un movimiento lento y preciso.

Acerca del autor

admin

Ver todos los artículos