Scheda controllo quadricottero

Salve a tutti, mi chiamo Luca e sono alle prese con la costruzione di un robot di tipo quadricottero. Al momento ho implementato con successo (in Matlab) la parte software del progetto ed in simulazione funziona tutto alla perfezione. Altresì ho implementato in C sia il controllore e sia l'interfacciamento con i sensori (MPU9150 e HC-SR04) ed i relativi algoritmi (AHRS tramite filtro complementare del primo ordine e misura della distanza). Usando un microcontrollore ATMega1284P @ 16MHz, il tutto sembra funzionare senza problemi.

Ora, il problema è che non sono abbastanza ferrato in materia di elettronica e quindi ho qualche difficoltà nel progettare la scheda di controllo da piazzare sul quadricottero. La scheda che vorrei implementare dovrebbe svolgere le seguenti funzionalità:

  • collegare i vari sensori con il micro
  • collegare il micro con gli esc
  • collegare il micro con un un modulo wireless (NRF24L01+)
  • alimentare gli esc
  • alimentare il micro, i sensori ed il modulo wireless

I primi quattro punti sono banali (?) nel senso che riesco, usando Fritzing, a disegnare le piste che vanno dal micro ai sensori, esc e modulo wireless, mentre ho dei problemi sul punto 5.

Sul punto 5 so che per alimentare il micro ed i sensori mi servono 5V, mentre per alimentare il modulo wireless mi servono 3,3V. Per ottenere i 5V posso usare due strade: la prima è quella di usare l'uscita BEC degli ESC (che è 5V ed 1A), mentre la seconda è quella di usare l'uscita della batteria per alimentare un regolatore di tensione (usando un LM317 ed il relativo circuito) in modo da avere l'uscita a 5V. Il mio problema per entrambe le strade è se devo usare in accoppiata qualche altro componente tipo qualche condensatore o altro per alimentare correttamente sia il microcontrollore e sia i sensori. Nel caso dell'uscita BEC, le prestazione della batteria degradano sensibilmente? Inoltre avendo a disposizione per ogni ESC una uscita BEC posso usare ad esempio una uscita BEC per alimentare il micro e le altre per alimentare i sensori?

Per ottenere i 3,3V ho bisogno di un regolatore di tensione (ho questo componente: TLV1117-33) e del relativo circuito. Qua il mio problema è se posso usare l'uscita a 5V (ottenuta o tramite BEC o tramite il regolatore di tensione) per alimentare il circuito di regolazione per ottenere i 3,3V oppure usare l'uscita della batteria. In entrambi i casi, il modulo wireless è alimentato correttamente?

Chiedo cortesemente se qualcuno può aiutarmi a risolvere questi problemi, accetto consigli e riferimenti. Ho provato a cercare su internet ma l'argomento è molto vasto e mi sono un pò perso.

luca80: Per ottenere i 3,3V ho bisogno di un regolatore di tensione (ho questo componente: TLV1117-33) e del relativo circuito. Qua il mio problema è se posso usare l'uscita a 5V (ottenuta o tramite BEC o tramite il regolatore di tensione) per alimentare il circuito di regolazione per ottenere i 3,3V oppure usare l'uscita della batteria. In entrambi i casi, il modulo wireless è alimentato correttamente?

In linea di massima SI, vediamo: sul regolatore hai una caduta di 1.7V , se scegli quello più grosso in contenitore TO263 o TO220 con un piccolo dissipatore sotto forma di area di rame da 4cm^2 puoi dissipare almeno 1watt, quindi puoi prelevare una corrente di 1 / 1.7 = 0.58A , se la tua scheda consuma meno di 0.58A allora puoi

Un TO220 con relativo dissipatore in rame e' un discreto peso, da caricare su un quadricottero, specie se amatoriale ... non converrebbe un modulino switching ? ... oppure banalmente, limitarsi ad abbassare i 5V con dei diodi in serie ? ... ;)

luca80:
ed i relativi algoritmi (AHRS tramite filtro complementare del primo ordine e misura della distanza). Usando un microcontrollore ATMega1284P @ 16MHz, il tutto sembra funzionare senza problemi.

Sono un paio di anni che non si usano più gli otto bit per i multicotteri, troppo limitati come performance, sopratutto non va per niente bene il filtro complementare, va usata la DCM oppure l’EKF, per quest’ultimo serve per forza di cose un 32 bit, preferibilmente dotato di fpu.
Attualmente tutte le flight controller sono basate su processori a 32 bit, p.e. potresti prendere la CC3D, costa solo 25 Euro, basata su un STM32 e dotato di MPU6050, il 9150 altro non è che un 6050 con incluso un magnetometro AK8975 nello stesso case.
La CC3D dispone di bus I2C e seriali su cui collegare altri sensori, inoltre dispone di un suo ottimo software, open pilot, open source che puoi usare come base di partenza per sviluppare la tua applicazione, è compatibile anche con altri software open source per multi.

Ciao e grazie a tutti per avermi risposto! :)

icio: In linea di massima SI, vediamo: sul regolatore hai una caduta di 1.7V , se scegli quello più grosso in contenitore TO263 o TO220 con un piccolo dissipatore sotto forma di area di rame da 4cm^2 puoi dissipare almeno 1watt, quindi puoi prelevare una corrente di 1 / 1.7 = 0.58A , se la tua scheda consuma meno di 0.58A allora puoi

Io ho il componente con il package TO252. Cmq ho dato un'occhiata al forum della texas instruments per i dettagli implementativi relativi a questo componente e ho scoperto che per il corretto funzionamento sono necessari dei condensatori particolari, al tantalio con un certo coefficiente ESR, altrimenti (per come è scritto là) il componente non funziona bene. Per questo motivo sto pianificando di usare solo gli LM317 sia per il circuito di alimentazione a 5V e sia per quello a 3.3V.

Faccio un inciso prima di continuare: non avendo le conoscenze necessarie, ho pensato di usare due circuiti diversi per alimentare separatamente i motori e il micro più i sensori. Questo perché ho notato che c'è un problema non banale usando un solo circuito. Questo problema è relativo all'arming dei motori. Al momento per far girare i motori faccio queste operazioni:

  • accendo il micro (che ha la propria alimentazione)
  • nel programma, dopo le operazioni di init, avvio l'operazione di arming e resto in attesa
  • collego la batteria al sistema di alimentazione degli ESC
  • esco dall'attesa (o premendo un pulsante switch o inviando un comando dal pc)

in questo modo i motori sono pronti per funzionare.

Ritornando al discorso dell'alimentazione, se uso un solo circuito di alimentazione, allora non appena inserisco la batteria (per alimentare sia i motori che il micro), gli ESC non si armano ma vanno in modalità di configurazione. Per questo motivo ho deciso di usare un'altro circuito di alimentazione separato per alimentare il micro. Questo ovviamente è sia più costoso perché uso un'altra batteria lipo, e sia più pesante perché il quad peserà di più. Mettendo da parte il problema peso (dovrei avere una spinta sufficiente, se non ho fatto male i conti!) il solo problema è la tensione di dropout sull'LM317. Io ho in ingresso una tensione che va da 8.4V a minimo 7.4V, ed il componente ha una tensione di dropout di circa 3V. Tecnicamente sono al limite del funzionamento. Ma se non ho capito male, la tensione di dropout di 3V si ha se il carico assorbe la massima corrente che eroga L'LM317 che è di 1.5A. Ora, il mio circuito (micro+sensori) non dovrebbe assorbire più di 360 mA. Ho calcolato questo valore tenendo conto che il micro consuma 200mA, ho stimato un consumo di 40mA per l'MPU9150 (per me, sul datasheet è un pò incasinato trovare il consumo esatto, ma penso di aver sovrastimato) mentre i 5 sonar HCSR04 consumano max 20mA ciascuno, quindi in tot sono 100mA. Non avendo nessun feedback e basandomi solo sulle mie (scarse) conoscenze di elettronica, seguendo questo discorso penso che la tensione di dropout alla fine sia minore dei 3V, e quindi dovrei riuscire ad avere una giusta alimentazione anche usando quei valori di tensione in ingresso. Voi che ne dite?

Etemenanki: Un TO220 con relativo dissipatore in rame e' un discreto peso, da caricare su un quadricottero, specie se amatoriale ... non converrebbe un modulino switching ? ... oppure banalmente, limitarsi ad abbassare i 5V con dei diodi in serie ? ... ;)

Non so che dirti! :confused: Posso dirti di sicuro che la spinta non mi manca, quindi qualche grammo in più o qualche grammo in meno non mi cambia molto. Però ripeto, non ho molte conoscenze in elettronica quindi non so.. Magari con qualche info in più o qualche schema penso si possa fare! :) Per il modulino di switching ci avevo pensato, ma dato che non ho molto soldi da spendere, ho abbandonato l'idea. Quei componenti li ho ottenuti come campioni gratuiti dal sito della texas instruments usando il mio indirizzo di posta dell'università. Inoltre mi piace smanettare su ste cose e quindi comprare una cosa già fatta non mi dà soddisfazione!! :)

astrobeed: Sono un paio di anni che non si usano più gli otto bit per i multicotteri, troppo limitati come performance, sopratutto non va per niente bene il filtro complementare, va usata la DCM oppure l'EKF, per quest'ultimo serve per forza di cose un 32 bit, preferibilmente dotato di fpu. Attualmente tutte le flight controller sono basate su processori a 32 bit, p.e. potresti prendere la CC3D, costa solo 25 Euro, basata su un STM32 e dotato di MPU6050, il 9150 altro non è che un 6050 con incluso un magnetometro AK8975 nello stesso case. La CC3D dispone di bus I2C e seriali su cui collegare altri sensori, inoltre dispone di un suo ottimo software, open pilot, open source che puoi usare come base di partenza per sviluppare la tua applicazione, è compatibile anche con altri software open source per multi.

In realtà hai ragione sul fatto che i micro ad 8bit sono limitati, ma purtroppo sono alle prime armi e questo alla fine è partito da un progetto che devo fare per il corso di microcontrollori all'uni. Il corso è basato sull'uso dei microcontrollori ad 8bit ed io dispongo di una scheda stk500 (per certi versi il nonno di Arduino) per la programmazione del micro. Cmq il filtro complementare è usato parecchio in queste applicazioni, e la letteratura ne è piena di esempi. Uno su tutti è il filtro di Mahony o Madgwick. Per gli altri algoritmi ci sono delle implementazioni in C che girano sui micro ad 8bit, ma sinceramente la cosa non mi interessa nel senso che per il mio obiettivo, il filtro complementare è più che sufficiente. E' semplice sia da capire e sia da implementare. L'unica accortezza è che bisogna scegliere con cura la costante di tempo in modo che il filtro non crea problemi (a livello di ritardo) al sistema di controllo. Cmq tutto questo che ti ho detto riguarda il filtro complementare, funziona simulando il sistema con Matlab. Ancora non ho testato il sistema reale e quindi mi riservo il diritto di rettificare o ratificare in futuro queste mie impressioni sul filtro complementare!! :)

Cmq ripeto che la valenza di tutto questo non è quella di avere un quad autocostruito, ma è farlo secondo una logica ingegneristica, che poi dovrebbe essere il mio lavoro alla fine! Comprare una scheda già fatta, con un software già fatto sarebbe una sconfitta per me che studio ste cose! :)

Etemenanki: Un TO220 con relativo dissipatore in rame e' un discreto peso, da caricare su un quadricottero, specie se amatoriale ...

intendevo il rame del pcb, se consuma 400mA allora va bene anche il TO252 con 3-4 cm^2 di rame

icio:
intendevo il rame del pcb, se consuma 400mA allora va bene anche il TO252 con 3-4 cm^2 di rame

In realtà ne consuma ancora di meno perché il circuito di alimentazione a 3.3V mi serve per alimentare il modulo wifi che consuma circa 8 mA in Tx e 8.4 mA in Rx…

Consumerà anche poco ma di picco ha bisogno di una tensione stabile a 3.3V quindi il 1117 va benissimo e almeno 150-300mA di corrente, quindi il 1117 va benissimo,
per quanto riguarda i condensatore per diminuire ESR metti 2 ceramici multistrato in parallelo
anche di qualità normale e un elettrolitico da 22uF

icio:
…per quanto riguarda i condensatore per diminuire ESR metti 2 ceramici multistrato in parallelo
anche di qualità normale e un elettrolitico da 22uF

Grazie del consiglio! Proverò questa configurazione!! :slight_smile:

luca80: Cmq ripeto che la valenza di tutto questo non è quella di avere un quad autocostruito, ma è farlo secondo una logica ingegneristica, che poi dovrebbe essere il mio lavoro alla fine! Comprare una scheda già fatta, con un software già fatto sarebbe una sconfitta per me che studio ste cose! :)

Nel comprare una scheda pronta all'uso non c'è nulla di male visto che ti risolve in modo efficiente il problema hardware, se vuoi stare sugli AVR allora prendi una Crius 2, Atmega 2560 dotato di MPU6050, magnetometro, barometro, ingresso per GPS e porta seriale out per la telemetria/debug. Sul discorso filtro stai prendendo una cantonata enorme, un multi non riesce a volare con il filtro complementare, o quantomeno lo fa in modo molto, ma molto affidabile, ci hanno provato con le prime release dei software per quadri, abbandonato subito a favore della DCM. Emulare una cosa con matlab non vuol dire che poi funziona in pratica, sopratutto quando devi farla funzionare su una piccola mcu 8 bit. Se ti fai un giretto su i tre, enormi, topic relativi ai multi, si trovano nell'area megatopic, puoi trovare molte informazioni su come va costruito un quadri e su come funziona il relativo software. Il fatto di partire da un software, open source, come base non è una sconfitta, scoprire l'acqua calda non serve a nulla, intanto hai in mano un qualcosa di funzionante, poi lo migliori/modifichi come ti aggrada, già il fatto di avere pronta tutta la parte init micro e periferiche è un grosso vantaggio che fa risparmiare molto tempo.

luca80: In realtà ne consuma ancora di meno perché il circuito di alimentazione a 3.3V mi serve per alimentare il modulo wifi che consuma circa 8 mA in Tx e 8.4 mA in Rx..

Allora dovrebbero bastare un paio di diodi della serie 1N400x, non importa quali, saldati volanti con un paio di condensatorini magari tantalio e ceramici a disco ... secondo il datasheet, la caduta dovrebbe essere di circa 0.85V con correnti di 300/400mA, per arrivare sui 0.9V intorno ad 1A ... per il modulo di cui hai postato la sigla, la Nordic dichiara sul datasheet tensione di alimentazione da 1.9 a 3.6V, quindi un po di tolleranza ce l'ha ... ed un paio di diodi e condensatori pesano decisamente di meno di un regolatore con dissipatore, o anche con PCB ...

Non sottovaluterei i grammi in piu, potrebbero fare parecchia differenza in fatto di autonomia ;)

Per l'uscita dei BEC non so, dovresti controllare con un'oscilloscopio se la tensione e' stabile ed esente da picchi e ripple, se si, allora penso la puoi usare anche per altro ... oppure costruirci un filtro per eliminare i disturbi, se presenti ...

