preloader

Auf AEQ-WEB Suchen

AEQ-WEB | Blog

Arduino read analog PWM Signals from RC

Arduino PWM Fernsteuerung

5 Jahre AEQ-WEB - Zeig dein Projekt

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
Arduino PulseIn
Download

Share:
thumbnail
30.05.2018
Arduino Anemometer bauen

Auf dieser Seite geht es um die Konfiguration eines Anemometer Windrades mit dem Arduino Board. Welche Bauteile und Software man braucht, erfährt ihr hier

Alex @ AEQ-WEB
thumbnail
02.06.2018
Arduino Wetterstation

Hier gibt es eine professionelle Anleitung zum Bau einer Arduino Wetterstation. Temperatur, Wind, Feuchte & Luftdruck werden per HTTP an den Server gesendet

Alex @ AEQ-WEB