LusoRobótica - Robótica em Português

Robótica => Iniciantes => Tópico iniciado por: joao rexinho em 11 de Novembro de 2009, 15:00

Título: um carro
Enviado por: joao rexinho em 11 de Novembro de 2009, 15:00
Boas malta,hoje foi a garagem e encontrei um carro rc 40hz. Então pensei  e se eu retira se o a placa  de controlo e fazer com que ele fosse autonomo com sensores para se desviar dos objectos.
Materiais que penso utilizar:
-Arduino duemilnove;
-o carro tem 2 motores dc, um controla as rodas do lado direito e o outro controla as da esquerda através de engrenagens.


Na programação
 sei que:
 -para a frente :frente-frente;(nenhum obstáculo a frente)
 -para tras : trás-trás;(nenhum obstáculo a atras )
 -para esquerda : trás-frente:(obstáculo a direita)
 -para direita: frente-trás:(obstáculo a esquerda)
 (https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwtfoodge.com%2Fwp-content%2Fuploads%2F2009%2F07%2Ftycorebound-500x375.jpg&hash=f4e287aca4f1608f844e554dba5925f6d662253b)

Decidi continuar com o projecto vou comprar
1xH-Bridge Motor
2xInfrared Proximity

Fiz um esquema
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg411.imageshack.us%2Fimg411%2F3810%2Fcircuito.th.jpg&hash=8a521b7ebba2239d4b55dfe3d74f4ad1001b21ac) (http://img411.imageshack.us/i/circuito.jpg/)
Será possível concretizar ?

Melhorei. Mas entanto ao ler um comment do metRo_ que tinha me passado ao lado fiz um esquema.
Nao sei qual irei realizar. Com o servo fica mais barato e tem maior ângulo de captação mas não sei como programar a ponte h + Sensor IR + Servo   ???

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg535.imageshack.us%2Fimg535%2F5342%2Fcircuitoservo.th.jpg&hash=4c033123141d690c50dadac544b04b5a35135b2a) (http://img535.imageshack.us/i/circuitoservo.jpg/)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg198.imageshack.us%2Fimg198%2F4279%2Fcircuito2ir.th.jpg&hash=d2037825902b199ef512b4bba0a878414539d612) (http://img198.imageshack.us/i/circuito2ir.jpg/)
Título: Re: um carro
Enviado por: Fifas em 11 de Novembro de 2009, 18:19
Grandes rodas ;D

Mantem-nos informados ;)
Título: Re: um carro
Enviado por: microbyte em 11 de Novembro de 2009, 18:35
Bem... Tens aí uma base muito boa para brincar...

O uso da Ponte H depende do uso que queres dar aos componentes que já fazem parte do carro.
Para teres uma ideia do que estou a dizer:
Podes usar um Arduino no carro + ponte H + motores do carro (e deitas o resto tudo fora)
Ou podes por exemplo nao mexer no carro e "hackear" o comando, criando, por exemplo, uma aplicação de PC que permita controlar o carro. Neste "modo", ligas o Arduino ao comando. ;)

