Zum Inhalt

Arduino Due mit DaqOpen

Kennst du das auch?
Du möchtest eine Messung durchführen, aber das passende Messgerät fehlt oder ist zu teuer? Ein Oszilloskop bietet nicht genügend Kanäle, und die Datenaufzeichnung gestaltet sich kompliziert? Dann könnte das DaqOpen-Konzept die perfekte Lösung für dich sein! Es bietet eine kostengünstige Möglichkeit zur kontinuierlichen Datenerfassung mit Samplingraten von 10 kHz bis 1 000 kHz. Damit lassen sich zahlreiche Messungen elektrischer Größen durchführen. Alles, was du benötigst:

  • Arduino DUE Board
  • Grundverständnis für Signalkonditionierung
  • Leidenschaft fürs Basteln

Und das Ganze für unter 40€!

Meine ersten Experimente habe ich bereits 2017 durchgeführt. Heute, acht Jahre später, hat das Thema nichts an Aktualität verloren. In dieser Zeit habe ich zahlreiche Messungen durchgeführt, darunter Spannungs- und Strommessungen sowie Vibrations- und Schallanalysen. Seit einem halben Jahr arbeite ich daran, diese Lösung zu generalisieren und für ein breiteres Publikum zugänglich zu machen. Dank der verstärkten Nutzung von Python in Forschung und Entwicklung habe ich eine umfassende Toolbox erstellt, die den Einsatz des Arduino DUE als leistungsfähiges Datenerfassungsmodul ermöglicht.

Das Board im Detail

Das Arduino DUE Board nutzt den Mikrocontroller SAM3X8E mit folgenden Eigenschaften:

  • Onboard ADC mit bis zu 1 MS/s (kumuliert)
  • 12 Single-Ended oder 6 Differenzielle Eingänge (0-3.3V)
  • 12 Bit Auflösung
  • DMA-Funktionalität für kontinuierliche Datenerfassung
  • USB 2.0 Interface für schnelle Datenübertragung

Das Leben als DAQ-Gerät eingehaucht wird mittels Flashen der Firmware duedaq, anschließend kann das Board über die daqopen-lib als Datenerfassungsgerät genutzt werden. Die Verbindung erfolgt über den nativen USB-Anschluss mit dem PC oder Edge-Devices wie dem Raspberry Pi. Einfache Installation der daqopen-lib per PIP, und schon kann es losgehen. Für einen schnellen Einstieg lohnt ein Blick auf das Tutorial.

Damit haben wir den ersten wichtigen Baustein für die Versuche. Für die eigentlichen Endanwendungen muss das zu messende analoge Signal aufbereitet werden, damit es im Arbeitsbereich des ADC liegt. Der ADC kann nämlich nur Spannungen von 0 bis 3,3 V erfassen. Das heißt, höhere Spannungen müssen geteilt werden bzw. niedrigere mit Verstärkerschaltungen angepasst werden. Bipolare Signale sind eine kleine Herausforderung, Lösungen dafür stelle ich in einem künftigen Beitrag vor.

Performance

Wir schauen uns jetzt mal an, wie gut die Datenerfassung funktioniert und für wen und wofür man sie benutzen kann. Dafür habe ich ein paar Tests gemacht, die ich euch jetzt nach und nach zeigen werde.

Messaufbau

  • Anschluss des Arduino Due an Raspberry Pi 3A+
  • Nutzung einer isolierten Spannungsquelle (Akkupack) zur erdfreien Messung
  • Nutzung der daq-zmq-app zur Datenübertragung über WIFI
  • Messgerät zur Prüfung der Genauigkeit: Keysight 34461A
  • Funktionsgenerator: Rigol DG1022Z
  • Software: Eigenes Skript bzw. DEWETRON OXYGEN für FFT und Kurvenform
Messaufbau und verwendetes Equipment

DC Genauigkeit & Linearität

Eine der wichtigsten Merkmale ist die Genauigkeit und Linearität, denn nichtlineares Verhalten würde viele weitere Parameter verschlechtern. Lineares Verhalten ermöglicht eine Fehlerkorrektur mittels einer Geradengleichung.
Zunächst betrachten wir die Grundgenauigkeit, auch wenn wir diese im Normalfall (gemeinsam mit einer Signalanpassung) feinjustieren werden.
Der ADC hat bei einer Single-Ended-Konfiguration bei Verstärkung 1 einen Messbereich von 0 bis 3,3 V. Die Referenzspannung ist vorgegeben und kann nicht verändert werden (auch wenn das Board einen REF Eingang hat, müsste dieser durch einen Eingriff am Board aktiviert werden).

