Go Down

Topic: [Multicotteri] Elettronica : IMU, MCU, Sensori ed algoritmi di controllo (Read 140869 times) previous topic - next topic



1) Nell'IDE uKeil non riesco a complilare progetti complessi ma solo progetti stupidi come accendere luci o simili perchè il compiler mi da sempre problemi nell'includere la libreria della ST
2) Non capisco come leggere i dati dei sensori, mi riferisco a velocità angolari, valori acc. e valori del campo magnetico.
3) utilizzo dei timer per realizzare dei segnali PPM


1) Devi copiare nella cartella principale del compilatore (C:\keil se hai fatto l'installazione standard) le cartelle "Libraries", "Peripheral_Examples" e "Utilities" che trovi nel sorgente del demo precaricato sulla scheda, in alternativa le puoi copiare all'interno del progetto, assieme alla cartella CMSIS se la usi, e cambi i percorsi delle relative path.

2) Ci sono le funzioni già pronte nella libreria di ST, comunque sono normali device I2C e vi accedi tramite questo bus.

3) Il PPM non lo generi tramite timer, va implementato tramite specifica routine software che si appoggia ad un timer, e relativo interrupt, come base dei tempi sia per generare i singoli impulsi che per il frame.



1) Devo copiare semplicemente le cartelle nel percorso che mi hai indicato senza impostare nessun path all'interno del keil?

2)le funzioni le ho trovate per entrambi i sensori purtroppo non sono riuscito a capire in che unità di misura le rilascia anche leggendo l'esempio DEMO, in cui vengono usate queste funzioni. Inoltre, sempre spulciando nella funzioni definite in DEMO noto che i dati rilasciati dalla funzione READ vanno trattati ad esempio in DEMO leggo:

