Progetto di dispositivo autobilanciante

Salve a tutti. Questa è la prima volta che scrivo su questo forum e anche la prima volta che mi affaccio sul mondo Arduino quindi chiedo scusa in anticipo per le inesattezze che potrò scrivere.

Sono uno studente di ingegneria informatica e dovrò lavorare ad un progetto con Arduino per un esame del mio corso di laurea. La mia idea era quella di creare un "robottino" dotato di due ruote che si autobilanciasse. Mi sto informando sui sensori e componenti vari da utilizzare e sono arrivato alla conclusione che, seguendo le equazioni fisiche che sono riuscito a scrivermi, dovrò utilizzare un giroscopio (per gestire la variazione di inclinazione) e un accelerometro (per gestire la forza/accelerazione fornita in "ingresso" al fine di stabilizzare il sistema).

Il mio dubbio principale era sulla reale possibilità di costruire un sistema del genere con così pochi componenti o se fosse richiesta un'attrezzature maggiore. Ovviamente so che avrò bisogno di motori per far muovere le mie ruote e anche su questo avrei da chiedervi un paio di cose. Quali motori dovrò usare? Sarà necessario usare un servo motore?

Da quello che ho capito sui servo motori non dovrei averne bisogno, ma ho ancora un po' le idee confuse a riguardo.

Vorrei da voi un parere su quali componenti utilizzare e su dove trovarli online.

Grazie in anticipo a quanti mi risponderanno.

ciao
in questa discussione se ne parla

Grazie per la rapida risposta.

Ho letto tutta la discussione che mi hai linkato e ora ho un idea più chiara su quale accelerometro e giroscopio acquistare.

Avrei ancora un piccolo dubbio sul motore. Di quali caratteristiche avrei bisogno per questo mio progetto? E poi, posso collegare qualsiasi motore ad ogni tipo di ruote o c'è da verificare che ruote e motore siano "fatte le une per le altre"?

ciao
per motore e ruote devi cercare, le ruote hanno una loro resistenza (inerzia), devi considerare anche l'attrito ruota suolo, un motore con uno spunto elevato potrebbe fare slittare le ruote a contatto con il suolo, il motore deve vincere tutte le resistenze, servirebbero nozioni di meccanica puoi chiedere a qualche collega

Cercando un po' in giro mi pare di aver capito che un motore DC faccia al caso mio in quanto anche Arduino dovrebbe essere alimentato a corrente continua (?) e quindi dovrei poter passare l'alimentazione dall'Arduino al motore senza problemi.

Potresti consigliarmi un sito affidabile su cui comprare e dove non impieghino tempi troppo lunghi per spedire?

ciao
a questo non ti so rispondere solo perchè ce ne sono una infinità, prova robotitaly o futura elettronica

io qualche anno fa realizzai questo dispositivo.

Ai tempi avevo molte meno risorse e più tempo libero...

nostalgia a parte, non chiedermi il codice perchè è andato perduto insieme a tutto il resto delle cose che avevo nella vecchia casa a causa di traslochi ecc ecc

Comprai 2 servomotori e li modificai per renderli a rotazione continua e collegai un nunchuck della wii. Poi implementai via SW un rudimentale filtro di kalman e gli diedi il via.
Niente di che, sicuramente se ti impegni un minimo lo fai meglio del mio. :smiley:

Cosa bisogna fare per modificare un servo motore? Non vorrei sia una cosa troppo complessa in quanto non ho molta manualità con queste cose non avendole mai fatte prima. E poi quale tra i due è più facilmente controllabile tra servo motore e motore DC?

Questi per fare delle prove dovrebbero andare bene http://www.ebay.com/itm/arduino-smart-Car-Robot-Plastic-Tire-Wheel-with-DC-3-6v-Gear-Motor-/200991683497?pt=LH_DefaultDomain_0&hash=item2ecc09b3a9

