AEQ-WEB

Arduino read analog PWM Signals from RC
Arduino
18.01.2019

Switch language to: en Englisch

Arduino PWM Fernsteuerung


Die meisten Fernsteuerungen aus dem Modellbau (Drohnen, Boote, Flieger etc.) arbeiten mit analogen PWM-Signalen. Es gibt zwar auch digitale Übertragungen wie PCM, die bereits viele Fernsteuerungen haben. Dennoch wird PWM weiterhin sehr stark verwendet. Mit einem Arduino Board können diese Signale über digitale Eingänge eingelesen werden. Dadurch ist es möglich, dass das Arduino Board auch im Modellbau als zentrale Steuereinheit verwendet werden kann. In unserem Beispiel lesen wir drei PWM-Signale von einer Fernsteuerung ein. Für das Arduino Board ist es kein Problem, mehrere PWM-Signale hintereinander auf verschiedenen Pins einzulesen.


Empfänger am Arduino

Die meisten Empfänger arbeiten mit 5 Volt. Das bietet den Vorteil, dass der Empfänger direkt vom Arduino versorgt werden kann. Neben den zwei Leitungen für die Stromversorgung wird noch eine weitere Leitung für das PWM-Signal benötigt. Pro Kanal, der eingelesen werden soll, muss eine Leitung angeschlossen werden. Das Arduino kann zwar nur an bestimmten digitalen Pins PWM-Signale erzeugen, jedoch an allen Pins die Signale einlesen.


FSIA6B Flysky PWM Pinout Wiring

PWM Signal

Das PWM (Pulsweitenmodulation) Signal liegt beim kleinsten Wert knapp unter 1000 und beim höchsten Wert knapp unter 2000. Durch eine mathematische Formel könnte man den Wert in einen Prozentwert umwandeln und so beispielsweise die Drehzahl von einem Motor von 0-100% regeln. Die folgende Grafik aus dem Serial Plotter zeigt, wie auf der Fernsteuerung ein Regler von unten nach oben bewegt wird und anschließend in der Mitte positioniert wird.


Arduino PWM PulseIn Signal from RC FSIA6B

Die Software

Das Codebeispiel ist sehr einfach aufgebaut und funktioniert ähnlich wie analoge Inputs. Zuerst werden die I/O-Pins sowie deren Funktion definiert. Anschließend wird das PWM-Signal über PulseIn eingelesen und im Serial Monitor angezeigt. Das PWM-Signal wird im Code immer zu bestimmten Zeiten eingelesen. Wenn es notwendig ist, dass eine Veränderung des Signales zu jeder Zeit erfasst wird, so kann man auch mit Interrupts arbeiten, die dann nicht von einem Delay oder einer anderen Operation blockiert werden können. Der folgende Screenshot zeigt die Ausgabe von drei PWM-Kanälen der Fernsteuerung im Serial Monitor an.


Arduino PulseIn Channels from analoge PWM RC in Serial Monitor


Von Alex @ AEQ-WEB 108