Cómo controlar la velocidad de un motor DC con el Arduino

  1. Ordenadores
  2. Arduino
  3. Cómo controlar la velocidad de un motor DC con el Arduino

Libro Relacionado

Arduino Para Dummies

Por John Nussey

¿Necesita más control de su motor de corriente continua? Puedes usar el sketch de MotorControl para que el Arduino ponga algo de entrada en un motor DC para darte un control total del motor sobre la marcha.

El boceto de MotorControl

Para obtener el control de la velocidad de su motor siempre que lo necesite, necesita añadir un potenciómetro a su circuito.

Necesitas:

  • Un Arduino Uno
  • Una protoboard
  • Un transistor
  • Un motor de corriente continua
  • Un diodo
  • Una resistencia variable de 10k ohmios
  • Una resistencia de 2,2 kohms
  • Alambres de salto

Encuentra un espacio en tu protoboard para colocar tu potenciómetro. La clavija central del potenciómetro se conecta de nuevo a la clavija 9 mediante un cable de conexión, y las dos clavijas restantes se conectan a 5 V en un lado y a GND en el otro.

Los 5V y GND pueden estar a ambos lados, pero al cambiarlos se invertirá el valor que el potenciómetro envía al Arduino. Aunque el potenciómetro utiliza la misma potencia y tierra que el motor, ten en cuenta que son circuitos separados que ambos se comunican a través del Arduino.

Después de construir el circuito, abre un nuevo sketch de Arduino y guárdalo con otro nombre memorable, como myMotorControl. A continuación, escriba el siguiente código.

int potPin = A0;int motorPin = 9;int potValue = 0;int motorValue = 0;void setup() { Serial.begin(9600);}void loop() { potValue = analogRead(potPin); motorValue = map(potValue, 0, 1023, 0, 255); analogWrite(motorPin, motorValue); Serial.print("potenciómetro = "); Serial.print(potValue); Serial.print("t motor = "); Serial.println(motorValue); delay(2); }

Después de escribir el sketch, guárdelo y haga clic en el botón Compilar para resaltar cualquier error de sintaxis. .

Si el sketch se compila correctamente, haga clic en Cargar para cargar el sketch a su foro. Cuando haya terminado de cargar, debería poder controlar su motor usando el potenciómetro. Girando el potenciómetro en un sentido se acelera el motor; girándolo en el otro sentido se hace más lento.

Desglose del esquema de MotorControl

Este sketch es una variación del sketch AnalogInOutSerial y funciona exactamente de la misma manera con algunos cambios de nombre para indicar mejor lo que está controlando y monitorizando en el circuito.

Como siempre, se declaran las diferentes variables utilizadas en el sketch. Con el potenciómetro se asigna la clavija del potenciómetro y la clavija del motor para enviar una señal al motor. La variable potValue se utiliza para almacenar el valor bruto del potenciómetro y la variable motorValue almacena el valor convertido que se desea enviar al transistor para conmutar el motor.

int potPin = A0;int motorPin = 9;int potValue = 0;int motorValue = 0;

Cómo modificar el esquema de MotorControl

Usted puede encontrar que hay una velocidad mínima después de la cual el motor sólo tararea. Lo hace porque no tiene suficiente potencia para girar. Mediante la monitorización de los valores enviados al motor mediante el esquema de MotorControl, se puede encontrar el valor mínimo del motor para girar y optimizar el valor de motorValue para girar el motor dentro de su verdadero rango.

Para encontrar la gama de motorValue, siga estos pasos:

  1. La ventana del monitor serie te mostrará el valor del potenciómetro seguido del valor de la salida que se está enviando al motor, de esta manera: potenciómetro = 1023 motor = 255Estos valores se muestran en una larga lista y se actualizan a medida que giras el potenciómetro. Si no ve que la lista se desplaza hacia abajo, asegúrese de que la opción Autoscroll esté seleccionada.
  2. Comenzando con la lectura del potenciómetro con un valor de 0, gire el potenciómetro muy lentamente hasta que el zumbido se detenga y el motor comience a girar.
  3. Anote el valor que se muestra en este punto.
  4. Use una declaración if para decirle al motor que cambie la velocidad sólo si el valor es mayor que la velocidad mínima necesaria para hacer girar el motor, de la siguiente manera:(a). Encuentra la parte de tu código que escribe el motorValue en el motor:analogWrite(motorPin, motorValue);(b). Sustitúyalo por el siguiente código: if(motorValue > yourValue) {analogWrite(motorPin, motorValue);} else {digitalWrite(motorPin, LOW);}.
  5. Si el valor de motorValue es mayor, el motor se acelera. Si es más bajo, el pin se escribe BAJO para que esté completamente apagado. También puede escribir analogWrite(motorPin, 0) para lograr lo mismo. Pequeñas optimizaciones como ésta pueden ayudar a que su proyecto funcione sin problemas, sin desperdiciar movimientos ni valores.

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*