EUR | USD

Die Arduino-Analogfunktionen: Ihr Einsatz in Ihrem nächsten Design

Von Lee H. Goldberg

Zur Verfügung gestellt von Electronic Products


Ganz gleich, ob Sie ein professioneller Designer von eingebetteten Lösungen oder ein unerfahrener Hacker sind: Sie werden es zu schätzen wissen, wie leicht es mit den analogen Eingangs- und Ausgangskanälen der offenen Hardware-Plattform von Arduino ist, mit Ihren Projekten in die „reale Welt“ vorzudringen. Denn die kompakten Module ermöglichen einen einfachen Zugriff auf die Mehrkanaleingänge der MCU, die zur Überwachung von Spannungen und zum Lesen der unterschiedlichsten Analogsensoren oder Abtastkurven verwendet werden können.

Obwohl der Digital-Analog-Wandler der MCU nur eine relativ mäßige Auflösung und Umwandlungsrate aufweist, eignet er sich gut für viele gängige Anwendungen – von der Steuerung von Beleuchtungslösungen und Motoren bis hin zur Gain-Bias-Ansteuerung von Verstärkern. Dieser Artikel stellt die Hardware- und Software-Ressourcen vor, die die Basis für die Arduino-Analogfunktionen bilden, und er zeigt Ihnen, wie Sie diese in Ihrem nächsten Design einsetzen können.

Wenn Sie noch nicht mit Arduino vertraut sind, können Sie im TechZone-Artikel „Arduino Open Source Platform Unleashes Creativity“ (Die Open-Source-Plattform von Arduino setzt Kreativität frei) alles darüber erfahren.

Geboren für die Analogwelt

Gemäß ihrer Philosophie, den Einsatz von Digitaltechnologie für reale Praxisanwendungen zu vereinfachen, wurde die Arduino-Plattform geschaffen, um maximalen Nutzen aus den Analogfähigkeiten zu ziehen, die in die vielseitige Familie der ATmega 8-Bit-MCUs von Atmel integriert sind. Sämtliche ATmega-Varianten, die in den Arduino-Plattformen Anwendung finden, sind mit einem in den Chip integrierten mehrkanaligen Analog-Digital-Wandler (ADC) ausgestattet. Dieser ADC verfügt über eine 10-Bit-Auflösung und ist in der Lage, bis zu 15.000 Abtastungen pro Sekunde in Form von Ganzzahlen von 0 bis 1023 zu erzeugen. Die meisten AVR-Mikrocontroller verfügen über 6 analoge Eingangskanäle, wobei einige Varianten 8 und 16 Eingänge unterstützen. Während die Hauptfunktion der Analog-Pins darin besteht, analoge Eingänge zu lesen, können sie auch so konfiguriert werden, dass sie als digitale GPIO-Pins (General Purpose Input/Output) fungieren. Falls sie gebraucht werden, verfügen die Analog-Pins über wählbare Pull-up-Widerstände, die in gleicher Weise konfiguriert werden können wie die Pull-ups der Digital-Pins des Mikrocontrollers.

Zwar sind einige AVR-Mikrocontroller mit Digital-Analog-Wandlern (DACs) ausgestattet, die in der aktuellen Generation der Arduino-Platinen eingesetzten Mitglieder der MCU-Familie erzeugen ihre Analogausgänge jedoch durch schnelles Umschalten ihrer digitalen E/A-Pins zur Erzeugung von pulsweitenmodulierten (PWM) Signalen. Das Tastverhältnis der 490-Hz-Rechteckwelle (ungefähr) jedes PWM-Ausgangs kann in 256 Stufen zu je 2 ms so programmiert werden, dass eine äquivalente RMS-Spannung zwischen 0 und 5 V entsteht (Abb. 1). Obwohl die Arduino-Ausgänge in ihren Fähigkeiten etwas eingeschränkt sind, können sie jedoch für viele Aufgaben, z. B. das Ansteuern von LEDs oder die Steuerung von Motoren, genutzt werden.

Digitale GPIO-Pins bei Arduino

Abbildung 1: Die digitalen GPIO-Ausgänge bei Arduino können mithilfe von Pulsweitenmodulationstechniken (PWM) als Analogausgänge genutzt werden (mit Genehmigung von Arduino.cc).

