collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


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


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


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]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Servo + Sensor Ultrasonico + arduino + ponte H  (Lida 21791 vezes)

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

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #30 em: 30 de Setembro de 2011, 21:42 »
Com um multimetro.
Sabes medir correntes?

Pois nao tenho nenhum...
nao sei, mas gostava de saber :D

SN754410
Ponte H quadrupla.
Tensão de saída: 36V
Corrente de saída: 2x1A
Não necessita de diodos de protecção no motor.
Compativel com o Layout das L293D, em: http://lusorobotica.com/index.php?topic=262.0

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #31 em: 01 de Outubro de 2011, 03:06 »
Aquilo aquece que e uma coisa por demais, queima mesmo nem sei como é que aquilo ainda nao se queimou, mal lá meto o dedo em cima esta mesmo a "ferver" loOl

relativamente ao problema de os motores estarem a andar devagar de mais, em digital resolver meter por analog em PWM a 100% e os gajos assim ja andam no maximo :S que conclusao se pode tirar daqui ?

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #32 em: 05 de Março de 2012, 22:35 »
ainda ando de volta deste projecto... isto programa-lo como eu quero ainda nao consegui, ja me pintei de amarelo e nada... agora ao enviar o programa para o arduino da-me isto

done uploading, mas por baixo da este erro:

"Binary sketch size: 4440 bytes (of a 32256 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00"

o que será ?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #33 em: 05 de Março de 2012, 22:40 »
Se dá esse erro de certeza que não faz o upload, está a dizer-te que o bootloader não está sincronizado com o avrdude, ou seja que não lhe respondeu ou que respondeu com caracteres estranhos.

Tens alguma coisa nos pinos digital0/1?
Avr fanboy

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #34 em: 05 de Março de 2012, 22:47 »
já descobri, era a serial port em que o arduino estava ligado, tinha COM1 e era a COM3 :)
« Última modificação: 05 de Março de 2012, 23:08 por Bony »

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #35 em: 06 de Março de 2012, 00:36 »
Código: [Seleccione]
#include <Servo.h>

int maxspeed = 100;

#define MotorR 5
#define MotorL 3

int pause = 1000;

#define sensorpin 2
int duration;
int distance;

Servo servo;

void getDistance(){
 
  pinMode(sensorpin, OUTPUT);
  digitalWrite(sensorpin, LOW);                          // Make sure pin is low before sending a short high to trigger ranging
  delayMicroseconds(2);
  digitalWrite(sensorpin, HIGH);                         // Send a short 10 microsecond high burst on pin to start ranging
  delayMicroseconds(10);
  digitalWrite(sensorpin, LOW);                                  // Send pin low again before waiting for pulse back in
  pinMode(sensorpin, INPUT);
  duration = pulseIn(sensorpin, HIGH);                        // Reads echo pulse in from SRF05 in micro seconds
  distance = duration/58;                                      // Dividing this by 58 gives us a distance in cm
}

void rightForward(void){
  digitalWrite(8, HIGH);
  digitalWrite(11, LOW);
}

void leftForward(void){
  digitalWrite(12, LOW);
  digitalWrite(7, HIGH);
}

void rightBackward(){
  digitalWrite(8, LOW);
  digitalWrite(11, HIGH);
}

void leftBackward(void){
  digitalWrite(12, HIGH);
  digitalWrite(7, LOW);
}

void accelerate(){
 
    analogWrite(MotorR, 0);
    analogWrite(MotorL, 0);
 
    for(int i = 0; i < maxspeed; i += 10){
      analogWrite(MotorR, i);
      analogWrite(MotorL, i);
      delay(40);
    }
   
    analogWrite(MotorR, maxspeed);
    analogWrite(MotorL, maxspeed);
    delay(40);
}

void slowdown(){
 
  for(int i = maxspeed; i > 0; i -= 10){
    analogWrite(MotorR, i);
    analogWrite(MotorL, i);
    delay(40);
  }
 
  analogWrite(MotorR, 0);
  analogWrite(MotorL, 0);
}


