Go Down

Topic: Official topic: multicotteri con arduino! (Read 358874 times) previous topic - next topic

astrobeed


Detto questo, settimana prossima mi procuro un WMP e provo a interfacciarlo col mio ADXL335 (speriamo)
Strano che nel multiwii non sia prevista una conf per accelerometri comuni come questi o che nessuno vi abbia lavorato...


Il WMP ha un secondo bus I2C indipendente che serve per collegare in cascata gli altri accessori Wii, in particolare il Nunchuk, però non c'è modo di collegare l'ADXL335 al WMP, lo devi collegare agli ingressi analogici di Arduino.
Multiwii prevede nelle varie opzioni di configurazione l'accelerometro generico analogico basta decommentare la define "ADCACC" e commentare quella relativa all''accelerometro I2C.

Estratto dal codice del multiwii, ho aggiunto qualche commento per rendere più chiara la cosa.
Code: [Select]

// define per i giroscopi  se non c'è il WMP
/* I2C gyroscope */
//#define ITG3200
//#define L3G4200D

// define per gli accelerometri I2C se non viene utilizzato il Nunchuk
// l'ultima define serve per usare l'accelerometro del Nunchuk
// quando si usa un giroscopio diverso dal WMP
/* I2C accelerometer */
#define ADXL345
//#define BMA020
//#define BMA180
//#define NUNCHACK  // if you want to use the nunckuk as a standalone I2C ACC without WMP

/* I2C barometer */
//#define BMP085

/* I2C magnetometer */
//#define HMC5843
//#define HMC5883

// Per usare un accelerometro analogico
// tocca mettere mano anche ai parametri che regolano il range e la sensibilità
/* ADC accelerometer */ // for 5DOF from sparkfun, uses analog PIN A1/A2/A3
//#define ADCACC
Scientia potentia est

astrobeed


Ho una stazione dissaldante per SMD ma ho il problema di costruirmi i PCB :(:(


Il problema non è dissaldarlo, è saldarlo  :)
Senza un apposito pcb non ci fai nulla.
Scientia potentia est

ratto93

appunto è quello il mio problema... non so in che case sia e secondo voi con la PnP si riesce ad ottenere una precisione sufficiente per usarlo ?
Se corri veloce come un fulmine, ti schianterai come un tuono.

lestofante

ma cosa esattamente si è rotto? hai provato a collegarlo ad arduino (non serve aprire/smontare) e vedere se funziona effettivamente la comunicazione, o sono proprio i valori in output sballati?
Guida per principianti http://playground.arduino.cc/Italiano/newbie
Unoffical Telegram group https://t.me/genuino

ratto93

si è bruciata la logica interna... cè un gruppo chip di cui hanno cancellato le sigle che è scoppiato..
Se corri veloce come un fulmine, ti schianterai come un tuono.

lestofante

fate attenzione quando usate il WMP!! quì http://wiibrew.org/wiki/Wiimote/Extension_Controllers/Wii_Motion_Plus dice che ci sono 3 bit (uno per asse) detti di lentezza. Se sono a 0 l'asse è in lettura veloce, quindi sensibilità di 2.27mV/°/s, altrimenti la sensibilità è 0.5mV/°/s.
Quindi la lettura viene fortemente influenzata da questo particolare. In oltre la tolleranza è di 50mV. Il codice che mi son scritto per ricavare la velocità angolare in gradi:
(midValue[] è il valore medio di 1000 letture in fase di calibrazione per ogni asse, numberToVoltage[] = 1.35V/midValue[], ovvero il rapporto per trasformare il  valore letto in Volt)

Code: [Select]
data[0] = ( (((outbuf[3]>>2)<<8) + outbuf[0]) - midValue[0] )*numberToVoltage[0];
    data[1] = ( (((outbuf[4]>>2)<<8) + outbuf[1]) - midValue[1] )*numberToVoltage[1];
    data[2] = ( (((outbuf[5]>>2)<<8) + outbuf[2]) - midValue[2] )*numberToVoltage[2];


Code: [Select]

if (abs(data[0]) > 0.05){
      if ( outbuf[3] & B00000010 ){
        //slow speed       
        data[0]*=500;
      }
      else{
        data[0]*=2270;
      }
    }
    else{
      data[0]=0;
    }

    if (abs(data[1]) > 0.05){
      if ( outbuf[4] & B00000010 ){
        //slow speed       
        data[1]*=500;
      }
      else{
        data[1]*=2270;
      }
    }
    else{
      data[1]=0;
    }

    if (abs(data[2]) > 0.05){
      if ( outbuf[3] & B00000001 ){
        //slow speed
        data[2]*=500;
      }
      else{
        data[2]*=2270;
      }
    }
    else{
      data[2]=0;
    }
Guida per principianti http://playground.arduino.cc/Italiano/newbie
Unoffical Telegram group https://t.me/genuino

astrobeed


L'oscilloscopio e' uno strumento che mi manca e che non ho mai acquistato perche' non avrei la piu' pallida idea di come usarlo, anche se credo che mi tornerebbe molto utile...  =( =( =(


Nel laboratorio elettronico l'oscilloscopio è lo strumento principale, senza è come "vedere" un film stando nella stanza accanto, non vedi nulla e senti l'audio male  :)
Scientia potentia est

astrobeed

Da Robot Italy sono disponibili le breakout board di Sparkfun con il magnetometro HMC5883L a solo 15 Euro.
Scientia potentia est

massit78

non so se puo' servire, comunque molto interessante questo mini-quadrocopter:

http://hackaday.com/2011/04/29/mini-quadrocopter-is-crazy-awesome/

per principianti, potrebbe essere utile per acquisire le basi per progetti piu' avanzati

milvusmilvus

davvero interessante, ma che significa che è a tre assi??? ti dice anche l' inclinazione verso il terreno?

FEDERICO



L'oscilloscopio e' uno strumento che mi manca e che non ho mai acquistato perche' non avrei la piu' pallida idea di come usarlo, anche se credo che mi tornerebbe molto utile...  =( =( =(


Nel laboratorio elettronico l'oscilloscopio è lo strumento principale, senza è come "vedere" un film stando nella stanza accanto, non vedi nulla e senti l'audio male  :)


Hai ragione, il mio strumento principale e' il tester attualmente :-/ Piu' che altro e' che l'oscilloscopio mi pare uno strumento particolarmente difficile da usare e capire... Ma magari apriamo un post apposito  :smiley-sad-blue:
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

FEDERICO


davvero interessante, ma che significa che è a tre assi??? ti dice anche l' inclinazione verso il terreno?

Ma che differenza passa tra magnetometro e giroscopio?  :smiley-fat:
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

FEDERICO


non so se puo' servire, comunque molto interessante questo mini-quadrocopter:
http://hackaday.com/2011/04/29/mini-quadrocopter-is-crazy-awesome/


Devo dire che i tre tizi sono veramente inquietanti...
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

massit78

per quello che posso capire computa l'orientamento dell'elicottero tramite due giroscopi:

- uno per le due direzioni X-Y
- uno per la direzione Z

superlol



davvero interessante, ma che significa che è a tre assi??? ti dice anche l' inclinazione verso il terreno?

Ma che differenza passa tra magnetometro e giroscopio?  :smiley-fat:

un magnetometro ti ritorna la posizione assoluta rispetto ad un punto, quindi hai un punto fisso e tu hai un'inclinazione rispetto a questo punto, mentre nel gioroscopio il punto sarebbe quello di partenza, hai un delta e non valore assoluto ovvero una variazione di inclinazione.

almeno a me è stato spiegato così
http://www.aug-altogarda.it/ <- Il nuovo AUG per basso trentino e dintorni!

Go Up