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
Du brauchst einen Pegelwandler für I2C? http://www.kip.uni-heidelberg.de/lhcb/Publications/external/AN97055.pdf Seite 10 :-)
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/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...
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?
>Oder brauche ich jetzt noch was dazu?
Ja, wie etliche male geschrieben braucht es einen PEGELWANDLER.
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.
Süannungswandler natürlich an VCC angeschlossen.
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.
Falls noch nicht erwähnt: www.kip.uni-heidelberg.de/lhcb/Publications/external/AN97055.pdf Funktioniert sehr gut.
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. :-)
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.