[Multicotteri] Elettronica : IMU, MCU, Sensori ed algoritmi di controllo

per il 2 c'è un ottimo esemio fornito sul sito.. però se non conosci i2c e SPI ti conviene prima farti un'idea osservando come si usano i sensori i2c e SPI su arduino, capisci la logica di comunicazione, e poi passi al STM32.

Per la prima domanda mai usato quell'ambiente, e per l'ultima non so, devo ancora passare ad analizzare i timer, ma anche lì tutti gli esempi SMT usano una funzione che setta il timer principale ad una certa frequenza, io modificando quel valore ottengo un iterrupt ogni microsecondo, però non mi piace come cosa, preferirei andare sul PWM con giusta frequenza e dutyCicle.

Fabio_automatico:

  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.

astrobeed:

Fabio_automatico:

  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:

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.

  1. 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.

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 :cold_sweat:

ho letto e appreso molto da Loading... ma penso che su questo le vere domande mi verranno una volta che avrò toccato con mano :slight_smile:

Vi ringrazio immensamente per la cordiale eventuale disponibilità
ciao ciao

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) )

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 :drooling_face: )

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! :slight_smile:

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

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:

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).

eventuali e migliori soluzioni?

per iniziare va più che bene

Ah, certo, si, ho sbagliato a parlare di "hardware sufficiente"
comunque certo, sapevo della necessità degli altri componenti (a parte l'UBEC) :slight_smile: 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:

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" :slight_smile: 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 :slight_smile:

Phanto:
comunque con dei motori da 920 KV ed un telaio leggero

920.000 Volt ?

Testato:
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.

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.

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

lesto:
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.

link nei preferiti :slight_smile:

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.

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

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

Phanto:
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.

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.

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... :slight_smile: (spero possiate confortarmi dicendomi che non è poi così impossibile trovarne uno adeguato :grin: :grin: )

1-
Ne approfitto per l' approfondimento dell'aspetto "sensori supplementari" appena citati :relaxed: ... 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-

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 :slight_smile:
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! =(

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.

è 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..

Perfetto, per quanto riguarda la questione hardware ormai ho tutte le nozioni necessarie grazie alla vostra gentilezza... :slight_smile:

Piccolissima domandina sul mondo delle batterie... So che è consuetudine adoperare le lipo; che sono state una bella evoluzione del mondo degli accumulatori... peccato che costino un sacco di soldi, e che siano molto fragili; e da qui mi sorge la domanda...
A parte il peso (che a parità di corrente sembra oltretutto variare di pochissimo), e l'ingombranza, ci sono altri aspetti non a favore dell'uso di una li-ion cioè batteria al litio? Ne possiedo una di un vecchio PC; 11,1V di tensione (quindi uguale ad una lipo 3S), e 5400mAh.
Potrebbe tale elemento soddisfare le richieste imposte dal quadricottero?

Vi ringrazio ancora

Oggi, grazie alla giornata primaverile, ho provato il porting di Open Pilot per la STM32F Discovery sul quadricottero, avevo già preparato una carrier su millefori simile a questa che va perfettamente sul frame di Mikrokopter, il telaio del mio quadri è realizzato con i loro pezzi.
Se non volete "impazzire" a compilare tutto, ci sono le istruzioni per settare l'ambiente di lavoro sia con Linux (da preferire in questo caso) che per Windows e Mac OS, potete scaricare gli eseguibili, sia per il micro che per la stazione a terra (solo windows), qui.
Per caricare il firmware sulla STM32F3 è indispensabile caricare prima il bootloader tramite l'STLINK V2 integrato sulla scheda, poi il firmware vero e proprio tramite il software della stazione a terra dall'apposita pagina, nel wiki trovate tutti i reference sia per il pin out della scheda che per la procedura di caricamento del software.
Avevo già fatto un presetup a terra e sebbene non perfetto il quadri si è comportato molto bene, ho provato il return to home con il gps e funziona benissimo, molto bello, e molto ben fatto, il software della stazione a terra, la schermata principale è totalmente configurabile ed è possibile vedere la mappa del terreno di volo, in tempo reale in base ai dati GPS, tramite download diretto da internet (serve una connessione sul campo) oppure da dati precedentemente scaricati.
Per farla breve, se volete un ottimo software pronto all'uso per un quadri con una marcia in più basato sulla STM32F3 questo porting è quello che fa per voi, ovviamente è totalmente open source e può essere un ottimo "template" di partenza per sviluppare software personalizzato.

L'avevo già visto, però usano un rtos se non erro