Pages: [1]   Go Down
Author Topic: Consiglio motori per macchinina  (Read 561 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

Code:
// 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 );
}
« Last Edit: January 29, 2013, 03:16:46 pm by UweFederer » Logged

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 57
Posts: 3552
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

my name is IGOR, not AIGOR

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink) consegnato in 10gg con ordine il 27 di dicembre.
Forse é stato c...
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 2
Posts: 723
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20273
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

rettifico, oggi mi è arrivata da pagare la dogana, ...
Ti hanno letto il reply di ieri e hanno reagito subito?  smiley-wink smiley-wink smiley-wink
Ciao Uwe
Logged

Pages: [1]   Go Up
Jump to: