Forum: Mikrocontroller und Digitale Elektronik I2C von 5 auf 3,3V drosseln (Pegelwandler,Voltregulator;Dioden.)


von MasterG (Gast)


Lesenswert?

Ich habe einige SHT21 Sensoren die ich gerne an einen I2C Bus hängen 
will. Der Master ist ein ATMEGA2560 und liefert 5V.
Meine Frage ist was sind die Vor und Nachteile der untersch. Methoden 
bzw- welche gibts noch?

1) Pegelwandler scheint wohl so state of the art zu sein aber dann 
brauche ich ja trotzdem einen 3,3V Anschluss. Sprich entweder ein 
weiteres Netzteil oder einen  Voltregulator 
(http://www.youtube.com/watch?v=GSzVs7_aW-Y).
Und außerdem habe ich bisher immer nur Wandler gesehen die sozusagen 
einmal 3,3 auf 5 wandeln an zwei Pins und dann wieder an zwei anderen 5V 
zu 3,3.
Ich nehme mal an ich schließe es dann sozusagen parallel an:

     ------3,3V-5V----
-----                 --------
     ------5V-3,3V----

Oder gibts da auch welche so für beide Richtungen am besten mit 3 Pins 
und einem 5V Anschluss für genau solche Fälle?

2) Da komme ich zum zweiten Bauteil dem Voltregulator kann ich auch 
einfach nur so ein Teil zwischen Leitung und Pins hängen oder gehen mir 
dann die Signale flöten?

3) Ich habe hier schon ein paar Schaltpläne mit Dioden gesehen, die 
sollen aber immer die Geschw. drosseln und anscheinend störanfällig 
sein.

4) Gibt es sonst noch gute LSG?

: Verschoben durch Admin
von Floh (Gast)


Lesenswert?

Du brauchst einen Pegelwandler für I2C?

http://www.kip.uni-heidelberg.de/lhcb/Publications/external/AN97055.pdf
Seite 10 :-)

von 2ter Gast (Gast)


Lesenswert?

Pegel-Shifter als fertiger chip: PCA9306. hat aber 8 pins

von MasterG (Gast)


Lesenswert?

2ter Gast schrieb:
> PCA9306

Hab ich das richtig überrissen ohne die 16S. Anleitung komlett 
durchzulesen.

Das ich wenn ich nur 3,3V Abnehmer habe. Sozusagen meinen MCC an VCC 
High,GND,SCL High Volt, SDA high Volt anschließe (Sprich 3Pins). Dann 
aber noch ne 3,3V Stromquelle brauche. Die Frage ist noch wie man die 
dann am besten realisiert. Über Widerstände ist es blöd weil die 
Stromstärken sich ändern. Also bräuchte ich dann noch so einen "linear 
voltage regulator" den ich an nen anderen Pin des Atmegas hänge und dann 
mit Vcc Low verbinde? Weil ein extra Netzteil ist ja wahrsch. etwas 
übertrieben...

Wofür sind eigentlich die beiden Pull Up Widerstände die sehe ich 
andauernd und habe sie auch auf meiner Platine für den SHT21. Damit das 
ganze enstört wird und nicht fehlerhafterweise Signale kommen?

PS:
Danke für die schnellen Antworten ging ja echt fix.

von Jürgen (Gast)


Lesenswert?

Interessantes Bauteil. Genau sowas suche ich ebenfalls. Leider kann ich 
es nicht in Eagle finden, nur andere SM8 Packages. Hat jmd. das Bauteil 
für Eagle, bzw. kann die anderen irgendwie verwenden zumindest als 
Vorlage?

von Jörg S. (joerg-s)


Lesenswert?

MasterG schrieb:
> Dann aber noch ne 3,3V Stromquelle brauche. Die Frage ist noch wie man
> die dann am besten realisiert. Über Widerstände ist es blöd weil die
> Stromstärken sich ändern.
Ein stabiles 2,5V "Netzteil" lässt sich recht einfach aus TL431 + 
Vorwiderstand realisieren. Der SHT21 läuft ja anscheinend auch noch mit 
2,5V.
Aber kommt es bei dir überhaupt auf den Platz an? Ansonsten kannst du ja 
auch einfach einen Festpannungsregler nehmen (z.B. ZLDO330).

> Also bräuchte ich dann noch so einen "linear
> voltage regulator" den ich an nen anderen Pin des Atmegas hänge und dann
> mit Vcc Low verbinde?
Wieso an den Atmega hängen?

> Wofür sind eigentlich die beiden Pull Up Widerstände die sehe ich
> andauernd und habe sie auch auf meiner Platine für den SHT21. Damit das
> ganze enstört wird und nicht fehlerhafterweise Signale kommen?
Dir sind die Grundlagen von I2C bekannt?

von MasterG (Gast)


Lesenswert?

Jörg S. schrieb:
> MasterG schrieb:
>> Dann aber noch ne 3,3V Stromquelle brauche. Die Frage ist noch wie man
>> die dann am besten realisiert. Über Widerstände ist es blöd weil die
>> Stromstärken sich ändern.
> Ein stabiles 2,5V "Netzteil" lässt sich recht einfach aus TL431 +
> Vorwiderstand realisieren. Der SHT21 läuft ja anscheinend auch noch mit
> 2,5V.
> Aber kommt es bei dir überhaupt auf den Platz an? Ansonsten kannst du ja
> auch einfach einen Festpannungsregler nehmen (z.B. ZLDO330).
>
>> Also bräuchte ich dann noch so einen "linear
>> voltage regulator" den ich an nen anderen Pin des Atmegas hänge und dann
>> mit Vcc Low verbinde?
> Wieso an den Atmega hängen?
Ja irgendwoher muss ich ja die Eingangspannung herbekommen. Also hätte 
ich sozusagen einen 5V Pin mit so einem Spannungsregulator verbunden. 
Platz spielt nicht direkt eine Rolle (solange es sich um Bauteile 
handelt) ich will bloß nicht noch ein Netzteil 220V auf xV anschließen 
weil die ja auch Verluste haben und enorm viel Platz brauchen.


>
>> Wofür sind eigentlich die beiden Pull Up Widerstände die sehe ich
>> andauernd und habe sie auch auf meiner Platine für den SHT21. Damit das
>> ganze enstört wird und nicht fehlerhafterweise Signale kommen?
> Dir sind die Grundlagen von I2C bekannt?

Ja ich hab mich mal vor einige Zeit etwas damit befasst. aber mehr so 
was es kann und wie es so im Grundprinzip funktioniert. Aber weniger der 
direkte Aufbau.

von Peter (Gast)


Lesenswert?

Auch ein interressantes Bauteil als I2C-Bus Umschalter, Verteiler und 
Levelshifter geeignet:  http://www.linear.com/product/LTC4312

>1) Pegelwandler scheint wohl so state of the art zu sein aber dann
>brauche ich ja trotzdem einen 3,3V Anschluss.

Wenn Du ein Bauteil hast, welches einen 3.3V I2C-Bus erfordert, dann 
wird es für dieses Bauteil auch schon eine 3.3V Speisespannung geben...

von Jörg S. (joerg-s)


Lesenswert?

MasterG schrieb:
> Also hätte
> ich sozusagen einen 5V Pin mit so einem Spannungsregulator verbunden.
Wenn es schaltbar sein soll... Ansonsten den Spannungsregler halt direkt 
an 5V anklemmen.

Aber wie Peter schon gesagt hat, musste du doch eh schon eine 3,3V 
Spannung irgendwo für den SHT haben?

von Helmut L. (helmi1)


Lesenswert?

MasterG schrieb:
>>
>>> Wofür sind eigentlich die beiden Pull Up Widerstände die sehe ich
>>> andauernd und habe sie auch auf meiner Platine für den SHT21. Damit das
>>> ganze enstört wird und nicht fehlerhafterweise Signale kommen?
>> Dir sind die Grundlagen von I2C bekannt?
>
> Ja ich hab mich mal vor einige Zeit etwas damit befasst. aber mehr so
> was es kann und wie es so im Grundprinzip funktioniert. Aber weniger der
> direkte Aufbau.

I2C ist Open Kollektor. Die Spannung am Pullup bestimmt den Pegel auf 
der Leitung.

von Christian B. (luckyfu)


Lesenswert?

nimm doch einen ADum1250 / ADuM1251. An einer Seite 3,3V an der anderen 
5V und gut is
Nebenbei hast du damit den I²C noch isoliert
Pullups benötigst du aber auf beiden Seiten dann je 2

von MasterG (Gast)


Lesenswert?

Ja ich baue das ganze im Prinzip selber auf deswegen die Frage mit der 
Versorgungsspannung. Stimmt ich könnte es auch direkt auf die 5V legen 
aber habe ich dann nicht andauernd Leerverbrauch durch die Wandlung von 
5V auf 3,3V?

Ich habe mich bisher nicht so sehr über die Grundlagen von I2C 
informiert. Ich bin davon ausgegeangen, als ich geschaut habe ob mit dem 
Atmega I2C möglich ist, dass das einigermaßen genorm wäre.

