Arduino pid motor encoder

Arduino pid motor encoder

Arduino pid motor encoder

control de velocidad del motor de corriente continua arduino con codificador

Con un controlador Arduino y un controlador de motor, las aplicaciones para esto podrían incluir un control PID de lazo cerrado o un control de velocidad de motor PWM. Este motor es una opción ideal para proyectos de robots móviles. El eje de salida de cobre, la rosca incrustada y el conector reforzado prolongan enormemente la vida útil del motor.
Si utilizas un Arduino UNO y quieres utilizar el puerto de interrupción 0 (Int.0), necesitas conectar el pin digital D2 en la placa. El siguiente código sólo se utiliza en UNO y Mega2560. Si quieres usar Arduino Leonardo, debes cambiar el pin digital D3 en lugar del pin digital D2.
El valor del código PID se ha establecido como 80, por lo que el motor se estabilizará a unas 80 rpm. Si fuerzas externas como cambios en el voltaje de accionamiento del motor, la resistencia del motor, etc. afectan a la velocidad, el programa ajustará el valor PWM para estabilizar la velocidad de rotación en 80.

arduino pid servo control de posición

Estoy tratando de usar Simulink/MATLAB para crear un control PID con retroalimentación para controlar la velocidad de un Motor DC. El motor DC tiene dos salidas de encoder que es lo que me confunde (Motor Link). Sé que los codificadores son para la retroalimentación, pero no estoy seguro de dónde van estos pines. También estoy usando un controlador L298N para PWM. También tengo un Arduino Mega, que no estoy totalmente seguro de si voy a necesitar? Creo que podría necesitar el Mega para los codificadores, pero estoy esperando a utilizar sólo un componente de Arduino por lo que son tanto un L298N y Mega necesario? ¿O tener ambos facilita el control de la velocidad? ¿Cómo podría ser el diagrama de bloques en Simulink para el control PID con la retroalimentación de los codificadores? Cualquier recurso o consejo será apreciado, gracias, Dalton.
Hola Dalton,Según mis conocimientos, este motor contiene un codificador de cuadratura de dos canales que tiene cuatro conectores y los dos conectores restantes son para la alimentación del motor. En la siguiente imagen, los pines Motor+ y Motor- son para conectar la fuente de alimentación del motor mientras que Sensor Voltage + y Ground son para conectar la tensión de entrada del sensor. Sin embargo, tenga en cuenta que Motor- y Tierra no deben conectarse juntos. La salida puede ser detectada desde los pines Canal A y Canal B. Esta salida será en forma de pulsos.En su programa Arduino, debe mantener una variable de contador porque tales codificadores incrementales no proporcionan un valor absoluto de ángulo o velocidad. Tendrás que sondear estos dos canales y decidir si incrementas o disminuyes la cuenta. La calibración de este conteo dependerá de las especificaciones del encoder. Por favor, lea las siguientes páginas para obtener más información sobre el funcionamiento de los codificadores:http://www.creative-robotics.com/quadrature-introhttps://en.wikipedia.org/wiki/Rotary_encoderYou puede utilizar un IC decodificador HCTL 2022 para evitar este procedimiento y leer directamente los valores de ángulo. Esto le ahorrará la carga computacional pero hará que el circuito sea más complicado. Por favor, consulte la imagen adjunta a este post para el diagrama del circuito de uno de mis proyectos.En cuanto a los requisitos de hardware, necesitará L298N para conducir el motor y un Arduino Mega para implementar un controlador PID. Opcionalmente, es posible que desee utilizar un IC decodificador apropiado.

motor 12v dc con encoder arduino

El PID trata de mantener el PV tan cerca como sea posible del SV.Error = SV-PV El error es la diferencia entre el valor establecido y el valor del proceso y la salida es directamente preposicional al error, por lo que en otras palabras podemos decir que cuanto mayor sea la diferencia entre el SV y el PV mayor será la salida, si el error es positivo la salida es positiva si el error es negativo la salida es negativa. A medida que el PV se acerca más y más al SV, el error se hace cada vez más pequeño, por lo que la salida también se hace cada vez más pequeña, por lo que de esta manera obtenemos una salida limpia y precisa.
Supongamos que te digo que conduzcas un coche sin freno exactamente 1 km en una carretera recta porque no tienes freno, así que el acelerador es todo lo que puedes usar para controlar el coche, así que te subes al coche, pisas el acelerador y aceleras durante un rato y luego sueltas el acelerador para desacelerar y parar gradualmente en el punto de 1 km. PID sabe como manipular la salida antes de alcanzar el SP
entonces de nuevo el micro-controlador invierte el coche y acelera cuando vuelve al punto de 1km suelta el acelerador de nuevo y lo mismo pasa, continua moviéndose hacia atrás debido al impulso y este ciclo se repite una y otra vez.

ejemplo de control de motor de la biblioteca pid de 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.

Acerca del autor

admin

Ver todos los artículos