Quadfox v3 ormai vola ma ho problemi i2c.

Buongiorno a tutti , e' qualche mese che non posto aggiornamenti sul progetto QuadFox Multipilot , abbiamo fatto passi da gigante il Quad vola che è una meraviglia pero' ora mi scontro con un grosso problema sull'i2c volendo aggiungere nuovi sensori. Attualmente io piloto i motori attraverso il bus i2c ma aggiungendo sullo stesso bus , magnetometro HMC5843 ed il barometro BMP05 inizio a sofrire dei problemi di freeze del micro di cui altri hanno già dato evidenza in diversi post. http://www.youtube.com/watch?v=QDtoLXVI8Kg C'e' qualcuno che ha qualche consiglio il problema è nella libreria wire.h ci sono anche alcune librerie software che sto' per provare .. qualche consiglio .. è un bel problema purtroppo :( Per vedere cosa stiamo combinando nella community dedicata a tutto cio' che vola questo e' l'indirizzo , se il tema vi interessa e volete dare una mano ben venga abbiamo bisogno di gente capace per lavorare ai nostri progetti: www.virtualrobotix.com http://www.virtualrobotix.com/video?page=1

ciao redfox74 Grande cosa il quadicottero.

Non so darti grandi consigli. Il bus I2C ha necessitá di 2 resistenze pullup. Il valore dipende dalla capacitá dei collegamenti tra i vari integrati e Arduino. Se aggiungi altri elementi aumenti anche la capacitá. Probalbilmente potrebbe bastare mettere delle resistenze piú piccole. prova con 2,2kOhm, oppure 2 resistenze da 4,7kOhm una all inizio e uno alla fine del collegamento I2C.

http://www.nxp.com/acrobat_download2/literature/9398/39340011.pdf le specificazioni del I2C. La resistenza pullup a pagina 39 e seguenti.

Ciao Uwe

Complimenti per il quadricottero 8-)

pensavo che wire.h attivasse le resistenze di pullup interne automaticamente ::)…

Grazie per i complimenti , effettivamente con la piattaforma arduino si riescono a fare belle cose , purtroppo questo problema sull'i2c non ci voleva , non è solo un problema mio ma un po' di tutta la nostra community se iniziamo ad aggiungere troppa roba sul bus ... il freeze è generalizzato e si blocca proprio il programma ... veramente uno strano problama , capisco potesse che so' mandare caratteri sbagliati , ma un fault del bus che manda in crisi il funzionamento di tutto il micro mi sembra eccessivo anche se sembra un problema conosciuto. http://arduino.cc/blog/2010/10/01/softi2cmaster-library-lets-you-add-i2c-to-any-arduino-pin/ qualcuno ha mai usato questa come funziona ? Saluti Roberto

@ brainbooster

sí attiva le resistenze pullup interne, ma hanno secondo i dati tecnici, dei valori tra 20k e 50 kOhm. Per collegamenti del bus lunghi puó essere un valore troppo grande.

Ciao Uwe

I problemi di Freeze voi li avete ? Sono scomparsi usando altre resistenze. Un saluto Roberto

magari è una cosa che si crea solo con tanti dispositivi in cascata, derivata dalla capacità totale della linea i2c e dalle resistenze di pullup che formando una specie di filtro rc danno problemi sul bus…
sono felice che hai trovato la soluzione :slight_smile:

Contrordine succedono meno , ma succedono , mi sa' che dovro' abbandonare la libreria ufficiale e provare quella software :( Saluti Roberto

non è che hai preso il magnetometro da sparkfun? in caso guarda qui: http://eclecti.cc/hardware/hmc5843-magnetometer-library-for-arduino io proverei ad escluderlo per vedere se il problema lo segue...

Ciao Grazie per la segnalazione , ma fosse solo quello ... il problema del condensatore sbagliato di sparkfun è risolto da un po' ... ma quel sensore montato su di una scheda fatta da DiyDrones con cui collaboro nel progetto Arducopter faccio parte del Dev Team sembra funzionare ... non e' ancora stabile al 100 % ma il suo lavoro lo fa' . Il problema dell'i2c pero' aggiungendo un po' di altre cose su quel bus rimane .. mi mettero' a lavorarci con l'oscilloscopio. Un saluto Roberto