centralina 4 ruote sterzanti con arduino nano
2 allegato(i)
volevo condividere con voi questo progetto capace di gestire il servo di sterzo posteriore su crawler e automodelli con 4 ruote sterzanti.
la centralina al momento permette di: invertire la direzione del servocomando impostare gli end points settare la centratura delle ruote materiale occorrente: -una board arduino nano v3 ATmega328p la trovate anche su ebay a partire da 2 euro, in Italia costa circa 5 euro spedita. - un cavetto Y per servocomandi (1 femmina 2 maschi) -un cavetto per servocomandi maschio -un cavetto per servocomandi femmina -il programma arduino ide https://www.arduino.cc/en/main/software -il driver CH341SER per le schede nano clone CH341SER.EXE è scritto in cinese ma basta premere il rettangolino azzurro -un cavetto usb-miniusb allego 2 foto dello schema per la costruzione 1) scaricate arduino ide, installate il driver. 2) aprite arduino ide e collegate la vostra board nano, non importa se ancora non avete saldato nulla. andate in "strumenti" e settate la "porta" com (io ho la com3 ma varia, la com1 non è mai quella corretta) settate il tipo di "scheda" arduino nano" e "processore" ATmega328p" 3) saldate il cavetto per servocomando maschio (che andrà poi a collegarsi al servo posteriore) ai piedini VIN (positivo rosso) GND (nero massa) piedino D10 segnale di uscita del servo posteriore 4) saldate il cavetto femmina (che collegherete a una delle 2 estremità del cavetto a Y) ai piedini VIN , GND, piedino D8 (entrata del segnale di sterzo) l'altra estremità della Y la collegate al servo anteriore, mentre l'ingresso della Y la collegate al canale radio dello sterzo del vostro automodello. 5) settate alla meglio lo sterzo anteriore delle vostra macchina cercando di non avere subtrim indecenti, il settaggio migliore va fatto sempre e comunque con la giusta lunghezza dei rinvii e la squadretta centrata. collegate la nano alla spina usb, ovviamente collegate la Y e i servi in modo di verificare tutto il progetto. 6) fate un test del segnale di entrata per vedere i valori massimi e minimi del vostro raggio di sterzata, di default li ho messi a 1000-2000 con centratura 1500 ma possono logicamente variare in base a tanti fattori. i valori li leggete nel "serial monitor" >strumenti di arduino ide girando lo sterzo del radiocomando da un estremità all'altra. questo è lo sketch per testare gli endpoints, lo copiate in un nuovo tab vuoto e lo lanciate con la freccia nel cerchietto codice:
int rxpulse; https://pastebin.com/s27QJ37c 8 ) riportate i valori del vostro sterzo nelle stringhe iniziali "DEFINE" antsx antdx sostituendo i numeri di default con i vostri valori ottenuti dal test fatto nel serial monitor. 9) caricate lo sketch nella nano dal menu "sketch> carica" oppure usando la freccina nel cerchietto. provate la macchina e vedete come siete messi, se la corsa è troppa o poca, se la centratura va rivista, se le ruote girano nel verso giusto etc.. al che, se dovete modificare i parametri.. e sarà molto probabile.. 10) cambiate i valori di endpoint "define postdx e postsx che adesso sono approssimativi settati su 30 e 150 per invertire il servo basta invertire i valori di postdx e postsx scambiandoli tra loro rivedete la centratura delle ruote cambiando il valore 0 con un numero negativo o positivo (es -5, +10 etc.) se il servo vibra alzate la tolleranza. di default la tolleranza l'ho impostata a 5 ma se il servo è buono potrebbe essere portata anche a zero. più alta è la tolleranza e più il servo si muoverà a step by step, ad esempio se la mettere a 30 avrete un servo che si sposta come un selettore a scatti. tutto qui. allego lo sketch scritto, nel quale ho snellito una procedura con una piccola modifica rispetto al link pastebin. non avete da fare altro che copiarlo e incollarlo in un nuovo tab codice:
#define antsx 1000 //-- segnale ingresso servo anteriore finecorsa sx infine se volete stravolgere il progetto, avete in mente altre possibili feature da aggiungere, siete i benvenuti per qualsiasi modifica possiate proporre, idem dubbi e domande :tunz6rh: |
Ottima idea se non hai le radio con un sistema per il mixing o vuoi settare in modo particolare lo sterzo delle ruote posteriori
Inviato con il mio Redmi Note 7 - Scarica l‘app del Forum di Modellismo.net |
1 allegato(i)
Quote:
la controller funziona anche con la peggiore radio 2ch, la centralina è destinata proprio a chi non ha una radio con mix. altrettanto interessante almeno per me è questo progetto per radio 3ch dove la stessa feature si può attivare o disattivare con il canale ausiliario 2 posizioni fisse. io l'ho messa sul mio camion dynahead per controllare la microcamera fpv in modo da avere una posizione dove il servo rimane fermo (e vedo solo avanti) e una seconda dove il servo segue lo sterzo (e posso darmi un occhiata attorno.. magari da fermo è meglio) sostanzialmente è uguale a quella descritta nel post precedente ma la attivi e disattivi attraverso il segnale del canale ausiliario che ho assegnato al piedino 9 sul circuito l'unica differenza è appunto il piedino 9 aggiunto per entrare con il segnale di aux nella board nano. codice:
#include <Servo.h> di fatto non consuma nulla quindi basta il bec della ricevente. come vedete in allegato non ho fatto altro che aggiungere in verde un filo di segnale tra il canale aux e il piedino 9 |
Bravo te :Ok:
A me è venuto il mal di testa solo a leggere :look: |
Quote:
di fatto c'è solo da saldare 4-5 piedini e caricare il programma, collegare le spinette e provarla. nel post mi sono dilungato proprio per chi non sa nulla di nulla ma nella sostanza è roba che in 15 minuti si monta e si programma. fidati, un par di settimane addietro avrebbe fatto venire il mal di testa anche a me. è semplice anche imparare a settarla anche perchè non puoi fare danni. iniziare con questo linguaggio senza sperimentare qualcosa di pratico diventa una strada in salita, viceversa se hai in mente un progetto e inizi a farlo impari tantissimo in breve tempo. |
...
|
Quote:
Arduino mi affascina per le mille cose se ci si possono fare, in molti ambiti, ma è un mondo che ad oggi non ho approfondito. |
Quote:
ho cancellato l'ultimo sketch con lo sterzo posteriore inversamente proporzionale al gas, appena ho le idee chiare lo aggiorno. sto cercando di sistemare un paio di problemini pratici dovuti alla retromarcia . |
1 allegato(i)
Grazie alla collaborazione e al prezioso aiuto di amici di forums, è nata una nuova centralina arduino per controllare lo sterzo posteriore con radio 2ch basilari senza alcun mix.
questa versione permette di assegnare una certa quantità di gas throttle oltre la quale il servo posteriore inizia a chiudersi fino anche ad arrivare a eliminare completamente le 4 ruote sterzanti. in pratica attraverso il settaggio di 2 parametri (Slowlimit e Max_gain ) è possibile decidere a quale velocità iniziare una progressione proporzionale della corsa di sterzo in modo da poter andare a tutto gas con solo 2 ruote sterzanti o una piccola porzione sterzante delle ruote posteriori. per costruirla ho usato una scheda arduino nano e la procedura per quanto riguarda il programma arduino ide è la stessa che ho scritto nel primo post. logicamente coinvolgendo il segnale del gas occorre assegnare un nuovo piedino al quale far arrivare il segnale dalla vostra ricevente. allego in foto lo schema dei collegamenti alla scheda nano nello sketch ho allegato una spiegazione globale del progetto e del settaggio necessario a farla funzionare al meglio ma qualche spiegazione vedrò di aggiungerla anche qui. questo è il codice codice:
io ho messo dei valori di default che dovrebbero far funzionare la controller abbastanza bene fin da subito, tuttavia i segnali delle vostre radio potrebbero essere leggermente diversi quindi sarebbe sempre meglio controllarli da serial monitor con questo codice che potete incollare in un nuovo sketch vuoto nell'arduino ide codice:
int rxpulse; idem col gas, basta cambiare il numero con (8, HIGH) e muovere il grilletto o lo stick e annotarsi i valori risultanti. a questo punto avete i valori di fine corsa dello sterzo anteriore, del gas da massima retro a massimo gas e anche il valore del gas neutro e potete cambiare i valori 1000-2000 di default con quelli della vostra radio. i valori di Postsx e Postdx li potete anche cambiare per via empirica controllando che lo sterzo posteriore arrivi al massimo della corsa possibile evitando così di sforzare i biccherini dell'asse posteriore. stessa sorte per il "define center" per quanto la centratura dello sterzo sia sempre bene farla al meglio meccanicamente. per centrare il servo fate progressioni di 30-50 anche per capire in che direzione state andando.. se invece mettete davanti al valore di Center il segno meno (-) andrete nel verso opposto. per reversare il servo basta invertire i valori di Postsx con quelli di Postdx e aggiungere il segno meno (-) davanti alla correzione inversamente proporzionale al gas (Max_gain) esempio "define Max_gain -400" ---------------------------- ok avete fatto il setup di base della controller, resta da settare i 2 parametri del setup di guida Slowlimit e Max_gain c'è una relazione tra questi 2 parametri ma è intuitiva da capire.. ad esempio se impostate Slowlimit a 1600 avrete lo sterzo posteriore tutto chiuso al massimo della velocità impostando Max_gain intorno a 630 oppure 1700 - 700 e così via.. se superate i valori lo sterzo il servo si reverserà al massimo del gas e la macchina andrà in diagonale.. nulla di grave, trovate i valori che più vi piacciono sia di quantità di gas che di massima sterzata. il valore minimo di slowlimit sarà il vostro neutro (1500) ma ovviamente lo sterzo inizierà a ridurre la sua corsa appena inizierete a muovervi. quindi direi che valori tra 1600-1800 sono ideali per avere tutto sterzo a bassa o media velocità e lasciare che si riduca solo quando andate veloci. quanto chiudere lo decidete voi impostando (Max_gain) di default ho messo 400 che è circa metà della corsa disponibile. lo sterzo posteriore lo potete chiudere anche tutto e avere a massima velocità una comune macchina 2 ruote sterzanti oppure lasciarvi una porzione di corsa allo sterzo. chiaramente se la macchina è veloce con 4ws è facile ribaltare e magari le 4 ruote sterzanti fanno comodo solo nei passaggi più lenti tra sassi e radici, la controller nasce per questo. in retromarcia lo sterzo posteriore è sempre al massimo della sua apertura. infine Tolerance che è rimasto da modifiche precedenti, di fatto adesso serve a poco e l'ho messo a zero in default ma se lo impostate a 50 avete uno sterzo che si muove a brevi scatti tipo step by step nella parte di codice del programma non avete da fare nulla, ci sono anche lì 2 define che ho impostato a 7, servono nel caso il servo abbia vibrazioni.. potete provare a mettere 5 per velocizzare il servocomando ma oltre 15 il servo rallenta vistosamente e sotto 5 potrebbe vibrare in maniera ciclica. ------------------------------------------ la controller l'ho provata abbastanza a fondo e domani la monto sul mio camion, magari faccio 2 scatti e un breve video. magari la prima volta che la usate scollegate il rinvio di sterzo posteriore o provatela con un servo sul banco.. così la capite molto meglio, in mezz'ora non avrà più segreti. se avete domande o vi siete persi non esitate a chiedere, un paio di settimane addietro neanche io sapevo cosa fosse arduino e come farlo funzionare quindi avete sicuramente tutta la mia disponibilità :) |
ok ho settato la controller per la prima volta sul camion arancione e ho scoperto di avere il segnale del gas al contrario.. in realtà potrei ovviare in altri modi ma ho preferito modificare lo sketch per adattarmi alle impostazioni radio preesistenti.
riporto lo sketch di esempio, ho dovuto cambiare un valore maggiore in minore alla stringa codice:
if (Gaspulse > Slowlimit) { codice:
if (Gaspulse < Slowlimit) { di conseguenza a questa differenza anche altri valori sono leggermente cambiati. vi riporto il codice di esempio che ho applicato al mio camion, per capire quali sono le differenze lo potete confrontare con quello dato nel post precedente. codice:
//----------- signal setup ------------------------------------- prima di tutto ho settato alla meglio la meccanica e entrambi gli sterzi. ho controllato il gas che fosse trimmato bene. poi ho caricato il programma che serve per controllare nel serial monitor quale è l'effettivo valore di corsa dei segnali provenienti dal gas e dallo sterzo codice:
poi l'ho ricaricato variando il numero 8 per controllare lo sterzo, stessa procedura nel serial monitor girando il volantino. i miei valori sono stati: throttle min 2036 max 1062 neutro 1508 sterzo 1829 -1140 annotati questi valori li ho trascritti nella prima parte del setup ho reversato lo sterzo invertendo Postsx e Postdx perchè era al contrario anche quello.. ovvero sarei andato in diagonale invece che curvare. :D ho invertito il valore maggiore - minore nella stringa che ho messo all'inizio del post perchè il gas throttle sul mio camion è reversato. a questo punto ho caricato lo sketch e ho guardato come reagiva.. c'era troppa corsa di sterzo che sforzava, quindi ho corretto i valori varie volte fino a trovare il giusto compromesso. ho sistemato la centratura del servo che ha voluto una minima correzione e ho ricaricato il programma.. infine ho sistemato Slowlimit e Max-gain in concezione inversa perchè il gas è reverse (vedi codice) portandoli a un valore di gas accettabile e una corsa minima di sterzo a tutto gas. valori teorici fatti a banco almeno fino a quando non lo provo su strada ma direi che sembrano soddisfacenti. ho preferito lasciare un pochina di corsa alla massima velocità e non chiudere del tutto lo sterzo posteriore, rimane da verificare su strada se il setup mi piace. per fare tutto questo c'è voluta un oretta perchè ho dovuto iniziare smontando entrambi gli sterzi per centrarli meglio e riportando il subtrim della radio a zero. il setup vero e proprio non è stato complicato, giusto capire a quale valore postdx postsx corrisponde la direzione meccanica del servo ma basta mettere valori aumentati o diminuiti di 100-200 per capirlo facilmente controllando cosa si è perso o guadagnato. cambiando questi valori si sballa un pochino anche la centratura che appunto si corregge aggiungendo o sottraendo quanto serve per ricentrarsi. a breve metto un video cercando di inquadrare anche il radiocomando. :) |
in questo video potete vedere come si comporta la centralina.
ho impostato un basso valore di Slowlimit in modo che la correzione parta poco dopo il gas neutro e ho alzato il valore di Max_gain per chiudere completamente la corsa del servo posteriore quando si procede a tutto gas. in retro invece non cambia nulla.. lo sterzo ha sempre tutta la massima escursione disponibile. https://vimeo.com/416883556 |
Tutti gli orari sono GMT +2. Attualmente sono le 09:57 AM. |