Entwicklung und Realisierung einer industriefähigen Erweiterungsplatine

mit digitalen sowie analogen Ein- und Ausgängen

für den Raspberry Pi

 

 

 Autor: Mark Schmiedel

 Rpioboard overall

  Abbildung 1 Prototyp Rpi I/O Board

 

 

 

 

Einleitung

 

Heutzutage gelten Elektronikgeräte wie z.B. Computer als Unterstützung des Menschen im Alltag sowie in der Industrie. Darunter fällt ebenfalls der kleine Einplatinencomputer Raspberry Pi, der aufgrund seiner Größe und des geringen Anschaffungspreises von anderen vollwertigen Computer hervorsticht. Weitere Merkmale wie z.B. die geringe Stromaufnahme, Internetfähigkeit sowie die Programmierfähigkeit der digitalen Ein- und Ausgabepins (sogenannte GPIO – Pins) zeichnen diesen besonders aus. Durch das zunehmende Interesse an der "Homeautomatisierung", insbesondere bei der Heimsteuerung, wird der Markt an Erweiterungsplatinen für den Raspberry Pi regelrecht überschwemmt. Dies ist ein weiteres Pro Argument, das für den Mini-Computer spricht.

Problematisch ist, dass die meisten "Shields" den Einplatinencomputer nur mit einer zusätzlichen Baugruppe erweitern, beispielsweise mit digitalen Ausgängen. Daher stammt die Motivation eine Platine zu entwickeln, die digitale sowie analoge Ein- und Ausgänge aufweist. Zudem sollten die jeweiligen Potentiale der Baugruppen getrennt werden um somit einen Schutz vor Überspannung und zu hoher Stromaufnahme für den Raspberry Pi zu gewährleisten. Folglich wäre die Erweiterungsplatine industrietauglich und in Kombination mit dem "kreditkartengroßen" Computer in der Industrie 4.0-konform.

 

 


 

 

Anforderungen

Nach umfangreicher Recherche und Beobachtung des Zubehörmarktes bzw. der schon bereits vorhandenen „Shields“, soll eine Platine entwickelt werden, die die Funktionen mehrerer Erweitungsplatinen vereint. Daraus haben sich folgende Anforderungen ergeben:

Formularbeginn

Formularende

 

Digitale Ausgänge

-8 digitale Ausgänge
-Strom pro Ausgang: mind. 500 mA
-Schaltspannung: 24V (extern)
-Isolationsspannung: mind. 500 V (AC)
-Digitalschnittstelle galvanisch getrennt von den Ausgängen
-LED soll signalisieren, ob Ausgang geschaltet (HIGH) ist

 

Digitale Eingänge

-8 digitale Eingänge
-Schaltspannung: 24V
-Isolationsspannung: mind. 500 V (AC)
-Digitalschnittstelle galvanisch getrennt von den Eingängen
-Verpolungsschutz
-Überspannungsschutz bzw. Überstromschutz
-LED soll signalisieren, ob Eingang getrieben (HIGH) wird

 

Analoge Eingänge

-4 analoge Eingänge
-Digitalschnittstelle galvanisch getrennt von den Eingängen
-Isolationsspannung: mind. 500 V (AC)
-Auflösung: 12 Bit
-Software: Möglichkeit der Kalibrierung mittels einer externen Referenz

 
 Spannungs-/Stromeingänge
-Von den 4 analogen Eingängen sollen 3 eine Spannung messen
-Spannungsbereich: 0- +10 V
-Per Bestückungsoption kann der Messbereich auf Stromeingang umgestellt werden (0-20 mA)

 

         PT100-Eingang

-Der vierte Eingang soll ein PT100-Eingang werden
-Einfache Zweidrahtmessung
-Linearisierung der typischen PT100-Kennlinie soll in Hardware erfolgen
-Messbereich: -40 °C bis 200 °C

 

Analoge Ausgänge

-Digitalschnittstelle galvanisch getrennt von den Ausgängen
-Isolationsspannung: mind. 500 V (AC)
-Ausgangsspannungsbereich: -10 - +10 V
-Kurzschlussfest
-Nach dem Einschalten 0 V an allen Ausgängen, auch wenn der Raspberry Pi das Board nicht anspricht
-Auflösung: 16 Bit
-Software: Möglichkeit der Kalibrierung mittels eines externen Messgerätes

 


 

Realisierung des Projektes

 

Grundüberlegung

 