Aber mit dem Chip hatte ich schon einige Probleme da er auch eine fixe 
Adressierung besitzt muss ich ncoh zusätzlich mit ner Transistor 
Schaltung arbeiten etc... Aber das wird jetzt Offtopic Ich habe bloß 
langsam das Gefühl hier nen halben Computer zusammenzulöten soviele 
Widerstände, Kondensatoren und andere Bauteile ich dafür schon brauche.

@Jürgen
Ich habe die Bauteile selbst in Eagle erstellt. Geht eigentlich recht 
flot, allerdings da ich Anfänger bin weiß ich nicht ob das Package "SM8" 
genormt ist das habe ich einfach übernommen. In der Anletung des 
Pegelwandlers sind nämlich mehrere Größen angegeben... Wenn du willst 
kann ich sie dir aber auch schicken...

von XXX (Gast)


Lesenswert?

Hallo

Wie Helmut Lenzen oben bereits geschrieben hat.
I2C ist Open Collector, der Hi-Pegel wird allein durch die
Pull-Ups bestimmt!

Da braucht man keine Pegelwandler!

Gruß
Joachim

von Jörg S. (joerg-s)


Lesenswert?

>Da braucht man keine Pegelwandler!
Wenn ein IC mit 5V läuft und das andere mit 3,3V schon.

Wobei ich so langsam nicht mehr verstehe um was es eigentlich geht. 
Vielleicht könnte MasterG ja noch mal genauer darlegen was das Problem 
bzw. die Frage ist.

von MasterG (Gast)


Lesenswert?

Helmut Lenzen schrieb:
> nung am Pullup bestimmt den Pegel auf
> der Leitung.
Ok d.h es wird also kein Pegelwandler benötigt. Warum gibts dann 
eigentlich I2C Pegelwandler wie der aus dem obigen Post?

Also wenn man dann die Schaltung hier auf S6 am SHT21 nimmt:
http://www.sensirion.com/de/pdf/product_information/Datasheet-humidity-sensor-SHT21.pdf

Dann verstehe ich nicht wie man die Widerstände dimensioniert. Da bei 
Reihenschaltung ja dann Spannung am Widerstand abgegriffen wird aber der 
hier ja zwischen der VDD und den Signalleitungen steht.
Zudem für den Chip auf Seite 2 steht, dass er im Standby 0,15*10^-6 A 
braucht und 300*10^-6A im Betriebsmodus. aber das wird ja sozusagen für 
VDD gelten und nicht für SCL und SDA.
Daraus ergeben sich für mich zwei neue Fragen:

1)
Woher bekomme ich die Stromstärke die am Chip bei SDA und SCL abfällt 
und..

2)
... wenn diese sich auch ändert wie bestimme ich den dann den Widerstand 
(oder wird sie immer gleich sein)?

Danke für die vielen Antworten. Tut mir echt leid das ich noch so wenig 
Ahnung habe aber ich wollte iegntlich nur eine kleine Klimasteuerung 
realisieren und nicht gleich nen halben Robo zusammenbasteln :D

Ich hab mir halt die beiden
http://www.mikrocontroller.net/articles/I2C
http://www.elektronik-magazin.de/page/der-i2c-bus-was-ist-das-21
sowie irgendnen Artikel angeschaut wo diskutiert wurde ob man für kleine 
Haussteuerungen Can oder I2C etc nehmen soll...

von Floh (Gast)


Lesenswert?

MasterG schrieb:
> Ok d.h es wird also kein Pegelwandler benötigt. Warum gibts dann
> eigentlich I2C Pegelwandler wie der aus dem obigen Post?

Weil manche Busteilnehmer, die intern mit 5Volt laufen, 3.3Volt nicht 
sicher als High erkennen.
Daher gibts Pegelwandler. Einen sehr einfachen Wandler kann man mit 2 
Mosfets aufbauen:
http://www.kip.uni-heidelberg.de/lhcb/Publications...
:-)

von Jörg S. (joerg-s)


Lesenswert?

MasterG schrieb:
> 1)
> Woher bekomme ich die Stromstärke die am Chip bei SDA und SCL abfällt
> und..
Verstehe ich nicht ganz. Aber die Pull-Ups werden i.d.R. so berechnet 
das maximal 3mA durch sie fliessen. Das ist der maximal zulässige Strom 
bei I2C. Wenn es aber nicht um meter lange Leitungen oder extreme 
Geschwindigkeit geht, nimmt man aber meist einfach 4,7k Ohm oder sowas 
in der Richtung. Passt schon...

von 2ter Gast (Gast)


Lesenswert?

Floh schrieb:
> Weil manche Busteilnehmer, die intern mit 5Volt laufen, 3.3Volt nicht
> sicher als High erkennen.

Manche Bauteile, die bis 3.3V spezifiziert, sind nicht 5V tolerant.

von MasterG (Gast)


Angehängte Dateien:

Lesenswert?

