collapse

* Posts Recentes

Arame de Estendal por almamater
[Ontem às 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]

Autor Tópico: [Arduino]Tutorial - L293D com Arduino  (Lida 35618 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • Guibot
Re: [Arduino]Tutorial - L293D com Arduino
« Responder #30 em: 19 de Fevereiro de 2010, 23:02 »
como estás a alimentar o teu circuito?

Offline R.S.

  • Mini Robot
  • *
  • Mensagens: 108
Re: [Arduino]Tutorial - L293D com Arduino
« Responder #31 em: 19 de Fevereiro de 2010, 23:04 »
só com o cabo usb ligado ao pc

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • Guibot
Re: [Arduino]Tutorial - L293D com Arduino
« Responder #32 em: 19 de Fevereiro de 2010, 23:12 »
os 5V do usb podem não ser suficientes para os teus motores

tirando isto, já deste uma revisão geral a todas as ligações?

Offline R.S.

  • Mini Robot
  • *
  • Mensagens: 108
Re: [Arduino]Tutorial - L293D com Arduino
« Responder #33 em: 19 de Fevereiro de 2010, 23:31 »
hahaaa :D funciona, obrigado:D

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • Guibot
Re: [Arduino]Tutorial - L293D com Arduino
« Responder #34 em: 19 de Fevereiro de 2010, 23:39 »
afinal o que era? o usb? ou as ligações?  :)

Offline R.S.

  • Mini Robot
  • *
  • Mensagens: 108
Re: [Arduino]Tutorial - L293D com Arduino
« Responder #35 em: 20 de Fevereiro de 2010, 00:06 »
era da porta usb do pc, ja com a minha pen estava me a dar uns problemas estava sempre a ligar e desligar a pen. Mudei de porta e ja deu:D

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • Guibot
Re: [Arduino]Tutorial - L293D com Arduino
« Responder #36 em: 20 de Fevereiro de 2010, 08:43 »
boa :)

Offline SilentWarrior

  • Mini Robot
  • *
  • Mensagens: 3
Re: [Arduino]Tutorial - L293D com Arduino
« Responder #37 em: 31 de Março de 2010, 16:42 »
Boas, consegui ligar um motor DC usando esse tutorial e esse h-bridge. (mesmo codigo e esquema que o R.S.)

Mas agora estou a tentar usar PWM para controlar a velocidade do motor, mas nao consigo obter velocidades diferentes, apenas a mesma velocidade.

E tambem nao consigo inverter a direcção (que esperava) usando uma troca de HIGH-LOW para LOW-HIGH, basicamente uma troca de polaridades (fisicamente). Outro problema que tenho é que para "desligar" o motor tenho de meter ambos os pinos em HIGH-HIGH e nao LOW-LOW.

Que e que raio se passa aqui? O que é que poderá ser? Assim que notei que algo estava errado desliguei tudo, e manti desligado não va estar para ai a fazer algum grande estrago.

Quero usar isto para controlar a velocidade de 2 motores DC, para usar depois com o processing + um comando da XBOX. Se quizerem o codigo para ler o controlador XBOX tal como como modificar o controlador tambem arranjo. :)
« Última modificação: 31 de Março de 2010, 16:53 por SilentWarrior »

Offline SilentWarrior

  • Mini Robot
  • *
  • Mensagens: 3
Re: [Arduino]Tutorial - L293D com Arduino
« Responder #38 em: 31 de Março de 2010, 18:13 »
Boas de novo.

Consegui controlar finalmente o motor usando PWM.

O metodo que usei foi ligar no pin1 do L293D uma porta extra do arduino e dar-lhe por ai um PWM. Esta porta era anteriormente ligada em serie com os 5v do resto do circuito como mostra no esquema do tutorial, mas desta forma consegue-se controlar o input para todo o driver (acho eu que e todo e nao so o lado esquerdo). Neste caso limita a utilidade dos motores ja que apenas podemos controlar a velocidade de todo o driver e nao apenas cada 1 dos motores, mas ja é um inicio.

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re: [Arduino]Tutorial - L293D com Arduino
« Responder #39 em: 31 de Março de 2010, 18:19 »
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 ;)

Offline SilentWarrior

  • Mini Robot
  • *
  • Mensagens: 3
Re: [Arduino]Tutorial - L293D com Arduino
« Responder #40 em: 31 de Março de 2010, 21:04 »
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 ;)

Boas, voltei a ligar tudo como tinha para testar e funcionou... provavelmente foi qualquer coisinha que estava a fazer mal e que me baralhou os resultados.

O codigo que estou a usar é:
Código: [Seleccione]
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);
}

Podem ignorar a parte para ler o serial pois está incorrecta. Estou a trabalhar nela neste momento. Aceito sugestões para ler um valor inteiro (ou melhor ainda string) para controlar a velocidade do motor (int velocidade = 0-255).


Algo tipo :
(Processing)
Código: [Seleccione]
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 = "";
    }
}

Mas ao contrario, lendo no proprio arduino os dados vindos do computador. Quero fazer algo tipo mySerialPort.write("motor1:255") para meter o "motor1" a velocidade (int)225.

Offline alcas

  • Mini Robot
  • *
  • Mensagens: 1
Re: [Arduino]Tutorial - L293D com Arduino
« Responder #41 em: 22 de Abril de 2010, 19:04 »
olá, vc pode encontrar aqui infos com L293D e com SN754410NE em  http://arduino.cc/en/Reference/StepperBipolarCircuit

uma duvida: algume sabe se eu posso substituir o L293D pelo L293B já que eu não tenho o L293D?

Offline rafhit

  • Mini Robot
  • *
  • Mensagens: 55
Re: [Arduino]Tutorial - L293D com Arduino
« Responder #42 em: 14 de Maio de 2010, 19:32 »
boas!

tou a usar o l293d com o kit mr.basic e tou a ter o seguinte problema: ao usar o carrito no ar, ele faz tudo o que era suposto fazer.... mas quando o pouso no chão ele so anda para a frente e para atras, não tem força suficiente para fazer as curvas...e o l293d aquece mt!
agora... quando ligo os motores directamente ás pilhas...ele anda mt bem! tanto pa frente como para tras e nas curvas tmb...
pelos vistos o l293d "tira a força" aos motores....ou entao é o arduino!
alguém sabe o que se passa?
obg
« Última modificação: 14 de Junho de 2010, 18:49 por rafhit »