INDICE
- Ordenadores
- Arduino
- Cómo cambiar la velocidad de un motor DC con el Arduino
Libro Relacionado
Arduino Para Dummies
Por John Nussey
A veces necesitas tener un mayor control sobre la velocidad de tu motor, lo que el Arduino te permite hacer con el sketch de MotorSpeed. A continuación se muestra cómo controlar la velocidad de su motor con el mismo circuito.
El boceto de MotorSpeed
Abre un nuevo sketch de Arduino, guárdalo con un nombre memorable, como myMotorSpeed, y luego escribe el siguiente código.
int motorPin = 9;void setup(){ pinMode(motorPin, OUTPUT);}void loop() { for(int motorValue = 0 ; motorValue <= 255; motorValue +=5){ analogWrite(motorPin, motorValue); delay(30); } for(int motorValue = 255 } para(motorValue = 255 ; motorValue >= 0; motorValue -=5){ analogWrite(motorPin, motorValue); delay(30}
Después de escribir el sketch, guárdelo y pulse el botón Compilar para comprobar el código. El entorno de Arduino debería resaltar cualquier error gramatical en el área de mensajes si se descubren.
Si el sketch se compila correctamente, haga clic en Cargar para cargar el sketch a su foro. Cuando la carga haya terminado, deberías tener un motor que gire muy lentamente al principio, que acelere hasta su giro más rápido, que gire de nuevo hasta detenerse y que luego repita. Puede ser difícil ver esto, así que debería fijar algo más visible, como masilla adhesiva, para mostrarle lo que está sucediendo.
Usted puede encontrar que en su punto más lento, el motor sólo tararea. Si es así, esto no es un problema; sólo significa que el electroimán no tiene suficiente voltaje para hacer girar el motor; necesita más voltaje para generar el magnetismo y ganar impulso.
El desglose del croquis de MotorSpeed
La clavija que está utilizando para controlar el circuito del motor, la clavija digital 9, está declarada.
int motorPin = 9;
Como es una salida, se define en la configuración.
void setup() { pinMode(motorPin, OUTPUT);}
En el bucle principal, se utiliza analogWrite para enviar un valor PWM al pin 9. Este es el mismo principio que en el sketch de Fundido, usado para fundir un LED. El primero para el lazo envía un valor que aumenta gradualmente al pin 9 hasta que alcanza el valor máximo de PWM de 255. La segunda para el bucle devuelve gradualmente este valor a 0; luego el ciclo se repite a sí mismo.
void loop() { for(int motorValue = 0 ; motorValue <= 255; motorValue +=5){ analogWrite(motorPin, motorValue); delay(30); } for(int motorValue = 255 ; motorValue >= 0; motorValue -=5){ analogWrite(motorPin, motorValue); delay(30); }}
Este proceso podría compararse a la aceleración de un motor de automóvil. Si pisas el pedal, aceleras a toda velocidad. Si pisas el acelerador, el motor acelera y luego disminuye la velocidad. Si lo tocas a un ritmo constante antes de que se ralentice, mantendrás algo del impulso del motor de giro y alcanzarás una velocidad media (aunque algo espasmódica).
Esto es lo que el transistor está haciendo, pero muy rápidamente. Los intervalos entre el encendido y apagado y el momento del motor le permiten lograr un comportamiento analógico a partir de una señal digital.