EingangsspannungADC-Wert
0 V0
3.3V4095

Mit diesen Werten kann man eine Geradengleichung aufstellen. Damit kann man dann beliebige ADC-Werte in Spannungen umrechnen:

y = k*x + d

ParameterIdealGemessenAbweichung
k0.0008058610.000795851.26 %
d00.0001395190.14 mV

Wenn wir diese Werte in der Konfigurationsdatei für die Datenerfassung speichern, können wir eine erste Messung durchführen.

Linearität

Im Rahmen der Genauigkeitsmessung wird auch der Linearitätsfehler ermittelt. Die maximale Abweichung von der idealen Geraden wird typischerweise mit dem Messbereich verglichen.

  • Messung in 100mV Schritten von -1.6V bis 1.6V
  • Linearisierung mittels linearer Regression
  • Berechnung der maximalen Abweichung der Messpunkte von dieser Gerade
  • Ermittlung der Nichtlinearität: 0.00025/3.3*100% = 0.009%
Abweichung des Messwerts in mV gegenüber der Referenz-Eingangsspannung. Die maximale Abweichung beträgt 0.25mV.

Offset nach 72h

Interessant ist außerdem, wie es um die mittelfristige Stabilität steht. Dazu habe ich die Messung von vorhin nach 72h wiederholt:

Die Abweichung des Messwerts nach 72h ist etwas größer geworden, es gibt eine Offsetverschiebung von ca. 0.4 mV. Die Verstärkung selbst hat sich nicht verändert.

Abtastrate & Genauigkeit

Die Erfassung von Frequenzen mit hoher Präzision erfordert eine stabile und genaue Zeitbasis, also einen präzisen Taktgeber des ADC. Zu diesem Zweck wird ein Referenzsignal mit einer Frequenz von 1 kHz angelegt und die Frequenz anschließend gemessen. Die Messung ergibt bei dem vorliegenden Beispiel

VorgabewertAbgelesener WertAbweichung
1000 Hz1000.025 Hz25ppm

Die Korrektur des Takts kann durch die Anpassung des Parameters adc_clock_gain in der daqinfo.toml vorgenommen werden. Im Hintergrund erfolgt keine „echte“ Korrektur, sondern der Wert der Samplerate wird geändert, sodass die korrekte Periodendauer ermittelt werden kann.

Rauschen & SNR

Zur Bestimmung der dynamischen Eigenschaften werden häufig Rauschpegel und SNR herangezogen.
Als Quelle wurde eine 1,2-V-Batterie verwendet, um einen rauscharmen Offset zu generieren.
In der vorliegenden Messung wurde ein besonderer Fokus auf die Unterscheidung zwischen Single-Ended und Differentiellen Eingang gelegt, da die Resultate eine signifikante Variabilität demonstrieren. Der Messbereich wurde auf +-1,65 V festgelegt (3,3 V/2).

Rauschpegel RMSSNR
Single-Ended1.25 mV59 dB
Differential0.35 mV70 dB
Theoretisch
12 Bit * 6.02dB + 1.76dB
74 dB

Dynamikumfang

Im Allgemeinen hat der SFDR (Spurious Free Dynamic Range) eine höhere Aussagekraft als der SNR alleine, insbesondere im Hinblick auf die künftige Anwendung.

Single-Ended

SE-Modus: Frequenzspektrum (Linienauflösung von 100 Hz) bei DC Eingang mit 1MS/s. 0 dB entspricht dem Messbereichsendwert.

Der unzureichende SNR-Wert manifestiert sich erwartungsgemäß im Spektrum. Die Ursache ist mutmaßlich auf Störungen am GND-Potenzial zurückzuführen. Da wir keinen Einfluss auf dieses Potenzial haben, werde ich die Betriebsart Single-Ended für weitere Versuche nicht in Betracht ziehen. Künftig liegt der Fokus daher auf dem Differential-Modus.

Differential

Vielversprechender sieht es im Differential-Modus aus:

DIFF-Modus: Frequenzspektrum (Linienauflösung von 100 Hz) bei DC Eingang mit 1MS/s. 0 dB entspricht dem Messbereichsendwert. Der Peak liegt bei -83 dB @ 200 kHz.

