peço uma ajuda urgente:
no centro d'electrónica cá de coimbra só há o L293 B, C e E. algum deles serve pa fazer este esquema que o gui aqui tem montado ou são completamente diferentes?
então qual delas compro? e já agora, quais os componentes que são precisos pa fazer isso que tavas a dizer, k eu de electro só percebo o básico.. :(
dão para fazer mas teras de acrescentar diodos de proteçao nos motores....a L293D ja tem esses diodos o que torna o processo muito mais simples ;)
o gajo n me pareceu tar disposto a ajudar.. disse-me os que tinha, e disse-me pa ir procurar as datasheets pa ver se algum dava pró k kria..
mas quilo pra mim são datashits, k n percebo nd delas.. :S
diz-me uma coisa, gui, tu nesse link tens um monte de condensadores no circuito. eles são necessários? pra k? (eu sou um nabo a electro)
// Use this code to test your motor with the Arduino board:
// if you need PWM, just use the PWM outputs on the Arduino
// and instead of digitalWrite, you should use the analogWrite command
// ————————————————————————— Motors
int motor_left[] = {2, 3};
int motor_right[] = {7, 8};
// ————————————————————————— Setup
void setup() {
Serial.begin(9600);
// Setup motors
int i;
for(i = 0; i < 2; i++){
pinMode(motor_left[i], OUTPUT);
pinMode(motor_right[i], OUTPUT);
}
}
// ————————————————————————— Loop
void loop() {
drive_forward();
delay(1000);
motor_stop();
Serial.println(”1");
drive_backward();
delay(1000);
motor_stop();
Serial.println(”2");
turn_left();
delay(1000);
motor_stop();
Serial.println(”3");
turn_right();
delay(1000);
motor_stop();
Serial.println(”4");
motor_stop();
delay(1000);
motor_stop();
Serial.println(”5?);
}
// ————————————————————————— Drive
void motor_stop(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], LOW);
delay(25);
}
void drive_forward(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}
void drive_backward(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}
void turn_left(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);
digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}
void turn_right(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}
Txii o que para aqui vai :P
Vamos esquecer que o L293D controla 2 motores e concentramos-nos em 1 e apenas 1 dos gates.
As entradas lógicas são InA1 e InA2 para entradas do gateA e o motor liga a OutA1 e OutA2
As entradas In1A e InA2 controlam o motor ligado ao gateA.
Assim, ambas as entradas a LOW o motor fica parado e ambas as entradas a HIGH o motor fica parado (por protecção interna do IC, não se deve fazer).
Para andar para 1 dos sentidos coloca-se HIGH num dos pins e LOW no outro, para inverter visse-versa.
Para controlar velocidade, os pins InA1 e InA2 estão ligados os dois a saidas de microcontrolador que suportem PWM para que quando se quer 50% da velocidade se coloque por exemplo InA1 a 50% PWM e InA2 a LOW (o pin HIGH é que fica com o PWM em vez de HIGH para controlar a velocidade).
Confirma que tens como acima indicado e certamente que tudo irá funcionar correctamente. Caso contrário faz-nos o esquema que tens montado e mostra o código para te podermos ajudar ;)
int data = 1000;
int motor_left[] = {10, 11};
void setup() {
Serial.begin(9600);
// Setup motors
int i;
for(i = 0; i < 2; i++){
pinMode(motor_left[i], OUTPUT);
}
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], LOW);
}
int sp = 0;
int order = 0;
int lf = 10; // line feed
int cr = 13; // carriage return
char buf[] = {1,2,3}; // quick buffer
int bi; //buffer index
void loop () {
if (Serial.available() > 0) {
int v = 0;
// read the incoming byte:
char c = Serial.read();
if(c != (char)lf){
buf[bi++] = c;
}
if(c == (char)lf){
bi=0;
for(int i=0;i<3;i++)
v += (int) buf[i];
Serial.print("I received: ");
Serial.println(v);
}
// say what you got:
//Serial.print("I received: ");
//Serial.println(c);
}
//sp++;
if(sp>255){
sp = -225;
}
if(sp<0)
order=1;
else
order=0;
Serial.println(sp);
//digitalWrite(motor_left[0], HIGH);
int val = (sp<0)? -sp: sp;
Serial.println(val);
//analogWrite(9, sp);
if(order==0){
analogWrite(motor_left[0], val);
digitalWrite(motor_left[1], LOW);
}else{
analogWrite(motor_left[1], val);
digitalWrite(motor_left[0], LOW);
}
delay(200);
}
int lf = 10; // line feed
int cr = 13; // carriage return
String buf = ""; // quick buffer
int pval = 0;
void serialEvent(Serial p){
int c = myPort.read();
if(c != lf && c != cr){
buf += char(c);
}
if(c == lf){
println("Received: "+ buf);
String[] buf2 = new String[1];
if(buf.contains(":"))
buf2 = buf.split(":");
pval = val;
if(buf2.length>1 && buf2[0].contains("potentiometer"))
val = (buf2[1].length()>0)? int(buf2[1]) : val;
if(buf2.length>1 && buf2[0].contains("fotosensor"))
val = (buf2[1].length()>0)? int(buf2[1]) : val;
buf = "";
}
}