void setup(){
 
  Serial.begin(9600);
 
  // right motor
    pinMode(8, OUTPUT); // 1A
    pinMode(11, OUTPUT); // 1B
    pinMode(MotorR, OUTPUT); // PWM
   
    // left Motor
    pinMode(MotorL, OUTPUT); // PWM
    pinMode(12, OUTPUT); // 2A
    pinMode(7, OUTPUT); // 2B
   
    servo.attach(6);
    servo.write(80);
}

void loop(){
 
  int incomingByte = 0;
 
  if(Serial.available() > 0){
 
    incomingByte = Serial.read();
   
  }
 
  if(incomingByte == 102){
    rightForward();
    leftForward();
    accelerate();
  }
 
  if(incomingByte == 98){
    rightBackward();
    leftBackward();
    accelerate(); 
  }
 
  if(incomingByte == 108){
    rightForward();
    leftBackward();
    accelerate();
  }
 
  if(incomingByte == 114){
    rightBackward();
    leftForward();
    accelerate();
  }
 
  if(incomingByte == 100){
    slowdown();
  }
 
  if(incomingByte == 76){
    servo.write(170);
  }
 
  if(incomingByte == 77){
    servo.write(80);
  }
 
  if(incomingByte == 82){
    servo.write(0);
  }
 
  delay(100);
  getDistance();
  Serial.println(distance, DEC);
 
}
Neste codigo aqui, quais é que sao os pins dos motores ?

ele liga a motor a 3 pins diferentes :S mas eu so posso ligar a 2 pinos.

do tipo:

#define MotorR 5 ligar ao pino 5
#define MotorL 3 e ligar ao pino 3
depois mais abaixo, diz:

// right motor
    pinMode(8, OUTPUT); // 1A
    pinMode(11, OUTPUT); // 1B
    pinMode(MotorR, OUTPUT); // PWM
   
    // left Motor
    pinMode(MotorL, OUTPUT); // PWM
    pinMode(12, OUTPUT); // 2A
    pinMode(7, OUTPUT); // 2B

