Consiglio motori per macchinina

Ciao a tutti,
ho provato a cercare sul forum ma forse la domanda è troppo generica.
Dopo un mese di vari progettini ho deciso la settimana scorsa di unire tutte le 'competenze limitate' che ho acquisito per fare una macchinina.
Ho assemblato questo chassis http://www.miniinthebox.com/intelligent-tracking-trolley-chassis-with-coded-disc_p407335.html e cominciato a comandarli con un l298n h-bridge però vedo che non riesco a controllarli molto bene, uno sembra andare meglio dell'altro quando lo appoggio a terra, in più non riesco a controllare una velocità bassa, se abbasso l'impulso analogico sotto '200' non riescono a spostare la macchina.

porzione di codice che comanda un motore:
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);//setting motorA's directon
analogWrite(ENA,200);

Ho diversi dubbi:

  • il tutto troppo pesante: chassis+10 pile AA(6 per arduino e 4 per i motori)+ arduino uno+ sensore prossimità +l298n h-bridge
  • le pile che uso non sono ottimali: normali pile energizer
  • errori nel codice
  • altro

Allego tutto il codice:

// motor
int ENA=5;//connected to Arduino's port 5(output pwm)
int IN1=2;//connected to Arduino's port 2
int IN2=3;//connected to Arduino's port 3
int ENB=6;//connected to Arduino's port 6(output pwm)
int IN3=4;//connected to Arduino's port 4
int IN4=7;//connected to Arduino's port 7
//HC RS04 Ultrasound sensor
int triggerPort = 12;
int echoPort = 8;
long dist = 0;
long stopDist = 10;
long slowDist = 20;
int velMax = 255;
int velSlow = 200;


void setup()
{
 //setup motors
 pinMode(ENA,OUTPUT);//output
 pinMode(ENB,OUTPUT);
 pinMode(IN1,OUTPUT);
 pinMode(IN2,OUTPUT);
 pinMode(IN3,OUTPUT);
 pinMode(IN4,OUTPUT);
 digitalWrite(ENA,LOW);
 digitalWrite(ENB,LOW);//stop driving
 digitalWrite(IN1,HIGH); 
 digitalWrite(IN2,LOW);//setting motorA's directon
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,LOW);//setting motorB's directon
 //setup ultrasound sensor
 pinMode( triggerPort, OUTPUT );
 pinMode( echoPort, INPUT );
 Serial.begin( 9600 );
 Serial.println( "Sensore ultrasuoni: ");
}
void loop()
{
  proximity();
  driveMotors();
}

void driveMotors(){
  if (dist>stopDist) {
    goSx(); goDx();
  } else {
    stopSx(); stopDx();
    backSx(); backDx();
    delay(2000);
    stopSx(); stopDx();    
    goSx();
    delay(1000);    
    stopSx(); stopDx(); 
  }
}

void goDx(){
  digitalWrite(IN1,HIGH); 
  digitalWrite(IN2,LOW);//setting motorA's directon
  if (dist>slowDist){
    analogWrite(ENA,velMax);
  } else {
    analogWrite(ENA,velSlow);
  }
}

void stopDx(){
  digitalWrite(ENA,LOW);
}

void backDx(){
 digitalWrite(IN1,LOW); 
 digitalWrite(IN2,HIGH);//setting motorA's directon
 analogWrite(ENA,velMax);
}

void goSx(){
  digitalWrite(IN3,HIGH); 
  digitalWrite(IN4,LOW);//setting motorB's directon
  if (dist>slowDist){
    analogWrite(ENB,velMax);
  } else {
    analogWrite(ENB,velSlow);
  }
}

void stopSx(){
  digitalWrite(ENB,LOW);
}

void backSx(){
 digitalWrite(IN3,LOW);
 digitalWrite(IN4,HIGH);//setting motorB's directon
 analogWrite(ENB,velMax);
}

void proximity(){
  //porta bassa l'uscita del trigger
  digitalWrite( triggerPort, LOW );
  //invia un impulso di 10microsec su trigger
  digitalWrite( triggerPort, HIGH );
  delayMicroseconds( 10 );
  digitalWrite( triggerPort, LOW );
  long duration = pulseIn( echoPort, HIGH );
  long r = 0.034 * duration / 2;
  Serial.print( "durata: " );
  Serial.print( duration );
  Serial.print( " , " );
  Serial.print( "distanza: " );

  //dopo 38ms è fuori dalla portata del sensore
  if( duration > 38000 ) Serial.println( "fuori portata");
  else { Serial.print( r ); Serial.println( "cm" );}
  dist = r;
  //aspetta 1.5 secondi
//  delay( 1500 );
}

Scusa se vado "fuori tema". Ma dal link che hai messo il venditore sembra interessante (prezzi bassissimi)
Mi sembra però un venditore cinese. Tu hai acquistato da li? I tempi di consegna? Il pacco non è stato fermato alla dogana?

grazie e scusa se aggiungo domanda alla tua domanda.

Devo ammettere che non ho avuto problemi e anche se l'ordine era di un valore di circa 150€ (mi sono fatto prendere la mano ;)) consegnato in 10gg con ordine il 27 di dicembre.
Forse é stato c...

rettifico, oggi mi è arrivata da pagare la dogana, alla fine conviene acquistare qui vicino, nel senso che il risparmio si vanifica.
sbagliando si impara. =(

Il problema di alimentazione non è da escludere.. Forse perchè sono dal cellulare, ma il venditore non parla delle specifiche dei motori, Quindi per un giusto dimensionamento dovresti informarti al riguardo! Stessa cosa vale per la coppia

gdallari:
rettifico, oggi mi è arrivata da pagare la dogana, ...

Ti hanno letto il reply di ieri e hanno reagito subito? :wink: :wink: :wink:
Ciao Uwe