Arduino mkr 1010 - pull up i2c

Buonasera.
Non riesco a disattivare le resistenze di pull up interne ad arduino.
Dopo l'inizializzazione dell'RTC (I2C), del PCF8574(I2C) e del display OLED (I2C) inserisco nel setup:

digitalWrite(SCL,0);
digitalWrite(SDA,0);

con arduino in funzione leggo i seguenti valori:
resistenza tra VCC e SCL = 4kOhm (rimane attiva ma diminuisce rispetto al valore di 4,7 kOhm)
resistenza tra VCC e SDA = 5MOhm (sembra disattivata)

con arduino spento
resistenza tra VCC e SCL = 4,7kOhm (come da schema allegato)
resistenza tra VCC e SCL = 4,7kOhm (come da schema allegato)

Grazie
MKRWiFi1010V2.0_sch.pdf (239,2 KB)

Di quale bus I2C stai parlando? la mkr 1010 ha DUE bus I2C disponibili, tu quale stai usando?:

  1. A4/A5 (pin 6/7)
  2. D11/D12 (pin 20/21) che ha delle resistenze di pull-up fisicamente saldate sulla scheda

Guglielmo

stavo usando D11 e D12; utilizzerò A4 e A5 anche se dovrò fare a meno di un ingresso analogico eliminando la lettura dell'energia consumata dal sistema.

Ti vorrei anche chiedere anche un'altra cosa.

RTC clock ha una resistenza di pull up di 4k7, il PCF8574 ha una resistenza di pull up di 1k; quindi sul bus I2C ho due resistenze in parallelo con un Req= 824 Ohm che mi porterebbe sul bus I2C ad una corrente di circa 4 mA superiore al massimo dell'I2C che è di 3mA.
Secondo te potrebbe dare problemi?

Scusa, ma dissalda le resistenze di pull-up che non ti servono ... lascia quelle del RTC ed elimina le altre.

Questo problema si pone sempre quando si comprano schedine già fatte che, per ragioni di economicità, non prevedono il modo di scollegare le resistenze sul bus I2C.

Guglielmo

Grazie per i preziosi consigli.

A questo punto lascio le resistenze sull'RTC (4k7), mi collego ai PIN D11 e D12 di arduino (4k7), dissaldo le resistenze da 1k del PCF8574 ed inserisco delle resistenze di pull up in parallelo da 3k in modo da avere una resistenza di pull up sul bus di 1k3 che mi porterebbe ad una corrente sul bus I2C di 2,5 mA.

Mi serve una corrente elevata in quanto ho una distanza di trasmissione di circa 3 m e con il cavo 12S1YVI con capacità di 30 pF/m dovrei riuscirci. Grazie

In questo documento dovresti trovare le formule che ti occorrono per i calcoli esatti ...

I2C Bus Pullup Resistor Calculation.pdf (157.3 KB)

Guglielmo

Volevo condividere il risultato raggiunto.
Riesco a lavorare con il protocollo I2C ad oltre 5 m di distanza.

n.3 resistenze di pull up in parallelo (n.1 resistenza da 4k7 dell'arduino MKR, n.1 da 4k7 dell'RTC e n. 1 resistenza esterna aggiunta da 2k) con una resistenza complessiva pari a 1080 Ohm. Ciò porta ad una corrente I=3,3V /1,080 kOhm = 3,05 mA che è il limite massimo per il protocollo I2C.

n.5 m di cavo 12S1YVI a bassa capacità (30pF/m)

Ciao
e grazie a Guglielmo

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.