astrobeed: Nel comprare una scheda pronta all'uso non c'è nulla di male visto che ti risolve in modo efficiente il problema hardware, se vuoi stare sugli AVR allora prendi una Crius 2, Atmega 2560 dotato di MPU6050, magnetometro, barometro, ingresso per GPS e porta seriale out per la telemetria/debug. Sul discorso filtro stai prendendo una cantonata enorme, un multi non riesce a volare con il filtro complementare, o quantomeno lo fa in modo molto, ma molto affidabile, ci hanno provato con le prime release dei software per quadri, abbandonato subito a favore della DCM. Emulare una cosa con matlab non vuol dire che poi funziona in pratica, sopratutto quando devi farla funzionare su una piccola mcu 8 bit. Se ti fai un giretto su i tre, enormi, topic relativi ai multi, si trovano nell'area megatopic, puoi trovare molte informazioni su come va costruito un quadri e su come funziona il relativo software. Il fatto di partire da un software, open source, come base non è una sconfitta, scoprire l'acqua calda non serve a nulla, intanto hai in mano un qualcosa di funzionante, poi lo migliori/modifichi come ti aggrada, già il fatto di avere pronta tutta la parte init micro e periferiche è un grosso vantaggio che fa risparmiare molto tempo.

Scusami, ma ti dò ragione solo in parte. E' vero che se da un lato nel comprare una scheda già pronta all'uso, essa risolve in un botto un sacco di problemi, ma dall'altro lato questo comporta una sorta di svantaggio nel senso che molti problemi non li affronti. Accademicamente parlando usare una scheda già pronta non è saggio perché penso sia giusto per uno studente di ingegneria sporcarsi le mani cercando di acquisire quante più conoscenze possibili su un argomento cosi pratico e spendibile quali sono i sistemi embedded. All'uni non usiamo Arduino per un semplice ma fondamentale motivo: Arduino nasconde i dettagli implementativi tipici di un microcontrollore che un ingegnere dovrebbe avere chiaro in modo da poter adattare le proprie conoscenze a seconda del microcontrollore che sia esso dell'ATMEL o della Texas Instruments! Questo è il riassunto di ciò che ci ha detto il prof quando gli è stata rivolta la domanda: ma perché non usiamo Arduino?

Per quanto riguarda l'uso del filtro complementare dal mio punto di vista esso funge. Nella letteratura accademica viene usato spesso e teoricamente esso funge! Mo, io non so come e perché esso è stato abbandonato a favore dell'algoritmo DCM. Qualcosa in testa mi gira, ma non la dico perché altrimenti passo per un saccente presuntuoso. Quello che posso permettermi di dirti è che sicuramente chi ha fatto quei software sa il fatto suo, ma una cosa è l'informatica o l'ingegneria informatica, un'altra cosa è l'ingegneria dell'automazione. Sono campi diversi con molte differenze professionali. Penso che qua stia il problema. La maggior parte dei documenti in giro su internet sul filtro complementare fa riferimento ad un pdf di un certo Shane Colton. E la maggior parte del codice che ho visto in giro usa gli stessi parametri che si trovano sul quel file. Pessima cosa perché quei parametri sono relativi a quella applicazione e funzionano per quell'applicazione (il segway). Se io in simulazione uso quei parametri il mio sistema, per un tempo di simulazione lungo diverge, diventa instabile. Nonostante ciò se uso quei parametri sul sensore MPU9150 esso funziona benissimo! Ottengo gli angoli di Eulero e non ho nessun problema! La soluzione di questo "enigma" è ovviamente scritta in quel file, ma bisogna leggere tra le righe e capire perché è importante scegliere correttamente la costante di tempo ed il tempo di campionamento. Ste due cose non sono ben chiare a chi scrive software, perché appartengono al mondo dell'ingegneria dell'automazione piuttosto che al mondo dell'ingegneria informatica! Te lo dico perché ho preso la laurea triennale in ing informatica.. Se mi permetti, senza avere la presunzione di essere un saputello, ti dico perché il filtro complementare è stato abbandonato a favore dell'algoritmo DCM, specie se si usano i sensori dell'InvenSense : algoritmo DCM, da buon intenditore poche parole! :)

Per altre cose concordo con te quando dici che una cosa è simulare su Matlab, un'altra è il sistema reale. Ma anche questo fa parte del gioco dovrei essere in grado di replicare in buona parte i risultati ottenuti con Matlab usando il sistema reale, altrimenti mi conviene cambiare mestiere! Cioè penso che la teoria non sbaglia, se le cose non funzionano è perché chi fa le cose (io in questo caso! :) ) non le fa bene! Sono circa due anni che sono alle prese con questo progetto, sono partito dal problema iniziale che è quello di trovare un modo per tenere a mezz'aria una certa massa M ed ora sono arrivato a pormi il problema di come costruire correttamente (ma non in modo professionale) la scheda di controllo del quad. Usare ora una scheda già fatta sarebbe un suicidio per il mio orgoglio! :)