Code: [Select]
L3GD20_Read(&tmpreg,L3GD20_CTRL_REG4_ADDR,1);
 
 L3GD20_Read(tmpbuffer,L3GD20_OUT_X_L_ADDR,6);
 
 /* check in the control register 4 the data alignment (Big Endian or Little Endian)*/
 if(!(tmpreg & 0x40))
 {
   for(i=0; i<3; i++)
   {
     RawData[i]=(int16_t)(((uint16_t)tmpbuffer[2*i+1] << 8) + tmpbuffer[2*i]);

di cui non capisco pienamente il significato.

3) La routine ho idea di come si fa ma da come ho capito ho bisogno di una variabile temporale generata da un timer interno alla scheda, ed è li che mi blocco.

So che forse faccio troppe domande e che forse me la devo piangere un po' da solo però vi sarei grato se potreste darmi una mano anche fornendo codici di esempio di funzioni che generano segnali PPM e che leggono i segnali dei sensori nel SI per asse.

Phanto

Buongiorno a tutti!
Sono a chiedere il vostro aiuto perché nella grande quantità di informazioni riguardanti il mondo dei quadricotteri, ancora mi sono poco chiari taluni passaggi; ho letto con molta attenzione svariati post sia nel forum che fuori; e, le domande che sono qui a porvi sono purtroppo ancora in me e spero vogliate e possiate aiutarmi a risolverle;

presento brevemente la mia situazione:
Con il fine di costruire un quadricottero, ho raccolto tutte le informazioni che ho potuto a riguardo; e, fra le immense possibilità che mi si sono presentate una mi ha in particolar modo affascinato: l'impiego di arduino, infatti mi semplificherebbe e renderebbe molto più accessibile questo mondo oltre che interessante.

Ho letto molto sul sistema che impiega arduino nano ed il giroscopio ed accelerometro dell controller wii (multiWii), ed ancora cercando per i meandri del web mi sono imbattuto in qualcosa che impiega sempre Atmel, ma che sembrerebbe racchiuda in sè sia arduino mini che sensori accelerometro e giroscopio  http://www.ebay.it/itm/130726621570?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649#ht_1851wt_952  potreste voi confermarmi che effettivamente è così? dovrei dunque connettere i 3 cavetti che escono dal regolatore di ciascun motore brushless, sensori vari a questo circuito e basta? Altro dubbio... Non possiede porta USB apparentemente, come posso quindi comunicarle lo sketch??

Altra domanda: dal momento che non ho ancora provato a buttare giù uno sketch, e che non ho mai avuto a che fare con PPM mi crea dei problemi capire anche di quanti comandi necessita il radiocomando che dovrei acquistare...
Il problema dei prezzi è un grande problema, ed avrei adocchiato il "Turnigy 9X 9Ch Transmitter w/ Module & 8ch Receiver (Mode 2) (v2 Firmware)" decisamente accessibile rispetto alla maggior parte degli esempi proposti sul web... Ma ho anche letto che spesso presenta dei problemi costitutivi... Avreste voi alternative similmente accessibili da propormi? o potete confortarmi dicendo che tutto sommato, anche se costa poco, adempie al proprio compito?
Inoltre non mi è chiaro il fatto che si consiglia di possedere almeno 5 canali, rispettivamente per: motore, pitch, roll, yaw, stable mode; proprio non mi è chiaro... Comprendo che beccheggio, rollio e imbardata siano i movimenti possibili sui 3 assi del velivolo, ma proprio non capisco come mai si debba dedicare a ciascuno un canale del radiocomando  =(  =(  =( o cosa significhi un canale per i motori piuttosto che per una modalità di volo... Insomma non so proprio come funziona la parte radiocomando attuatori, vi prego aiutatemi  :smiley-roll-sweat:

ho letto e appreso molto da http://aeroquad.com/content.php?126-PID-Tuning-Your-AeroQuad ma penso che su questo le vere domande mi verranno una volta che avrò toccato con mano ^_^

Vi ringrazio immensamente per la cordiale eventuale disponibilità
ciao ciao 

lesto

la scheda è ok, vale quello che costa.
Per programmarla hai bisogno di un adattatore da USB a RS232 ttl 5v, si trovano anche sullo store di questo sito a 10/15€

per la TX/RX io ho preso qulla di hobbyking 6 canali, 40€ compresa spedizione (occhio a prenderla dai magazzini in europa se no ti arriva dopo un mese e con il 30% di dazio)

ogni canale immagina che può dare dei valori da 0% a 100%:
motore: dai potenza da 0% a 100%
pitch: 0% = vai a sinistra, 50% = stai fermo, 100% = vai a destra
etc...

quindi ti serve un canale per ogni possibile moviemto +1 per ogni comando (ok, i comandi potresti farli che al 10% fai uno, al 20% fai l'altro, ma poi a mano beccare la posizione giusta.... nella 6ch che ho proposto sono 4 canali proporzionali (da 0% a 100%) e 2 switch (0% o 100%, senza vie di mezzo) )
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Phanto

Grazie per la disponibilità Lesto,
quindi necessito solo di quella scheda ed ho già tutto per quanto riguarda l'hardware di base per un quadricottero?
E secondo te (perché questo fatto non l'ho compreso molto) con quante altre funzioni potrei implementare questa disposizione?
e se ti va... non è che mi potresti consigliare altre eventuali e migliori soluzioni? (mi rendo conto sia parecchio vaga come richiesta... fanne ciò che vuoi  :smiley-fat: )

Ora mi è molto più chiara la parte riguardante il radiocomando, ti ringrazio davvero molto! e grazie molte anche per aver condiviso la tua esperienza personale!  :)




lesto

Quote
quindi necessito solo di quella scheda ed ho già tutto per quanto riguarda l'hardware di base per un quadricottero?

no, ti serve la struttura, gli esc, i motori, un bec 5V (meglio ubec), rx/tx, eliche (tante!), il convertotore USB/seriale per programmare la scheda

Quote
E secondo te (perché questo fatto non l'ho compreso molto) con quante altre funzioni potrei implementare questa disposizione?

che vuol dire?
dal tuo link:
Code: [Select]
GIMBAL -------- PTZ stabilizer independent (non-flight control purposes)
BICOPTER ------ 2-axis aircraft Avatar
Tricopter ----- Y3 (Y-type 3-axis)
QUADP --------- 4-axis + classic mode
QUADX --------- 4-axis × mode
Y4 ------------ Y-type four-axis
Y6 ------------ Y-type 6-axis
HEX6 ---------- 6 axis + mode
HEX6X --------- 6-axis × mode
FLYING WING --- flying wing with a (non-multi-axis machine, the program is in testing phase).


Quote
eventuali e migliori soluzioni?

per iniziare va più che bene
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Phanto

Ah, certo, si, ho sbagliato a parlare di "hardware sufficiente"
comunque certo, sapevo della necessità degli altri componenti (a parte l'UBEC) :) mi sono espresso male

Urca, sul fatto delle tante eliche non pensavo xD comunque con dei motori da 920 KV ed un telaio leggero, senza attualmente accessori tipo videocamera e simili... tu che eliche consiglieresti per iniziare?

con la domanda poco chiara:
Quote
E secondo te (perché questo fatto non l'ho compreso molto) con quante altre funzioni potrei implementare questa disposizione?

Intendevo chiedere se conoscevi quante altre funzioni avrei potuto aggiungere, ad esempio dal punto di vista sensoristico, alla scheda precedentemente mostrata... Magari in futuro... Dopo la fase "impara a conoscere le basi"  :) perché purtroppo non l'ho capito dai dati forniti sulla scheda.

Ancora grazie per la tua grande pazienza e disponibilità lesto!
Mi stai aiutando davvero molto! Grazie :)




Testato

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

astrobeed


920.000 Volt ?


920 kV vuol dire che il motore fa 920 rpm (a vuoto) per ogni Volt di tensione applicata, in questo caso la k è la costante che indica il rapporto tra giri e tensione, si esprime in  rpm/Volt.


lesto

Quote
Intendevo chiedere se conoscevi quante altre funzioni avrei potuto aggiungere, ad esempio dal punto di vista sensoristico, alla scheda precedentemente mostrata... Magari in futuro... Dopo la fase "impara a conoscere le basi"   perché purtroppo non l'ho capito dai dati forniti sulla scheda.

credo nessuna, essendo quella board fatta per funzionare così.. ma visto il prezzo chissene (è veramente buono!), al prossimo giro spenderai qualche (tanto) euro in più e potrei farti una schedina più seria. Prima però stai schiscio e vedise la cosa fa per te.

Quote
tu che eliche consiglieresti per iniziare?

dipende dalla potenza espressa del motore, non dal numero di giri. Di solito i motori lenti hanno una forza di torsione (torque) maggiore, e quindi possono montare eliche più grandi di motori con alto kV.

metti il modello del motore
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

astrobeed


dipende dalla potenza espressa del motore, non dal numero di giri.


Dipende da tutte e due le cose perché la coppia altro non è che la potenza divisa per il numero di giri, un motore potente che fa molti giri deve usare un'elica più piccola, e con meno passo, di un motore lento con meno potenza.
Esistono appositi calcoli per determinare l'elica ottimale in base al tipo di motore, dato che sono molto complessi non è semplice farseli da soli, però ci sono software dedicati al volo elettrico, uno dei migliori è MotoCalc, che fanno questi conti per noi partendo dal modello specifico del motore o dalle sue caratteristiche tecniche.
C'è un ottimo calcolatore online specifico per i multicotteri che permette di dimensionare facilmente motore/elica/batteria in base alle esigenze.

lesto

link nei preferiti :)

per "potenza espressa" e "forza di torsione" intendevo coppia, che in inglese si dice torque, ma non ricordo mai come si traduce.. chiedo scusa per la confusione.
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Phanto

Grazie!
Quando avrò stabilito tutto il necessario userò quel fantastico calcolatore, grazie mille!  :)

Ah, comunque dovrebbe esser possibile aggiungere magnetometro e barometro mi sembra, non sono inclusi, ed addirittura GPS... Confermate?

bene, penso di esserci quasi...

Ma non ho ancora compreso l'UBEC, non dovrebbero avere già una funzione di BEC gli ESC di ciascun motore?
Grazie


astrobeed


  Ah, comunque dovrebbe esser possibile aggiungere magnetometro e barometro mi sembra, non sono inclusi, ed addirittura GPS... Confermate?


Si però a seconda del software che usi non è detto che il magnetometro e il barometro vengano utilizzati sul serio.
Per quanto riguarda il gps con processori a 8 bit è praticamente inutile, puoi solo leggerne i dati e trasmetterli a terra, può far comodo per sapere quota e velocità, però scordati il volo autonomo tra waypoint e/o il semplice return to home automatico, non hai abbastanza potenza di calcolo per queste cose.

Quote

Ma non ho ancora compreso l'UBEC, non dovrebbero avere già una funzione di BEC gli ESC di ciascun motore?


Non tutti gli ESC hanno il bec e se l'hanno solitamente fa letteralmente "schifo", sopratutto se parliamo di ESC cinesi da pochi soldi, molto meglio usarne uno dedicato e collegare in comune solo il GND degli ESC, mi raccomando collegamento a stella partendo da un unico punto di massa.

Phanto

Quote

Si però a seconda del software che usi non è detto che il magnetometro e il barometro vengano utilizzati sul serio...

Questo significa che l'unico problema sarebbe il software, e che quindi basterebbe trovare quello più adatto...  :) (spero possiate confortarmi dicendomi che non è poi così impossibile trovarne uno adeguato :smiley-mr-green: :smiley-mr-green: )

1-
Ne approfitto per l' approfondimento dell'aspetto "sensori supplementari" appena citati  :smiley-slim: ... Magnetometro e barometro aiutano la stabilizzazione ed agiscono solo quando il velivolo dovrebbe mantenersi stabile in un determinato punto? oppure aiutano anche in altre situazioni?

2-
Quote

Per quanto riguarda il gps con processori a 8 bit è praticamente inutile, puoi solo leggerne i dati e trasmetterli a terra, può far comodo per sapere quota e velocità, però scordati il volo autonomo tra waypoint e/o il semplice return to home automatico, non hai abbastanza potenza di calcolo per queste cose.

Che fortuna che per ora non sono minimamente interessato al volo autonomo  :)
Ma ecco un'altra perplessità: in che modo è possibile trasferire i dati GPS a terra? è necessario un altro trasmettitore e ricevitore?

Vi ringrazio moltissimo per la condivisione delle vostre conoscenze, grazie davvero!  =(

lesto

il magentometro aiuta a fare in modo che il tuo mezzo non si giri su se stesso da solo. Ma essendo una bussola, è sensibile ai campi magnetici dei motori, esc e ubec; è quindi da mettere a punto correttamente.

il barometro permette di mantenere l'altezza, ma con una precisione alquanto discutibile che varia da sensore a sensore.

Quote
è necessario un altro trasmettitore e ricevitore?

sì, in quando la RX/TX è un sistema MONO direzionale da terra al mezzo. per fare il contrario degli xbee dovrebbero essere ok, o degli nrf, etc..
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up