Conteúdo sugerido

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:
Circuito_Motor_CC_L293D.png
 
e aqui uma foto dessa montagem:
m2pYPxL.jpg


E agora a montagem com dois motores:

OBbnjh2.jpg

 
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);  
}  



Atividades recentes