Anhand Abbildung 2.1 ist das Konzept des Rpi I/O Boards gut sichtbar. Die Erweiterungsplatine wird direkt mit einer 40 poligen Buchsenleiste auf die Stiftleiste des Raspberry Pis gesteckt. Somit ist die Kommunikation per „SPI“ zwischen dem Master, in diesem Fall der Prozessor BCM2835, und den einzelnen Baugruppen möglich. Durch diese Art der festen Steckverbindung können zusätzlich die Funktionen der GPIOs genutzt werden.
Der Prozessor des Mini-Computers fungiert als Zentrale und kann über 4 Leitungen mit den jeweiligen Baugruppen Daten versenden und empfangen. Zur Beginn des Informationsaustausches, setzt der „Master“ die „Chip-Select“-Leitung des jeweiligen „Gesprächspartner“ auf LOW, um diesen zu benachrichtigen, dass dieser angesprochen wird. Theoretisch wäre somit eine Interaktion mit nur 2 SPI-fähigen Modulen möglich, da der Raspberry Pi nur über 2 Chip-Select Leitungen verfügt.  Für Abhilfe sorgt ein einfacher Multiplexer/Demultiplexer, der mittels 2 GPIO-Leitungen die jeweiligen angeschlossen Leitungen, wie z.B. MOSI, MISO, umleiten kann.

Für die digitalen Ausgänge kommt ein Bauteil der Firma Infineon zum Einsatz. Der ISO1H812G ist ein 8 Kanal-High-Side-Switch mit 8 isolierten und vor Überspannung geschützten Ausgängen, welche bis 625mA treiben können. Ein weiteres wichtiges Merkmal ist die bereits vorhandene interne galvanische Trennung. Dies hat den Vorteil, dass kein weiteres Bauteil für die Potentialtrennung auf die Platine montiert werden muss und spart somit Platz und Kosten bei der Herstellung.

 BlockschaltbildneuAbbildung 2.1      Blockschaltbild SPI Kommunikation und galvanische Trennung

 

 

Das Bauelement SN65HVS881 von Texas Instruments dient für die 8 digitalen Eingänge und wird oft in industriellen Automatisierungsanlagen eingesetzt. Jeder Eingang besitzt einen eigenen Ausgang, an den jeweils eine Status-LED zur Visualisierung des geschalteten Eingangs angeschlossen werden kann. In dem Projekt wird dieses Bauteil mit einem digitalen Isolator zur Potentialtrennung kombiniert. Dabei wird die externe Versorgungsspannung des SN65HVS881 von der Spannung des Raspberry Pis getrennt.

 

Als Schutzbeschaltung (vgl. Abbildung 2.2) für die digitalen Eingänge kommen Schottky-Dioden und MELF-Widerstände zum Einsatz. MELF(Metal Electrode Lead Faces) Widerstände sind zylinderförmige SMD Bauteile die hinsichtlich Impulsstrombelastbarkeit, Temperaturstabilität und Spannungsfestigkeit gegenüber herkömmlichen SMD-Bauteile bessere Werte aufweisen. Beispielweise liegt die zulässige max. Spannung bei SMD-Widerständen in der „0603“-Bauform bei 75 V, wobei bei MELF-Widerständen die max. Spannung bei 200V liegt. Diese Widerstände werden ebenfalls an den analogen Eingängen (vgl. Abbildung 2.3) verwendet.

 

 DigINSchutzbeschaltung

Abbildung 2.2 regeneriertes 3D Modell der Schutzbeschaltung der digitale Eingänge

 

 

AnaINSchutzbeschaltung

Abbildung 2.3 regeneriertes 3D Modell der Schutzbeschaltung der analogen Eingänge

 

 

Da die 4 Potentialgrupppen jeweils getrennte Potentiale haben, müssen diese separat mit einer Spannungsquelle versorgt werden. Die Potentialgruppe A bedient sich der Spannung von +5 V bzw. +3,3 V von den Pins des Raspberry Pis. Die Bauelemente wie z.B. die Operationsverstärker, Analog-Digital Converter und Digital-Analog Converter aus der Gruppe B benötigen ebenfalls +5V bzw. +12V und -12V. Hierbei werden +24V extern eingespeist und von einem DC/DC Wandler auf +12V/-12V gewandelt. Die Operationsverstärker in der Potentialgruppe B benötigen, wie man Anhand der Simulation (Abbildung 2.2) erkennen kann, diese Spannungen, um im negativen Spannungsbereich arbeiten zu können. Die negative Spannung an den analogen Ausgängen wird über eine Offsetverschiebung an den Operationsverstärkern ermöglicht.

 

