IC: ADuM1250 I2C-Isolator

6

13.08.2015 von plaintron

ADUM1250I2CISO_01Manchmal fallen mir Bauteile in die Hände, die mich einfach faszinieren, weil sie so genial sind und ein Problem elegant lösen, das sonst nur mit einigem Aufwand in den Griff zu bekommen wäre.

Problemstellung:

In einer Schaltung ist ein Sensor verbaut, der eine bestimmte Größe misst, etwa Strom, Spannung, Temperatur, Licht oder Druck. Mit einem Mikrocontroller möchte ich diesen Wert via I2C-Bus verarbeiten und eine Regelgröße beeinflussen. Sensor und Controller liegen allerdings in getrennten Stromkreisen und müssen galvanisch isoliert sein.

Das Bastlerherz greift sofort zur Schublade mit den Optokoppern, sucht eine Highspeed-Variante raus und studiert die technischen Daten. 20-30 kHz schafft das Teil. Danach wird das Signal ziemlich unscharf, weil die Kapazitäten der verbauten Dioden wie ein Tiefpass-Filter wirken. Die Flanken werden also immer flacher mit steigender Frequenz, der effektive Pegel sinkt. Es gibt zwar durchaus schnellere Varianten, aber dann brauche ich immer noch etwas zusätzliche Logik, um ein- und ausgehende Signale zu sortieren, denn I2C arbeitet bidirektional, es wird also nur eine Leitung in beide Richtungen verwendet.

Aber es muss ja eine Lösung geben. Eine Netzwerkkarte etwa funktioniert doch auch mit galvanischer Trennung. Dort wird ein Transformator verwendet. Der kann allerdings nur Frequenzen übertragen, aber keine unterschiedlichen Impulslängen. Dazu wäre also ein Modulator notwendig, der die Impuse in Frequenz- oder Amplitudenwerte umsetzt. Bei unidirektionaler Datenübertragung wäre sogar das noch realisierbar, mit je einem  Modulator-IC und einem kleinen Übertrager pro Signal. Hier sind dann 3-4 Übertrager mit je einem Modulator und einem Demodulator pro Seite gefragt.

ADUM1250I2CISO_03Analog Devices hat es geschafft, diese komplette Mimik in ein SO8-Gehäuse zu packen, also Modulatoren, Demodulatoren und Übertrager, und das sogar bidirektional (ADuM1250 SCL und SDA bidirektional, ADuM1251 nur SDA). Im Ergebnis habe ich auf jeder Seite zwei Ein-/Ausgänge für Takt und Daten, dazu je zwei Pins für die Betriebsspannungen und das war es schon. An externen Bauteilen sind nur die üblichen Pullups notwendig, die aber ohnehin benötigt werden, sobald ich mit I2C-Signalen arbeite. Mit ein paar Euro Materialeinsatz habe ich mir also endlose Bastelarbeiten gespart.

Bei mir kommen diese Schaltungen im Labornetzteil-Projekt zum Einsatz und sind für die Kommunikation zwischen A/D- bzw. D/A-Wandler und Controller zuständig. Für andere Anwendungen gibt es diese Isolatoren ebenfalls, etwa für USB oder SPI.

 

Quellen:

I2C-bus specification and user manual
http://www.nxp.com/documents/user_manual/UM10204.pdf
Wikipedia: I2C
https://de.wikipedia.org/wiki/I%C2%B2C
microcontroller.net I2C Galvanische Trennung
http://www.mikrocontroller.net/articles/I%C2%B2C#Galvanische_Trennung
AN 913 – Isolating I2C Interfaces (Analog Devices)
http://www.analog.com/media/en/technical-documentation/application-notes/AN_913.pdf

 

Advertisements

6 Kommentare zu “IC: ADuM1250 I2C-Isolator

  1. lowcurrent sagt:

    Ich schonwieder..

    Ich habe diese ADUMs schon oft eingesetzt (USB, LVDS, SPI und auch I²C). Bei I²C hat man ja leider das Problem, dass SDA und SCL beide bidirektional sein sollten. Damit muss der Baustein der den Bus trennt (in diesem Fall der ADUM) irgendwie unterscheiden ob ein Teilnehmer den Bus runterzieht oder ob er dies selbst tut. Dafür wird dann ein Pegel verwendet, der etwas höher liegt als die normale 0. Und genau das wird zum Problem, wenn man mehr als einen solchen Isolator einsetzt. Wenn Du also noch die Wahl hast, dann würde ich mir überlegen ob I²C wirklich der Bus ist, den du einsetzen willst.

    Gefällt mir

  2. plaintron sagt:

    Ah, danke für die Info. Ich habe hin und her überlegt wie ich das anstelle, aber letztendlich hat die Verfügbarkeit der AD- und DA-Wandler den Ausschlag für I2C gegeben, zumal ich SPI für die Displays brauche. Wenn ich den ersten Testaufbau mache, sehe ich hoffentlich ob das lösbar ist oder ob ich noch mal umdisponieren muss. Ursprünglich hatte ich zwei Hilfscontroller für die Datenerfassung eingeplant, ATtiny oder so. Die könnten dann schön gemütlich über Optokoppler via UART mit dem Hauptcontroller telefonieren. Mal sehen was draus wird.

    Gefällt mir

  3. lowcurrent sagt:

    Ich würde eher den Ansatz mit den Hilfscontrollern wählen, so wie es auch in Tischmultimetern usw. gemacht wird. Dann kann man ein generisches Netzteilmodul bauen und später beliebig viele davon aneinanderreihen. Vollständig isolierte Versorgungen benötigt Du ja ohnehin.
    Bin gespannt auf Details zu Deinem Netzteil. Vor allem was die Performance angeht (Reaktion auf Lastsprünge usw).

    Gefällt mir

  4. plaintron sagt:

    Das mit der Modularität ist ein gutes Argument. Möglicherweise sollen nämlich die zwei Hilfsspannungen (5 und 12 V) auch einstellbar werden.

    Aber ich habe noch mal in meine Entwürfe geschaut, was ich mir da letztes Jahr so gedacht habe. Ich habe einen Teensy 3.1 gekauft, und der hat zwei I2C-Kanäle. Deshalb hatte ich das mit den Hilfscontrollern verworfen. Sogar ein CAN-Interface ist drin. Naja, der Herbst wird neue Erkenntnisse bringen, bis dahin ist noch viel anderes Zeugs zu erledigen 🙂

    Gefällt mir

  5. lowcurrent sagt:

    CAN sollte man ja eigentlich zwischen Controller und Transceiver auch gut isoliert bekommen, dann ist nur die Frage wozu überhaupt noch CAN, Wenn der eigentliche Link über Optokoppler läuft ;).
    Bei so einem Netzteil sollte es ja auch ein einfacher UART tun. Es müssen ja nicht mal n UARTs vorhanden sein für n Module. Man kann ja einfach eine DaisyChain machen.

    Gefällt mir

  6. plaintron sagt:

    Bei dem Controller ist echt alles im Überfluss vorhanden, da kann ich mich überhaupt nicht entscheiden. Vielleicht mache ich noch einen universellen Laborbus über CAN, auf dem dann alle meine Selbstbau-Geräte chatten können 😉

    Gefällt mir

Kommentieren

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

Blogverzeichnis - Bloggerei.de
%d Bloggern gefällt das: