Control de posicion de un motor dc pid arduino

Control de posicion de un motor dc pid arduino

Control de la posición del motor de corriente continua mediante un codificador

El Arduino siempre se ha utilizado para controlar motores. Algunos ejemplos serían el motor de corriente continua, el servomotor y el motor paso a paso. Hoy, vamos a cubrir 2 motores, DC y Servo Motor, que son ampliamente utilizados por muchos aficionados a la electrónica y los fabricantes debido a su simplicidad y funciones.

El Arduino siempre ha sido popular cuando se trata de ejecutar los motores y hoy acabamos de cubrir dos de ella que es usarla para ejecutar un motor de CC y un servomotor. Si usted tiene alguna pregunta sobre cómo conducir un motor de corriente continua o servo usando Arduino, por favor no dude en dejarlos abajo en los comentarios.

Control de posición de un motor de corriente continua mediante un controlador pid

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.

Control de posición del motor de corriente continua pdf

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, depende totalmente de ti si quieres usarlo como el simple motor de corriente continua o quieres usar el codificador, o puedes usar 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, sabrás 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.

Control de posición en bucle cerrado con el arduino

Hola a todos estoy trabajando en la incubadora para hacerla totalmente automática. He utilizado el código adjunto para cambiar la posición de las placas cada 3 horas, ya que es un simple motor de corriente continua, y no tiene control de posición precisa. por lo tanto, la activación del motor durante 2 segundos en el frente y luego por 2 segundos en la inversa no trae el brazo del motor a su posición real (El movimiento en el frente es más que en la inversa para la misma activación de 2 segundos). Así que este método no es la mejor opción.

Al principio el arduino debería mover la mano del motor a uno de los lados (izquierda o derecha) comprobando el estado de los interruptores, si la mano alcanza el interruptor izquierdo, debería retrasar 3 horas y después mover la mano a la derecha hasta que el interruptor derecho sea presionado, y parar allí y esperar 3 horas de nuevo, y entonces mover de nuevo a la izquierda.

como puedes ver, he creado una clase enum con el nombre de MotorPosition para usarla como variable de posición, esto te dará la posibilidad de hacer la variable de tipo MotorPosition y solo aceptará uno de los tres valores (uno, dos, sin nombre)

Acerca del autor

admin

Ver todos los artículos