Etemenanki: Allora dovrebbero bastare un paio di diodi della serie 1N400x, non importa quali, saldati volanti con un paio di condensatorini magari tantalio e ceramici a disco ... secondo il datasheet, la caduta dovrebbe essere di circa 0.85V con correnti di 300/400mA, per arrivare sui 0.9V intorno ad 1A ... per il modulo di cui hai postato la sigla, la Nordic dichiara sul datasheet tensione di alimentazione da 1.9 a 3.6V, quindi un po di tolleranza ce l'ha ... ed un paio di diodi e condensatori pesano decisamente di meno di un regolatore con dissipatore, o anche con PCB ...

Non sottovaluterei i grammi in piu, potrebbero fare parecchia differenza in fatto di autonomia ;)

Per l'uscita dei BEC non so, dovresti controllare con un'oscilloscopio se la tensione e' stabile ed esente da picchi e ripple, se si, allora penso la puoi usare anche per altro ... oppure costruirci un filtro per eliminare i disturbi, se presenti ...

Guarda al momento sto dialogando in parallelo con quelli della texas instruments sull'uso dei regolatori di tensione. Mi hanno risposto sul loro forum e mi hanno consigliato di usare al posto dell'LM317 il componente UA7805 perché dicono che con questo componente i 5V in uscita sono garantiti anche se uso come ingresso una tensione tra gli 8.4 ed i 7.4V. Siccome posso richiedere dei campioni gratuiti allora ne approffito!! :) Non sono un esperto di elettronica e quindi per quanto banale sia ma ho un pò di problemucci ad implementare anche un semplice circuito! Ho provato a cercare su internet qualche circuito per abbassare la tensione usando dei diodi, ma escono troppi risultati e tutti con soluzioni diverse e mi perdo perché non capisco quei circuiti! Magari sono equivalenti tra di loro, ma boh la cosa mi confonde parecchio.

Per i grammi non mi preoccupo, e nè tanto meno della durata della batteria perché mo il quad deve solo alzarsi e stabilizzarsi da solo. Poi nei futuri sviluppi ne terrò conto, ma ora la cosa la trascuro di proposito altrimenti non ne esco più!

L'uscita BEC non è molto stabile. Tempo fa avevo necessità di misurare la velocità dei motori, e cosi mi sono costruito un tachimetro usando il sensore TCRT5000. All'inizio alimentavo la scheda con il sensore tramite BEC e questa non funzionava. Usando l'oscilloscopio dell'uni la tensione era molto rumorosa. Poi ho risolto alimentando la scheda con i pin dell'stk500 ed aggiungendo un condensatore elettrolitico. Gli esc sono di tipo economico, e quindi non mi aspetto dei miracoli! Tra l'altro non dispongo di un oscilloscopio e all'uni non me lo fanno usare più..

luca80: ... UA7805 ...

Gia questo e' strano, sapendo che potresti avere una tensione di ingresso piu bassa del limite minimo (metti che la batteria si scarica un po di piu), qualsiasi persona con un minimo di esperienza ti avrebbe dovuto consigliare degli LDO, non dei regolatori standard ... il 7805 http://pdf.datasheetcatalog.com/datasheet/texasinstruments/ua7805.pdf ha un dropout interno tipico di almeno 2V, il che significa che se la tensione di ingresso scende sotto i 7V (circa 7.5, in realta'), il regolatore diventa instabile ... ad esempio, invece, l'altrettanto comune LM1117-5.0 ha un dropout di massimo 1.3V, il che significa che continuerebbe a funzionare anche con 6.5V di ingresso ... curioso che non ti abbiano consigliato un LDO ...

...Ho provato a cercare su internet qualche circuito per abbassare la tensione usando dei diodi, ma escono troppi risultati e tutti con soluzioni diverse e mi perdo perché non capisco quei circuiti! Magari sono equivalenti tra di loro, ma boh la cosa mi confonde parecchio.

Non e' che ci sia da studiarci su piu di tanto ... i diodi hanno una loro caduta di tensione interna, secondo il materiale e la tecnologia con cui sono costruiti (silicio circa 0.8V, germanio circa 0.2V, schottky da 0.4 a 0.6V di media, e cosi via) ... il che significa, detto in parole molto povere, che quando fai passare una tensione attraverso un diodo, ne "perdi" (in realta' viene dissipata in calore) una parte uguale al valore di caduta ... con 2 diodi al silicio in serie, la tensione si abbassa di circa 1.6/1.7V (dipende dalla corrente) ... all'atto pratico, e' tutto qui ;)

... non dispongo di un oscilloscopio e all'uni non me lo fanno usare più..

... glie l'hai solo sciolto, o l'hai fatto esplodere distruggendo mezzo laboratorio ? ... (scusa, non ho resistito :P :D :D :D)

luca80: Accademicamente parlando usare una scheda già pronta non è saggio perché penso sia giusto per uno studente di ingegneria sporcarsi le mani cercando di acquisire quante più conoscenze possibili su un argomento cosi pratico e spendibile quali sono i sistemi embedded.

Non sono per niente d'accordo su questa affermazione, il fatto di usare una scheda pronta, della quale hai lo disposizione schema in formato cad e tutti i data sheet, ti permette di studiarla a fondo e imparare come vanno realizzate le schede, mi pare di capire che non stai facendo ingegneria elettronica e l'hardware non è il tuo campo primario.

All'uni non usiamo Arduino per un semplice ma fondamentale motivo: Arduino nasconde i dettagli implementativi tipici di un microcontrollore che un ingegnere dovrebbe avere chiaro in modo da poter adattare le proprie conoscenze a seconda del microcontrollore che sia esso dell'ATMEL o della Texas Instruments!

Arduino è una scheda dotata di mcu come tante presenti sul mercato, la sua forza è nella semplicità di programmazione e l'enorme supporto offerto dagli utenti di questi forum, inteso nella sua interezza e non solo nella sezione italiana per quanto sia una delle più attive. :) Arduino puoi usarlo in due modi, quello semplice che consiste in massima parte nel copia incolla di codice pronto e l'uso delle varie librerie, quello complicato che prevede lo studio del processore usato e la scrittura del codice in C puro senza usare wiring, o almeno limitandolo al minimo possibile. Se vuoi studiare come funziona una mcu il modo corretto per farlo è prendere una qualunque scheda demo/test che la monta, gli stessi produttori offrono sempre vari sistemi di sviluppo per i loro micro, studiare il data sheet, gli eventuali reference manuali, le application note, cominciare a scrivere codice per provare le varie periferiche e verificare se si è compreso il tutto.

Per quanto riguarda l'uso del filtro complementare dal mio punto di vista esso funge.

Il filtro complementare non va bene per un multicottero, è appena appena sufficiente per un balancing robot, il segway, e comunque anche in questo caso non offre grandi prestazioni. Una domanda, con che frequenza pensi di gestire l'aggiornamento della velocità dei motori, la lettura del MPU e il pid ?

in buona parte i risultati ottenuti con Matlab usando il sistema reale, altrimenti mi conviene cambiare mestiere! Cioè penso che la teoria non sbaglia, se le cose non funzionano è perché chi fa le cose (io in questo caso! :) ) non le fa bene!

La teoria è importantissima, però il mondo reale è diverso da quello teorico, devi fari i conti con i parametri parassiti e la reale risposta degli oggetti che è sempre diversa da quello del modello teorico, sopratutto quando si parla di simulare la risposta di un motore BLDC dotato di elica, il margine di errore minimo ottenibile non è mai inferiore al 5%.

Usare ora una scheda già fatta sarebbe un suicidio per il mio orgoglio! :)

No è un suicidio per i tempi di sviluppo visto che nemmeno disponi della idonea strumentazione per provarla :)

Buongiorno!
Ho fatto qualche schema seguendo i vari datasheet ed i consigli che mi avete dato voi e quelli che ho reperito sul forum della texas instruments. Li ho messi in un file pdf che allego a questo post, per cortesia potete controllare se sono corretti e consigliarmi la soluzione migliore?

Etemenanki:
Gia questo e’ strano… curioso che non ti abbiano consigliato un LDO …

Boh nn so che dirti! Cmq va detto che io ho specificato che la mia tensione in ingresso varia dagli 8.4 ai 7.4V. Forse questo ha influenzato il consiglio…

Etemenanki:
Non e’ che ci sia da studiarci su piu di tanto … all’atto pratico, e’ tutto qui :wink:

Lo so, ma dato che non è il mio campo non so come muovermi! In realtà il problema potrei anche bypassarlo usando un partitore di tensione, giusto?
Cmq ho fatto qualche schema, tra cui il circuito con i diodi che mi ha consigliato tu, magari se gli dai un’occhiata mi fai un grande favore!! :slight_smile:

Etemenanki:
… glie l’hai solo sciolto, o l’hai fatto esplodere distruggendo mezzo laboratorio ? …
(scusa, non ho resistito :stuck_out_tongue: :smiley: :smiley: :D)

Tranquillo!!! :slight_smile: In realtà la spiegazione è molto più semplice, a volte le persone si appropriano della cosa pubblica e ne diventano padroni senza averne titolo!! Nella mia università succede anche questo… :frowning:

astrobeed:
Non sono per niente d’accordo su questa affermazione, il fatto di usare una scheda pronta, della quale hai lo disposizione schema in formato cad e tutti i data sheet, ti permette di studiarla a fondo e imparare come vanno realizzate le schede, mi pare di capire che non stai facendo ingegneria elettronica e l’hardware non è il tuo campo primario.

Io sn laureato in ing informatica, e sto studiando per la specialistica in ing dell’automazione. Ho solo qualche vago ricordo dell’elettronica…
In realtà hai ragione, però tieni presente che io non devo fare schede, io mi occupo di altro!!
Questo è un caso particolare, e cmq non devo fare una cosa professionale! A me serve passare dai circuiti fatti con la millefori ad un circuito pcb. Il fatto è che quando mi sono messo a cercare materiale su come passare dalla millefori al pcb ho trovato molti dettagli che ignoravo, e qua nascono i problemi! E’ una cosa banale e ovvia per certi versi, ma ti ripeto non sono del mestiere e quindi mi ritrovo a risolvere questi problemi. In futuro, ci penserò due volte prima di fare “cose” elettroniche!

astrobeed:
Arduino è una scheda dotata di mcu come tante presenti sul mercato, la sua forza è nella semplicità di programmazione e l’enorme supporto offerto dagli utenti di questi forum, inteso nella sua interezza e non solo nella sezione italiana per quanto sia una delle più attive. :slight_smile:

Sulle potenzialità di Arduino potremmo stare ore a discuterne! Ti posso assicurare però (e tu me lo puoi confermare perché intuisco il tuo “amore” per il C! :slight_smile: ) che le potenzialità di Arduino vengono molto esaltate da chi inizia a programmare i microcontrollori usando il C.
Appena mi sbrigo sto progetto, comprerò una scheda Arduino, oltre che a smanettarci, vorrei fare il porting delle librerie che ho scritto in C per il mio progetto e riuscire ad utilizzare il RealTime framework di Matlab. Sono sicuro che diventerò ancora più esaurito!! :slight_smile:

astrobeed:
Il filtro complementare non va bene per un multicottero, è appena appena sufficiente per un balancing robot, il segway, e comunque anche in questo caso non offre grandi prestazioni.

Ti ripeto, per me funge. Ancora non l’ho provato sul sistema reale, o meglio senza aver fatto la scheda non posso testare tutto il sistema di controllo, appena lo farò posterò i risultati.
Non ho nessun problema a smentirmi! :slight_smile:

astrobeed:
Una domanda, con che frequenza pensi di gestire l’aggiornamento della velocità dei motori, la lettura del MPU e il pid ?

Qua non ti capisco! Che intendi con frequenza di aggiornamento? Forse il tempo di campionamento?
Io cmq uso il classico loop di controllo che si trova sulla maggior parte dei libri.

leggo il riferimento
leggo il segnale di uscita dai sensori
calcolo l'errore
applico l'azione di controllo
aggiorno il controllore

questo è il mio ciclo principale che viene eseguito ogni volta che scatta il tempo di campionamento.
Il mio tempo di campionamento è di 0.0310 ms (32.2130 Hz).

Cmq io non uso il pid come controllore, uso uno schema di controllo robusto (LQG/LTR) con azione in feedforward.

Avevo provato ad usare il pid usando varie configurazioni, ma per tutta una serie di motivi (tra cui la costante di tempo del filtro complementare!!) sul sistema reale non mi funzionava. Cosi ho deciso di fare le cose per bene ed ho progettato quella tipologia di sistema di controllo.

astrobeed:
La teoria è importantissima, però il mondo reale è diverso da quello teorico, devi fari i conti con i parametri parassiti e la reale risposta degli oggetti che è sempre diversa da quello del modello teorico, sopratutto quando si parla di simulare la risposta di un motore BLDC dotato di elica, il margine di errore minimo ottenibile non è mai inferiore al 5%.

Su questo hai ragione e lo sto sperimentando sulla mia pelle!!
Sul fatto di simulare un motore BLDC il discorso si complica, ma cmq il tutto può essere semplificato fino ad ottenere un sistema del primo ordine. In questo caso cmq di solito si usano delle tecniche di identificazione per avere un buon modello approssimato di un motore BLDC + elica. Io ho fatto cosi.

astrobeed:
No è un suicidio per i tempi di sviluppo visto che nemmeno disponi della idonea strumentazione per provarla :slight_smile:

E’ già un suicidio perché a breve ho una scadenza importante, e devo fare ancora molte cose…

alimentazione.pdf (959 KB)

Fondamentalmente corretti, anche se con i diodi e’ meglio mettere i condensatori sull’uscita anziche’ sull’ingresso …

Diciamo che, di base, il sistema con i diodi e’ il piu semplice, ma non ti stabilizza l’uscita, si limita a togliere la caduta dall’ingresso, quindi se l’ingresso diminuisce, diminuisce anche l’uscita … dato che il fabbricante dice che il suo modulo ha un’ampia tolleranza di alimentazione, potrebbe anche funzionare con tensioni di batteria piu basse, ma se servisse invece per qualcosa che richiede una precisa e stabile alimentazione, non e’ consigliabile …

Con il 1117 e’ il sistema migliore, anche se usa qualche componente in piu, e funziona stabilmente anche se la batteria scende sui 6.5V (sotto quel livello, la stabilita’ dell’uscita non e’ garantita, ovviamente)

Gia che c’ero, mi sono divertito a buttare giu come potrebbe venire in formato SMD (singola faccia, con un doppia faccia sarebbe decisamente piu piccolo) … circa 18x24mm, compresa un minimo di superfice per la dissipazione del calore del regolatore 1117 in formato DPAK … non e’ che sia poi cosi grosso, in fondo … probabilmente si puo rimpicciolire ancora di piu, ma in 5 minuti questo e’ il meglio che sono riuscito a fare :wink:

1117min.png

Grazie mille Etemenanki! :slight_smile:

Etemenanki:
Fondamentalmente corretti, anche se con i diodi e’ meglio mettere i condensatori sull’uscita anziche’ sull’ingresso …