Die meisten Arduino-Platinen ermöglichen über Buchsensteckverbinder am Platinenrand einen einfachen Zugriff auf die analogen (und digitalen) E/A-Signale des Mikrocontrollers. Die Anzahl der Analogkanäle und ihre physische Pin-Belegung ist je nach konkret verwendeter MCU und Formfaktor der Platine unterschiedlich, aber viele Varianten richten sich nach den Pin-Belegungskonventionen, wie sie in bekannten „offiziellen“ Designs verwendet werden, beispielsweise Uno (Abb. 2), Mega und Nano.

Die Platine Arduino Uno (rev3)

Abbildung 2: Bei der Platine Arduino Uno (rev3) erfolgt der physische Zugriff auf die Analogeingänge (A0-A5) und die analogen PWM-Ausgänge (Digital 3, 5, 6, 9, 10 und 11) über die Standardsteckerleisten-Pins am Platinenrand (mit Genehmigung von Arduino.cc).

Auch die Entwicklung von Code mit analogen E/A-Funktionen ist einfach möglich, weil die von der Arduino-IDE unterstützte Programmiersprache einen Satz nativer Analog-E/A-Befehle enthält. Mit diesen Anweisungen ist das Lesen analoger Eingänge, die Erzeugung von analogen (PWM) Ausgängen und die Konfiguration der A/D-Wandler-Referenzspannung möglich.

Lesen analoger Eingänge

Die Verknüpfung der Arduino-Analogeingänge mit einer realen Praxisanwendung ist ziemlich unkompliziert, erfordert jedoch einige Aufmerksamkeit bei der Auswahl der richtigen Referenzspannungsquelle für den AVR-A/D-Wandler. Zur Festlegung der Obergrenze des Eingangsspannungsbereichs stehen drei Modi zur Auswahl: DEFAULT. INTERNAL oder EXTERNAL. Im DEFAULT-Modus verwendet die MCU den Ausgang des On-Board-Stromversorgungsreglers als Referenz. Je nach konkret verwendeter Arduino-Platine sind das entweder 5 V oder 3,3 V.

Im INTERNAL-Modus wird die On-Chip-Präzisionsreferenzquelle des AVR verwendet. Die Spannung dieser Quelle richtet sich nach den jeweiligen Bausteinen, beträgt aber üblicherweise entweder 1,1 V (beim ATmega168 oder ATmega328) oder 2,56 V (beim ATmega8 und der Mega-Serie). Im EXTERNAL-Modus können Sie über einen 5k-Widerstand an den AREF-Pin eine externe Referenzspannung anschließen. Der AREF-Pin verfügt über einen internen 32k-Schutzwiderstand, der zusammen mit dem externen 5k-Widerstand als Spannungsteiler fungiert. Das bedeutet z. B.: Über den Widerstand angelegte 2,5 V ergeben 2,5 * 32 / (32 + 5) = ungefähr 2,2 V am AREF-Pin.

Das Lesen von analogen Spannungen mit der Arduino-Programmiersprache schließt die Auswahl der Referenzspannung über den Befehl analogReference(type) und das anschließende Aufrufen des Lesens mit analogRead(pin) ein, wobei (pin) der Pin-Nummer auf der Steckerleiste entspricht, die abgetastet werden soll. Nach einmaliger Auswahl bleibt der Referenztyp erhalten, sofern keine anderweitige Programmierung erfolgt. Obwohl die AVR-MCUs Abtastraten von bis zu 15.000 Abtastungen pro Sekunde unterstützen, wird diese Rate durch die Arduino-Hardware/Software-Umgebung zumeist auf etwa 10.000 Abtastungen pro Sekunde beschränkt.

Erzeugen von PWM-Analogausgängen

Das Erzeugen einer analogen Spannung an einem der PWM-Pins der Arduino-Platine erfordert das Konfigurieren des vorgesehenen Pins als Ausgang, wozu der Befehl pinMode(pin, mode) verwendet wird, und das anschließende Aufrufen des Schreibens mit analogWrite(pin, value), wobei (pin) der Pin-Nummer auf der Steckerleiste entspricht, auf der die Ausgabe erfolgen soll, und (value) dem zu erzeugenden Bruchteil der Referenzspannung (in Abstufungen von 1/255) entspricht. Nach einmaliger Konfiguration erzeugt der Pin eine konstante 490-Hz-Rechteckwelle mit dem festgelegten Tastverhältnis, bis zum nächsten Aufruf von analogWrite() (oder bis ein Aufruf von digitalRead() oder digitalWrite() für denselben Pin erfolgt).

Die E/A-Pins können Ansteuerungsströme bis 40 mA unterstützen, sodass mit ihnen die direkte Ansteuerung von LED-Arrays mit mittlerer Größe möglich ist. Bei Beleuchtungslösungen mit höherer Leistung oder DC-Motoren kann der Analogausgang zum Ansteuern eines Leistungstransistors oder einer Brückenschaltung verwendet werden. Für anspruchsvollere Anwendungen kann der Ausgang mithilfe eines einfachen RC-Netzes gefiltert und als Steuerspannung für einen Verstärker oder eine Stromquelle verwendet werden.

Weitere Analog-Tricks

Einige AVR-MCUs (darunter MEGA8 und MEGA168) verfügen über einen internen Komparator, der eine Eingangsspannung mit einem anderen externen Eingang, mit einer von einem der PWM-Ausgänge erzeugten Spannung oder mit der internen Referenzspannung des Referenzgeräts vergleichen kann. Der Ausgang des Komparators kann abgefragt oder zum Auslösen eines Interrupts verwendet werden. Obwohl dazu weitere Software erforderlich ist, kann der Prozessor mit einer Interrupt-gesteuerten Anordnung eine Unter- oder Überspannungsbedingung erkennen, ohne dass dazu ein analoger Kanal wiederholt abgetastet werden muss. Das kann eine äußerst praktische Lösung für vielerlei Anwendungen sein: von Bewegungsmeldern und Erschütterungssensoren mit einstellbarem Schwellenwert bis hin zur biomedizinischen Überwachung.

Bei Arduino-Platinen, deren MCUs keinen internen Komparator aufweisen, kann relativ einfach ein externes Gerät wie z. B. ein LM741, LM339N oder TLC3704 zum „Kluge“-Bereich einiger Arduino-Platinen hinzugefügt werden. Falls Ihrer Plattform ein Anschlusspunkt für vom Benutzer bereitgestellte Schaltungen fehlt, kann dieser durch eine preiswerte Prototyping-Shield-Platine (Abb. 3) hinzugefügt werden.

Prototyping-Shield-Platinen

Abbildung 3: Mit Prototyping-Shield-Platinen können Sie ganz einfach Ihren eigenen analogen (oder digitalen) E/A zu fast jeder Arduino-Standardplatine hinzufügen (mit Genehmigung von Digi-Key).

Zusammenfassung

Ihre geringen Kosten und ihre hohe Flexibilität haben der Arduino-Plattform eine treue Anhängerschaft unter den kommerziellen Hardware-Entwicklern beschert. Die Arduino-Plattform wurde geschaffen, um maximalen Nutzen aus den Analogfähigkeiten zu ziehen, die in die Familie der ATmega 8-Bit-MCUs von Atmel integriert sind. Sämtliche Varianten dieser Mikrocontroller sind mit einem in den Chip integrierten mehrkanaligen Analog-Digital-Wandler (ADC) ausgestattet. Dieser Artikel ist als Einführung in die Hardware- und Software-Ressourcen gedacht, die die Basis für die Arduino-Analogfunktionen bilden, und soll Ingenieuren Anregungen geben, wie diese Funktionen in künftige Designs integriert werden können. Diesbezüglich ging es vor allem um das Lesen von analogen Eingängen, das Erzeugen von PWM-Analogausgängen und das Hinzufügen von externen Analog-E/As. Weitere Informationen zu Arduino-Produkten finden Sie unter den Links auf den Seiten der Digi-Key-Website.

Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der Digi-Key Electronics oder offiziellen Politik der Digi-Key Electronics wider.

Über den Autor

Lee H. Goldberg

Über den Verlag

Electronic Products

Das Magazin "Electronic Products" und "ElectronicProducts.com" dienen Ingenieuren und technischen Führungskräften, die für die Entwicklung elektronischer Geräte und Systeme verantwortlich sind.