"El carodel"
veicolo elettrico a due ruote autostabilizzante...
che da grande vuole diventare un Segway.
(progetto del 2015)
Premessa
In dialetto locale "carodel" significa "carretto scalcinato", nome immediatamente affibbiatogli da un tizio che mi ha visto durante il primo collaudo: "cossa te fa su quel carodel? ", per citare le sue testuali parole.
Il nome è consono al veicolo che presento in questa pagina, visto che sembra il brutto anatroccolo che "da grande" vuole diventare un Segway. Vedi: www.segway.it/
Dal punto di vista estetico di Segway non c'e' tanto, ma almeno sta in piedi, si muove ed anche corre e gira, "quasi" come un vero e costosissimo Segway.
E' attualmente in fase di sviluppo e perfezionamento e al termine dell'articolo descriverò anche i suoi limiti e difetti.
Nonostante la sua natura sperimentale (leggi rudimentale) il coso usa gli stessi princìpi del veicolo originale, ovvero un sistema di stabilizzazione dotato di accelerometri e giroscopi molto sofisticato.
Ho fatto qualche ricerca in rete e sembra che questo progetto non sia stato affrontato da molti sperimentatori. Se qualcuno in Italia ha realizzato un simile veicolo, sarei lieto di mettermi in contatto con lui per scambiare impressioni ed esperienze.
La meccanica:
Vediamo i dettagli costruttivi:
- Struttura in profili metallici saldati ad arco.
- Manubrio in alluminio dotato di snodi per un facile trasporto (anche nel bagagliaio di un'auto).
- Trasmissione a pignone-catena-corona.
- Ruote da minimoto diametro 400mm, spessore pneumatici 70 mm, cerchi in lega leggera.
- 2 Motori C/C a 24V 350W.
- 2 Accumulatori da 12V 18Ah in serie.
- 2 pulsanti per girare a desta e sinistra.
- Pulsante di sicurezza per la disattivazione immediata dei motori in caso di caduta (dead man switch).
- Cruscotto LCD 'surplusizzato' da un quad rottamato di produzione cinese.
Non indico le misure dei vari elementi un quanto sono soggette alla più vaste personalizzazioni in base ai motori, ruote ed ammenicoli che riuscite a rintracciare o disponibili nel vostro lab.
I motori sono stati installati uno davanti e uno dietro all'asse delle ruote, in modo da ottenere una distribuzione ottimale dei pesi.
Gli accumulatori sono stati invece installati sull'asse centrale, perpendicolare alle ruote (il disegno iniziale è stato modificato, vedi foto).
La scheda elettronica è stata montata sulla zona sottostante alla pedana.
Il manubrio è ripiegabile o removibile a seconda delle esigenze, ed è collegato all'elettronica per mezzo di un cavo multipolare dotato di presa a 25 poli standard Centronics (ex cavo parallelo).
Il sensore MPU6050 è posizionato sotto la piattaforma poggiapiedi, molto vicino all'asse delle ruote, questo per una maggiore precisione di lettura.
Possiamo vedere dalle foto il suo corretto posizionamento, con i componenti rivolti verso il basso.
Ed ora quattro parole sull'elettronica, precisamente la scheda Crius All in One:
Caratteristiche tecniche:
- Processore Atmel ATMega 2560-16AU.
- IMU (giroscopio ed accelerometro a 3 assi): MPU6050.
- Magnetometro HMC5883L (bussola digitale) al momento non utilizzata.
- Barometro MS5611-01BA03 (presente sulla scheda ma non utilizzabile nemmeno in futuro).
- 4 porte seriali.
- 1 porta USB FT232RQ USB-UART.
- Dimensioni 50x50mm.
Web: http://fpvcentral.net/2013/03/crius-all-in-one-pro-review/
La scheda Crius All in One:
Questa è la scheda di controllo da me usata, si tratta di una CRIUS All in One, sicuramente nota agli autocostruttori di multirotori.
L'ho usata perchè ne avevo un paio disponibili in laboratorio, reduce da precedenti esperienze con i multirotori.
Si tratta di un'unità inerziale dotata del diffuso chip MPU6050, che contiene di set di tre accelerometri e di tre giroscopi disposti su tutti e tre gli assi.
Il cuore della scheda è un microntrollore ATMEL ATmega 2560 ed è corredata anche di un magnetometro molto preciso e di un barometro digitale (solitamente usato come altimetro)
Con un adeguato software è in grado di discriminare angoli piccolissimi ed è molto precisa e stabile.
La programmazione è stata fatta in ambiente Arduino, infatti la scheda CRIUS è perfettamente compatibile con questo sistema di sviluppo.
IMPORTANTE: In mancanza di questa scheda è possibile utilizzare senza problemi un Arduino UNO Rev.3, molto meno costoso e facilmente reperibile.
All'Arduino è però indispensabile collegare esternamente un modulo giroscopio/accelerometro MPU6050 (conosciuto anche con la sigla GY521), reperibile in rete a pochi euro.
Controllo di potenza motori:
Il controllo motori è stato realizzato con un modulo prodotto da una ditta americana, la Dimension Engineering, che avevo già in laboratorio ed impiegato anche su alcuni dei miei robot:
- Doppio regolatore di velocità a mosfet: Sabertooth da 2X32 Ampere:
Web: https://www.dimensionengineering.com/products/sabertooth2x32
Non possiedo lo schema di questo modulo, ma le sue caratteristiche sono le seguenti:
Dispone di due distinti canali e supporta fino a 32 Ampere per canale. L'hardware è sostanzialmente un ponte ad H equipaggiato di MOSFET di potenza, opera in PWM ad alta frequenza e l'interfacciamento con la scheda Crius/Arduino avviene tramite porta seriale a 9600 baud.
Il modulo stesso provvede a fornire in uscita i 5V necessari alla scheda CPU e MPU.
Una caratteristica molto utile di questo modulo è la capacità di ricaricare gli accumulatori in fase di frenata o quando viene affrontata una discesa, per questo viene definito "autorigenerante".
Nel prototipo è stato usato questo modulo in quanto l'avevo già disponibile in laboratorio.
Ho però allo studio un controllo di potenza completamente disegnato costruito in proprio.
Schema elettrico:
Pubblico qui lo schema basato su Arduino Uno, nella certezza che sia più comodo da assemblare in assenza della scheda Crius AIO.
S1 è l'interruttore generale di alimentazione, S2 serve a girare destra, S4 a sinistra, S3 e S5 servono a calibrare la risposta del sistema di bilanciamento, S6 è l'interruttore "dell'uomo morto" (vedi oltre), il LED bicolore serve ad indicare la modalità di funzionamento (calibrazione, pronto, in moto).
La polarità dei motori va trovata in base alla vostra configurazione.
Il software:
Questa è la parte più interessante dell'intero progetto ed ha richiesto molto lavoro di sperimentazione.
Non ha nulla a che vedere con il progetto pubblicato anni fa da una nota rivista italiana di elettronica. E' invece stato scritto in casa implementando frammenti di codice ricavati dalle application notes dei vari componenti ed integrato da routine appositamente progettate.
Forse non è elegante, ma è semplice, efficace e funziona discretamente bene.
Il kernal del codice può essere riutilizzato per qualsiasi altra applicazione che richieda un sistema di rilevamento di accelerazioni e spostamenti angolari, dunque diversi altri impieghi.
Ecco il software, configurato per Arduino UNO : UserFiles/laserist/File/carodel1.zip
(Avviso: scaricate e decomprimete tutti i file nella stessa directrory di lavoro, salvatela ed aprite il file carodel1.ino, altrimenti darà errore in fase di compilazione. Non dovrebbero servire librerie esterne).
L'algoritmo di stabilizzazione:
Ho cercato di semplificare al massino i vari moduli che ho trovato nelle application note della IMU, il risultato è uno sketch abbastanza compatto, anche se non di facile lettura. Riesce a discriminare lo spostamento angolare di un solo grado con buona affidabilità e stabilità.
Il cuore dell'algoritmo lo trovate nella sottocartella IMU. Il codice è commentato in parte, dunque non ci dovrebbero essere problemi di comprensione.
In sostanza funziona così:
All'accensione viene effettuata una serie di letture della MPU6050 per consentirne la stabilizzazione. Questa fase dura circa 5 secondi.
L'algoritmo di lettura integra la lettura dei giroscopi e degli accelerometri in modo da ottenere dati affidabili. Questo è fondamentale perchè la sola lettura dell'accelerometro non fornisce un corretto valore della posizione del sensore a breve termine.
L'accelerometro infatti è poco preciso negli spostamenti istantanei, al contrario dei giroscopi che reagiscono solo quando avviene un cambiamento della posizione angolare.
Altresì i giroscopi tendono a perdere precisione a lungo termine, per questo per ottenere una precisione accettabile è necessario integrare i valori di entrambi i sensori.
Viene usato solo uno dei tre valori forniti dalla MPU, precisamente quello dell'asse perpendicolare alle ruote. A riposo e a piattaforma orizzontale, il valore angolare fornito è prossimo allo zero.
Inclinando la piattaforma questo varierà in modo proporzionale all'inclinazione, con valori positivi o negativi.
La differenza dallo zero viene interpretata dalla CPU come comando per attivare i motori in un verso o nell'altro, in modo da muovere le ruote per contrastare l'inclinazione. Ad equilibrio raggiunto i motori rimangono in stand-by, ma pronti ad intervenire per altre correzioni.
Durante la stabilizzazione iniziale i motori sono ancora spenti e il led indicatore sul cruscotto è rosso lampeggiante (indicativo della procedura di stabilizzazione).
Al termine della stabilizzazione il led rimane ROSSO FISSO, possiamo dunque salire sulla piattaforma, tenendola il più possibile orizzontale.
Salendo, il nostro piede sinistro attiva "l'interruttore dell'uomo morto".
Si chiama così non perchè sarete spacciati salendo sul veicolo, il nome è stato inventato con l'avvento delle prime locomotive a vapore.
In caso il conducente si sentisse male o morisse per un infarto (o più probabilmente per un colpo di fucile), il treno non doveva proseguire la sua corsa per motivi di sicurezza.
Dunque inserirono una leva che il conducente doveva tenere premuta in continuazione, altrimenti il treno si fermava.
Anche nel nostro caso sarebbe pericolosissimo che il veicolo avanzasse senza nessuno a bordo, da qui l'esigenza di bloccare i motori in caso assenza del pilota o in caso di caduta.
L'interruttore è in realtà un microswitch fissato sotto la piattaforma e nascosto dal tappetino in gomma antiscivolo, armato da una robusta molla.
Se almeno una decina di chilogrammi lo premono, questo si attiva e consente l'alimentazione dei motori, ora il led diventa ora VERDE.
Un leggero fremito della piattaforma ci avvisa che i motori sono attivati e stanno contrastando l'eventuale inclinazione residua. E' importante che la piattaforma sia orizzontale per evitare reazioni inconsulte del mezzo, ad esempio una bella botta sullo stinco destro.
Ora, con un atto di fede, possiamo metterci anche il piede destro.
Noteremo che il veicolo sta in piedi da solo e se abbiamo l'accortezza di tenere verticale il manubrio, sta quasi fermo.
Proviamo ora ad inclinare appena appena il manubrio in avanti, anche pochi gradi di inclinazione faranno reagire i motori facendo avanzare il veicolo di qualche centimetro.
Se incliniamo ancora manubrio il veicolo si sposterà in avanti, se lo teniamo verticale si fermerà e se lo tiriamo verso di noi procederà all'indietro.
Per acquisire la dovuta pratica occorrerà un breve training, ma in genere si impara velocemente.
Ora proviamo a girare: premiamo il pulsante destro presente sul manubrio e ci accorgiamo che non succede nulla.
Questo perchè i motori sono in stato di equilibrio.
Sempre tenendo il pulsante premuto spostiamo il manubrio in avanti e il veicolo farà avanzare il motore di sinistra in percentuale maggiore, rallentando contemporaneamente quello destro.
Il risultato sarà una curva dolce a destra.
Viceversa se premiamo il pulsante sinistro, il motore sinistro verrà rallentato e quello destro accelerato, impostando una curva a sinistra.
Più grande sarà l'inclinazione, più stretta sarà la curva.
Volendo, con qualche piccola modifica al software sarebbe possibile farlo girare sul posto, ma non ho trovato questa funzione molto utile.
Il cruscotto, come già detto, è stato recuperato da un quad ed ha una funzione prettamente decorativa. L'ho svuotato dalla sua elettronica conservando solo il display LCD (che funge da voltmetro) e ho aggiunto i due pulsanti che servono a modificare la percentuale di reazione alle variazioni di assetto.
Premendo il primo, il veicolo diventerà più "nervoso" e reattivo. Premendo l'altro diventerà più tranquillo. Ad ogni pressione il valore aumenterà o diminuirà di uno step. ll valore giusto dovrete cercarlo con opportune prove.
Come si potrebbe migliorare il progetto:
In questa prima versione mancano alcune funzioni che potrebbero risultare utili:
- Una routine di "soft start" per evitare i bruschi movimenti della pedana all'attivazione dell'interruttore dell'uomo morto.
- L' installazione di una coppia di encoder per monitorizzare la velocità delle ruote, per garantire l'avanzamento in linea retta anche in caso di terreno irregolare. Può capitare infatti che se una delle ruote trova uno scalino o un sasso, rallenti e faccia deviare il veicolo. A tale scopo potrebbe anche essere sfuttato il magnetometro disponibile sulla scheda Crius AIO.
- Un sistema di sterzo non più basato sui pulsanti ma per mezzo di un manubrio inclinabile connesso ad un encoder, potenziometro o inclinometro.
- Un sistema di retroazione filtrato dal metodo "PID", su cui apro una piccola parentesi chiarificatrice:
Il controllo Proporzionale, Integrale, Derivativo, comunemente abbreviato come PID, è un sistema in retroazione implementato nei sistemi di controllo AZIONE - REAZIONE.
I sensori acquiscono un valore da un processo, che viene confrontato con un valore di riferimento prestabilito.
I segnali di errore, ovvero le differenze, una volta processati da un apposito algoritmo, vengono usati per determinare il valore della correzione da adottare per ripristinare il valore corretto.
Il PID regola la quantità di intervento in uscita in base a:
- Il valore del segnale di errore (azione proporzionale, "P")
- I valori precedenti del segnale di errore (azione integrale "I));
- La velocità di variazione (azione derivativa "D").
Tutti questi parametri posso essere regolati in modo da ottenere una risposta adeguata da parte del sistema di controllo, per evitare ad esempio variazioni troppo brusche e/o troppo intense.
Nel mio prototipo i motori potrebbero essere controllati in modo da fornire la giusta coppia per ripristinare l'equilibrio in base all'effettiva necessità.
In realtà ho fatto alcune prove e non ho ritenuto indispensabile l'impiego del controllo PID, almeno in questa versione di software. A livello di curiosità, questa è la base dell'algoritmo che ho usato nei miei esperimenti (fonte Wikipedia):
previous_error = 0
integral = 0
start:
error = setpoint - measured_value
integral = integral + error*dt
derivative = (error - previous_error)/dt
output = Kp*error + Ki*integral + Kd*derivative
previous_error = error
wait(dt)
goto start
Limiti e difetti del mio prototipo:
Il difetto principale è sicuramente la bassa potenza dei motori, i 350W disponibili si sono dimostrati troppo scarsi.
Il segway originale ha motori brushless da 1 KW o più e questa potenza serve davvero, soprattutto per questioni di sicurezza.
Quando il veicolo prende velocità deve avere la possibilità di erogare più potenza nel caso l'inclinazione in avanti sia eccessiva. Accelerando si raddrizza ed evita un disastroso capottamento in avanti.
Se invece il motore è al massimo della velocità di crociera, un'eventuale inclinazione eccessiva non può essere corretta e allora il disastro è assicurato.
Per evitarlo, nel mio prototipo ho installato una ruota pivottante sulla parte anteriore, bruttina ma almeno ci salva da spiacevoli incidenti.
L'autonomia è il secondo problema.
Per questioni economiche ho usato batterie al piombo, visto che le litio-polimero non sono abbordabili per il loro costo eccessivo. Per un set di batterie "serie" c'è da spendere qualcosa come 1200 euro, troppe per un prototipo sperimentale.
La tensione di lavoro degli accumulatori del Segway originale sembra essere sui 70 V, mentre io uso due misere batterie da moto da 12-12V con 18 Ah di energia (valore molto ottimistico).
Dunque dopo qualche ora di prove le batterie cominciavano già a supplicare la ricarica.
In sostanza il progetto non è ancora del tutto fruibile per andare a spasso, ma è una buona base di partenza per sviluppare qualcosa di più professionale, portafoglio permettendo.
Mi sono comunque tolto lo sfizio di costruire qualcosa di funzionante e di provare l'ebbrezza di un veicolo autostabilizzante.
Alcuni video:
Una carrellata di foto:
supporto ruote
I motori CC
disegno CAD
ruota e corona dentata
La IMU Crius
Il controllo motori Syren
particolare della trasmissione
il manubrio
pronto per il collaudo
carenatura batterie
El Carodel
In dialettto locale "carodel" significa "carretto scalcinato", nome immediatamente affibbiatogli da un tizio che mi ha visto durante il primo collaudo: "cossa te fa su quel carodel? ", per citare le sue testuali parole.
Il nome è consono al veicolo che presento in questa pagina, visto che sembra il brutto anatroccolo che "da grande" vuole diventare un Segway. Dal punto di vista estetico di Segway non c'e' tanto, ma almeno sta in piedi, si muove, ed anche corre e gira, quasi come un vero e costosissimo Segway. E' attualmente in fase di sviluppo e perfezionamento. Nonostante la sua natura sperimentale (rudimentale) il coso usa gli stessi principi del veicolo originale, ovvero un sistema di stabilizzazione dotato di accelerometri e giroscopi molto sofisticato.
Vediamo i dettagli costruttivi:
- 2 Motori C/C a 24V 350W
- 2 Accumulatori da 12V 18Ah in serie
- IMU (giroscopio ed accelerometro a 3 assi: MPU6050
- Processore Atmel Mega 2560
- Magnetometro (bussola digitale)
- Pulsante di sicurezza per la disattivazione immediata dei motori in caso di caduta (dead man switch)
- Doppio regolatore di velocità a mosfet Sabertooth da 2X32 Ampere: https://Dimensionengineering.com
- Ruote da minimoto diametro 400mm, spessore pneumatici 70 mm, cerchi in lega leggera.
- Trasmissione a pignone-catena-corona
- Struttura in profili metallici saldati ad arco
- Manubrio in alluminio dotato di snodi per un facile trasporto (anche nel bagagliaio di un'auto)
I motori sono stati installati uno davanti e uno dietro all'asse delle ruote, in modo da ottenere una distribuzione ottimale dei pesi. Gli accumulatori sono stati invece installati sull'asse centrale, perpendicolare alle ruote (il disegno iniziale è stato modificato). La scheda elettronica è stata montata sulla zona sottostante alla pedana. Il manubrio è ripiegabile o removibile a seconda delle esigenze, ed è collegato all'elettronica per mezzo di un cavo multipolare dotato di presa a 25 poli.
L'elettronica:
Questa è la scheda di controllo, si tratta di una CRIUS All in One, sicuramente nota agli autocostruttori di multirotori.
L'ho usata perchè ne avevo un paio disponibili in laboratorio, reduce da precedenti esperienze con i multiorotori. Si tratta di una unità inerziale dotata del diffuso chip MPU6050, che contiene di set di tre accelerometri e di tre giroscopi disposti su tutti e tre gli assi. Il cuore della scheda è un microntrollore ATMEL ATmega 2560 ed è corredata anche di un magnetometro molto preciso e di un barometro digitale (solitamente usato come altimetro). Con un adeguato software è in grado di discriminare angoli piccolissimi ed è molto precisa e stabile.
La programmazione è stata fatta in ambiente Arduino, infatti la scheda CRIUS è perfettamente compatibile con questo sistema di sviluppo.
Il controllo motori è stato realizzato con un modulo prodotto da una ditta americana, la Dimension Engineering, dispone di due distinti canali e supporta fino a 32 Ampere per canale.
L'hardware è sostanzialmente un ponte ad H equipaggiato di MOSFET di potenza, opera in PWM ad alta frequenza e l'interfacciamento con la scheda Crius avviene tramite porta seriale.
Una caratteristica molto utile di questo modulo è la capacità di ricaricare gli accumulatori in fase di frenata o quando viene affrontata una discesa, per questo viene definito "autorigenerante".
Nel prototipo è stato usato questo modulo in quanto l'avevo già disponibile in laboratorio. E' però allo studio un controllo di potenza completamente disegnato costruito in proprio.