Approved Reseller
Approved Reseller
En este pequeño tutorial veremos cómo conectar un motor de corriente directa a una tarjeta Arduino, también encontrarás un código de programación para tus primeras pruebas.
Los motores de corriente directa son dispositivos que transforman energía eléctrica en energía mecánica en forma de movimiento angular de su eje. Como su nombre lo indica se alimentan con corriente directa, el motor que utilizaremos en este ejemplo se puede alimentar desde 3V hasta 5V. De ésta manera para que el eje del motor comience a girar solo es necesario aplicar alimentación(diferencia de potencial entre sus terminales), si las terminales de la fuente de alimentación se invierten, el motor gira en sentido contrario.
Para controlar un motor de corriente directa es muy común utilizar un puente H, es decir, un circuito que recibe 3 señales digitales de control y según los valores de dichas señales entrega energía necesaria al motor, por medio de sus pines de salida, para que el motor gire en un sentido, en el otro o no gire. Las 3 señales digitales de control de un puente H son:
Para que el motor gire, las señales digitales de control INPUT1 e INPUT2 deben tener valores contrarios y la Señal ENABLE debe estar en valor lógico Alto. El puente H que seleccionamos para este ejemplo es el circuito integrado L293D, cuenta con 2 puentes H y nosotros haremos uso solo de uno, en específico, utilizaremos las señales de control INPUT1, INPUT2 y ENANLE1 y conectaremos el motor a OUTPUT1 y OUTPUT2.
Cargamos el siguiente código y observamos como la velocidad del eje del motor se modifica al girar la perilla del potenciómetro y como el sentido de giro cambia cuando cruzamos por el punto medio del rango del potenciómetro aproximadamente.
const int pinInput1 = 8; //Constante que contiene el npumero de pin al cual conectamos la señal IN1 del punte H L293D const int pinInput2 = 7; //Constante que contiene el npumero de pin al cual conectamos la señal IN2 del punte H L293D const int pinEnable = 6; //Constante que contiene el npumero de pin al cual conectamos la señal EN1 del punte H L293D int valPot = 0;//Variable que contendrá el valor leido en el pin Analógico ( 0 a 1023 ) al cual se conectó la señal del potenciómetro int valPWM = 0;//Variable que contendrá el valor de PWM ( -255 a 255) que escribirá al pin PWM al cual conectamos la señal EN1 del del punte H L293D void setup() { //Configuramos los pines digitales pinMode(pinInput1, OUTPUT); pinMode(pinInput2, OUTPUT); } void loop() { valPot = analogRead(0); //Realizamos la lectura del potenciómetro //Convertimos el valor leido para poder utilizarlo como segundo argumento de "analogRead()" //El signo lo utilizaremos para definir el sentido de giro del motor valPWM = map(valPot, 0, 1023, -255, 255); digitalWrite(pinInput1, valPWM>0); //Establecemos la dirección del giro según el signo de valPWM digitalWrite(pinInput2, !valPWM>0); //Establecemos la dirección del giro según el signo de valPWM analogWrite(pinEnable, abs(valPWM));//Establecemos la velocidad del giro según el valor absoluto de valPWM delay(10); }
Referencias:
https://www.allaboutcircuits.com/projects/control-a-motor-with-an-arduino/
Para seguir leyendo…