Go Down

Topic: l2c bloccante.. una tortura (Read 1 time) previous topic - next topic

aldoz

#15
Apr 17, 2015, 08:31 am Last Edit: Apr 17, 2015, 08:37 am by aldoz
C'è scritto chiaramente che il modulo ha un regolatore di tensione 3.3V, ovvero puoi alimentarlo tramite i 5V di Arduino, c'è anche scritto che la I2C non lavora a 5V.
Sebbene è possibile disabilitare le pullup interne di Arduino, la wire le abilita di default, rimane sempre il problema che la I2C di Arduino si aspetta livelli a 5V mentre l'MPU a 3.3V.
Spesso collegando le pullup esterne della I2C a 3.3V si riesce ad usare il dispositivo collegato ad Arduino, però nel tuo caso hai altri device I2C sul bus e questi lavorano a 5V, pertanto crei dei conflitti su i livelli di tensione che portano inevitabilmente ad avere errori sul bus con conseguente blocco.
Intanto grazie davvero astrobeed,
mamma mia che macello.. questo standard del 3.3v (con tutti i benefici che porta con se) sapevo che mi avrebbe messo i bastoni tra le ruote prima o poi..  :smiley-sad-blue:


2 pseudo soluzioni che mi saltano in mente nella disperazione! (siccome ho la totale necessita' nel mio progetto di utilizzare sia la scheda servo driver sia l'MPU6050):

A) Magari è una cosa senza senso ma l'Arduino MEGA 2560 ha sia il pin 5v che quello 3.3v..
non e' che magari.. collegando il modulo MP6050 ai 3.3v e collegando la scheda servo driver al 5v...
entrambe ottengano l'alimentazione corretta evitando di ottenere questi conflitti dei livelli di tensione?.. :smiley-roll:


B) Oppure, non si potrebbe collegare alla mia mega2560 un'altra mega2560 e sfruttare la prima per collegare la scheda servo driver e la seconda per collegare l'MPU6050..
Il problema però che gia' io percepisco e' che le 2 schede arduino andrebbero collegate tra loro tramite l2c....... ci sarebbero in ballo 3 connessioni l2c... che macello..


che ne dite?... :smiley-confuse:



astrobeed

che ne dite?... :smiley-confuse:
La soluzione più semplice è lasciare i device a 5V sulla I2C a 5V di Arduino e inserire un level shifter per i device a 3.3V.
Scientia potentia est

aldoz

#17
Apr 17, 2015, 08:55 am Last Edit: Apr 17, 2015, 09:01 am by aldoz
La soluzione più semplice è lasciare i device a 5V sulla I2C a 5V di Arduino e inserire un level shifter per i device a 3.3V.
Ah ok, una speranza allora c'e'!  :P quindi oggi stesso mi procurero' questo level shifter:
http://www.ebay.it/itm/Convertitore-di-livelli-logici-5V-3-3V-per-I2C-Arduino-level-shifter-/151527460703?pt=LH_DefaultDomain_101&hash=item2347bd8f5f

e dovro' collegarlo tra arduino e MPU6050 evitando di tirare in ballo nel collegamento la scheda servo driver che continuera' ad essere collegata come lo è attualmente (5v); è corretto?.
Prima di testare postero' un disegno della connessione cosi' da evitare di fare danni..

Comunque ragazzi e Astrobeed, so che tutto cio' va ben oltre le mie possibilita' quindi un enorme GRAZIE per l'aiuto!
Senza il quale davvero non potrei fare nulla.
A più tardi :)


astrobeed

e dovro' collegarlo tra arduino e MPU6050 evitando di tirare in ballo nel collegamento la scheda servo driver che continuera' ad essere collegata come lo è attualmente (5v); è corretto?.
Esatto, il servo controller direttamente su SDA e SCL di Arduino, l'MPU6050 tramite il level shifter che provvede ad abbassare a 3.3V SDA e SCL.
Magari prendine tre o quattro di level shifter, vanno bene anche per la seriale oltre che per la I2C, giusto per non spendere più di spedizione che di valore dell'oggetto :)
Scientia potentia est

aldoz

Esatto, il servo controller direttamente su SDA e SCL di Arduino, l'MPU6050 tramite il level shifter che provvede ad abbassare a 3.3V SDA e SCL.
Magari prendine tre o quattro di level shifter, vanno bene anche per la seriale oltre che per la I2C, giusto per non spendere più di spedizione che di valore dell'oggetto :)
Ok:

* il servo controller collegato su SDA e SCL
* l'MPU6050 collegato al level shifter
* il level shifter collegato su SDA e SCL (insieme agli attacchi SDA/SCL del servo controller)

GRAZIE astrobeed! appena ho tutto ti aggiorno!

astrobeed

Ok:

* il servo controller collegato su SDA e SCL
* l'MPU6050 collegato al level shifter
* il level shifter collegato su SDA e SCL (insieme agli attacchi SDA/SCL del servo controller)
Il level shifter richiede anche GND, 5V sul lato High, 3.3V sul lato low, è tutto segnato sulla serigrafia, per i 3.3V puoi usare quelli sul relativo pin del modulo.
Scientia potentia est

aldoz

#21
Apr 17, 2015, 09:54 am Last Edit: Apr 17, 2015, 09:55 am by aldoz
Il level shifter richiede anche GND, 5V sul lato High, 3.3V sul lato low, è tutto segnato sulla serigrafia, per i 3.3V puoi usare quelli sul relativo pin del modulo.
Ok quindi :
* 5v da Arduino a level shifter
* GND da Arduino a level shifter

poi scrivi che per i 3.3v posso usare quelli sul realtivo pin del modulo.
Intendi che devo collegare un cavo tra level shifter e level shifter o intendi tra il pin 3.3v di Arduino e il level shifter?

* 3.3v da Arduino (pin 3.3v) a level shifter??

astrobeed

Intendi che devo collegare un cavo tra level shifter e level shifter o intendi tra il pin 3.3v di Arduino e il level shifter?
Intendo che sul pin 3.3V, lato low, del level shifter devi collegare i 3.3V disponibili sul modulo MPU6050, è l'out del suo regolatore di tensione.
Scientia potentia est

aldoz

Intendo che sul pin 3.3V, lato low, del level shifter devi collegare i 3.3V disponibili sul modulo MPU6050, è l'out del suo regolatore di tensione.

Ah ok perfetto!  :smiley-small:

Grazie ancora Astrobeed ti faro' sapere presto!

Go Up