Go Down

Topic: Problema robot!!!! (Read 639 times) previous topic - next topic

Mirko98

Sep 25, 2013, 03:51 pm Last Edit: Sep 25, 2013, 09:43 pm by leo72 Reason: 1
Salve a  tutti, ho un problema con il mio robo. Ho fatto il telaio prendendo da modello quelli in plastica che si comprano. Ho montato i 2 motori, Arduino uno rev. 3 , la adafruit motor shield e il sensore ad ultrasuoni. Il problema è che parte per pochi secondi solo un motore e poi si ferma. Gradirei una risposta veloce poichè questo progetto mi è utile per scuola, grazie. Ecco il codice:
:) :)

Code: [Select]
#include <AFMotor.h>
AF_DCMotor motor(2, MOTOR12_64KHZ);
AF_DCMotor motor1(1, MOTOR12_64KHZ);
int triggerPort = 7;
int echoPort = 8;

void setup() {                

 motor.setSpeed(230);
 motor1.setSpeed(255);
 pinMode( triggerPort, OUTPUT );
 pinMode( echoPort, INPUT );
 Serial.begin(9600);
 Serial.println( "Sensore ultrasuoni: ");
 
}

void loop(){
 motor.run(FORWARD);
 motor1.run(FORWARD);
 digitalWrite( triggerPort, LOW );
 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: " );
if( duration > 38000 ) Serial.println( "fuori portata");
else { Serial.print( r ); Serial.println( "cm" );}

if(r>20){
 motor.run(FORWARD);
 motor1.run(FORWARD);
}
else{
 motor.run(RELEASE);
 motor1.run(FORWARD);
}

}

ghennet

io gradirei una coca cola... con ghiaccio... ... già che ci sei anche limone ....


per un fare un debug potresti intanto partire dal motore che non va ... è il motor o il motor1 ??

PaoloP

#2
Sep 25, 2013, 04:25 pm Last Edit: Sep 25, 2013, 04:31 pm by PaoloP Reason: 1
Sarebbe utile sapere come hai fatto i collegamenti e quale fonte di alimentazione usi.
La motor shield è questa http://www.adafruit.com/products/81 ?
Che motori hai? Dati tecnici?

Leggi il regolamento, in particolare i punti 7, 8 e 9 --> http://forum.arduino.cc/index.php?topic=149082.0
Modifica il tuo post precedente e includi il codice con gli appositi tag.

Benvenuto.  :smiley-mr-green:

Mirko98

Scusa, comunque la scheda è quella, ho utilizzato normali motori dc e facendo una oriva ho visto che possono trainare il robo comodamente. Quando carico il programma parte solo un motore ( che sarebbe "motor1" nel codice). Non capisco cosa ci sia di sbagliato nel codice e tanto meno nell' hardware. Ecco alcune foto:




cece99


Gradirei una risposta veloce poichè questo progetto mi è utile per scuola, grazie.

Non mi risulta che ci sia la maturità domani ;)
Potevi prenderti per tempo, mica programmiamo for food XD
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

PaoloP


normali motori dc


Normale DC non vuol dire granchè. (servirebbe il datasheet, o foglio con le specifiche tecniche)
Ci sono motorini da 70mA che sotto sforzo arrivano a 170 e altri che da 100 arrivano a 400mA.
Visto che ne hai due e che la USB, alla quale mi pare attaccato il tutto, eroga solo 500mA, se togli anche la corrente per il micro e il driver... nun glia fà.  (Spero di averlo scritto correttamente)  :smiley-mr-green:

Bellino il carro.  ;)

Mirko98

c'è,  i motorini gli ho trovati in giro così, non gli ho comprati. quindi non so reperire i datasheet perchè non c'è scritto niente. Non so proprio cosa fare. Poi comunque ho provato con un alimentatore a collegare il tutto  va perfettamente. Ma il codice è giusto?? A me sembra di aver fatto tutto correttamente ma evidentemente c'è qualcosa di sbagliato e non so cosa. Potete aiutarmi?? =( =( =( =( =( Grazie.

PaoloP

#7
Sep 25, 2013, 06:52 pm Last Edit: Sep 25, 2013, 06:56 pm by PaoloP Reason: 1
Secondo me c'è un errore anche nel codice.
Prova così...
Code: (http://codebender.cc/sketch:19427) [Select]
#include <AFMotor.h>
AF_DCMotor motorDX(2, MOTOR12_64KHZ);
AF_DCMotor motorSX(1, MOTOR12_64KHZ);
int triggerPort = 7;
int echoPort = 8;

void setup() {                
motorDX.setSpeed(230);
motorSX.setSpeed(255);
pinMode(triggerPort, OUTPUT);
pinMode(echoPort, INPUT);
Serial.begin(9600);
Serial.println(F("Sensore ultrasuoni: "));
motorDX.run(FORWARD);
motorSX.run(FORWARD);
}

void loop(){
long range = distance();
if(range > 20) {
motorDX.run(FORWARD);
motorSX.run(FORWARD);
}
else{
  motorDX.run(RELEASE);
  motorSX.run(FORWARD);
}
}

long distance(){
digitalWrite(triggerPort, LOW);
digitalWrite(triggerPort, HIGH);
delayMicroseconds( 10 );
digitalWrite( triggerPort, LOW );
long duration = pulseIn(echoPort, HIGH);
long r =  duration / 59;
Serial.print(F("durata: "));
Serial.print(duration);
Serial.print(F(" , "));
Serial.print(F("distanza: "));
if( r > 38000 )
  Serial.println(F("fuori portata"));
  else
    {
Serial.print(r);
    Serial.println(F(" cm"));
      }
return r;
}


Ho fatto qualche modifica.
Compila ma non l'ho provato perchè non ho la MotorShield.

p.s. Scusa per l'indentazione ma l'ho scritto su codebender e non con l'IDE.
Puoi comunque aggiustarla col comando "Formattazione automatica" nel menù strumenti.  ;)

leo72

#8
Sep 25, 2013, 09:50 pm Last Edit: Sep 26, 2013, 01:17 am by leo72 Reason: 1
Ciao Mirko98.
Vedo che sei nuovo e non hai letto il regolamento.

Ti riassumo brevemente alcuni punti:
1) si deve mettere un titolo della discussione consono al problema, scrivere solo "problema robot" con 4 punti esclamativi non aiuta nessuno a capire cosa succede;
2) il codice si racchiude con gli appositi tag, se editi il tuo primo post vedrai come ho fatto io;
3) le foto non si mettono così grandi. Rallenti il caricamento del thread. Nel regolamento che ti ho citato c'è scritto come fare per inserire delle foto in maniera appropriata
4) la cosa che dà fastidio è l'"urgenza" nella richiesta. Qui tutti aiutano nel tempo libero  ;)
5) ti è stato fatto presente più di una volta di aver fatto una richiesta in maniera non consona, potevi almeno sistemare le cose che ti avevano segnalato (il codice lo hai messo alle 15:51, da allora non hai avuto tempo di leggere il regolamento e racchiuderlo fra i tag?)  :smiley-sweat:

Etemenanki


... i motorini gli ho trovati in giro così ...


... e, se non mi sbaglio, sono pure uno diverso dall'altro, almeno a giudicare dalle immagini ... se uno e' a 5V ed uno a 12 o piu, e' ovvio che uno andra' piu lento o magari neppure partira' ... ed anche se partisse, e se fossero entrambi da 5v, non e' detto che andrebbe diritto, perche' potrebbero avere forze e velocita' diverse ;)

Prima cosa da fare, trovare due motori identici, meglio ancora se demoltiplicati, dato che con quel raggio di ruota, alcuni motori potrebbero non farcela neppure a muoverla, se accoppiati direttamente ... ormai non costano neppure molto ... http://www.ebay.com/itm/2pcs-x-DC-Motor-Geared-Motor-Uniaxial-Robot-Smart-Car-1-288-/181145252592?pt=LH_DefaultDomain_0&hash=item2a2d1932f0 ... e in asta magari li paghi anche meno http://www.ebay.com/itm/2PCS-DC-3v-6V-1-48-Gear-Motor-For-Robot-/181225005168?pt=LH_DefaultDomain_0&hash=item2a31da2070
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.

Go Up