Muestra las diferencias entre dos versiones de la página.
| guias:control_de_motores [2018/05/06 16:52] – Oscar | guias:control_de_motores [2021/04/16 20:41] (actual) – editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | ====== Control de motores con Arduino ====== | ||
| + | <WRAP tip> **Un motor de corriente continua** (denominado también motor DC por las iniciales en inglés direct current) es una máquina que convierte energía eléctrica en mecánica, provocando un movimiento rotatorio, gracias a la acción de un campo magnético. | ||
| + | {{: | ||
| + | |||
| + | Un motor de corriente continua se compone principalmente de dos partes: El estátor (carcasa exterior) crea un campo magnético. El rotor es la parte interior que gira, alimentado con corriente directa a través de delgas, que están en contacto alternante con escobillas fija. | ||
| + | |||
| + | Adaptado de [[https:// | ||
| + | |||
| + | ===== Introducción ===== | ||
| + | |||
| + | Esta página está dedicada al control de motores con Arduino. Específicamente motores de corriente contínua estándar. Existen algunos motores DC especiales como los motores paso a paso o sin escobillas (brushless en inglés) que no serán tratados aquí. Una buena parte de la información servirá para otras plataformas como Raspberry Pi, pero en general las librerías de programación y los esquemas estarán dedicados en exclusiva a Arduino. | ||
| + | |||
| + | Arduino tiene pines de entrada y de salida para comunicarse físicamente con su entorno. Los pines de salida pueden dar una pequeña cantidad de energía que sirve por ejemplo para encender un LED, pero no pueden alimentar a un motor. Para ello necesitamos un circuito que haga de intermediario. Este circuito, el controlador o driver de motores, tomará energía de otra fuente (una pila, batería o equivalente) y siguiendo las instrucciones de Arduino hará funcionar el motor. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Existen muchos drivers diferentes, pero para poder controlar bien un motor necesitamos dos características fundamentales: | ||
| + | |||
| + | * Que permitan invertir el sentido de giro del motor. | ||
| + | * Que permitan graduar la velocidad de giro del motor. | ||
| + | |||
| + | ===== Drivers con Puentes H ===== | ||
| + | |||
| + | El circuito básico que permite las dos funciones que dijimos es un puente H. Un motor DC cambia el sentido de giro cuado invertimos los polos positivo y negativo en sus bornes, y este circuito juega con una serie de interruptores para hacer ese cambio de polaridad. Podemos construir un puente H con cuatro interruptores, | ||
| + | |||
| + | {{: | ||
| + | ===== Señales PWM ===== | ||
| + | |||
| + | Un motor DC está preparado para funcionar a una tensión que nos dará el fabricante. Si le damos una tensión menor girará más despacio, llegando en el extremo a pararse. Así regulamos la velocidad. | ||
| + | |||
| + | Arduino no puede (con excepciones) regular directamente los voltios que salen por un pin, pero puede hacer una pequeña ' | ||
| + | |||
| + | * Arduino puede generar señales PWM y así simular una tensión menor en voltios. | ||
| + | * Esta señal sirve para controlar motores a través de un puente H (¡¡¡con una señal ' | ||
| + | * Los motores DC aceptan esta señal ' | ||
| + | |||
| + | |||
| + | No todos los pines de Arduino pueden hacer esta función [[https:// | ||
| + | ===== Librerías de programación ===== | ||
| + | |||
| + | La programación de Arduino, igual que muchos lenguajes, permite la creación de nuevas instrucciones en forma de librerías. | ||
| + | |||
| + | Para utilizar un driver combinaremos salidas PWM con salidas digitales en las que las opciones son apagado (LOW) o apagado (HIGH). Cada driver tiene su tabla lógica para funcionar. Un ejemplo de código para mover un motor podría ser este: | ||
| + | |||
| + | < | ||
| + | analogWrite(9, | ||
| + | digitalWrite(8, | ||
| + | digitalWrite(7, | ||
| + | </ | ||
| + | |||
| + | Sin embargo en lugar trabajar con los pines uno a uno, lo haremos indirectamente con librerías que transformarán ese código en algo más sencillo como ' | ||
| + | |||
| + | < | ||
| + | nombredelrobot.forward(128, | ||
| + | nombredelrobot.reverse(128, | ||
| + | nombredelrobot.rotate(128, | ||
| + | nombredelrobot.rotate(128, | ||
| + | nombredelrobot.brake(1000); | ||
| + | </ | ||
| + | |||
| + | Hemos tratado de que las librerías tengan todas las mismas instrucciones con independencia del driver. Están alojadas en Github y también allí están los detalles para su uso. Como todo el material de Bricolabs son libres, puedes hacer con ellas lo que quieras. | ||
| + | |||
| + | ===== Conexionado general ===== | ||
| + | |||
| + | Un driver de motores, tal y como se puede ver en el diagrama de bloques de arriba, tendrá una serie de cables que van al Arduino (líneas de control), una entrada de energía conectada a una fuente como una batería o similar (línea de potencia) y las líneas que van finalmente a los motores. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Algunas placas para robótica como la [[https:// | ||
| ===== Características generales de los drivers ===== | ===== Características generales de los drivers ===== | ||
| Línea 24: | Línea 93: | ||
| Si el motor una vez conectado no gira en el sentido deseado podemos cambiarlo muy fácilmente tanto en el hardware (intermabiando los cables del motor o del driver) como en el software (cambiando los pines en la programación). | Si el motor una vez conectado no gira en el sentido deseado podemos cambiarlo muy fácilmente tanto en el hardware (intermabiando los cables del motor o del driver) como en el software (cambiando los pines en la programación). | ||
| + | |||
| ==== L9110 ==== | ==== L9110 ==== | ||
| Línea 46: | Línea 116: | ||
| |AI-B|0|pwm|0| | |AI-B|0|pwm|0| | ||
| - | Librerías de funcionaminto para L9110: en este enlace de [[https:// | + | Librerías de funcionaminto para L9110: en este enlace de [[https:// |
| Una vez conectado el driver e instaladas las librerías deberás elegir un nombre para tu robot, y decirle en qué pines has conectado el driver (en el ejemplo los pines 3, 5, 6 y 9), y para eso comenzar tus programas de este modo: | Una vez conectado el driver e instaladas las librerías deberás elegir un nombre para tu robot, y decirle en qué pines has conectado el driver (en el ejemplo los pines 3, 5, 6 y 9), y para eso comenzar tus programas de este modo: | ||
| Línea 79: | Línea 149: | ||
| {{: | {{: | ||
| - | Librerías de funcionaminto para L298N: en este enlace de [[https:// | + | Librerías de funcionaminto para L298N: en este enlace de [[https:// |
| < | < | ||
| Línea 94: | Línea 164: | ||
| {{: | {{: | ||
| - | La lógica de funcionamiento es la misma y las librerías de programación puedes encontrarlas [[https:// | + | La lógica de funcionamiento es la misma y las librerías de programación puedes encontrarlas [[https:// |
| < | < | ||
| Línea 131: | Línea 201: | ||
| === Redbot === | === Redbot === | ||
| - | El driver TB6612FNG también es el que integra la [[https:// | + | El driver TB6612FNG también es el que integra la [[https:// |
| {{: | {{: | ||
| Línea 156: | Línea 226: | ||
| ===== Enlaces ===== | ===== Enlaces ===== | ||
| - | * [[https:// | + | * [[https:// |
| * [[http:// | * [[http:// | ||