Go Down

Topic: Consiglio motori per macchinina (Read 752 times) previous topic - next topic

gdallari

Jan 28, 2013, 04:07 pm Last Edit: Jan 29, 2013, 09:16 pm by UweFederer Reason: 1
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: [Select]
// 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 );
}

nid69ita

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.
my name is IGOR, not AIGOR

gdallari

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

gdallari

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

sciorty

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

uwefed


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

Ti hanno letto il reply di ieri e hanno reagito subito?  ;) ;) ;)
Ciao Uwe

Go Up