Was bedeutet das nun?

Bei einem Messbereich von ca. 1Vrms bedeuten -83dB folgendes: Ein Signal mit >-83dB (=70µV = 70ppm) wird im Spektrum unabhängig von der Frequenz erkennbar. In den meisten Frequenzbereichen sinkt der Rauschpegel jedoch unter -90dB, sodass noch höhere Empfindlichkeiten erreicht werden können. Für viele Anwendungen sind diese Werte vollkommen ausreichend.

AC-Genauigkeit

In einem weiteren Test wird die AC-Genauigkeit überprüft. Die gute Linearität lässt keine Überraschungen erwarten.

Vorgabewert
1 kHz Sinus
Referenzwert
Multimeter
MesswertAbweichungAbweichung % vom Messwert
1 V1.00085 V1.00109 V0.24mV0.024%
0.1 V0.10008 V0.10016 V0.08mV0.08%
0.01 V0.01003 V0.01007 V0.04 mV0.4%

Frequenzgang

Die Bandbreite des Eingangs spielt bei der Dimensionierung der Signalkonditionierung eine wesentliche Rolle.

Abweichung des Messwerts vom Ist-Wert bei verschiedenen Stützpunkten zwischen 1 kHz und 300 kHz. Aufgrund der limitierten Bandbreite des eingesetzten Multimeters war bei 300 kHz Schluss.

Phase missmatch

Sobald Samples auf Ebene der Abtastrate zwischen Kanälen in Verbindung gebracht werden, spielt auch der zeitliche Versatz, bedingt durch das Multiplexing der Eingänge, eine Rolle. Dieser Fehler kann für eine statische Konfiguration korrigiert werden, sofern er über der Größe einer Abtastperiode liegt.
Zu diesem Zweck wurde an allen Eingängen dasselbe Signal (1Vrms, 1 kHz) eingespeist und die Phasenverschiebung gegenüber des ersten Eingangs ermittelt.

Messkanal (A-Pin)ZeitverzögerungAnzahl Samples
A1 (A1-A0)0 µs0
A3 (A3-A2)-3 µs-0.33
A5 (A5-A4)1.5 µs0.167
A7 (A7-A6)-1.5 µs-0.167
A8 (A8-A9)-4.5 µs-0.5
A10 (A10-A11)3 µs0.33
Zeitversatz zwischen den Messeingängen bei 111 kS/s Abtastrate. Abtastperiode beträgt ~ 9µs.

Erkennbar ist die Systematik, dass die Werte -4.5, -3, -1.5, 0, 1.5 und 3 vorkommen. D.h. es wurde messtechnisch das Multiplexing-Muster erfasst.

Mit der Eigenschaft „delay“ eines Kanals in der daqinfo.toml kann die Information (ganze Anzahl Samples) hinterlegt werden, und bei der späteren Datenverarbeitung berücksichtigt werden. Das macht aber nur im Zusammenspiel mit einem Eingangsverstärker oder Sensor Sinn, der wo größere Verzögerungen erwartet werden.

Zusammenfassung

ParameterWert
Messbereich ADC0 bis 3.3 V
Samplingrate (kumuliert)10 kHz bis 1000 kHz
Linearitätsfehler0.008%
SNR (Differential)70 dB
SFDR83dB
Clock Fehler25 ppm
Zeitversatz Messeingängemax. 1 / Samplerate

Fazit

Auf der Grundlage der bereitgestellten Informationen sollte eine fundierte Entscheidung darüber getroffen werden können, ob das Arduino DUE Board für die spezifische Anwendung geeignet ist. Da in den meisten Fällen die Anpassung des Messsignals auf den Eingangspegel individuell erfolgen wird, lässt sich der Messbereich durch eine clevere Wahl von Verstärkung bzw. Abschwächung gut ausnutzen.
Das Board ist daher hervorragend für experimentelle Versuche, Forschungszwecke und andere besondere Aufgabenstellungen geeignet.
Die Möglichkeit, Samplerate, Gain, Offset und Phasenverschiebung zu korrigieren, ermöglicht einen produktiven Einsatz des Boards.

In einem der nächsten Beiträge werden wir einen Schritt weitergehen und die Anpassung von bipolaren Eingangssignalen behandeln. Damit wird es möglich, Signale von Sensoren und anderen Quellen mit hoher Güte zu digitalisieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert