Forum: Mikrocontroller und Digitale Elektronik I²C Bus für Verbindung Rasperry pi und ATMEGA


von Jenny L. (jenny_lo)


Angehängte Dateien:

Lesenswert?

Hallo,

ich benötige mal etwas Hilfe bei einem Projekt. Die Idee ist, einen 
Raspberry pi mit dem 7“ Touchscreen von Pollin als Bedienkonsole 
einzusetzen. Über diese sollen dann ATMEGA 8 o.ä. angesteuert werden, 
die die einzelnen Funktionen (z.B. Servoansteuerung, Lichteffekte) 
auslösen.

Der pi soll mit den ATMEGA über einen I²C Bus verbunden werden. Der Bus 
soll als Linie aufgebaut werden, wobei die max. Länge ca. 1m beträgt und 
es zum Schluss nicht mehr als 10 Teilnehmer sein werden. Zum einfachen 
Aufbau will ich handelsübliche Netzwerkkabel zur Verbindung einsetzen. 
Die Datenmenge auf dem Bus wird sehr gering sein, da ich pro 
angeschlossenen „Station“ eigentlich nur ein Byte Daten übertragen muss. 
Da dabei auch nichts zeitkritisch ist, kann die Taktrate sehr niedrig 
sein (10kHz).

Ich will für den pi und den Touchscreen eine Art Bedienpult bauen und 
dort auch eine kleine Platine unterbringen, die die Stromversorgung  der 
einzelnen Teile (12V für den Touchscreen, 5V für den pi und einen 
USB-Hub) und die Pegelanpassung des I²C Buses trägt. Für Letztere möchte 
ich einen PCA9515 Repeater verwenden. Beiliegend die Schaltung, die mir 
vorschwebt. Und dazu habe ich zwei Fragen.

1) Ich werde aus dem Datenblatt des PCA9515 nicht ganz schlau, was die 
Dimensionierung der Pull-up Widerstände für den Bus betrifft. Kann mir 
jemand sagen, ob ich die Widerstände R2…R5 richtig dimensioniert habe?

2) Die angeschlossenen „Stationen“ mit den ATMEGA sollen jeweils eigene 
Spannungsversorgungen erhalten. GND will ich im gesamten System 
verbinden. Kann es dabei zu Problemen kommen, weil ja die 5V 
„Busspannung“ von der Versorgung des pi kommen? Oder ist es nötig, den 
Bus galvanisch zu trennen? Allerdings habe ich da nicht wirklich eine 
einfache und zuverlässige Lösung gefunden…

Es wäre nett, wenn mir jemand weiter helfen könnte.

von A. D. (egsler)


Lesenswert?

5V-Busspannung solltest du tunlichst vermeiden, wenn die Himbeere das 
überleben soll. Außerdem sind auf der Platine des Raspberry an den 
I2C-Pins bereits Pullups nach 3V3 verbaut, die sollten langen ;)

von Oliver R. (orb)


Lesenswert?

R2 und R3 müssen weg, die sind auf dem Pi.
Wo die Versorgung für den PCA9515 herkommt ist egal, die Busausgänge 
sind alle OC, die Busspannung wird über die PullUps festgelegt und die 
sitzen auf dem Pi gegen 3,3Volt.

von Jenny L. (jenny_lo)


Lesenswert?

Julian S. schrieb:
> 5V-Busspannung solltest du tunlichst vermeiden

Den PCA9515 will ich ja verwenden, um die 3,3V Busspannung des pi auf 
die 5V Busspannung der ATMAGA anzupassen. Oder habe ich da einen 
Denkfehler?

Das der pi schon interne Pull-us's für den Bus hat, muss ich überlesen 
haben.

Oliver R. schrieb:
> Wo die Versorgung für den PCA9515 herkommt ist egal

Im Datenblatt ist die Vcc von der 3,3V Seite genommen worden. Aber wenn 
das egal ist, komme ich wahrscheinlich besser, wenn ich den PCA9515 
gleich mit 5V versorge. Dann hängt er versorgungsmäßig nicht am pi. Oder 
kann das schiefgehen?

von A. D. (egsler)


Lesenswert?

Jenny Lo. schrieb:
> Den PCA9515 will ich ja verwenden, um die 3,3V Busspannung des pi auf
> die 5V Busspannung der ATMAGA anzupassen. Oder habe ich da einen
> Denkfehler?
Achja, da habe ich nicht geschaltet. Passt schon. Es würde aber auch 
einfach ein Fet genügen, da braucht es nicht extra einen IC.

von Bernd K. (prof7bit)


Lesenswert?

Julian S. schrieb:
> Es würde aber auch
> einfach ein Fet genügen, da braucht es nicht extra einen IC.

Nein. Bei I²C sind beide Leitungen bidirektional, da ist schon etwas 
mehr Aufwand nötig.

Und auf der Slave-seitigen (5v-seitigen) Seite des PCA9515 müssen 
natürlich wieder pullups angebracht werden, diesmal gegen 5V.

Siehe hier: http://www.nxp.com/documents/data_sheet/PCA9515.pdf
Bild4 rechte Seite.

Und die würd ich gerade so klein bemessen dass der maximale Strom nicht 
größer wird als der schwächste Slave am Bus ihn noch treiben kann. 2k 
wäre ne gesunde Zahl, der Atmega kann 25mA locker versenken, wenn die 
Leitung länger wird oder die Taktrate höher kann man evtl sogar noch 
weiter runtergehen.

: Bearbeitet durch User
von A. D. (egsler)


Angehängte Dateien:

Lesenswert?

> Nein. Bei I²C sind beide Leitungen bidirektional, da ist schon etwas
> mehr Aufwand nötig.

Ok, du hast Recht. Man braucht noch zwei Widerstände (von denen einer
bereits verbaut ist)

von Jenny_Lo (Gast)


Lesenswert?

Julian S. schrieb:
> Man braucht noch zwei Widerstände

Das verstehe ich jetzt nicht. Zusätzlich zu den von mir gezeichneten?

von Oliver R. (orb)


Lesenswert?

Jenny_Lo schrieb:
> Julian S. schrieb:
>> Man braucht noch zwei Widerstände
>
> Das verstehe ich jetzt nicht. Zusätzlich zu den von mir gezeichneten?

Nein, zusätzlich zum FET.

von Bernd K. (prof7bit)


Lesenswert?

Julian S. schrieb:
>> Nein. Bei I²C sind beide Leitungen bidirektional, da ist schon etwas
>> mehr Aufwand nötig.
>
> Ok, du hast Recht. Man braucht noch zwei Widerstände (von denen einer
> bereits verbaut ist)

Ja, das ist natürlich eine clevere Schaltung, daran hab ich nicht 
gedacht. So gehts auch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.