Mas por falares em sensores, deduzo que queres transformar o carro num robô. Assim sendo, deves aproveitar apenas os motores DC do carro e livrar-te de toda a electrónica restante.
Quanto à 2ª questão, depende do que queres fazer... O teu objectivo é construir um carro que siga uma luz ou que evite obstáculos?
Título: Re: um carro
Enviado por: joao rexinho em 13 de Novembro de 2009, 00:00
Desculpem !!!! librei agua em cima do pc  :(mas retirei lhe logo a fonte  e metio a secar ao sol e na hora do meio dia ele ainda nao ligava metio a beira do desumificador, agora liguei o  só o touchpad é que nao esta a funcionar la muito bem.
Prefiro fazer um robô que se desvie dos obstáculos para depois poder adicionar mais sensores.Qual e o sensor que me aconselhas?quantos?
e o l293d donde posso comprar?
Título: Re: um carro
Enviado por: TigPT em 13 de Novembro de 2009, 12:55
Bem.. que situação.

Acho que fazes bem em o ir fazendo simples e depois melhorando.

Aconselho o Sharp IR (http://lusorobotica.com/index.php/topic,100.0.html) pelo preço/facilidade de utilização.
Título: Re: um carro
Enviado por: joao rexinho em 13 de Novembro de 2009, 14:20
Como tinha prometido aqui vai o video da energia do motor de uma impressora
http://www.youtube.com/user/joaorexinho#p/u/2/9GqDbeAEZv0 (http://www.youtube.com/user/joaorexinho#p/u/2/9GqDbeAEZv0)
Título: Re: um carro
Enviado por: joao rexinho em 14 de Novembro de 2009, 21:41
quantos sensores IR devo comprar?onde posso comprar um l293d?
Título: Re: um carro
Enviado por: metRo_ em 14 de Novembro de 2009, 22:37
Não é o L293D mas é compatível: http://loja.lusorobotica.com/componentes/15-h-bridge-motor-driver-1a.html (http://loja.lusorobotica.com/componentes/15-h-bridge-motor-driver-1a.html)
Título: Re: um carro
Enviado por: joao rexinho em 15 de Novembro de 2009, 16:30
Ok :D ja adicionei a o carrinho isso e dois sensores IR da sharp. Não sei se chega ai e que esta a minha duvida?Porque eu quero que o meu carro "robô" se desvie dos obstáculos  :-\.
Título: Re: um carro
Enviado por: metRo_ em 15 de Novembro de 2009, 17:38
Dois sensores sharp à frente já te permite que ele se desvia dos obstáculos, agora o que podes fazer e dava para brincares um pouco mais, assim como aprender, era comprar um micro-servo e colocavas o sensor no servo, e assim tinhas 180º de protecção :)
Título: Re: um carro
Enviado por: joao rexinho em 15 de Novembro de 2009, 18:07
entao ja vou efectuar a compra de 2 sharp e um h bridge motor driver.Mas as rodas de frente nao viram,tem dois motores DC em que um faz andar as duas rodas de um lado e o outro as duas rodas do outro.
Título: Re: um carro
Enviado por: microbyte em 16 de Novembro de 2009, 00:03
Ok amigo... Já viste um robô com lagartas a virar?
É a mesma coisa... As rodas da esquerda para a frente e as da direita para trás e o carro roda sobre si mesmo para a direita. (e vice-versa)
Título: Re: um carro
Enviado por: joao rexinho em 16 de Novembro de 2009, 00:30
Sim era um exemplo que eu queria dar para o pessoal perceber.Afinal ainda vou aguentar uns dias antes de comprar porque parece que e esta semana que abre o grupo de robótica na minha escola :D!!!
Título: Re: um carro
Enviado por: joao rexinho em 26 de Fevereiro de 2010, 19:18
Ja actualizei  tirei as duvidas antigas e coloquei a nova  ;D. Estou a tentar desenvolver o codigo :).
Título: Re: um carro
Enviado por: joao rexinho em 01 de Março de 2010, 00:54
Gostava de saber se os esquemas estão bem?
Título: Re: um carro
Enviado por: joao rexinho em 06 de Março de 2010, 01:05
dicidi optar pelo servo. So que deparo me com um problema a programaçao :-\ A unica  programaçao que encontrei para o servo com sensor IR em cima mas utiliza servos para andar e eu quero atravez de uma ponte H. andei a alterar umas coisas no codigo a fazer o compiling mas agora surge me este erro que nao percebo "error: declaration of 'motor_left' as array of functionsBad error line: -14" o codigo e o seguinte

Código: [Seleccione]
int sensorIR = 0;
int calibIR = 10000;
int valIR;

int sensorPot = 2;
int valPot;

int button = 5;
int valButton;
int turnOnOff=0;

int servoTU = 9;
int motor_left[] = {9, 10};
int motor_right[] = {11, 12};
unsigned long lastPulseTU;
int pulseWidthR = 1250;
int pulseWidthL = 1750;
int pulseWidthRTU = 0;
int pulseWidthLTU = 0;

int pulseWidthTU = 1710;
int centerTU = 1430;
int rangeTU=1360;

int motor_left[] = 20;
int refreshTimeServoR = 20;
int refreshTimeServoTU = 20;

int led=3;

int angleDepart=0;
signed long angle=0;
int angleMin=-45;
int angleMax=45;
int nbAngle;
int distance[180];
int distanceMax[18];
int distanceMin[18];
int distanceMoy[18];
int direction[18];
int directionTU;
int sensTU=1;
int turn=0;
int n;

void setup()
void motor_left[](int pulseWidth){
  if(millis()-lastPulseL >= refreshTimeServoL){
    digitalWrite(motor_left[0], LOW);
    digitalWrite(motor_left[1], HIGH);
    delayMicroseconds(pulseWidth);
    digitalWrite(motor_right[0], HIGH);
    digitalWrite(motor_right[1], LOW);
    lastPulseL=millis();
  }
}

void motor_right[](int pulseWidth){
  if(millis()-lastPulseR >= refreshTimeServoR){
    digitalWrite(motor_left[0], HIGH);
    digitalWrite(motor_left[1], LOW);
    delayMicroseconds(pulseWidth);
    digitalWrite(motor_right[0], LOW);
    digitalWrite(motor_right[1], HIGH);
    lastPulseR=millis();
  }
}

int servoT(int pulseWidth){
  if(millis()-lastPulseTU >= refreshTimeServoTU){
    digitalWrite(servoTU,HIGH);
    delayMicroseconds(pulseWidth);
    digitalWrite(servoTU,LOW);
    lastPulseTU=millis();
    return 1;
  }
  return 0;
}

int getPulseT(){
  int pulse;
  if(angle<=angleMin){
   sensTU=0;
  // displaySonar();
   //directionTU=getDirection();
  }
  if(angle>=angleMax){
   //directionTU=getDirection();
  // displaySonar();
   sensTU=1;
  }
  return (centerTU+((angle)*rangeTU/90));
}

int readSensorIR(){
  return (calibIR/analogRead(sensorIR));         
}

void setLed(int valLed){
  analogWrite(led,valLed);
}


int readSensorPot(){
  return (centerTU+long(analogRead(sensorPot))*1000/1024-500);
}                     

int readButton(){
  unsigned long contactTime;
  valButton=analogRead(button);
 //Serial.print(valButton);
 //Serial.print(" ");
  if(valButton<512)
   return turnOnOff;
  contactTime=millis();
  while(valButton>=512){
   valButton=analogRead(button);
   //Serial.print(valButton);
   //Serial.print("\n");
  }
 if(millis()-contactTime<20)
   return turnOnOff;
 angle=angleDepart;
 return(1-turnOnOff);
}

int getDirection(){
int angle=0,i,j,n=0,seg=0,dir=4,maxSeg=0;
for(i=0;i<18;i++){
   distanceMax[i]=0;
   distanceMin[i]=10000;
   distanceMoy[i]=0;
   for(j=0;j<5;j++){
      if(distance[n+j]>distanceMax[i])
       distanceMax[i]=distance[n+j];
      if(distance[n+j]<distanceMin[i])
       distanceMin[i]=distance[n+j];
     distanceMoy[i]=distance[n+j];
     //Serial.print(distance[n+j]);
     //Serial.print(" ");
   }   
   direction[i]=0;
   if(distanceMax[i]>110&&distanceMin[i]>55&&distanceMoy[i]>77){
    seg++;
    if(seg>maxSeg)
    maxSeg=seg;
    direction[i]=seg;
   }
   else
    seg=0;
   n+=5; 
 }
 for(i=0;i<18;i++){
   if(direction[i]==maxSeg){
    dir=i-maxSeg/2;
    dir=dir*5-40;
   }
// Serial.print(direction[i]);
 }
 
 //Serial.print(" dir ");
// Serial.print(" \n");
 return dir; 
}

void displaySonar(){
  int n;
  for(n=0;n<nbAngle;n++){
   Serial.print(distance[n]);
   Serial.print(" ");
  }
 Serial.print("\n");
}

