![]() |
Arduino e programmazione ESC 3 Allegato/i 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... |
Citazione:
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 |
Citazione:
|
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. |
Citazione:
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... |
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. |
Citazione:
Essendo la comunicazione single wire è molto difficile capire chi dice che cosa... |
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 |
3 Allegato/i 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 |
Citazione:
Rileggiti bene le specifiche dell'ATMEGA... |
Citazione:
Per cui non ci son problemi sino a quando non si dà potenza al motore, nel qual caso va staccata la connessione che legge il PWM. Io parlo per i 2 Esc che ho testato....non garantisco per altri Esc...cmq basta misurare con un tester prima di collegarlo ad Arduino. |
Citazione:
:yeah: |
1 Allegato/i Citazione:
Vi allego anche sto programmino per calcolare a quanti Khz settare il PWM sull'Esc, a seconda del numero di poli del motore, KV e Volt. |
Le proprio vogliamo un problemino c'è ma proprio di tensione. Le specifiche dell'atmega danno 5V... Sul motore ne arrivano di più, il fatto che la porta non si sia fritta è un puro caso. Quindi sarebbe bene prelevare il segnale tramite una resistenza da 470 Ohm e mettere uno zener da 4,7V a protezione. Anche perchè in una porta ad alta impedenza come è quella dell'arduino non c'è modo di far passare tanti milliampere se ti tieni nel range di tensione adeguato. |
Citazione:
Infatti un precedente tentativo di misurare i Beep in arrivo l'avevo fatto sul Pin A0 in Analogico, ma il rilevamento sul Pin PD5 (PWM) si è dimostrato + preciso. Per la cronaca avevo anche provato a esaminare i Beep in arrivo con un microfono, ma i segnali (anche misurati con FFT) erano incostanti e cambiavano a seconda del mortore usato. |
Scusa la tensione l'hai misurata con un tester o con un oscilloscopio ? :yeah: |
Citazione:
Banda passante dello strumento ??? Per tua informazione per far beeppare il motore non è possibile che arrivi solo un volt perché per come è fatto un esc commuta la tensione di batteria tramite i mosfet, e i mosfet vengono pilotati in ON/OFF e non in modalità lineare (che anche se fosse possibile richiederebbe diversa configurazione della circuiteria) |
Citazione:
|
Citazione:
Tester ed Arduino: una garanzia della misura. :yeah: |
Citazione:
Se hai due soldi da spendere, regalati un'oscilloscopio con una 50ina di Mhz di banda passante... Scoprirai un mondo che non immagini.... Comunque contento tu contenti tutti.... |
Bhè io non ho altre strumentazioni...fate un pò voi...cmq nei vari test è stato attaccato all'Esc svariate ore e sta in piena salute...se dovesse saltare ci rimetto 1,80 Euri che l'ho pagato |
Citazione:
Fallo andare con il motore che gira o con l'esc alimentato a 6S e vediamo quanto dura... |
Infatti ho scritto in maiuscolo che quando si vuole testare il motore bisogna togliere la connessione al Pin PD5, anche se peraltro nelle varie prove una volta me la sono dimenticata attaccata e non è successo niente al povero Arduino. |
Citazione:
Comunque sei convinto che quello che hai fatto sia fatto bene e tecnicamente ideale ? Vai avanti così, stai solo dimostrando di non avere la benché minima idea di cosa passa in quei cavi (ivi comprese tensioni negative e spikes di autoinduzione) Non ci sarebbe la benché minima necessità di staccare nulla se solo ci fossero i componenti giusti al posto giusto, ma cosa te lo dico a fare ??? |
Citazione:
Ho solo visto che studiando le varie soluzioni (ho chiesto apposta aiuto qua sul forum), alla fine sono riuscito a poter programmare 2 Esc senza ricorrere a un programmatore dedicato per ognuno dei due, e che ho maturato le conoscenze di base per programmare altri eventuali Esc tramite interfaccia in Visual.net Non ho conoscenze in progettazione elettronica se non di base, se te le hai fatti avanti con un progettino nel quale si possa garantire una sicurezza su quello che arriva al pin di lettura PWM (tenendo conto che non tutti gli esc sono uguali e che l'utente possa collegarci diverse batterie). Anzi, se tu hai una 6S potresti provare a misurare la tensione che c'è tra il negativo che normalmente va alla ricevente (filo marrone/nero) e il filo centrale o quello negativo che vanno dall'Esc al motore quando vengono emessi i Beep di programmazione, ci metti 5 minuti e posti qua il risultato. |
@Gabryx: spero non salti fuori che anche tu sei un ing. elettronico e magari anche professore.... Da quel che scrivi probabilmente ti occupi o ti diletti di programmazione basica (visto che usi VB.net) in ambiente Win; per giocare con hw e fw forse sono richieste conoscenze più ampie ed in vari settori dell'elettronica; sicuramente poi non basta un tester come strumentazione per fare qualcosa di utile ed affidabile. In passato era assai difficile reperire informazioni, libri e documentazione in ambito elettronico, oggi con la Rete basta averne voglia ed investire un po del proprio tempo a studiare anzichè buttar giù codice a casaccio e procedere per tentativi. Buon divertimento. :yeah: |
Citazione:
Dai forum generalmente ci si aspettano delle risposte ai quesiti...se vuoi solo flammare allora ti saluto |
Citazione:
Vai tranquillo per la tua strada, non interverrò oltre. :yeah: |
Citazione:
Se poi da un post andate a cercare solo degli errori di battitura insignificanti per quanto riguarda il risultato finale ( mV e mA ) e non aggiungete niente che sia d'aiuto è ovvio che vi beccate dei "precisini". Se qualcun altro sta seguendo il discorso, mi piacerebbe se qualcuno in possesso di una batteria 6S potesse misurare la tensione che esce quando l'Esc è in modalità programmazione, come ho scritto precedentemente ma non vedo risposte per ora. Grazie |
Citazione:
|
| Tutti gli orari sono GMT +2. Adesso sono le 09:12. |
Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002