Da der DAC und der ADC eine hinreichend genaue Spannung von +5 V benötigen, wird ein Spannungsregulierer eingesetzt. Die Potentialgruppen C und D benötigen +24 V, somit werden keine weiteren Schaltungen zur Spannungsregulierung benötigt. Es werden nur Dioden zum Schutz vor Überspannung und Verpolung eingesetzt.

 

Wie man anhand der Graphen in der Abbildung 2.4 erkennen kann, liegt am analogen Ausgang eine Spannung von ca. -10V an, wenn die Spannung am Ausgang des DACs 0V beträgt. Dies kommt durch die Offsetverschiebung um 5V am Operationsverstärker zu Stande (vgl. Abbildung 2.3 Spannungsquelle V3). Dies hat folglich die Ursache, dass die Spannung am invertierenden Eingang des Operationsverstärkers U2 (vgl. Abbildung 2.3) bei -5V liegt und von diesem mit dem Verstärkungsfaktor von 2 multipliziert wird.

Relais, die vom Raspberry Pi direkt angesprochen werden, schaffen bei diesem Problem Abhilfe, indem sie den Stromkreis im ausgeschalteten Zustand öffnen.

 

 

Simulation DAC

Abbildung 2.4 Schaltung DAC

 

 

DAC Kennlinie

Abbildung 2.5 Kennlinie Simulation DAC Grün=Ausgangsspannung Blau=Eingangsspannung (Digital-Analog-Converter)

 

An den analogen Eingängen soll eine Spannung von 0-10 V bzw. ein Strom von 0- 20mA gemessen werden können. Da aber der gewählte Analog-Digital Converter einen Arbeitsbereich von 0-5 V besitzt, muss die Schaltung dementsprechend aufgebaut und dimensioniert werden. Die Umstellung des Messungsbereichs von Strom- auf Spannungsmessung soll per Bestückungsoption realisiert werden.  Hierbei wird auf der Platine nur ein 0 Ohm Widerstand eingelötet.

Anhand folgender Simulationen(Abbildung 2.5; Abbildung 2.7) ist zu erkennen, dass sich jeweils bei der Strom- sowie bei Spannungsmessung die jeweiligen Ausgangssignale im Arbeitsbereich des ADCs befinden.

 

 Ain strom sim

Abbildung 2.6 Kennlinie Simulation Strommessung

 

Ain strom

Abbildung 2.7 Schaltung zur Simulation der Strommessung

 

Durch die Entfernung der Lötbrücke "R7"  wird der Messbereich auf Spannungsmessung (Abbildung 2.6) umgestellt und man erhält folgende Messwerte: Bei einer Eingangsspannung von +10V liegen ungefähr +5 V am ADC an.

 

 

Ain sim

 Abbildung 2.8 Kennlinie Simulation Spannungsmessung 

 

Der vierte analoge Eingang soll laut den Anforderungen ein PT-100 Eingang zur Temperaturmessung sein. Hierbei muss die Linearisierung der typischen Kennlinie (Abbildung 2.8) per Hardware erfolgen. Die allgemeine Messung wurde mit der Verwendung einer Wheatstone'sche Messbrücke realisiert. Bei einer Veränderung der Temperatur verändern sich zeitgleich der Widerstand des Sensors und proportional dazu die Diagonalspannung der Messbrücke, die anschließend vom ADC gemessen wird. Die Linearisierung des PT 100 wird standardgemäß mithilfe einer positiven Rückkopplung realisiert. Hierbei wird der Ausgang des Operationsverstärkers an den nicht invertierenden Eingang zur Stromerweiterung gekoppelt.

 

 

simulation Pt100 linear

 Abbildung 2.9 Simulation der linearisierten PT-100 Kennlinie

 

 


 
Software

 

Zum Ansprechen der einzelnen Baugruppen wurde eine komplette C-Bibliothek erstellt. Diese umfasst mehrere Funktionen, um die jeweiligen Ausgänge zu steuern und die Eingänge auszulesen. Für die Erstellung der Software wurde explizit die Programmiersprache C verwendet, da diese noch bis heute in der Industrie verwendet wird und auf fast allen Computersystemen, u. a. auch Linux, zur Verfügung steht. Durch die Temperaturabhängigkeit einzelner Bauteile, kann es zu verfälschten Messungwerten bzw.  zu ungenauen Spannungen  an den Ausgängen führen. Um diese Fehler zu kompensieren, wurden Funktionen programmiert, die es ermöglichen die analogen Baugruppen zu kalibrieren. 

 

Die Bibliothek bzw. die Funktionen wurden mit dem  Software-Dokumentationswerkzeug Doxygen kommentiert und dokumentiert. Dadurch wird das Arbeiten und Programmieren mit der Bibliothek für Außenstehende erleichtert.

Abbildung 3 zeigt einen Ausschnitt aus einem Testprogramm für die digitalen Ausgänge. Hierbei wird die Wertigkeit  des 2. Ausgangs mit jeweils einer Unterbrechung von 10 ms getoggelt. Das Ergebnis wurde mit einem Oszilloskop validiert (vgl. Abbildung 4.1). 

 

 

testprogramm

 Abbildung 3 Testprogramm im Nano-Editor

 

 


 

Validierung

 

Die Validierung der Zusatzplatine erfolgte mit Hilfe von Messgeräten, wie z.B Multimeter und Oszilloskop. Um die Funktion der analogen Baugruppe zu analysieren, wurden die einzelnen Ausgänge kalibriert und anschließend per Software auf eine bestimmte Spannung eingestellt und per Multimeter ausgelesen. Nach Kalibrierung wurde wie erwartet die eingestellte Spannung per Multimeter verifiziert. An den Eingängen wurde eine Referenzspannung eingespeist und anschließend per Software ausgelesen und verifiziert. 

 

Die Analyse der digitalen Baugruppen geschah nach demselben Prinzip. Die digitalen Eingänge wurden mit den digitalen Ausgängen verbunden. Durch das Senden eines „High-Pegels“ in einer bestimmen Reihenfolge an die jeweiligen Ausgänge mussten parallel dazu die Eingänge einen High-Pegel messen und anzeigen. Hierbei wurde ein Fehler im Platinen-Layout analysiert. Die Software erkannte, dass zwar am richtigen Kanal ein High Pegel vorhanden war, aber es wurde nicht von der dazugehörigen LED signalisiert. Es wurde ein Testprogramm (vgl.
Abbildung 3) programmiert und ausgeführt,  um die Geschwindigkeit und zeitgleich die Funktion der digitalen Ausgänge mit einem Oszilloskop auswerten zu können.

 

IMG 28661

 Abbildung 4.1 Oszilloskop Kennline des getoggelten digitalen Ausgangs

 

Der PT-100 Eingang wurde mit Hilfe eines dekadischen PT-100 Simulators validiert. Die Dekade dient zur Simulation eines kalibrierten PT-100 Sensors. Auf der Dekade selbst befinden sich mehrere Drehschalter, die zur Einstellung einer gewünschten Temperatur fungieren. Zeitgleich verändert sich linear zur Temperatur der Widerstand der Dekade. Somit konnte man eine gewünschte Temperatur simulieren und diese mit der in der Software ausgelesenen Temperatur vergleichen.

 

 

 Dekade

Abbildung 4.2 Aufbau zur Validierung des PT-100 Sensors

 


 

Fazit

 

Durch den großen Formfaktor der Platine und durch den Fehler der Signal LED an den digitalen Eingängen kam die Idee zur Erstellung einer weiteren Revision des Rpi I/O Boards. Zusätzlich sollen LEDs nicht nur den Status der Ein- sowie Ausgängen signalisieren, sondern ebenfalls die korrekte Konnektivität sowie den Betrieb des Raspberrys Pis anzeigen. Ein kleinerer Formfaktor des Shields würde die Kombination mit dem Mini-Computer ggf. handlicher machen. Dies würde aber bedeuten, dass gewisse Baugruppen entfallen würden. Somit kam die Idee auf die Baugruppen direkt zu trennen, sodass mehrere Platinen entstehen, welche aber trotzdem untereinander kompatibel sind. Die Idee hierbei wäre, die Platinenunterseite mit einem Stecker zu versehen, wobei die Oberseite mit einer Stiftleiste versehen wird. Praktischerweise könne man so besser selektieren und den Raspberry Pi mit nur der benötigten Platine erweitern. Wären aber mehrere Funktionen erwünscht, so könne man, dank der Kompatibilität, mehrere Erweiterungen übereinander verbinden.

 

 

 

 

© Mark Schmiedel