Analoge Ein- und Ausgänge

Der RevPi Flat verfügt über einen analogen Eingang und einen analogen Ausgang.

Analoger Eingang

Mit dem analogen Eingang kannst Du entweder Spannung im Bereich von 0 – 10 V oder Strom im Bereich von 0 – 20 mA messen.
U IN: Spannungsmessung 0 – 10 V DC
I IN: Strommessung 0 – 20 mA DC
Hinweis: Strom- und Spannungseingang dürfen nicht gleichzeitig beschaltet sein, ansonsten wird das Messergebnis verfälscht.

Der Strom wird über einen internen 240-R-Widerstand in eine proportionale Spannung umgewandelt.
Der dafür verwendete Analog-Digital-Konverter (ADC) MCP3550-50 bietet eine relativ hohe nutzbare Auflösung von 21 Bit, benötigt jedoch mit 85 Millisekunden pro Messung vergleichsweise lang.

Es gibt zwei Wege, um auf die Schnittstellen zuzugreifen: entweder durch Lesen und Beschreiben des Linux sysfs oder über unser RevPi Konfigurationstool PiCtory und das Softwaretool piTest, mit dem Du auf das Prozessabbild des Systems zugreifen kannst. Im Folgenden beschreiben wir beide Methoden getrennt für Input und Output.

Werte auslesen mit Linux sysfs

Spannung auslesen (0-10 V)

  • Gib folgenden Befehl ein, um den Eingangswert des ADC zu erhalten:
    cat /sys/bus/iio/devices/*/in_voltage0*
  • Konvertiere den ausgelesenen Rohwert in „in_voltage0-voltage1_raw“ mit der Formel „(($raw * 12500) >> 20) + 12500“, um die Spannung in mV zu erhalten.

Strom auslesen (0-20 mA)
Der Strom sollte auf dem I IN Port des RevPi Flat zur Verfügung stehen. Dividiere die ausgelesene Spannung (s. o.) durch einen Widerstand von 240 Ohm, um den Strom in mA zu erhalten.

Werte auslesen mit piTest

Du kannst den Strom-/Spannungsmodus für den RevPi Flat in PiCtory mit der Variablen AInMode konfigurieren:
AInMode Voltage 0-10V (Standard)
AInMode Current 0-20mA

  • Lese den Strom- oder Spannungswert einfach aus durch Eingabe von piTest -r AIn

Analoger Ausgang

Am analogen Ausgang kannst Du Aktoren, wie z. B. Frequenzumrichter anschließen. Er kann eine Spannung zwischen 0 und 10 V ausgeben.
Der dafür verwendete Digital-Analog-Konverter (DAC) DAC121S101 hat eine Auflösung von 12 Bit.

Werte eingeben mit Linux sysfs

  • Gib folgenden Befehl ein, um den Wert in den DAC einzugeben:
    echo 2047 | sudo tee /sys/bus/iio/devices/*/out_voltage0_raw
  • Gib einen Wert zwischen 0 und 4095 in den DAC in „out_voltage0_raw“ ein, um eine Spannung zwischen 0 und 10 V auszugeben.

Werte eingeben mit piTest

  • Gib einfach den Analogwert in mV in die Variable AOut ein, z. B. 5000 mV für den Analogausgang: piTest -w AOut,5000

Weitere Informationen zur Implementierung:

Softwareseitig werden der DAC121S101 und MCP3550-50 wie IIO-Module behandelt, deren Schnittstelle in sysf als „/sys/bus/iio/devices/“ ausgeführt ist, siehe auch hier.
Nachdem die Konverter erfolgreich registriert sind, erscheint normalerweise folgendes Kernelprotokoll.

pi@RevPi0000:~ $ dmesg | grep "spi.*consumer"
[ 4.461004] mcp320x spi0.1: Linked as a consumer to regulator.1
[ 5.747592] ad5446 spi0.0: Linked as a consumer to regulator.2

Dem sysfs Ordner werden zwei Unterordner für die Konverter als „/sys/bus/iio/devices/iio:deviceX“ hinzugefügt. Dabei kannst Du X zur Unterscheidung der Konverter verwenden. Die Reihenfolge hängt von der Registrierung der Geräte ab und hat daher keine feste Zuordnung. Die Zuordnung wird jedoch ersichtlich, wenn Du Dir den Inhalt der Ordner anschaust. Der Ordner mit den „out_voltage*“-Dateien ist das Ausgabe- und damit das DAC-Modul. Der Ordner mit den „in_voltage*“-Dateien ist das Eingabe- und damit das ADC-Modul.
Bei der Methode mit piTest behält piControl diese Werte dauerhaft im Prozessabbild, und Du kannst die Werte mit piTest lesen und beschreiben.