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?
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.
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?
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?
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.
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...
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?
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.
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
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...
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
>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.
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/I2Chttp://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...
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...
:-)
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...
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.
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?
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.
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.
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?
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?!
>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.
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.
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.
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...
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?
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
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.
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.
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.
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!
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.
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.
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.
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.
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.
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...
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.
:-)
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.