I2C numero sensori e massima corrente

Buongiorno a tutti, sono nuovo del forum e dell'Arduino, quindi se per il primo punto risolvo il tutto presentandomi e salutando tutti.... per il secondo occorre da parte vostra un po' di pazienza.... tanta....

Vengo al dunque: sto utilizzando un sensore digitale di temperatura (il TCN75A) che comunica su bus I2C, a breve mi arriverà un LCD 16x2 Blu, anch'esso su I2C (trovato su ebay, direi che è un SPI al quale hanno attaccato qualcosa per trasformare la comunicazione su I2C)

Nell'idea di collegare altri sensori/dispositivi su I2C (ho letto fino a 127) mi pongo il problema della corrente che "transita" dall'arduino ai sensori che sono sul bus. Ovvero visto che si possono collegare così tanti sensori, non penso che sia possibile alimentarli tutti attraverso i 2 fili per l'alimentazione del I2C (diciamo 2 per l'alimentazione e 2 per i dati).

Quindi riassumendo: vorrei sapere dal +5V dell'arduino quanti mA possono passare? (ho letto che la somma dei I/O non deve superare i 200mA e che ognuna delle porte I/O non deve superare i 40mA)

Qualora la corrente necessaria a tutta la "cascata" di sensori non sia sufficiente, anzichè far uscire tutti e 4 i fili dall'Arduino, è possibile alimentare i sensori con una batteria esterna (ground condiviso con arduino) e mantenere solamente SDA ed SCL su Arduino?

Schema dei 4 fili per I2C: +5V: batteria esterna ground: condiviso tra batteria esterna e Arduino (è indispensabile o no?) SCL: PIN4 Arduino SDA: PIN5 Arduino

Ovviamente Arduino alimentato attraverso jack (altra batteria esterna).

Un ringraziamento anticipato a tutti. Buona giornata, Tredipunta.

Ciao e benvenuto.

Il "qualcosa" che collegano ai display paralleli per farli diventare seriali e/o I2C sono comunissimi micro (spesso usano l'Atmega168 SMD) programmati per dialogare col mondo esterno tramite questi bus.

Tornando all'I2C esso è un "bus", ossia un mezzo per comunicare. Non alimenti i dispositivi da lì ma ogni utenza avrà i suoi pin Vcc/Gnd. L'unica corrente che scorre sul bus I2C è quella di pull-up: se i dispositivi sono molto vicini puoi evitare di metterle ed usare quelle che sono integrate sui pin del micro.

Se la corrente che i tuoi sensori consumano è poca, puoi alimentarli dal pin 5V dell'Arduino: il regolatore di tensione della scheda fornisce max 500 mA quando è collegato tramite porta USB.

Alternativamente puoi benissimo usare un'alimentazione esterna: ricordati di mettere le masse in comune.

Grazie per l’aiuto,
Tredipunta.

Volevo precisare un punto scritto male:

L'unica corrente che scorre sul bus I2C è quella di pull-up: se i dispositivi sono molto vicini puoi evitare di metterle ed usare quelle che sono integrate sui pin del micro.

in realtà è:

L'unica corrente che scorre sul bus I2C è quella delle resistenze di pull-up: se i dispositivi sono molto vicini puoi evitare di metterle ed usare quelle che sono integrate sui pin del micro.

tredipunta: Quindi riassumendo: vorrei sapere dal +5V dell'arduino quanti mA possono passare? (ho letto che la somma dei I/O non deve superare i 200mA e che ognuna delle porte I/O non deve superare i 40mA)

Quelli sono i limiti di corrente che puó dare un pin del Arduino quando é difinito come uscita. non i pin di massa, 5V o Vin. Quelli possono dare correnti piú alte. I 5V un po meno di 500mA i Vin ca lo stesso ( la corrente é limtato da quanta corrente regge il diodo D1 che non trovo la sigla sugli schemi).

tredipunta: Qualora la corrente necessaria a tutta la "cascata" di sensori non sia sufficiente, anzichè far uscire tutti e 4 i fili dall'Arduino, è possibile alimentare i sensori con una batteria esterna (ground condiviso con arduino) e mantenere solamente SDA ed SCL su Arduino? Schema dei 4 fili per I2C: +5V: batteria esterna ground: condiviso tra batteria esterna e Arduino (è indispensabile o no?) SCL: PIN4 Arduino SDA: PIN5 Arduino Ovviamente Arduino alimentato attraverso jack (altra batteria esterna).

Non c'é problema ma se hai un consumo di corrente alto e una tensione di alimentazione esterna altina (per esempio 12V) lo stabilizzatore sulla scheda Arduino si riscalda parecchio. Puoi fare 2 cose ancora diverse per diminuire il riscaldamento del Arduino: Alimenti i sensori con una tensione di 5V (o 3,3 se ne hanno bisogno) da un alimentatore 5V e l' arduino tramite USB o alimantatore 9V. Alimanti l'Arduino e i sensori con 5V. Sul Arduino basta dare la tensione 5V tra massa (GND) e il pin 5V. In questo caso é da evitare il collegamento con la USB perché metti in paralello l'alimentatore 5V e i 5V del PC. NEl caso hai bisogno del collegamento USB devi spegnere l' alimentatore 5V esterno oppure prendere un cavo USB e tagliare il cavetto dei 5V.

Ciao Uwe