Traduccion Arduino Cap 5 Motores DC
Enviado por Andres10101.1 • 5 de Abril de 2020 • Apuntes • 4.462 Palabras (18 Páginas) • 142 Visitas
Capitulo 5
Conducción de un motor DC.
Ahora es el momento de pasar a controlar un motor DC. Si alguna vez planeas construir un robot o cualquier dispositivo que requiera el uso de un motor, entonces las habilidades que estás a punto de aprender serán esenciales. Conducir un motor requiere corrientes superiores a las que el Arduino puede proporcionar con seguridad desde sus salidas, por lo que tendremos que hacer uso de transistores y diodos para garantizar que tenemos suficiente corriente para el motor y diodos para la protección del Arduino. La descripción del hardware explicará cómo funcionan. Para nuestro primer proyecto, controlaremos un motor usando un método muy simple y luego continuaremos con el popular chip L293D Motor Driver. Más adelante en el libro también aprenderemos cómo utilizar estos para controlar un motor paso a paso.
Proyecto 15 - Control simple del motor.
Primero vamos a simplemente controlar la velocidad de un motor de corriente continua, en una dirección, usando un transistor de potencia, diodo, y fuente de alimentación externa para alimentar el motor y un potenciómetro para controlar la velocidad. Cualquier transistor de potencia NPN adecuado diseñado para cargas de alta corriente puede sustituir al transistor TIP120. Sin embargo, te recomiendo que uses un transistor de potencia tipo Darlington. Asegúrese de elegir un transistor que puede manejar el voltaje y la corriente que su motor dibujará. Puede ser necesario instalar un disipador de calor en el transistor si está tirando más de un amplificador. La fuente de alimentación externa puede ser un conjunto de baterías o una fuente de alimentación externa de corriente continua estilo "verruga de pared". La fuente de alimentación debe tener suficiente tensión y corriente para accionar el motor. La tensión no debe exceder de lo requerido por el motor. Para mis propósitos de prueba usé una fuente de alimentación de CC que proporcionaba 5V a 500mA. Esto era suficiente para el motor de 5V DC que estaba usando. Si utiliza una fuente de alimentación con un voltaje superior al que puede soportar el motor, puede dañarlo permanentemente. En el cuadro 5-1 se enumeran las piezas necesarias para el siguiente proyecto.
Piezas necesarias
Tabla 5-1. Piezas necesarias para el proyecto 15.
Motor de corriente continua.
10kΩ Potenciómetro.
TIP120 Transistor*.
1N4001 Diodo*.
Jack Plug Externo.
Fuente de alimentación
Resistencia de 1K
Conéctelo Primero, asegúrese de que su Arduino se apague desenchufándolo del cable USB. Ahora, toma las piezas necesarias y conéctalas como en la Figura 5-1. Es esencial para este proyecto que usted compruebe y vuelva a comprobar todas sus conexiones son como deben ser antes de suministrar energía al circuito, ya que si no lo hace puede resultar en daños a sus componentes o incluso su Arduino. El diodo, en particular, es esencial para proteger el Arduino de espalda EMF, que vamos a explicar más adelante.
Introduzca el Código.
Abra su IDE de Arduino y escriba el código del listado 5-1:
Listado 5-1. Código para el Proyecto 15.
// Proyecto 15 - Simple Motor Control
int potPin = 0; // Analógico en 0 conectado al potenciómetro
int transistorPin = 9; // PWM Pin 9 conectado a la base del transistor
int potValue = 0; // valor devuelto desde el potenciómetro
void setup() {
// establece el pin del transistor como salida:
pinMode(transistorPin, OUTPUT);
}
void loop() {
// leer el potenciómetro, convertirlo a 0 - 255:
potValue = analogRead(potPin) / 4;
// utilizar que para controlar el transistor:
analogWrite(transistorPin, potValue);
}
Antes de cargar su código, desconecte la fuente de alimentación externa al motor y asegúrese de que el potenciómetro esté girado completamente en sentido contrario a las agujas del reloj. Ahora suba el código al Arduino. Una vez que el código esté cargado, conecte la fuente de alimentación externa. Ahora puede girar el potenciómetro para controlar la velocidad del motor.
Proyecto 15 - Control simple del motor - Resumen del código.
Primero declaramos tres variables que mantendrán el valor del pin analógico conectado al potenciómetro, el pin PWM conectado a la base del transistor, y una para mantener el valor leído desde el potenciómetro del pin analógico 0.
int potPin = 0;
// Analógico en 0 conectado al potenciómetro
int transistorPin = 9;
// PWM Pin 9 conectado a la base del transistor
int potValue = 0;
// valor devuelto por el potenciómetro
En la función setup() ajustamos el modo pin del pasador a la salida.
void setup() {
// establece el pin del transistor como salida:
pinMode(transistorPin, OUTPUT);
}
En el bucle principal potValue se establece el valor leído en el pin analógico 0 (el potPin) y luego dividido por 4.
potValue = analogRead(potPin) / 4;
Necesitamos dividir el valor leído por 4 ya que el valor analógico variará de 0 para 0 voltios a 1.023 para 5 voltios. El valor que necesitamos para escribir en el pin del transistor sólo puede ir de 0 a 255, así que dividimos el valor del pin analógico 0 (máx 1023) por 4 para dar el valor máximo de 255 para configurar el pin digital 9 (Usando analogWrite para que estemos usando PWM). El código entonces escribe al transistor pin el valor del pote.
analogWrite(transistorPin, potValue);
En otras palabras, al rotar el potenciómetro, se leen diferentes valores que van de 0 a 1.023 y éstos se convierten al rango 0 a 255, y luego ese valor se escribe (vía PWM) al pin digital 11, que cambia la velocidad del motor DC. Gire el pote todo el camino a la izquierda y el motor se apaga; lo gire a la derecha y acelera hasta que alcance la velocidad máxima. El código es muy simple y no hemos aprendido nada nuevo. Echemos ahora un vistazo al hardware utilizado en este proyecto y veamos cómo funciona todo.
Proyecto 15 - Control simple del motor - Descripción general del hardware
El circuito se divide esencialmente en dos secciones. La sección 1 es nuestro potenciómetro, que está conectado a 5V y tierra con el pasador central pasando al pasador analógico 0. A medida que la perilla del potenciómetro gira, el divisor de resistencia cambia para permitir voltajes de 0 a 5V para salir del pasador central, cuyo valor se lee usando el pin analógico 0. La segunda sección es lo que controla la potencia del motor. Los pines digitales en el Arduino dan un máximo de 40mA (miliamperios). Sin embargo, la hoja de datos dice que la corriente de salida más alta que está garantizada es sólo 20mA. Nunca deberías estar operando al máximo. Un motor de corriente continua puede requerir alrededor de 500mA para funcionar a toda velocidad, y esto es obviamente demasiado para el Arduino. Si tratamos de conducir el motor directamente desde un alfiler en el Arduino daño grave y permanente podría ocurrir.
...