Show Posts
Pages: [1] 2
1  International / Hardware / Re: Arduino Mega 2560 e resistori di pull up on board su +5v on: April 12, 2013, 07:04:56 am
2560 Grazie astrobeed, non vedo l' ora di rivedere a casa le mie barre collegate agli accellerometri.

Ciao e buon week end.

Stefano.
2  International / Hardware / Re: Arduino Mega 2560 e resistori di pull up on board su +5v on: April 12, 2013, 06:48:45 am
Quote
Quello che affermi è impossibile, la velocità di comunicazione è stabilita da SCL che a sua volta dipende da come lo imposti nel setup hardware della I2C, poi ovviamente c'è anche la frequenza con cui interroghi la I2C.
Il level shifter è solo un accorgimento hardware per cambiare le tensioni, non ha alcun effetto sulla velocità di comunicazione.

Grazie astrobeed, ne parlo perchè sul display i miei indicatori grafici a barra colorata mi sembrano davvero più lenti... poi mi chiedo, e premetto che so di non sapere, il level shifter avrà dei componenti che si attivano per soglia con un tempo di latenza nella risposta (ho un pezzo in più in mezzo) ? del resto recepisco la tua osservazione e la sua correttezza perchè sono solo due sensori... non molti. Dico di più: il BMP180 prima mi misurava una quota altimetrica corretta, ora sbarella un pochetto nelle stesse condizioni di misura.

Ok stasera ritorno al banco di lavoro e rifaccio le mie osservazioni, devo capire il rallentamento che osservo da dove viene. Quindi il level shifter a prescindere dal traffico sul bus I2C non può comportare rallentamenti nella comunicazione ?

Grazie.

Stefano.
3  International / Hardware / Re: Arduino Mega 2560 e resistori di pull up on board su +5v on: April 12, 2013, 05:37:05 am
Ok, ci ho messo tempo ma ho fatto le prove:

con un level shifter bidirezionale (quello di adafruit mi sembra ben fatto e piccolo), con due sensori sull' I2C noto a vista il rallentamento della comunicazione. A questo punto torno a vedere l' articolo di Varesano (http://www.varesano.net/blog/fabio/how-disable-internal-arduino-atmega-pullups-sda-and-scl-i2c-bus) e da software disabiliterei le pull up interne, così da stroncare le correnti che vanno da 5 a 3.3. Mi resterebbero però comunque altre due pull up che sulla 2560 sono anche esterne, NON SOLO nel chip, diabolico... che non posso disabilitare da software a meno di dissaldarle. A questo punto di nuovo il level shifter rimane la soluzione migliore, con la sua implicita lentezza... che barba. Idee ?

Grazie a tutti ragazzi.

Stefano Falconetti
4  International / Hardware / Re: Arduino Mega 2560 e resistori di pull up on board su +5v on: April 02, 2013, 05:15:41 pm
Ok, grazie mille, si in effetti stavo vedendo il BMP180 e l' ADXL345, che sono quelli che per ora integro. Come level shifter comunque, uno me lo tengo nella cassetta degli attrezzi, è carino quello di Adafruit:

http://www.robot-italy.com/it/4-channel-i2c-safe-bi-directional-logic-level-converter-bss138.html

oppure:

http://www.hobbytronics.co.uk/logic-level-4 ma a questo devo tagliare J1 in quanto io ho il mio step down per i +3.3.

Quindi, se ho capito bene,  del level shifter GND V High a GND Arduino, Vcc High ad Alim. Arduino 5V, Vcc Low 3.3 allo step down 3.3, SDA ed SCL Arduino agli SDA ed SCL lato V High del level shifter e TUTTI gli SDA ed SCL di tutti i sensori a 3.3 volts connessi agli SDA ed SCL lato V Low dello step down... per i due sensori userò la stessa uscita SDA/SCL lato V low dello step down. Eventualmente lato 3.3 volta dei pull up resistors come li ho oggi.

Dimentico nulla ?

Saluti.

Stefano.

 
5  International / Hardware / Re: Arduino Mega 2560 e resistori di pull up on board su +5v on: April 02, 2013, 07:27:31 am
Grazie Astrobeed,

quindi se ho capito bene:

1 Elettricamente non mi creano proplemi per il flusso di corrente da +5 a +3.3, perchè quelle presenti di pull up sono molto alte (per quanto non mi sembra un design pulito).  

2 Il problema ce lo ho invece nella comunicazione I2C per i livelli di I e 0 logico che differiscono per I2C a 5 e 3.3. Quindi: o tolgo le pull up dissaldandole dalla Mega oppure uso un level shifter che mi adegui i livelli logici. A senso mi sembrerebbe più pulito mettere un adeguatore di livelli logici perchè questo mi consente di integrare sensori a 5 e 3.3 senza altri problemi. Se son sicuro però che userò solo quelli a 3.3, allora potrei dissaldare quelle on board e via, usando le pull up su 3.3. Domanda: non ho mai usato un level shifter su I2C: come lo collego sul bus ? Inoltre.. servirebbe bidirezionale, giusto ?

Hmmm, una cosa del genere (pin to pin pass through) ?

http://www.hobbytronics.co.uk/logic-level-4

Grazie un milione.

Stefano.
6  International / Hardware / Arduino Mega 2560 e resistori di pull up on board su +5v on: April 02, 2013, 04:39:47 am
Salve a tutti,

credo di non chiedere nulla di molto nuovo in quanto vedo già un post:

http://arduino.cc/forum/index.php?PHPSESSID=e927cf9fe10520edf084069b57faf735&topic=129930.msg977669#msg977669

Che ne tratta, tempo fa. Forse è stata trovata una soluzione diversa a questo. Ho una Mega 2560 ed alcuni sensori tutti alimentati a 3.3 Volts collegati al bus I2C. A dir il vero tutto sembra funzionare come si deve ma noto delle piccole anomalie. Ho scoperto girando su Internet che la Mega 2560 ha dei pull up su I2C attivabili da software che vanno su +5V, e visto che i miei sensori I2C sono alimentati su 3.3 Volts (ho dovuto aggiungere dei pull up che vanno su +3.3 Volts per funzionare), credo di avere quindi dei +5v che mi finsicono sulla linea di alimentazione a 3.3, passanti per i pull up aggiunti da me (quelli on board non andavano bene).

http://arduino.cc/en/uploads/Main/arduino-mega2560_R3-schematic.pdf

Per i +5V e per i +3.3V uso due piccoli step down in quanto la Arduino da sola non ce la avrebbe fatta a sopportare tutti i carichi. Mi risulta quindi che  per sanare questa condizione di stress alla mia scheda, debbo dissaldare la resisteza accanto al led di On (allego immagine, è quello, corretto ?).

La mia comprensione del problema è confortata anche da questo post:

http://www.varesano.net/blog/fabio/how-disable-internal-arduino-atmega-pullups-sda-and-scl-i2c-bus#comment-22396

Sulla Arduino Due sembra questo sia stato risolto ed i pull up vanno per tutti i bus I2C su +3.3 V.

Vi risulta che si debba rimuovere quindi tale resistenza per evitare "reflussi" di +5V sulla linea a 3.3 ?


Grazie mille,

Stefano Falconetti.
7  Using Arduino / General Electronics / Re: Two external switching power step down (3.3 and 5 Volts) and GNDs on: November 27, 2012, 07:13:25 pm
Thanks Lefty,

I knew all grounds have to be connected together, I had doubts about the behaviour of the two switching step down. Ok, thank you very much for your advice. I will proceed that way smiley

Much appreciated.

Stefano.
8  Using Arduino / General Electronics / Two external switching power step down (3.3 and 5 Volts) and GNDs on: November 27, 2012, 08:15:10 am
Hi All,

I' m going to do some electronics but as I'm really new on this matter, I would like to steal a few of your time to ask for advices before burning my Mega 2560.
I need to provide power to 3.3 and 5 volts to Arduino connected stuff by external power sources, to avoid to overload the Arduino power section (I have I2C sensors and GPS etc to power, not enough current from the Arduino board itself so). For this pourpose, I added two external SWITCHING step down power supply of this type you can see here: http://www.emmeshop.it/product.php?id_product=534. These are  small and can do up 3 Amperes each. I know all the GND/negatives should be connected together in these cases but these two are switching step down, so I don't know if in case of switching step down, connecting together the Arduino GND AND the two switching negative poles from the step down, is still safe to be done.

Can I do that ?

Thanks,

Stefano.
9  Using Arduino / Networking, Protocols, and Devices / Re: I2C blocked when 3 sensors: HMC5883L + ADXL345 + BMP180 not working together on: November 12, 2012, 08:59:40 am
Ok, swithcing the pull up resistors to something like about 1.7 KOhm sorted out some effects, need to investigate further and let you know. It is likely that some spurious signal was confuding the bus. At about 2.7 KOhm the I2c started to answer but was very very slow  in initializing the sensors, so I lowered the pull up down and found that it was working better. Checking than reporting to you all.

Stefano.
10  Using Arduino / Networking, Protocols, and Devices / Re: I2C blocked when 3 sensors: HMC5883L + ADXL345 + BMP180 not working together on: November 08, 2012, 05:47:58 pm
Very good point, ok. Bus is short, about 10 cm wires. I will get the resistor tomorrow or saturday and post the result.

I appreciate your help Sir.

Stefano.
11  Using Arduino / Networking, Protocols, and Devices / Re: I2C blocked when 3 sensors: HMC5883L + ADXL345 + BMP180 not working together on: November 08, 2012, 01:09:13 pm
I use 4.7 K pull-up. Yes, the 3.3 stepdown - (GND) is connected to one of the two arduino GND.
12  Using Arduino / Networking, Protocols, and Devices / I2C blocked when 3 sensors: HMC5883L + ADXL345 + BMP180 not working together on: November 08, 2012, 12:30:25 pm
Hi All,

newbie question, I'm sorry smiley.
I have bought three I2C 3.3 Volts sensors mentioned above from loveelectronics: HMC5883L (compass), ADXL345 (accellerometer), BMP180 (pressure & temperature). I have built the tilt compensated compass with their tutorial and it is working (https://www.loveelec...rduino-tutorial). Then I added the pressure temperature sensor and it is working too, alone. When I plug the three sensors all together on my Mega 2560, the I2C bus doesn't answer anymore and it stops working. Al sensors work (the HMC5883L + ADXL345 combination and alone the BMP180), but all together they don't. it is like there is a conflict on the I2C bus between two of them (clearly not between HMC5883L and ADXL345, tested, they work). The sensors are all powered by an external source with a stepdown giving 3.3 volts (500 milliampere), so it is not an issue due to the limited amount of current available on the 3.3 Volts pin available on the Mega 2560. Pull up resistors of 4.7KHom are present. I was thinking it could be an I2C sensor address collision as two could have the same address, but taking these from the libraries, it seems not except for value 0x34 (am I right ? Is that menaingful ?):

================= BPM180 =================
#define BMP180_Address 0x77

#define ChipIdData 0x55
#define ControlInstruction_MeasureTemperature 0x2E
#define ControlInstruction_MeasurePressure 0x34

#define Reg_ChipId 0xD0
#define Reg_Control 0xF4
#define Reg_Calibrationstart 0xAA
#define Reg_Calibrationend 0xBE
#define Reg_AnalogConverterOutMSB 0xF6
#define Reg_SoftReset 0xE0
#define SoftResetInstruction 0xB6

================= HMC5883L =================
#define HMC5883L_Address 0x1E

#define ConfigurationRegisterA 0x00
#define ConfigurationRegisterB 0x01
#define ModeRegister 0x02
#define DataRegisterBegin 0x03
#define IdentityRegister 0x0A
#define IdentityRegisterValue 0x48

#define Measurement_Continuous 0x00
#define Measurement_SingleShot 0x01
#define Measurement_Idle 0x03


================= ADXL345 =================
#define DefaultADXL345_Address 0x1D

#define Register_PowerControl 0x2D
#define Register_DataFormat 0x31
#define Register_DataX 0x32
#define Register_DataY 0x34
#define Register_DataZ 0x36


What's your advice on the possible cause for this ?  Getting crazy. Running sketches given as an example all they work until BMP180 and HMC5883L are connected together. They stop at electrical level, not software level in my opinion. It is not either the number of sensors, two others works !
13  International / Hardware / Re: Più corrente sull' uscita da 3.3 Volts e carico su Vin on: November 06, 2012, 06:43:14 pm
Aperte le librerie e non mi pare di vedere sovrapposizioni di indirizzi, a parte un 0x34 ma non mi sembra un indirizzo device:

================= BPM180 =================
#define BMP180_Address 0x77

#define ChipIdData 0x55
#define ControlInstruction_MeasureTemperature 0x2E
#define ControlInstruction_MeasurePressure 0x34

#define Reg_ChipId 0xD0
#define Reg_Control 0xF4
#define Reg_Calibrationstart 0xAA
#define Reg_Calibrationend 0xBE
#define Reg_AnalogConverterOutMSB 0xF6
#define Reg_SoftReset 0xE0
#define SoftResetInstruction 0xB6

================= HMC5883L =================
#define HMC5883L_Address 0x1E

#define ConfigurationRegisterA 0x00
#define ConfigurationRegisterB 0x01
#define ModeRegister 0x02
#define DataRegisterBegin 0x03
#define IdentityRegister 0x0A
#define IdentityRegisterValue 0x48

#define Measurement_Continuous 0x00
#define Measurement_SingleShot 0x01
#define Measurement_Idle 0x03


================= ADXL345 =================
#define DefaultADXL345_Address 0x1D

#define Register_PowerControl 0x2D
#define Register_DataFormat 0x31
#define Register_DataX 0x32
#define Register_DataY 0x34
#define Register_DataZ 0x36


I sensori sono tutti a 3.3 volts alimentati da questo step down: http://www.emmeshop.it/product.php?id_product=534. Lo stepdown è alimentato dall' esterno, stesso alimentatore (che eroga 1/2 ampere) che alimenta il jack della Arduino con 11 volts circa. Negativo dei 3.3 volts che escono dallo step down e GND Arduino collegati insieme. 

E poi la cosa assurda è che l' HMC5883L (compass) e ADXL345 (accellerometer) insieme funzionano, ma l' HMC5883L (compass) e BMP180 (press./temper.) insieme non funzionano. Da soli vanno tutti bene. La velocità di clock impostata dal master dell' I2C (che credo sia sempre e solo la Arduino) ? Potrebbe essere che il master negozi una velocità di bus con un sensore che l' altro sensore però non supporta ?
14  International / Hardware / Re: Più corrente sull' uscita da 3.3 Volts e carico su Vin on: November 06, 2012, 06:15:39 pm
Ok, avete ragione. Rifatta la prova decostruendo il circuito. Un solo sensore I2C e tutto alimentato dall' esterno. Spiego come:

Alimentatore esterno attaccato al jack nero ed ad uno stepdown che caccia fuori 3.3 Volts. Il negativo di questo step down è collegato ad uno dei GND della Arduino Mega. I 3.3 volts che escono dallo step down alimentano i 3 sensori I2C che sono collegati alla Mega solo per SDA ed SCL. Qui ho tolto i 3 sensori:

HMC5883L(compass) + ADXL345(accellerometer) + BMP180(press and temp)

e mettendone uno ho fatta la prova. Così funziona, alimentato da fuori il pc vede la porta e tutto va. Fatta questa prova ho continuato a rimontare il tutto step by step ed ho aggiunto il secondo sensore e poi il terzo. Qui la scoperta interessante, udite udite: ho una combinazione di sensori I2C che blocca tutto. Per esempio collegando HMC5883L ed ADXL345 funzionano. Collegando il solo BMP180 funziona, se collego HMC5883L e BMP180 tutto si blocca e sulla seriale non esce alcun messaggio di debug che sia successivo al codice che inizializza il BMP180. Diverso da prima ma questo è un fenomeno ripetibile ed osservabile. Ora quindi ho due sensori I2C che vanno come dire... in conflitto fino al punto di bloccare tutto.

Come è possibile una cosa del genere tra due sensori ? Tra questi due in particolare. Da soli od in diverse combinazioni sembrano funzionare.

Idee ?

E ... grazie mille ovviamente ! smiley
15  International / Hardware / Re: Più corrente sull' uscita da 3.3 Volts e carico su Vin on: November 06, 2012, 12:46:11 pm
Interessante, a me stacca talmente bene che non si vede proprio la COM sul pc... ed il software gira perchè attaccando un LCD seriale ad un' altra porta seriale della Mega, lo vedo girare. A parità di circuito e software. se mi sto sbagliando allora potrebbe essere una condizione anomala indotta dalla linea di alimentazione esterna dell I2C ? Nà. Quella ce la ho attaccata anche adesso e la COM la vedo. Vado a casa e riprovo. Hmmm... una stranezza sulla COM dovuta a qualche ritorno di corrente dal jack della Mega ?
Pages: [1] 2