Descrición:
No canto de utilizar un transistor, imos controlar o movemento dun motor cun controlador de motores. Utilizaremos o H-Bridge L293D. Trátase dun circuíto integrado que permite ofrecer potencia a dous motores e controlar o sentido e a velocidade de xiro.
Montaxe:

[tecnoloxia.org, CC By-SA]

[tecnoloxia.org CC By-SA from circuits.io]
- Vlox: alimentación do circuíto
- Vmot: Alimentación dos motores
- GND: 0V
- Os pins do 1 ao 7 controlan o primer motor M1 e os pins do 9 ao 15 controlan o segundo M2.
- O pin 1, Enable1, activa o uso do motor M1 e o pin 9, Enable2, activa o uso do motor M2.
- Os pins 2 e 7 (Input1 e Input2 ou I1 e I2) son os pins de control do motor M1, que irán conectados á placa Arduíno para controlar o sentido de xiro do motor. Os pins Input3 e Input4 son os pins de control do motor M2.
- Cando o pin Enable1 toma un valor HIGH o motor M1 pode xirar dependendo dos valores I1 e I2. Se toma un valor LOW o motor párase, independentemente dos valores que tomen I1 e I2. Asignando un valor entre 0 e 255 desde un pin pwm regulamos a velocidade do motor. O mesmo para o motor M2, pero cos seus pins correspondentes.
- Os pins 3 e 6 (Output1 e Output2) son as saídas ás que se conecta o motor M1. O motor 2 conéctase nos pins Output3 e Output4.
| Enable1 | Input1 | Input2 | Motor |
| LOW | X | X | Para |
| HIGH | LOW | LOW | Para |
| HIGH | LOW | HIGH | Sentido horario |
| HIGH | HIGH | LOW | Sentido antihorario |
| HIGH | HIGH | HIGH | Para |
Programa:
Imos controlar un motor cun L293D conectando Enable1 ao pin 10, Input1 ao pin 9 e Input2 ao pin 6. Faremos que o motor execute o seguinte de maneira cíclica:
- arranca nun sentido e xira durante 3 segundos,
- para durante un segundo
- xira durante 3 segundos en sentido contrario
- volve parar durante un segundo.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// Declaración de variables: const int E1 = 10; // Enable pin const int I1 = 9; // Control pin 1 const int I2 = 6; // Control pin 2 // Configuración: void setup(){ pinMode( 6, OUTPUT); // Configuramos os pins pinMode( 9, OUTPUT); pinMode( 10, OUTPUT); } // Programa: void loop() { digitalWrite(E1, HIGH); // Activamos Motor digitalWrite(I1, HIGH); // Arrancamos nun sentido digitalWrite(I2, LOW); delay(3000); digitalWrite(E1, LOW); // Paramos Motor delay(1000); digitalWrite(E1, HIGH); // Activamos Motor digitalWrite(I1, LOW); // Arrancamos con cambio de sentido digitalWrite(I2, HIGH); delay(3000); digitalWrite(E1, LOW); // Paramos Motor delay(1000); } |
Propostas:
- Funcións. Crea unhas función chamadas “esquerda”, “dereita” e “paro” que almacenen as instrucións do movemento do motor. Utilízaas para facer o mesmo programa anterior.
- Pulsadores. Conecta dous pulsadores. Cando prememos no primeiro o motor xira en sentido horario, cando prememos no segundo xira en sentido antihorario, e cando non prememos ningún para.
- Finais de carreira. Fai que ao premer nun pulsador o motor xire nun sentido, e cando toca un microinterruptor final de carreira, pare. Ao premer noutro pulsador o motor xira en sentido contrario, e cando acciona outro microinterruptor final de carreira, para.
- Potenciómetro. Conecta un potenciómetro á entrada analóxica A0. Fai que o pin Enable1 tome un valor entre 0 e 255 en función da entrada do potenciómetro (entre 0 e 1023) e observa o cambio de velocidade. Para enviar un valor PWM ao pin Enable1 lémbrate de que ten que estar conectado a un pin PWM do Arduíno. Utiliza a expresión: analogWrite(Enable1, pwm);
Simulación: