Auf der Suche nach Methoden der BIdirektionalen Pull-Down-Bus Pegelwandlung für I²C habe ich verschiedene Lösungen im Internet gefunden und diese Methode erarbeitet (siehe Bilder) Die Schaltung beruht auf RTL und nutzt zwei verschiedene BJTs um das Timing zu garantieren. Die Open-Collector Ausgänge (ganz Außen) müssen Langsamer als die Sperrtransistoren (Innen) sein. Bei guter Auslegung funktioniert die Schaltung bis 400kb/s. Bei falscher Auslegung kommt es zur Oszillation. Die Widerstände an den Basen sind nötig um diese schnell zu entladen und vollständig zu sperren. Die Dioden sind verzichtbar. Das Prinzip der Schaltung ist auch anders realisierbar z.B. mit MOSFETs und könnte dann für höhere Geschwindigkeiten geeignet sein. Die ICs sollten nach dem gleichen Prinzip funktionieren, nur eben mit anderen Bauteilen. Gleiches Thema: Beitrag "I2C 3.3V und 5V Device" Beitrag "I2C von 5 auf 3,3V drosseln (Pegelwandler,Voltregulator;Dioden.)" [ prior art ]
Zuviel Bauelemente übrig? Einfacher: http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter
Torben K. schrieb: > Einfacher: > http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter Kannte ich schon.
Sascha schrieb: > Noch einfacher: > Beitrag "1 Transitor + 2 Widerstände = Verwirrung" Nicht wirklich zum Thema aber ein interessanter Thread. Da in Basisschaltung die Stromverstärkung eh 1 ist macht es nicht viel aus wenn man einen BJT weg lässt.
Das Übereinanderschieben von Bauteilen, ihren Beschriftungen, und verlegen von Leitungen durch Bauteilsymbole hindurch macht deinen Stromlaufplan zu einem wahren Kunstwerk. Ich könnte stundenlang drauf starren und die Schönheit bewundern. Die beabsichtigte Funktion der Schaltung verdeutlicht sich mir dadurch allerdings nicht.
:
Bearbeitet durch User
Joe F. schrieb: > Das Übereinanderschieben von Bauteilen, ihren Beschriftungen, und > verlegen von Leitungen durch Bauteilsymbole hindurch [...] > Die beabsichtigte Funktion der Schaltung verdeutlicht sich mir dadurch > allerdings nicht. Daher habe ich mir extra die Mühe gemacht eine abstrahierte Version zu zeichnen. Ich habe auch den Schaltplan aufgeräumt bevor ich das Bild davon machte. Ohne gute Erklärung versteht man so eine Schaltung nur, wenn man sie systematisch im Kopf durch simuliert und alle stabilen Zustände notiert.
Hallo, naja... zumindest hat I2C bei weitem nicht soviele stabile Zustände wie Deine Schaltung Bauteile. Das mit dem Aufgeräumt haben stimmt schon, sagt mein Enkel auch immer wenn er fertig ist... Gruß aus Berlin Michael
:
Bearbeitet durch User
Stefan U. schrieb: > Verstehe ich auch nicht. Die Schaltung ist symmetrisch. Von außen nach innen: Die äußeren Transistoren sind die Open Collector Ausgänge. Die nach innen nächsten sind die "lese und invertiere" Transistoren. Die inneren verhindern, dass die Schaltung sich selbst ließt. Die Schaltung ist offensichtlich keine preiswerte Lösung für wenige ICs, sondern nur dann interessant, wenn viele ICs unterschiedlicher Spannung an einem Bus hängen. In 99% der Fälle dürften die Lösungen mit FET oder BJT als Spannungsbegrenzer reichen. BJTs mit eingebauten Widerständen gibt es schon für unter zwei Cent. In der Massenfertigung oder integriert wäre die Schaltung also nicht teuer.
Was spricht dagegen, einen PCA9512 zu verwenden? http://www.nxp.com/documents/data_sheet/PCA9512A_PCA9512B.pdf
Rufus Τ. F. schrieb: > Was spricht dagegen, einen PCA9512 zu verwenden? Keine Ahnung, wen und warum fragen sie denn? Ich würde mutmaßen, dass es das Selbe ist, was auch noch gegen andere PCA951x oder welche von anderen Firmen spricht. Das ist aber nicht das Thema hier.
Was bei I2C auch zu beachten ist: egal welche Seite das Signal auf Low zieht, es muss auf beiden Seiten (3.3V und 5V) ein Low auf der Leitung zu sehen sein. Dies ist z.B. beim Clock-Stretching wichtig. Deine Schaltung behandelt diesen Zustand nicht korrekt.
Joe F. schrieb: > Dies ist z.B. beim Clock-Stretching wichtig. > Deine Schaltung behandelt diesen Zustand nicht korrekt. Stimmt ! Das mit dem Clock-Stretching ist mir gar nicht in den Sinn gekommen. Prinzipiell sollte es funktionieren, aber die Schaltung braucht zu lange um zu merken, dass die andere Seite von Außen und nicht von Innen herunter-gezogen wird. In der Simulation dauert es 1,6µs bis die Schaltung auf der Senderseite den Pegel korrekt senkt.
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.