Torna indietro   BaroneRosso.it - Forum Modellismo > Categoria Software > Software


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 01 febbraio 16, 20:53   #1 (permalink)  Top
User
 
Data registr.: 30-09-2013
Residenza: Milano
Messaggi: 40
Arduino e programmazione ESC

Ho preso da poco un Arduino Nano e la mia intenzione sarebbe quella di vedere i settaggi attuali degli ESC e cambiare i loro parametri (con ausilio di un'interfaccia in VB.net).
Ho già provato a programmarli con il programmino per Arduino che vi allego, così come si programmano con la normale ricevente, ovvero seguendo i vai beep emessi dal motore e impartendo il comando di ok, ma vorrei riuscire a capire come è settato attualmente l'esc anche per verificare se i parametri sono corretti, ovvero intercettare le stringhe di comando emesse dall' Esc per arrivare ad una interfaccia grafica con cui programmarli.
A quanto ho capito leggendo in giro ogni serie di ESC ha i suoi comandi, per cui andrebbe fatto un programma ad hoc per ognuno, oppure un programma che legga un file esterno con i parametri per ogni tipo di esc, e questo non è un problema, il problema è capire i parametri da spedire o ricevere.

Dal manuale di BLHeli ad esempio si legge questo:
Input signal:
The ESC accepts both positive and negative PWM, as well as PPM as input signal.
The type of input signal is auto detected during the arming sequence.
The only input signal that requires changing the default parameters, is negative PWM.
PWM is accepted as 12kHz, 8kHz (mCPX v1), 4kHz, 2kHz (several Walkeras) and 1kHz (mCPX v2).
PPM has a default throttle range of 1150us-1830us, and accepts rates from the normal 50Hz up to several hundred Hz.
Available throttle calibration range for PPM is from 1000us to 2000us, and the difference between minimum and maximum throttle must be more
than 520us. If a calibration is done where the difference is less than 520us, the maximum will be shifted so that the difference is 520us.

Se qualcuno ha già studiato (o risolto) il problema si faccia avanti con un esempio in Arduino

P.S. se usate il file Motore3.ino occhio che dopo aver introdotto uno 0 (zero) nella finestra del monitor seriale, se la batteria è attaccata all'Esc il motore è in modalità test, per cui parte con i comandi successivi (tra 0 e 180).
Se invece impartite un 180 e poi attaccate la batteria sarete in modalità programmazione (sino al successivo 0 (zero) che rimanda l'Esc in modalità normale ovvero test motore).
Se provate senza montare l'elica non sparatelo alla velocità massima (180) senza il carico dell'elica.
Se lo provate con l'elica invertite i fili di collegamento tra Esc e motore in modo che giri al contrario e non vi si sollevi dalla scrivania...e fate attenzione...
Icone allegate
Arduino e programmazione ESC-dsc01859.jpg   Arduino e programmazione ESC-dsc01860.jpg  
Files allegati
Tipo file: zip motore3.zip‎ (1,2 KB, 59 visite)
__________________
Stavo facendo questo 4 anni fa circa:
http://www.youtube.com/watch?v=j__ztOPwuM0
Gabryx non è collegato   Rispondi citando
Vecchio 01 febbraio 16, 21:14   #2 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
Citazione:
Originalmente inviato da Gabryx Visualizza messaggio
Ho preso da poco un Arduino Nano e la mia intenzione sarebbe quella di vedere i settaggi attuali degli ESC e cambiare i loro parametri (con ausilio di un'interfaccia in VB.net).
Quasi tutti gli esc quando attaccati alla loro program card capiscono un protocollo seriale single wire non documentato e proprietario.
Per leggere i parametri è necessario conoscere il protocollo.
Per conoscere il protocollo è necessario fare reverse enginering della comunicazione single wire fra ESC e scheda di programmazione.
Per fare reverse enginering quindi è necessario avere la scheda di programmazione.
Se hai la scheda di programmazione il gioco con arduino rimane solo un gioco, anche perchè al campo quasi nessuno si porta un tablet per configurare un ESC.
Quindi rimane un bel gioco ma di dubbia utilità pratica, anche considerando il costo medio delle program card.

questo ad esempio è il reverse enginering di un esc Turnigy
Turnigy ESC Programming Card Reverse Engineered | Eleccelerator
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766
romoloman non è collegato   Rispondi citando
Vecchio 01 febbraio 16, 21:25   #3 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
Citazione:
Originalmente inviato da romoloman Visualizza messaggio
Quasi tutti gli esc quando attaccati alla loro program card capiscono un protocollo seriale single wire non documentato e proprietario.
Per leggere i parametri è necessario conoscere il protocollo.
Per conoscere il protocollo è necessario fare reverse enginering della comunicazione single wire fra ESC e scheda di programmazione.
Per fare reverse enginering quindi è necessario avere la scheda di programmazione.
Se hai la scheda di programmazione il gioco con arduino rimane solo un gioco, anche perchè al campo quasi nessuno si porta un tablet per configurare un ESC.
Quindi rimane un bel gioco ma di dubbia utilità pratica, anche considerando il costo medio delle program card.

questo ad esempio è il reverse enginering di un esc Turnigy
Turnigy ESC Programming Card Reverse Engineered | Eleccelerator
Volendo si potrebbe provare a leggere gli impulsi inviati ai motori per generare i beep di programmazione ed evitare il reverse enginering del protocollo utilizzando solo le istruzioni del manuale... Ma mi sa tanto di UCAS.
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766
romoloman non è collegato   Rispondi citando
Vecchio 02 febbraio 16, 03:38   #4 (permalink)  Top
User
 
Data registr.: 30-09-2013
Residenza: Milano
Messaggi: 40
E' ovvio che se uno ha già la program card, Arduino non serve a niente, l'intenzione è di evitare l'acquisto di una card per ogni serie di ESC e cmq divertirsi con Arduino, ho già avuto modo di "catturare" il protocollo di un calibro digitale, ma in quel caso si trattava di leggere un solo parametro (la misura) dalla porta USB/Seriale dopo che veniva premuto un tasto sul calibro, nel caso dell'ESC ci sarà sicuramente un segnale di partenza e poi le stringhe di dati.
Si la pagina di eleccelerator.com l'avevo vista, se non c'è niente altro in giro partirò da quella per capirci qualcosa sul protocollo di trasmissione.
Se qualcun altro ha dei consigli è sempre ben accetto.
__________________
Stavo facendo questo 4 anni fa circa:
http://www.youtube.com/watch?v=j__ztOPwuM0
Gabryx non è collegato   Rispondi citando
Vecchio 02 febbraio 16, 16:56   #5 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
Citazione:
Originalmente inviato da Gabryx Visualizza messaggio
E' ovvio che se uno ha già la program card, Arduino non serve a niente, l'intenzione è di evitare l'acquisto di una card per ogni serie di ESC e cmq divertirsi con Arduino, ho già avuto modo di "catturare" il protocollo di un calibro digitale, ma in quel caso si trattava di leggere un solo parametro (la misura) dalla porta USB/Seriale dopo che veniva premuto un tasto sul calibro, nel caso dell'ESC ci sarà sicuramente un segnale di partenza e poi le stringhe di dati.
Si la pagina di eleccelerator.com l'avevo vista, se non c'è niente altro in giro partirò da quella per capirci qualcosa sul protocollo di trasmissione.
Se qualcun altro ha dei consigli è sempre ben accetto.
Il problema è che c'è poco da capirci, quel protocollo che è abbastanza banale va bene solo esclusivamente per alcuni ESC (neanche tutti i turnigy).
Non è neanche detto che in tutti ci sia un segnale di partenza in forma digitale.
In alcune program card che ho, il fatto di portare l'esc in programmazione via program card è dato dal tenere l'ingresso ad un livello alto per un periodo di tempo maggiore al 1/2 secondo. Quando la program card porta il pin in alta impedenza l'ESC inizia la comunicazione seriale spedendo alla program card il suo stato.

Ogni produttore di ESC ha il suo, per quello dico che per fare il programmatore universale alla fine li devi avere tutti.
Comunque seguo i progressi...
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766
romoloman non è collegato   Rispondi citando
Vecchio 02 febbraio 16, 17:23   #6 (permalink)  Top
User
 
Data registr.: 30-09-2013
Residenza: Milano
Messaggi: 40
Si, leggendo in giro ho visto che ogni esc ha il suo protocollo, voglio cominciare dal segnale di partenza e leggere i dati in arrivo in forma digitale (la lettura in PWM dà risultati troppo diversi per essere interpretati) su 3 esc differenti e vedere se c'è qualche corrispondenza...e da lì partire....oppure chiudere il discorso se non c'è corrispondenza.
__________________
Stavo facendo questo 4 anni fa circa:
http://www.youtube.com/watch?v=j__ztOPwuM0
Gabryx non è collegato   Rispondi citando
Vecchio 02 febbraio 16, 21:19   #7 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
Citazione:
Originalmente inviato da Gabryx Visualizza messaggio
Si, leggendo in giro ho visto che ogni esc ha il suo protocollo, voglio cominciare dal segnale di partenza e leggere i dati in arrivo in forma digitale (la lettura in PWM dà risultati troppo diversi per essere interpretati) su 3 esc differenti e vedere se c'è qualche corrispondenza...e da lì partire....oppure chiudere il discorso se non c'è corrispondenza.
La cosa migliore se hai le program card di quegli esc e di leggere il flusso dati con un analizzatore di protocollo, anche se ti scontrerai con un piccolo problema...
Essendo la comunicazione single wire è molto difficile capire chi dice che cosa...
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766
romoloman non è collegato   Rispondi citando
Vecchio 03 febbraio 16, 05:41   #8 (permalink)  Top
User
 
Data registr.: 30-09-2013
Residenza: Milano
Messaggi: 40
Cmq il programmino presente su Eleccelerator mi dà errore sin fase di compilazione, probabilmente la ide 1,63 che sto usando è + rigorosa nell'assegnazione delle variabili, cmq un altro che ho trovato in giro per esc Turnigy almeno mi dà qualche risposta, anche se sbagliata, anche perchè l'esc che sto testando ha al primo posto il tipo di batteria anzichè il brake on/off, domani vedo di rimescolare le carte e vedo che succede, tenendo conto che almeno il tipo di batteria e il numero di celle devono risultare giuste...e poi vedo il resto
__________________
Stavo facendo questo 4 anni fa circa:
http://www.youtube.com/watch?v=j__ztOPwuM0
Gabryx non è collegato   Rispondi citando
Vecchio 01 marzo 16, 15:01   #9 (permalink)  Top
User
 
Data registr.: 30-09-2013
Residenza: Milano
Messaggi: 40
Nella giungla degli ESC...sarebbe stato il titolo più appropriato...
Lasciando perdere una programmazione diretta degli ESC (visto che ognuno manda uno stream di comandi univoco e differente dagli altri e non facilmente decifrabile), ho cominciato a sviluppare un aiuto alla programmazione basandomi sui BEEP emessi dal motore in modalità programmazione, quello che si fa con la radio normalmente, ma con un'interfaccia che visualizza l'opzione corrente prima di selezionarla/modificarla: Foto1.
E un'interfaccia nella quale si possono inserire nuovi ESC con le loro funzioni: Foto 2.
Purtroppo su 2 ESC testati erano diversi sia i collegamenti da cui prelevare i dati (sullo Yep 30 ad esempio vanno presi dal filo negativo che va dall'esc al motore, mentre sul Red Brick va reso dal filo giallo che si trova tra il positivo e il negativo) sia è diversa la modalità e il timing dei segnali, ad esempio dallo Yep30 arriva in partenza una sequenza di 20 Beep (se durante questa sequenza si muove lo stick virtuale al di sotto di 1/4 del movimento totale si impartisce il punto di Brake, se nelle opzioni è impostato Brake On), passati questi 20 Beep, dando un comando di Mezzo Stick si entra nei sottoparametri...mentre il Red Brick 70A si comporta diversamente, arriva una musichetta seguta dal Tot beep a seconda del parametro da modificare.
Ricapitolando: per i miei esc mi son fatto il diverso Sketch da piazzare su Arduino Nano e ora posso programmare i miei ESC, e l'interfaccia è molto comoda soprattutto in quei parametri che hanno tanti Beep (ad esempio il Timing o il PWM), olrtretutto non richiede più la consultazione del manuale perchè le funzioni (quelle della foto 2 per intenderci) sono salvate su disco, ma non ritengo di dstribuire il programma perchè è inutilizzabile da un normale utente che non sappia programmare Arduino.

Vi allego cmq un Monitor se volete smanettarci dentro e visualizzare i Beep in arrivo dal vostro ESC, è un derivato dall'altro file che avevo mandato in apertura post, ovvero Motore3.ino.
Anche qua potete dare i comandi di Full stick(180) , Half Stick (90) e Zero Stick(0) per uscire dalla modalità programmazione e se settate i comandi di timing correttamente (e quelo dipende dall'Esc che utilizzate) potete anche programmarlo col solo Arduino, ovvero senza interfaccia grafica.
I collegamenti tra esc e Arduino sono:
1) filo nero/marrone e filo giallo/bianco che normalmente vanno collegati alla ricevente devono essere collegati al pin GROUND(il filo nero/marrone) e al PD3(filo bianco/giallo).
2) al PD5 (che legge PWM) va collegato un filo che proviene dalle uscite che vanno dall'esc al motore, e possono essere o filo nero dell'esc (negativo) oppure al filo giallo dell'esc(quello centrale tra positivo e negativo), e quello dipende dall'esc che utilizzate.
Ovviamente i 3 fili che portano la corrente dall'esc al motore vanno collegati, ma RICORDATEVI DI STACCARE IL FILO CHE VA DALL'ESC AL PD5 DOPO CHE AVETE IMPARTITO UN COMANDO ZERO(0) se volete fare girare il motore, e questo perchè, mentre siete in modalità programmazione (180) la tensione tra l'esc e Arduino sul pin PD5 non supera i 17 Millivolt (le porte di arduino reggono sino a 40 Millivolt), quando siete in modalità test del motore (dopo aver impartito il comando Zero insomma) ovviamente la corrente che passa rovinerebbe Arduino, per cui vanno lasciati collegati solo gli altri 2 pin, quelli che normalmente vanno alla ricevente.

Cmq....buon volo a tutti
Icone allegate
Arduino e programmazione ESC-esc2.jpg   Arduino e programmazione ESC-esc1.jpg  
Files allegati
Tipo file: zip MonitorESCyep30B.zip‎ (1,0 KB, 40 visite)
__________________
Stavo facendo questo 4 anni fa circa:
http://www.youtube.com/watch?v=j__ztOPwuM0
Gabryx non è collegato   Rispondi citando
Vecchio 02 marzo 16, 06:44   #10 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
Citazione:
Originalmente inviato da Gabryx Visualizza messaggio
Nella giungla degli ESC...sarebbe stato il titolo più appropriato...
Lasciando perdere una programmazione diretta degli ESC (visto che ognuno manda uno stream di comandi univoco e differente dagli altri e non facilmente decifrabile), ho cominciato a sviluppare un aiuto alla programmazione basandomi sui BEEP emessi dal motore in modalità programmazione, quello che si fa con la radio normalmente, ma con un'interfaccia che visualizza l'opzione corrente prima di selezionarla/modificarla: Foto1.
E un'interfaccia nella quale si possono inserire nuovi ESC con le loro funzioni: Foto 2.
Purtroppo su 2 ESC testati erano diversi sia i collegamenti da cui prelevare i dati (sullo Yep 30 ad esempio vanno presi dal filo negativo che va dall'esc al motore, mentre sul Red Brick va reso dal filo giallo che si trova tra il positivo e il negativo) sia è diversa la modalità e il timing dei segnali, ad esempio dallo Yep30 arriva in partenza una sequenza di 20 Beep (se durante questa sequenza si muove lo stick virtuale al di sotto di 1/4 del movimento totale si impartisce il punto di Brake, se nelle opzioni è impostato Brake On), passati questi 20 Beep, dando un comando di Mezzo Stick si entra nei sottoparametri...mentre il Red Brick 70A si comporta diversamente, arriva una musichetta seguta dal Tot beep a seconda del parametro da modificare.
Ricapitolando: per i miei esc mi son fatto il diverso Sketch da piazzare su Arduino Nano e ora posso programmare i miei ESC, e l'interfaccia è molto comoda soprattutto in quei parametri che hanno tanti Beep (ad esempio il Timing o il PWM), olrtretutto non richiede più la consultazione del manuale perchè le funzioni (quelle della foto 2 per intenderci) sono salvate su disco, ma non ritengo di dstribuire il programma perchè è inutilizzabile da un normale utente che non sappia programmare Arduino.

Vi allego cmq un Monitor se volete smanettarci dentro e visualizzare i Beep in arrivo dal vostro ESC, è un derivato dall'altro file che avevo mandato in apertura post, ovvero Motore3.ino.
Anche qua potete dare i comandi di Full stick(180) , Half Stick (90) e Zero Stick(0) per uscire dalla modalità programmazione e se settate i comandi di timing correttamente (e quelo dipende dall'Esc che utilizzate) potete anche programmarlo col solo Arduino, ovvero senza interfaccia grafica.
I collegamenti tra esc e Arduino sono:
1) filo nero/marrone e filo giallo/bianco che normalmente vanno collegati alla ricevente devono essere collegati al pin GROUND(il filo nero/marrone) e al PD3(filo bianco/giallo).
2) al PD5 (che legge PWM) va collegato un filo che proviene dalle uscite che vanno dall'esc al motore, e possono essere o filo nero dell'esc (negativo) oppure al filo giallo dell'esc(quello centrale tra positivo e negativo), e quello dipende dall'esc che utilizzate.
Ovviamente i 3 fili che portano la corrente dall'esc al motore vanno collegati, ma RICORDATEVI DI STACCARE IL FILO CHE VA DALL'ESC AL PD5 DOPO CHE AVETE IMPARTITO UN COMANDO ZERO(0) se volete fare girare il motore, e questo perchè, mentre siete in modalità programmazione (180) la tensione tra l'esc e Arduino sul pin PD5 non supera i 17 Millivolt (le porte di arduino reggono sino a 40 Millivolt), quando siete in modalità test del motore (dopo aver impartito il comando Zero insomma) ovviamente la corrente che passa rovinerebbe Arduino, per cui vanno lasciati collegati solo gli altri 2 pin, quelli che normalmente vanno alla ricevente.

Cmq....buon volo a tutti
Sei sicuro di quello che scrivi ????
Rileggiti bene le specifiche dell'ATMEGA...
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766
romoloman non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
Esc & Arduino Ithos92 Circuiti Elettronici 5 25 gennaio 12 20:56
programmazione esc paololemerle Elimodellismo Motore Elettrico 7 19 giugno 10 21:54



Tutti gli orari sono GMT +2. Adesso sono le 14:28.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002