Modificare dei servo include eliminare i blocchi meccanici ed il circuito, se proprio non e' necessario, ti consiglio di usare quei riduttori con motore e ruota gia forniti, e' piu semplice (e non si rovinano dei servo che potrebbero venire buoni per qualcos'altro ;))

Perfetto, queste ruote sembrerebbero fare proprio al caso mio anche se mi sembrano un po' piccole. Credete possano bastare 6,5 cm di diametro per mantenere bilanciato il tutto?

io avevo in casa dei servomotori e usai quelli, i motori che ti ha linkato Etemenaki vanno più che bene.

Al massimo compri un'altro paio di ruote o uno chassis

un motore DC lo piloti con un L298N fino a 4 Ampere per canale mi pare, un servo basta che lo alimenti e attacchi un pin a arduino e fa tutto da solo.

Un servo ha una regolazione più grossolana, ovvero acceso-spento. Un motore DC puoi pilotarlo in pwm dando la coppia e la velocità che vuoi, inoltre puoi leggere la corrente che ci passa dentro e implementare un codice ancora più performante.

Ed in piu, quei "cosi" hanno il perno che esce da entrambe le parti, quindi se servisse sarebbe pure semplice aggiungerci degli encoder, per future applicazioni :wink:

Quindi per pilotare quelle ruote avrei bisogno dell'encoder che andrà collegato all'Arduino mentre le ruote si collegheranno all'encoder stesso, esatto?

Ho trovato questo chasis che dovrebbe fare a caso mio: http://www.ebay.com/itm/Smart-Robot-Car-Kit-with-Speed-encoder-Battery-Box-for-Robot-Car-Universal-wheel-/251602450002?pt=LH_DefaultDomain_0&hash=item3a94acb652
I motori dovrebbero essere facilmente collegabili in una posizione più centrale rispetto a quella mostrata in foto. L'unica cosa che non ho capito nella lista delle cose presenti nel pacco è:
2 x Gear Motor (1:48)
Ÿ1 x Universal wheel
Cioè, mi mandano due motori ma una sola ruota?

No, non ha “bisogno” di un’encoder … il fatto di poterci aggiungere un’encoder viene utile nel caso ti serva di costruire qualcosa che deve memorizzare gli spostamenti, o misurarli con precisione (ad esempio, quei robot o rover in grado di memorizzare un percorso e ripeterlo preciso, o di calcolarsi l’ambiente ed i percorsi … in quel caso, siccome ti serve sapere esattamente di quanto ti muovi ogni volta, serve che le ruote abbiano un’encoder, ed il fatto di avere gia il perno che sporge dall’altro lato semplifica di molto l’assemblaggio)

Quindi, io che devo controllare solo la velocità non ne ho bisogno, giusto?

Per fare solo il bilanciamento, no, ti basi sui dati di accelerometro e giroscopio, per quello ...

No io credevo di aver bisogno dell'encoder per poterne gestire la velocità.

Salve a tutti. Sto iniziando a ricevere i componenti ordinati ed ora mi sorgono nuovi dubbi. I motori richiedono una tensione di 6V ma, da quanto ho capito, ogni pin Arduino può fornire al massimo 5V di tensione. Considerato che ho una cella per una batteria a 9V avevo pensato di utilizzare dei transistor ad ogni pin a cui andrà collegato un motore. Credete sia una soluzione praticabile? E se la scelta è giusta, come faccio a dire ad un pin di prendere solo 6V?

Avevo inoltre pensato di utilizzare, insieme ai transistor, dei diodi ad ogni pin in modo da evitare pericolosi "ritorni di corrente". Credete sia necessario o posso anche evitare?

I motori che ho sono questi: http://www.ebay.com/itm/arduino-smart-Car-Robot-Plastic-Tire-Wheel-with-DC-3-6v-Gear-Motor-/200991683497
Come faccio a collegare quelle due sporgenze metalliche da cui suppongo debbano trarre l'alimentazione al mio Arduino? Esistono dei fili di collegamento che "si incastrano" o devo saldare qualcosa?