3 pins :( mas eu so tenho dois pela ponte H.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #36 em: 06 de Março de 2012, 00:42 »
Não tens acesso aos enables da ponte H?
Normalmente usa-se as entradas das pontes H para selecionar a direcção de rotação e faz-se o pwm para controlo de velocidade no enable de cada canal da ponte.
Avr fanboy

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #37 em: 06 de Março de 2012, 00:47 »
Tenho. Estou a utilizar a ponte H SN754410, e tive agora a ver o DS do CI, e o EN é o pin 1 e 9 e tenho ambos ligados ao VCC.

sendo assim como é que ficam as ligacoes ?
« Última modificação: 06 de Março de 2012, 00:51 por Bony »

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #38 em: 08 de Março de 2012, 23:24 »
nao estou mesmo a ver o problema disto... isto a meu ver deve ser alguma ligacao nas ponte H :S a nivel do Enable...

o sensor funciona perfeitamente bem, mas o servo e os 2 motores nada... quando o ligo o servo mexe-se mas depois para logo e fica a fazer um barulho como se tivesse preso e nao consegue andar...

até fiz um video para verem que o sensor funciona:



tirei uma foto as ligacoes da ponte H, porque penso que o problema, deve estar em alguma ligacao da mesma... mas ja estou farto de rever e rever e pesquisar e aparentemente tudo se encontra bem...
deixo aqui duas fotos frente e tras:

http://i296.photobucket.com/albums/mm184/CrazyBony/IMAG0084.jpg

http://i296.photobucket.com/albums/mm184/CrazyBony/IMAG0083.jpg

vejam la se detetam alguma coisa de mal ligada ou em falta... tenho a ponte H a ser alimentada pelo arduino, mas por sua vez os motores sao alimentados pelas 4 pilhas cmo está vizivel no video, que corresponde ao pin 8 da ponte H.

estou a utilizar este codigo:

Código: [Seleccione]
#include <Servo.h>

int maxspeed = 100;

#define MotorR 5
#define MotorL 3

int pause = 1000;

#define sensorpin 2
int duration;
int distance;

Servo servo;


void getDistance(){

  pinMode(sensorpin, OUTPUT);
  digitalWrite(sensorpin, LOW);                          // Make sure pin is low before sending a short high to trigger ranging
  delayMicroseconds(2);
  digitalWrite(sensorpin, HIGH);                         // Send a short 10 microsecond high burst on pin to start ranging
  delayMicroseconds(10);
  digitalWrite(sensorpin, LOW);                                  // Send pin low again before waiting for pulse back in
  pinMode(sensorpin, INPUT);
  duration = pulseIn(sensorpin, HIGH);                        // Reads echo pulse in from SRF05 in micro seconds
  distance = duration/58;                                      // Dividing this by 58 gives us a distance in cm
}

void rightForward(void){
  digitalWrite(8, HIGH);
  digitalWrite(11, LOW);
}

void leftForward(void){
  digitalWrite(12, LOW);
  digitalWrite(7, HIGH);
}

void rightBackward(){
  digitalWrite(8, LOW);
  digitalWrite(11, HIGH);
}

void leftBackward(void){
  digitalWrite(12, HIGH);
  digitalWrite(7, LOW);
}

void accelerate(){

  analogWrite(MotorR, 0);
  analogWrite(MotorL, 0);

  for(int i = 0; i < maxspeed; i += 10){
    analogWrite(MotorR, i);
    analogWrite(MotorL, i);
    delay(40);
  }

  analogWrite(MotorR, maxspeed);
  analogWrite(MotorL, maxspeed);
  delay(40);
}


void slowdown(){

  for(int i = maxspeed; i > 0; i -= 10){
    analogWrite(MotorR, i);
    analogWrite(MotorL, i);
    delay(40);
  }

  analogWrite(MotorR, 0);
  analogWrite(MotorL, 0);


}


void setup(){

  Serial.begin(9600);

  // right motor
  pinMode(8, OUTPUT); // 1A
  pinMode(11, OUTPUT); // 1B
  pinMode(MotorR, OUTPUT); // PWM


  // left Motor
  pinMode(MotorL, OUTPUT); // PWM
  pinMode(12, OUTPUT); // 2A
  pinMode(7, OUTPUT); // 2B

  servo.attach(6);
  servo.write(90
    );
}

void loop(){

  int incomingByte = 0;

  if(Serial.available() > 0){

    incomingByte = Serial.read();

  }

  if(incomingByte == 102){
    rightForward();
    leftForward();
    accelerate();
  }

  if(incomingByte == 98){
    rightBackward();
    leftBackward();
    accelerate(); 
  }

  if(incomingByte == 108){
    rightForward();
    leftBackward();
    accelerate();
  }

  if(incomingByte == 114){
    rightBackward();
    leftForward();
    accelerate();
  }

  if(incomingByte == 100){
    slowdown();
  }

  if(incomingByte == 76){
    servo.write(170);
  }

  if(incomingByte == 77){
    servo.write(80);
  }

  if(incomingByte == 82){
    servo.write(0);
  }

  delay(100);
  getDistance();
  Serial.println(distance, DEC);

}

« Última modificação: 08 de Março de 2012, 23:26 por Bony »

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #39 em: 08 de Março de 2012, 23:39 »
Só estás a uma ponte H de casa chip porque?
Isso é falta de uns condensadores de decoupling, que deve ser uma ruideira na alimentação que o arduino entra em modo de reset.
Avr fanboy

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #40 em: 09 de Março de 2012, 00:26 »
Só estás a uma ponte H de casa chip porque?
Isso é falta de uns condensadores de decoupling, que deve ser uma ruideira na alimentação que o arduino entra em modo de reset.

porque era o tal problema de aquecerem muito, foi me dito que era melhor meter uma ponte H para cada motor.

Nao é visivel nas fotos, mas cada motor já tem um condensador.

esses condensadores de decoupling é para meter onde? nos motores ou na ponte H ?

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #41 em: 09 de Março de 2012, 02:44 »
Comeco a ficar frustrado com isto... nao sei mais o que fazer...

já lhe meti os condesadores, segui tal e qual este esquema :

http://i296.photobucket.com/albums/mm184/CrazyBony/3235658022_7f505922e3_o.jpg

a unica diferenca é no pin 1 (enable) liguei ao pin 5 do arduino, e do outro CI liguei tb o pin 1 ao pin 3 do arduino, como diz o codigo, para ter o PWM.

Mas nada, o gajo continua a nao dar sinal de vida...

o servo, quando ligo o arduino via UBS, nada, quando ligo o arduino com uma pilha de 9 Volts o gajo gira ate aos 180 e fica ali, aquele LED amarelo que os arduinos tem que esta sempre acesso quando o servo gira e fica nos 180 quase que se apaga parece que esta ali algum curto circuito ou assim...

deixo aqui mais umas fotos de varios angulos da ponte H e as suas ligacoes, sei que é dificil de perceber mas vejam lá se descobrem algo de errado... é que mto sinceramente, ja nao sei mais o que fazer com isto...

http://i296.photobucket.com/albums/mm184/CrazyBony/IMAG0095.jpg

http://i296.photobucket.com/albums/mm184/CrazyBony/IMAG0094.jpg

http://i296.photobucket.com/albums/mm184/CrazyBony/IMAG0093.jpg

http://i296.photobucket.com/albums/mm184/CrazyBony/IMAG0092.jpg

http://i296.photobucket.com/albums/mm184/CrazyBony/IMAG0091.jpg

http://i296.photobucket.com/albums/mm184/CrazyBony/IMAG0090.jpg

http://i296.photobucket.com/albums/mm184/CrazyBony/IMAG0089.jpg

http://i296.photobucket.com/albums/mm184/CrazyBony/IMAG0088.jpg

http://i296.photobucket.com/albums/mm184/CrazyBony/IMAG0087.jpg

http://i296.photobucket.com/albums/mm184/CrazyBony/IMAG0087.jpg

http://i296.photobucket.com/albums/mm184/CrazyBony/IMAG0086.jpg

se tiverem alguma duvida de onde é que vai ligar onde perguntei que eu digo.

cumps

Offline Hugu

  • Mini Robot
  • *
  • Mensagens: 5.602
  • Keyboard not found. Press any key to continue.
    • [url=www.g7electronica.net]G7 Electrónica.net[/url]
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #42 em: 10 de Março de 2012, 01:12 »
Comeco a ficar frustrado com isto... nao sei mais o que fazer...

já lhe meti os condesadores, segui tal e qual este esquema :



a unica diferenca é no pin 1 (enable) liguei ao pin 5 do arduino, e do outro CI liguei tb o pin 1 ao pin 3 do arduino, como diz o codigo, para ter o PWM.

Mas nada, o gajo continua a nao dar sinal de vida...

o servo, quando ligo o arduino via UBS, nada, quando ligo o arduino com uma pilha de 9 Volts o gajo gira ate aos 180 e fica ali, aquele LED amarelo que os arduinos tem que esta sempre acesso quando o servo gira e fica nos 180 quase que se apaga parece que esta ali algum curto circuito ou assim...

deixo aqui mais umas fotos de varios angulos da ponte H e as suas ligacoes, sei que é dificil de perceber mas vejam lá se descobrem algo de errado... é que mto sinceramente, ja nao sei mais o que fazer com isto...

se tiverem alguma duvida de onde é que vai ligar onde perguntei que eu digo.

cumps

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #43 em: 10 de Março de 2012, 03:55 »
obrigado Hugo :)

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Servo + Sensor Ultrasonico + arduino + ponte H
« Responder #44 em: 10 de Março de 2012, 13:44 »
Que regulador de voltagem é esse que está ai perdido no desenho?
Avr fanboy