Diciamo che, di base, il sistema con i diodi e’ il piu semplice, ma non ti stabilizza l’uscita, si limita a togliere la caduta dall’ingresso, quindi se l’ingresso diminuisce, diminuisce anche l’uscita … dato che il fabbricante dice che il suo modulo ha un’ampia tolleranza di alimentazione, potrebbe anche funzionare con tensioni di batteria piu basse, ma se servisse invece per qualcosa che richiede una precisa e stabile alimentazione, non e’ consigliabile …

Con il 1117 e’ il sistema migliore, anche se usa qualche componente in piu, e funziona stabilmente anche se la batteria scende sui 6.5V (sotto quel livello, la stabilita’ dell’uscita non e’ garantita, ovviamente)

Siccome ho già i componenti preferisco usare la soluzione con lo stabilizzatore, anche perché avendo poco tempo voglio essere (quasi!) sicuro che la parte hardware non crei problemi!
Cmq ho un paio di osservazioni sul tuo schema: tu hai usato dei condensatori ceramici (quelli più interni) e dei condensatori polarizzati, questi ultimi di che tipo sono?
Poi tu hai usato valori di capacità uguali, perché? Mi viene da pensare che un valore vale l’altro, ma non è cosi giusto?

Ho letto qualcosa in merito “all’uso dei condensatori in uscita” e la capacità di questi influenza la stabilità del componente. Esiste qualche regola non scritta che ignoro?

Infine che programma usi per fare gli schemi? Io sto usando Fritzing, ma non ho quei risultati!

Etemenanki:
Gia che c’ero, mi sono divertito a buttare giu come potrebbe venire in formato SMD (singola faccia, con un doppia faccia sarebbe decisamente piu piccolo) … circa 18x24mm, compresa un minimo di superfice per la dissipazione del calore del regolatore 1117 in formato DPAK … non e’ che sia poi cosi grosso, in fondo … probabilmente si puo rimpicciolire ancora di piu, ma in 5 minuti questo e’ il meglio che sono riuscito a fare :wink:

Il formato SMD per me è un argomento avanzato, cmq complimenti!! :slight_smile: :slight_smile: :slight_smile:

Visto che ci sono allego i due pcb che ho fatto con Fritzing. Per farli ho impiegato tutto il pomeriggio! :frowning:
Il primo rappresenta la parte superiore dove vado a montare il sensore MPU9150 e i 4 sonar, mentre il secondo rappresenta la parte inferiore dove ci stanno i collegamenti tra la batteria e gli ESC.
Appena lo finisco posto anche la parte centrale che è quella con il micro ed i circuiti di alimentazione.
Secondo te vanno bene?

Come programma uso Eagle http://www.cadsoftusa.com/download-eagle/ … io ho la licenza, ma la versione “freeware” consente comunque di fare stampati a doppia faccia con dimensioni massime di 80x100mm (non puoi fare piu di due facce, e lo schema elettrico non puo occupare piu di un foglio, ma al contrario di altri programmi non limita ne il numero di componenti, ne quello di reti/nodi, e per la maggior parte delle applicazioni hobbystiche e’ sufficente … considera ad esempio che arduino e’ stato realizzato con la versione freeware ;)) … inoltre, anche se all’inizio e’ leggermente piu complesso da imparare di fritzing, consente di fare cose che fritzing nemmeno si sogna … e con qualche piccolo “sporco trucco” ed un po di pazienza, anche cose che non sono previste in origine, come ad esempio lo stampato che ti allego in immagine come esempio :wink: :smiley:

Per quanto riguarda i condensatori, quelli ceramici servono per evitare che i regolatori, in certe condizioni, vadano in autooscillazione (il che li farebbe smettere di regolare, con il risultato di poter bruciare il circuito), e di solito vanno messi il piu vicino possibile al regolatore … gli elettrolitici si possono usare di qualsiasi tipo, alluminio, tantalio, birra e salsiccia (:stuck_out_tongue: :D), dipende solo dall’ingombro finale che vuoi e dallo spazio che hai a disposizione … per quanto riguarda i valori, all’ingresso puoi usare da 10 a 100 uF, mentre quello di uscita in genere si mette piu grande se hai spazio (fa da “serbatoio” di energia, in caso di carichi che assorbano parecchia corrente impulsiva), ma puo tranquillamente essere dello stesso valore di quello in ingresso, se c’e’ poco spazio o serve solo per filtrare disturbi … unico appunto, se usi condensatori tantalio, sempre scegliere una tensione di lavoro che sia come minimo il doppio di quella applicata, di piu se possibile (tipo, 16V se li si usa sui 5V), perche’ sono particolarmente bastardi in questo senso … e non invertirli mai, altrimenti prendono fuoco (alla lettera).

Ti ringrazio per i chiarimenti Etemenanki!! :) :) :) Avevo dei problemi a reperire dei condensatori al tantalio, ma leggendo il tuo post vedo che ne posso fare a meno. O meglio qualcuno ce l'ho, ma sn piccoli di capacità e grandi di voltaggio (1uF e 25V) quindi penso che ne farò a meno. Userò gli elettrolitici normali ed i ceramici.

Per quanto riguarda Eagle più tardi me lo scarico e proverò a smanettarci un pò, se non è troppo complicato lo userò al posto di Fritzing.

Grazie ancora! :)