void pilote2(int valUS,int valTU){
  int acc=0;
  directionTU=getDirection()/5;
  acc=(30*max(min(valUS,100),3)/100)-8;
  // Serial.print(acc,DEC);
  //Serial.print("acc   ");
  // Serial.print(directionTU);
  // Serial.print(" ");
   pulseWidthR = min(max(pulseWidthR-acc-directionTU,1250),1750);
   pulseWidthL = max(min(pulseWidthL+acc-directionTU,1750),1250);
   
  // Serial.print(pulseWidthR,DEC);
  // Serial.print("pR   ");
  // Serial.print(pulseWidthL,DEC);
  // Serial.print("pL   ");
  //Serial.print("\n");
}

void pilote(int valUS,int valTU){
  int acc=0,dirR=75,dirL=75;
  directionTU=getDirection();
  if(directionTU>0){
    dirR=75;
    dirL=75-150*directionTU/45;
   }
  if(directionTU<0){
    dirL=75;
    dirR=75-150*directionTU/45;
   }
 
  acc=(30*max(min(valUS,100),3)/100)-15;
  //Serial.print(acc,DEC);
  //Serial.print("acc   ");
  //Serial.print(directionTU);
  // Serial.print("directU   ");
 
  //Serial.print(dirL);
  //Serial.print(" dirL   ");
  // Serial.print(dirR);
  //Serial.print("dirR ");
 
 
  pulseWidthL = max(min(pulseWidthL+acc,1675),1325);
  pulseWidthR = min(max(pulseWidthR-acc,1325),1675);
 
  pulseWidthL = max(min(pulseWidthL+dirL,1750),1250); 
  pulseWidthR = min(max(pulseWidthR-dirR,1250),1750);
 
 
  // Serial.print(pulseWidthR,DEC);
  // Serial.print("pR   ");
  // Serial.print(pulseWidthL,DEC);
  // Serial.print("pL   ");
  // Serial.print("\n");
}

void setup(){
  pinMode(servoTU,OUTPUT);
  pinMode(motor_left[i], OUTPUT);
  pinMode(motor_right[i], OUTPUT);
 
  pinMode(sensorUS,INPUT);
  pinMode(button,INPUT);

  pinMode(13,OUTPUT);
  lastPulseL=millis();
  lastPulseR=millis();
  lastPulseTU=millis();
 
  nbAngle=angleMax-angleMin;
  for (int n=0;n<nbAngle;n++)
   distance[n]=100;
 }

void loop(){ 
  turnOnOff=readButton();
 // Serial.print(turnOnOff);
 // Serial.print("  ");
 
  valIR=readSensorIR();
 
 
  setLed((100-min(max(valIR,0),100))*1024/100);
 
 // Serial.print(valIR,DEC);
 // Serial.print("cm   ");
  valUS=readSensorUS();
   
 // Serial.print(valUS);
 // Serial.print("cm   ");
 
  if(turnOnOff==1){
    pilote2(valUS,valIR);
   
   servoL(pulseWidthL);
   servoR(pulseWidthR);
   turn=servoT(getPulseT());
   if(turn==1){
    distance[angle+angleMax]=valIR;
    if(sensTU==1)
     angle=angle-1;
    else
     angle=angle+1;
   }
  }
  else{
   valPot=(valPot+readSensorPot())/2;
   servoT(valPot);
  }
 
  //Serial.print(valPot);
  //erial.print(" \n");
}

Digam me se esta bem?
Título: Re: um carro
Enviado por: vicardosof em 06 de Março de 2010, 01:16
Já viste que existe um motor_left como variável e ao mesmo tempo sub? Como o compilador irá saber qual estás a referir?
Título: Re: um carro
Enviado por: joao rexinho em 06 de Março de 2010, 01:25
Entao como devo por  ja tentei po no[] um i como aparece num codigo de ponte H
Título: Re: um carro
Enviado por: vicardosof em 06 de Março de 2010, 01:38
Pelo que percebo de programação, podes mudar o nome da variável:
int motor_left[] = {9, 10};
int motor_right[] = {11, 12};

