Esse conteúdo foi construído como Recombo do Arduino e Cia .
O CI LD293D não é muito robusto, suporta correntes de até 600mA, mas não depende de nenhum circuito impresso, por isso é muito utilizado.
Como você já deve ter acompanhado em outros conteúdos aqui do Robô Livre, podemos montar pontes H com Relés, com Transistores, podemos comprar shilds de Ponte H ou podemos montar nosso próprio Shield.
O Circuito da Imagem a Seguir é uma ponte H com LD293D para controlar um único motor:
e aqui uma foto dessa montagem:
E agora a montagem com dois motores:
E o Código do Arduino e Cia:
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 33 34 35 36 37 38 39 40 41 42 | // Programa : Controle de motor CC com o L293D // Autor : Arduino e Cia int PinoVelocidade = 3; //Ligado ao pino 1 do L293D int Entrada1 = 2; //Ligado ao pino 2 do L293D int Entrada2 = 7; //Ligado ao pino 7 do L293D void setup() { //Define os pinos como saida pinMode(PinoVelocidade, OUTPUT); pinMode(Entrada1, OUTPUT); pinMode(Entrada2, OUTPUT); } void loop() { //Define a velocidade de rotacao int velocidade = 500; analogWrite(PinoVelocidade, velocidade); //Aciona o motor digitalWrite(Entrada1, LOW); digitalWrite(Entrada2, HIGH); delay(3000); //Chama a rotina de parada do motor para_motor(); //Aciona o motor no sentido inverso digitalWrite(Entrada1, HIGH); digitalWrite(Entrada2, LOW); delay(3000); para_motor(); } void para_motor() { digitalWrite(Entrada1, LOW); digitalWrite(Entrada2, LOW); delay(3000); } |
Agora o Código do soldadinho que também usa esse cara:
// Programa : Controle de motor CC com o L293D // Autor : Arduino e Cia int SegPino1 = 0; int SegPino2 = 1; int M1PinoVelocidade = 3; //Ligado ao pino 1 do L293D int M1Entrada1 = 2; //Ligado ao pino 2 do L293D int M1Entrada2 = 4; //Ligado ao pino 7 do L293D int M2PinoVelocidade = 6; //Ligado ao pino 9 do L293D int M2Entrada1 = 5; //Ligado ao pino 10 do L293D int M2Entrada2 = 7; //Ligado ao pino 15 do L293D int tempoMovimento = 150; int LimiteDeCor = 300; void setup() { Serial.begin(9600); //Define os pinos como saida pinMode(M1PinoVelocidade, OUTPUT); pinMode(M1Entrada1, OUTPUT); pinMode(M1Entrada2, OUTPUT); } void loop() { //Define a velocidade de rotacao int M1velocidade = 500; int M2velocidade = 500; analogWrite(M1PinoVelocidade, M1velocidade); analogWrite(M2PinoVelocidade, M2velocidade); // // frente_robo(); // para_robo(); // direita_robo(); // para_robo(); // esquerda_robo(); // tras_robo(); int leituraSensor1=analogRead(SegPino1); int leituraSensor2=analogRead(SegPino2); Serial.println("Valores"); Serial.print(leituraSensor1); Serial.print("\t"); Serial.println(leituraSensor2); if ((leituraSensor1 < LimiteDeCor) && (leituraSensor2 < LimiteDeCor)){ frente_robo(); Serial.println("frente"); } if (leituraSensor1 > LimiteDeCor){ esquerda_robo(); Serial.println("esquerda"); } if (leituraSensor2 > LimiteDeCor){ direita_robo(); Serial.println("direita"); } } void para_robo() { digitalWrite(M1Entrada1, LOW); digitalWrite(M1Entrada2, LOW); digitalWrite(M2Entrada1, LOW); digitalWrite(M2Entrada2, LOW); delay(tempoMovimento); } void frente_robo() { digitalWrite(M1Entrada1, HIGH); digitalWrite(M1Entrada2, LOW); digitalWrite(M2Entrada1, HIGH); digitalWrite(M2Entrada2, LOW); delay(tempoMovimento); } void tras_robo() { digitalWrite(M1Entrada1, LOW); digitalWrite(M1Entrada2, HIGH); digitalWrite(M2Entrada1, LOW); digitalWrite(M2Entrada2, HIGH); delay(tempoMovimento); } void direita_robo() { digitalWrite(M1Entrada1, HIGH); digitalWrite(M1Entrada2, LOW); digitalWrite(M2Entrada1, LOW); digitalWrite(M2Entrada2, LOW); delay(tempoMovimento); } void esquerda_robo() { digitalWrite(M1Entrada1, LOW); digitalWrite(M1Entrada2, LOW); digitalWrite(M2Entrada1, HIGH); digitalWrite(M2Entrada2, LOW); delay(tempoMovimento); }
Ou