2ter Gast schrieb:
> Floh schrieb:
>> Weil manche Busteilnehmer, die intern mit 5Volt laufen, 3.3Volt nicht
>> sicher als High erkennen.
>
> Manche Bauteile, die bis 3.3V spezifiziert, sind nicht 5V tolerant.

Jetzt bin ich verwirrt was gilt nun man braucht nen Pegelwandler oder 
nicht?
Also ich poste am besten mal wie ich mir das vorgestellt habe im Anhang.

Also Ctrl benötige ich deshalb weil der SHT21 eine fixe Adresse besitzt.
Ansonsten wandle ich jetzt nur noch die Spannung vür den VDD Eingang auf 
3,3V um. Der Atmega hat aber an seinen TWI Pins 5V! So wie ich das hier 
rausgelesen habe erledigen das dann die 2 10k Ohm Widerstände am SHT21?

von 2ter Gast (Gast)


Lesenswert?

Also wenn die I/O Pin von einem Teilnehmer nicht 5V-Tolerant sind, 
müssen die Pegel am Teilnehmer angepasst werden. Ob du es mit einer 
Transistorschaltung, fertigen Chip oder eine andere Lösung umsetzt, 
liegt bei dir.

von Jörg S. (joerg-s)


Lesenswert?

MasterG schrieb:
> Der Atmega hat aber an seinen TWI Pins 5V! So wie ich das hier
> rausgelesen habe erledigen das dann die 2 10k Ohm Widerstände am SHT21?
Nö, die können den Pegel ja nicht ändern. Das muss aktiv gemacht werden.

von MasterG (Gast)


Lesenswert?

2ter  Gast schrieb:
> Also wenn die I/O Pin von einem Teilnehmer nicht 5V-Tolerant sind,
> müssen die Pegel am Teilnehmer angepasst werden. Ob du es mit einer
> Transistorschaltung, fertigen Chip oder eine andere Lösung umsetzt,
> liegt bei dir.

Ja aber ein anderer Gast hat geschrieben genau das würden die beiden 
Pull Up Widerstände erledigen. Bei mir im zweiten Schaltplan (die 
Platine für den SHT21) die 10k Ohm Widerstände.

Oder brauche ich jetzt noch was dazu?

von Jörg S. (joerg-s)


Lesenswert?

>Oder brauche ich jetzt noch was dazu?
Ja, wie etliche male geschrieben braucht es einen PEGELWANDLER.

von Busbastler (Gast)


Lesenswert?

Versuche gerade auch, das Problem des TO nachzuvollziehen.

Also, der I2C wird via Pull-Ups auf den "Normalpegel" gezogen. Sagen wir 
mal 3.3V.

Jetzt schliesse ich nen AVR an, den ich aber mit 5V speise.

Dann ist die Frage einzig, ob der AVR 3.3V zuverlässig als HIGH erkennt. 
Die anderen Bausteine am Bus, die mit 3.3V laufen, sind ja eh kein 
Problem.

Wozu bitteschön also Pegelwandler im Bus?!

von Jörg S. (joerg-s)


Lesenswert?

>Dann ist die Frage einzig, ob der AVR 3.3V zuverlässig als HIGH erkennt.
Richtig. Wenn er es nicht tut -> Pegelwandler.
Aber NICHT einmal Pull-Ups auf 5V und Pull-Ups auf 3,3V. Das geht nicht.

von Helmut L. (helmi1)


Lesenswert?

Busbastler schrieb:
> Dann ist die Frage einzig, ob der AVR 3.3V zuverlässig als HIGH erkennt.

Im Datenblatt deines Vertrauens steht fuer den AVR:

Vih = 0.6 * VCC

bei VCC = 5V ergibt das fuer logisch H 3V. Also sollten die 3.3V 
reichen.
Wenn der AVR sich an der I2C Norm haelt also das High wird mit den 
Externen Pullups eingestellt und keine internen Pullup im AVR 
eingeschaltet sind dann sollte das funktionieren. Wenn du aber die I2C 
Funktion in Software nachbildest und du eine '1' ausgibst in dem du den 
Port auf '1' setzt geht es nicht.

In dem Fall:

                +5V
                 |
                 R
                 |
AVRPIN ----------+--------SDA/SCL
                 |
                 K
               3V Zener
                 A
                 |
                GND

In dem Fall darfst du aber nur '0' ausgeben und keine '1'
Die ergibt sich dann indem du den Port auf Eingang stellst.

von 2ter Gast (Gast)


Lesenswert?

1) siehe Post #2

2) Bzgl. Pull-Ups:
Wenn man auf einer I2C-Leitung ein logisches High "1" erzeugt, macht man 
i.d.R so, dass man den Port Pin auf Input (Tri-State/hochohmig) setzt. 
Das High wird durch das Pull-Up erzeugt, und nicht aktiv vom uc. Bei 
einem einem Low "0" setzt man den Port Pin Output und zieht den Pin auf 
Masse (Open Drain bzw. Open Collector).

Je nachdem welche Versorgungsspannung an dem Pull-Up anliegt, hast Du 
deine 3V oder 5V an den Pins liegen, aber sie machen keine 
Pegelanpassung.

Was die I/O Pins der Bauteile können, verraten Dir die Datenblätter.

von 2ter Gast (Gast)


Lesenswert?

Da waren welche schneller...

von MasterG (Gast)


Lesenswert?

Ok damit haben wir jetzt seit dem letztenmal einmal Pegelwandler einmal 
nicht und einmal vielleicht.

Um es mal so zusammenzufassen wie ich es verstanden habe. Wenn die 
Bauteile 5V vertragen braucht man für sie keinen Pegelwandler.

Im SHT 21 Datenblatt steht:

"The electrical characteristics of SHT2x are defined in
Table 1. The absolute maximum ratings as given in Table
3 are stress ratings only and give additional information.
Functional operation of the device at these conditions is
not implied. Exposure to absolute maximum rating
conditions for extended periods may affect the sensor
reliability (e.g. hot carrier degradation, oxide breakdown)."

Wobei die Obergerenze VDD to VSS 5V sind gut hier habe ich 
sicherheitshalber mal eine Umwandlung auf die 3,3V drinn. Sowie 5V*1,3 
für SDA & SCL.
D.h der Chip hält es aus verschleißt aber schneller? Aber das wäre dann 
sozusagen tolerant?

Wenn ich das richtig verstanden habe gibt der Atmega bei einer Anfrage 
entweder 0 oder 5v auf die Leitung. Also in dem Fall nicht günstig auf 
die Lebenserwartung des Chips?

Jetzt sendet der Chip zurück mit 3,3V die an ihm anliegen zum AVR. Wenn 
dieser das Signal erkennt braucht man keinen Pegelwandler und wenn nicht 
braucht man einen Pegelwandler da er aber 0,6*Vcc erkennt also 3V sollte 
man keinen brauchen.

So wenn ich jetzt richtig liege braucht man keinen Pegelwandler wenn
der Atmega das Signal erkennt. Und der Chip wird auch nciht wirklich 
belastet weil er ja nur bei einer Anfrage den 5V ausgesetzt ist.

Und zur Not gibts die Dinger eingentlich bei Reichelt unter 
Pegelwandler/ oder Levelshifter Level Shifter etc. finde ich da nichts? 
Dann würde ich das Teil sogar einfach so einbauen Funktion hin oder her. 
ich will bloß nicht bei 5 Shops bestellen müssen...

von Helmut L. (helmi1)


Lesenswert?

MasterG schrieb:
> Und der Chip wird auch nciht wirklich
> belastet weil er ja nur bei einer Anfrage den 5V ausgesetzt ist.

Du erkennst die 3V Z-Diode in meinem Plan?

von Busbastler (Gast)


Lesenswert?

MasterG schrieb:
> Wenn ich das richtig verstanden habe gibt der Atmega bei einer Anfrage
> entweder 0 oder 5v auf die Leitung. Also in dem Fall nicht günstig auf
> die Lebenserwartung des Chips?

Nein, der Atmega (wie jeder andere Busteilnehmer auch) ist entweder 
hochohmig (d.h. die via Pull-Up Rs am Bus anliegende Spannung bleibt 
weitgehend stabil) oder "open collector" (d.h. die Spannung auf dem Bus 
sackt ab und ist nahe bei GND).

> Jetzt sendet der Chip zurück mit 3,3V die an ihm anliegen zum AVR. Wenn
> dieser das Signal erkennt braucht man keinen Pegelwandler und wenn nicht
> braucht man einen Pegelwandler da er aber 0,6*Vcc erkennt also 3V sollte
> man keinen brauchen.

Nein, der Chip ist wie jeder Busteilnehmer entweder hochohmig oder 
niederohmig.

Also 3.3V am Bus einspeisen und glücklich werden. :)

Siehe auch: http://de.wikipedia.org/wiki/I%C2%B2C

von MasterG (Gast)


Angehängte Dateien:

Lesenswert?

Ich glaube ich habe meine Denkblockade erkannt.
Ich bin davon ausgegeangen, dass der AVR sozusagen, da er sich ja selbst 
versorgt kein VCC Anschluss besitzt Sprich Bild 1. Was falsch ist.

Eigentlich ist es ja auch logisch da er ja auch Slave sein kann, dass er 
so aussehen muss wie jeder andere Teilnehmer auch. Wie im Wiki 
http://upload.wikimedia.org/wikipedia/commons/3/3e/I2C.svg.
D.h. er bekommt ebenfalls irgendwoher eine Versorgungsspannung in dem 
Fall eine zweite diesmal mit 3,3V vom Bus.

Jetzt frage ich mich aber dafür wo dann VCC und GND beim Atmega 
reinkommen. Ich nehme an GND wird egal sein und ich kann dafür jeden pin 
nehmen. Aber wo schließe ich VCC an. Schließlich läuft der Atmega selber 
ja sonst mit 5V. Ich würde jetzt mal tippen, dass man sozusagen VCC der 
Leitung in AVCC also Pin 100 anschließt?
(Bild 2)

Falls es so ist. Vielen Dank für die Antworten ich glaube ich glaube ich 
hatte ne riesen Denkblockade indem ich den Atmega als Ursprung gesehen 
habe. Das lag auch daran das es die zweite Front hier gab die wahrsch. 
dachte ich meine wie man das regelt wenn man einmal eine 5V 
Versorgungsleitung hat und einmal eine 3,3V.

von Helmut L. (helmi1)


Lesenswert?

MasterG schrieb:
> Ich glaube ich habe meine Denkblockade erkannt.
> Ich bin davon ausgegeangen, dass der AVR sozusagen, da er sich ja selbst
> versorgt kein VCC Anschluss besitzt Sprich Bild 1. Was falsch ist.
>

Seit wann versorgt ein AVR sich selbst? Da ist kein Kraftwerk eingebaut.
Der braucht seine Versorgungsspannung an VCC und AVCC.

> Eigentlich ist es ja auch logisch da er ja auch Slave sein kann, dass er
> so aussehen muss wie jeder andere Teilnehmer auch. Wie im Wiki
> http://upload.wikimedia.org/wikipedia/commons/3/3e/I2C.svg.
> D.h. er bekommt ebenfalls irgendwoher eine Versorgungsspannung in dem
> Fall eine zweite diesmal mit 3,3V vom Bus.
>
> Jetzt frage ich mich aber dafür wo dann VCC und GND beim Atmega
> reinkommen. Ich nehme an GND wird egal sein und ich kann dafür jeden pin
> nehmen.

Sicher , das eine Schaltung im uC die sucht sich das raus :=)
GND gehoert an GND. Dafuer sind diese Pine da.

> Aber wo schließe ich VCC an.

An die Pine wo VCC dran steht.

> Schließlich läuft der Atmega selber
> ja sonst mit 5V. Ich würde jetzt mal tippen, dass man sozusagen VCC der
> Leitung in AVCC also Pin 100 anschließt?
> (Bild 2)

An VCC kommen deine 5V dran und an AVCC (eventuel ueber eine Drossel 
gefiltert)


Wenn du die I2C Hardware im AVR benutzt dann hat er in dem Moment Open 
Collektor / Open Drain Treiber.  Also diese beiden Port koennen nur 
Hochohmig oder Niederohmig werden. Und Niederohmig werden die nur nach 
GND.

Um den Bus zum laufen zu bringen brauchst du 2 Widerstaende nach 3.3V in 
deinem Fall. Der Pegel auf den Busleitungen kann dann nur noch zwischen 
0V (GND) und 3.3V sich aendern. Da der uC ja bei 5V Betriebsspannung 3V 
als Highpegel erkennt kannst du den ganzen Bus mit 3.3V Pegel betreiben. 
Du hast dann 0.3V Luft nach oben hin. Und wenn du auf Nummer sicher 
gehen willst dann mach noch 2 Z-Dioden von 3V am Bus dran. Noetig sind 
die aber in dem Fall nicht. Du kannst auch 2 Schottky Dioden (Anode an 
Bus , Kathode an 3.3V) anschliessen. Die begrenzen dir die Spannung dann 
auf 3.3V + Ud (ca. 0.3V). also rund 3.6V. Und wenn du das nicht alles 
glaubst dann miss bitte mal am Controller vorher mit dem Skope alles 
durch.

von MasterG (Gast)


Angehängte Dateien:

Lesenswert?

Helmut Lenzen schrieb:

>
> Seit wann versorgt ein AVR sich selbst? Da ist kein Kraftwerk eingebaut.
> Der braucht seine Versorgungsspannung an VCC und AVCC.
>
Ja was ich damit sagen wollte der AVR wird sowieso bereits versorgt weil 
auch noch andere Aufgaben als den Bus hat. Es liegt am AVR ein 
Gleichspannung von 5V an VCC an die über GND abgeführt wird.


>
> Sicher , das eine Schaltung im uC die sucht sich das raus :=)
> GND gehoert an GND. Dafuer sind diese Pine da.
>
Damit war gemeint jeder GND Pin.


>> Aber wo schließe ich VCC an.
>
> An die Pine wo VCC dran steht.
>
Aber dann habe ich doch genau das Problem, dass es eben nicht wie im 
Wiki ist sondern das mein Atmega als Master 5V hat. Dann genau hat mein 
Bus doch eben keine 3,3V sondern eben 5V.


>
> An VCC kommen deine 5V dran und an AVCC (eventuel ueber eine Drossel
> gefiltert)
>
Also an AVCC dann sozusagen die 3,3V der Bus Leitung VCC.

von Jörg S. (joerg-s)


Lesenswert?

MasterG schrieb:
>> An die Pine wo VCC dran steht.
> Aber dann habe ich doch genau das Problem, dass es eben nicht wie im
> Wiki ist sondern das mein Atmega als Master 5V hat. Dann genau hat mein
> Bus doch eben keine 3,3V sondern eben 5V.
Stichwort: Open Collector!
Der Atmega gibt an den I2C Pins ÜBERHAUPT KEINE SPANNUNG raus. Er kann 
NUR gegen Masse schalten.

>> An VCC kommen deine 5V dran und an AVCC (eventuel ueber eine Drossel
>> gefiltert)
> Also an AVCC dann sozusagen die 3,3V der Bus Leitung VCC.
AVCC hat mit I2C überhaupt nichts zu tun!

von MasterG (Gast)


Lesenswert?

Jörg S. schrieb:
> MasterG schrieb:
>>> An die Pine wo VCC dran steht.
>> Aber dann habe ich doch genau das Problem, dass es eben nicht wie im
>> Wiki ist sondern das mein Atmega als Master 5V hat. Dann genau hat mein
>> Bus doch eben keine 3,3V sondern eben 5V.
> Stichwort: Open Collector!
> Der Atmega gibt an den I2C Pins ÜBERHAUPT KEINE SPANNUNG raus. Er kann
> NUR gegen Masse schalten.
>
>>> An VCC kommen deine 5V dran und an AVCC (eventuel ueber eine Drossel
>>> gefiltert)
>> Also an AVCC dann sozusagen die 3,3V der Bus Leitung VCC.
> AVCC hat mit I2C überhaupt nichts zu tun!

Ok dann anders gefragt mein Bus wird jetzt mit 3,3V versorgt.
Und wo kommen dann die 3,3V jetzt am Atmega hin. Weil wenn ich sie an 
VCC anchließe, habe ich gleichzeitig 5V und 3,3V was ja logischer Weise 
nicht geht weil ja bereits 5V an VCC hängen. Oder eben der Atmega muss 
nirgendwo angeschlossen werden, weil er ja bereits versorgt ist und nur 
die Pins SDA und SCL müssen an den Bus angeschlossen werden. Das wäre 
dann was ich mit versorgt sich selbst meine und eben nicht über den 
Stromanschluss des Busses.

von MasterG (Gast)


Angehängte Dateien:

Lesenswert?

Sozusagen so wie jetzt im Anhang.
Und dann macht es acuh nichts das mein Atmega mit 5V betrieben wird und 
die SHT21 mit 3,3V da sie ja alle nichts raussenden über ihre Pins 
sondern nur den Stromfluss aktivieren indem sie Eingang sind oder 
sperren indem sie Ausgang sind. Sprich kein Pegelwandler. Ich dachte 
halt bisher immer sozusagen, dass das TWI des Atemgas dann seine eigene 
Stromvesorgung bekommt...

Und wie wähle ich dann die Widerstände und den Kondensator ich hätte 
jetzt 5kOhm und 100nF genommen.

von MasterG (Gast)


Lesenswert?

Süannungswandler natürlich an VCC angeschlossen.

von Helmut L. (helmi1)


Lesenswert?

MasterG schrieb:
> Oder eben der Atmega muss
> nirgendwo angeschlossen werden, weil er ja bereits versorgt ist und nur
> die Pins SDA und SCL müssen an den Bus angeschlossen werden.

Richtig.

MasterG schrieb:
> Und dann macht es acuh nichts das mein Atmega mit 5V betrieben wird und
> die SHT21 mit 3,3V da sie ja alle nichts raussenden über ihre Pins
> sondern nur den Stromfluss aktivieren indem sie Eingang sind oder
> sperren indem sie Ausgang sind.

So isses.

MasterG schrieb:
> Und wie wähle ich dann die Widerstände und den Kondensator ich hätte
> jetzt 5kOhm und 100nF genommen.

Passt.

von MasterG (Gast)


Angehängte Dateien:

Lesenswert?

Ok damit hätte sich ja alles erledigt. Dann hat das ganze 
Spannungsproblem eigentlich nie existiert.

Eine andere Frage noch: In den Anleitungen zu I2C sind die zwei PullUps 
immer auf der Hauptleitung gezeichnet. Jetzt ist es aber so, dass 
verschiedene Bausteine in ihren Datenblättern verschiedene PullUps 
angegeben haben. Also gehe ich mal davon aus, es macht nichts wenn ich 
sozusagen mehrere PullUps habe. Sprich je Verbraucher zwei Widerstände 
und einen Kondensator. Oder ist das dann ungünstig, weil z.B. durch 
mehrere Kondensatoren auch mehr durchfließen kann.

von Helmut L. (helmi1)


Lesenswert?

MasterG schrieb:
> Eine andere Frage noch: In den Anleitungen zu I2C sind die zwei PullUps
> immer auf der Hauptleitung gezeichnet. Jetzt ist es aber so, dass
> verschiedene Bausteine in ihren Datenblättern verschiedene PullUps
> angegeben haben. Also gehe ich mal davon aus, es macht nichts wenn ich
> sozusagen mehrere PullUps habe.

Doch es macht schon was aus. Der Gesammtwiderstand wird immer 
niederiger.

> Sprich je Verbraucher zwei Widerstände

An einer zentralen Stelle 2 Pullups mehr nicht. In den meisten Faellen 
reichen 3.3 KOhm oder 4.7 Kohm

> und einen Kondensator. Oder ist das dann ungünstig, weil z.B. durch
> mehrere Kondensatoren auch mehr durchfließen kann.

Jedem I2C Teilnehmer seinen eigenen Kondensator. Aber die haben 
normalerweise nix mit dem I2C zu tun. Das ist ein Grundsaetliches 
Problem der Abblockung der Versorgungsspannung. Das gilt fuer alle ICs.

von Mine Fields (Gast)


Lesenswert?

Falls noch nicht erwähnt: 
www.kip.uni-heidelberg.de/lhcb/Publications/external/AN97055.pdf

Funktioniert sehr gut.

von MasterG (Gast)


Lesenswert?

Helmut Lenzen schrieb:

>> Sprich je Verbraucher zwei Widerstände
>
> An einer zentralen Stelle 2 Pullups mehr nicht. In den meisten Faellen
> reichen 3.3 KOhm oder 4.7 Kohm
>
wenn ich jetzt 2 Bausteine haben sollte also einen bei dem im Datenblatt 
z.B. 5kOhm und in einem bspweise 10kOhm steht, nehme ich dann den 
größeren oder den kleineren? Wahrsch. dann den größeren?

Momentan stehe ich zwar noch nicht vor dem Problem da bei beiden 10kOhm 
als Bsp angegeben ist, aber interessant wäre es trotzdem...

von Floh (Gast)


Lesenswert?

MasterG schrieb:
> aber interessant wäre es trotzdem...

Der minimale Pullup-Widerstand wird durch die Treiberleistung der 
Open-Collector-Ausgänge des schwächsten Bausteins bestimmt.

Der maximale Pullup wird durch die Leitungskapazität, die 
Übertragungsgeschwindigkeit und die geforderte Flankensteilheit des 
Signals (-> I2c-Spec) bestimmt.

Meist nimmt man einfach was in der Gegend 2.7k bis 10k.
:-)

von Helmut L. (helmi1)


Lesenswert?

So und jetzt bau endlich mal was mit den ganzen Infos. Sei nicht so 
zimperlich mit den Teilen. Kein IC geht mit einem Pullup von 3 Kohm 
kaputt.

von MasterG (Gast)



Lesenswert?

Ja ich habe jetzt sozusagen die Schaltung und das Layout im Anhang.
Wenn das ganze Ok ist will ich es nächste Woche ätzen und bestücken.
Also sozusagen 4*SHT21 (der 5 Stecker wird für eine Relaispltine 
verwendet die ich zugekauft habe) die jeweils über Steckverbindungen an 
das I2C Controllerboard angeschlossen werden (Kabellänge ca 1m). Das I2C 
Board wird dann über zwei Stecker an den Atmega angeschlossen.
1* Um die Transistoren zu steuern da die SHTs leider fix adressiert 
sind.
1* Um den Atmega auch an den Bus zu hängen bzw. die Versorgungsspannung 
für den Bus zu geben.

PS: Die Flächen werde ich noch mit GND füllen um das Ätzbad zu schonen.
    Die Löcher am Rand sind Bohrlöcher um das ganze zu befestigen.

von Helmut L. (helmi1)


Lesenswert?

Den Basisvorwiderstand kannst du noch etwas hochohmiger machen (10K)

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.