podes trocar para:
int motorleft[] = {9, 10};
int motorright[] = {11, 12};
Só não te esqueças de trocar no código inteiro!
Título: Re: um carro
Enviado por: joao rexinho em 06 de Março de 2010, 02:35
Continua a dar o mesmo erro  :(
Título: Re: um carro
Enviado por: vicardosof em 06 de Março de 2010, 02:40
Apaga a linha do erro e tenta compilar, caso o erro pare devemos focalizar numa linha e caso o erro aconteça em outra linha, devemos focar ao código
Título: Re: um carro
Enviado por: joao rexinho em 06 de Março de 2010, 03:05
continua , apaguei  as linhas que encoliam motor_left uma a uma depois passou  para motor_right e depois pra a "linha if(millis()-lastPulseL >= refreshTimeServoL){" e de seguida com as digitalWrite :( :( o que devo fazer???????????
Título: Re: um carro
Enviado por: joao rexinho em 06 de Março de 2010, 13:30
tive alterar tudo de novo e deu me isto:
Código: [Seleccione]
int sensorIR = 0;
int calibIR = 10000;
int valIR;

int sensorPot = 2;
int valPot;

int button = 5;
int valButton;
int turnOnOff=0;

int servoTU = 8;
int motorleft[] = {9, 10};
int motorright[] = {11, 12};
unsigned long lastPulseR;
unsigned long lastPulseL;
unsigned long lastPulseTU;
int pulseWidthR = 1250;
int pulseWidthL = 1750;
int pulseWidthRTU = 0;
int pulseWidthLTU = 0;

int pulseWidthTU = 1710;
int centerTU = 1430;
int rangeTU=1360;

int refreshTimeServoL = 20;
int refreshTimeServoR = 20;
int refreshTimeServoTU = 20;

int led=3;

int angleDepart=0;
signed long angle=0;
int angleMin=-45;
int angleMax=45;
int nbAngle;
int distance[180];
int distanceMax[18];
int distanceMin[18];
int distanceMoy[18];
int direction[18];
int directionTU;
int sensTU=1;
int turn=0;
int n;

void servoL(int pulseWidth){
  if(millis()-lastPulseL >= refreshTimeServoL){
    digitalWrite(motorleft[0], LOW);
    digitalWrite(motorleft[1], HIGH);
    delayMicroseconds(pulseWidth);
    digitalWrite(motorright[0], HIGH);
    digitalWrite(motorright[1], LOW);
    lastPulseL=millis();
  }
}

void servoR(int pulseWidth){
  if(millis()-lastPulseR >= refreshTimeServoR){
    digitalWrite(motorleft[0], HIGH);
    digitalWrite(motorleft[1], LOW);
    delayMicroseconds(pulseWidth);
    digitalWrite(motorright[0], LOW);
    digitalWrite(motorright[1], HIGH);
    lastPulseR=millis();
  }
}

int servoT(int pulseWidth){
  if(millis()-lastPulseTU >= refreshTimeServoTU){
    digitalWrite(servoTU,HIGH);
    delayMicroseconds(pulseWidth);
    digitalWrite(servoTU,LOW);
    lastPulseTU=millis();
    return 1;
  }
  return 0;
}

int getPulseT(){
  int pulse;
  if(angle<=angleMin){
   sensTU=0;
  // displaySonar();
   //directionTU=getDirection();
  }
  if(angle>=angleMax){
   //directionTU=getDirection();
  // displaySonar();
   sensTU=1;
  }
  return (centerTU+((angle)*rangeTU/90));
}

int readSensorIR(){
  return (calibIR/analogRead(sensorIR));         
}

void setLed(int valLed){
  analogWrite(led,valLed);
}



int readSensorPot(){
  return (centerTU+long(analogRead(sensorPot))*1000/1024-500);
}                     

int readButton(){
  unsigned long contactTime;
  valButton=analogRead(button);
 //Serial.print(valButton);
 //Serial.print(" ");
  if(valButton<512)
   return turnOnOff;
  contactTime=millis();
  while(valButton>=512){
   valButton=analogRead(button);
   //Serial.print(valButton);
   //Serial.print("\n");
  }
 if(millis()-contactTime<20)
   return turnOnOff;
 angle=angleDepart;
 return(1-turnOnOff);
}

int getDirection(){
int angle=0,i,j,n=0,seg=0,dir=4,maxSeg=0;
for(i=0;i<18;i++){
   distanceMax[i]=0;
   distanceMin[i]=10000;
   distanceMoy[i]=0;
   for(j=0;j<5;j++){
      if(distance[n+j]>distanceMax[i])
       distanceMax[i]=distance[n+j];
      if(distance[n+j]<distanceMin[i])
       distanceMin[i]=distance[n+j];
     distanceMoy[i]=distance[n+j];
     //Serial.print(distance[n+j]);
     //Serial.print(" ");
   }   
   direction[i]=0;
   if(distanceMax[i]>110&&distanceMin[i]>55&&distanceMoy[i]>77){
    seg++;
    if(seg>maxSeg)
    maxSeg=seg;
    direction[i]=seg;
   }
   else
    seg=0;
   n+=5; 
 }
 for(i=0;i<18;i++){
   if(direction[i]==maxSeg){
    dir=i-maxSeg/2;
    dir=dir*5-40;
   }
// Serial.print(direction[i]);
 }
 
 //Serial.print(" dir ");
// Serial.print(" \n");
 return dir; 
}

void displaySonar(){
  int n;
  for(n=0;n<nbAngle;n++){
   Serial.print(distance[n]);
   Serial.print(" ");
  }
 Serial.print("\n");
}

void pilote2(int valTU){
  int acc=0;
  directionTU=getDirection()/5;
  // Serial.print(acc,DEC);
  //Serial.print("acc   ");
  // Serial.print(directionTU);
  // Serial.print(" ");
   pulseWidthR = min(max(pulseWidthR-acc-directionTU,1250),1750);
   pulseWidthL = max(min(pulseWidthL+acc-directionTU,1750),1250);
   
  // Serial.print(pulseWidthR,DEC);
  // Serial.print("pR   ");
  // Serial.print(pulseWidthL,DEC);
  // Serial.print("pL   ");
  //Serial.print("\n");
}

void pilote(int valUS,int valTU){
  int acc=0,dirR=75,dirL=75;
  directionTU=getDirection();
  if(directionTU>0){
    dirR=75;
    dirL=75-150*directionTU/45;
   }
  if(directionTU<0){
    dirL=75;
    dirR=75-150*directionTU/45;
   }
 
  acc=(30*max(min(valUS,100),3)/100)-15;
  //Serial.print(acc,DEC);
  //Serial.print("acc   ");
  //Serial.print(directionTU);
  // Serial.print("directU   ");
 
  //Serial.print(dirL);
  //Serial.print(" dirL   ");
  // Serial.print(dirR);
  //Serial.print("dirR ");
 
 
  pulseWidthL = max(min(pulseWidthL+acc,1675),1325);
  pulseWidthR = min(max(pulseWidthR-acc,1325),1675);
 
  pulseWidthL = max(min(pulseWidthL+dirL,1750),1250); 
  pulseWidthR = min(max(pulseWidthR-dirR,1250),1750);
 
 
  // Serial.print(pulseWidthR,DEC);
  // Serial.print("pR   ");
  // Serial.print(pulseWidthL,DEC);
  // Serial.print("pL   ");
  // Serial.print("\n");
}

void setup(){
  pinMode(servoTU,OUTPUT);


 

  pinMode(button,INPUT);

  pinMode(13,OUTPUT);
  lastPulseL=millis();
  lastPulseR=millis();
  lastPulseTU=millis();
 
  nbAngle=angleMax-angleMin;
  for (int n=0;n<nbAngle;n++)
   distance[n]=100;
 }

void loop(){ 
  turnOnOff=readButton();
 // Serial.print(turnOnOff);
 // Serial.print("  ");
 
  valIR=readSensorIR();
 
 
  setLed((100-min(max(valIR,0),100))*1024/100);
 
 // Serial.print(valIR,DEC);
 // Serial.print("cm   ");

   
 // Serial.print(valUS);
 // Serial.print("cm   ");
 
  if(turnOnOff==1){
    pilote2(valIR);
   
   servoL(pulseWidthL);
   servoR(pulseWidthR);
   turn=servoT(getPulseT());
   if(turn==1){
    distance[angle+angleMax]=valIR;
    if(sensTU==1)
     angle=angle-1;
    else
     angle=angle+1;
   }
  }
  else{
   valPot=(valPot+readSensorPot())/2;
   servoT(valPot);
  }
 
  //Serial.print(valPot);
  //erial.print(" \n");
}

agora nao de erro. Vou montar o esquema e ver se funciona ::)
Título: Re: um carro
Enviado por: vicardosof em 06 de Março de 2010, 13:44
Então era o que eu falei no inicio, variável ao mesmo tempo void.
Título: Re: um carro
Enviado por: joao rexinho em 06 de Março de 2010, 18:03
Nao funciona :( :( :( o servo faz um movimento e volta ao local onde começou e depois nao mexe mais :( :( peço ajuda novamente visto que so um elemento do forum e que me responde.
Título: Re: um carro
Enviado por: vicardosof em 06 de Março de 2010, 18:17
Irei fazer um resumo do ocorrido:

Tens dois motores DC e queres fazer com que eles movimentem um carro e desvie de objectos.

O problema do motor para ocorre quando? Quando ligas ou quando desvia?
Título: Re: um carro
Enviado por: joao rexinho em 06 de Março de 2010, 18:51
os motores DC nao se mexem e o servo so faz quando se liga
Título: Re: um carro
Enviado por: senso em 06 de Março de 2010, 20:40
continua , apaguei  as linhas que encoliam motor_left uma a uma depois passou  para motor_right e depois pra a "linha if(millis()-lastPulseL >= refreshTimeServoL){" e de seguida com as digitalWrite :( :( o que devo fazer???????????
Quando é assim procura por {} e () e [] mal fechados ou uma ; ou : no sitio errado, ou usar = num if em vez de ==
Título: Re: um carro
Enviado por: joao rexinho em 09 de Março de 2010, 20:07
montei exactamente o circuito como esta neste esquema http://arduinofun.com/blog/2009/10/25/duel-motor-driver/ (http://arduinofun.com/blog/2009/10/25/duel-motor-driver/)  e o SN754410NE começou a aquecer muito ate me queimei ma os motores n funcionaram e fiz outro esquema com esta aqui http://itp.nyu.edu/physcomp/Labs/DCMotorControl (http://itp.nyu.edu/physcomp/Labs/DCMotorControl) e começou a aquecer e o motor nao funcionava. será que o SN754410NE queimou?
Título: Re: um carro
Enviado por: vicardosof em 09 de Março de 2010, 20:30
Algum indicio de peça "aberta"?
Título: Re: um carro
Enviado por: joao rexinho em 11 de Março de 2010, 01:14
como assim? ???
Título: Re: um carro
Enviado por: guibot em 11 de Março de 2010, 03:04
Citar
montei exactamente o circuito como esta neste esquema http://arduinofun.com/blog/2009/10/25/duel-motor-driver/ (http://arduinofun.com/blog/2009/10/25/duel-motor-driver/)  e o SN754410NE começou a aquecer muito ate me queimei ma os motores n funcionaram e fiz outro esquema com esta aqui http://itp.nyu.edu/physcomp/Labs/DCMotorControl (http://itp.nyu.edu/physcomp/Labs/DCMotorControl)  e começou a aquecer e o motor nao funcionava. será que o SN754410NE queimou?

cheira-me a curto circuito. tens a certeza de que estás a ligar tudo correctamente? tens alguma foto para vermos?
Título: Re: um carro
Enviado por: joao rexinho em 20 de Março de 2010, 14:17
Acho que o problema foi que a bateria era de 9v 1300mAh e o H-BRIGED é de 1A resumindo 1300mAh=1,3A de intensidade
Título: Re: um carro
Enviado por: jorge_rc em 20 de Março de 2010, 14:21
A bateria ate podia ser de 4000mah, se a ponte-h so "pedir" 1A, é essa corrente que a bateria vai disponibilizar...
Título: Re: um carro
Enviado por: joao rexinho em 20 de Março de 2010, 14:50
sei qualm foi foi o problema