Albatros

Albatros

Infos für Modellflug und Technik!

ServoTester, ein Arduino Projekt zur Überprüfung von RC-Servo Funktion

ein kleines Arduino Projekt, um Servos für den RC-Modellflug zu überprüfen. Der Servo wird über ein vom Arduino erzeugtes PWM Signal angesteuert und die angesteuerte Position über ein mechanisch verbundenes Poti überprüft. Dies wird über einen Zeitraum von ca. 2h mit vielen Messpunkten ~50k gemacht.

Einleitung

Beim Erstflug eines 10kg Segler wurde das Modell plötzlich schneller. Steuerkorrekturen am HR-Hebel am Sender zeigten keinerlei Wirkung. Nach ca 20s verschwand das Modell hinter der Hangkante. 3 Tage später konnte das Modell aus 20m Höhe von einem Baumkletter geborgen werden. Da der Rumpf annähernd unbeschädigt war, konnte die Fehleranalyse beginnen und bald war klar, es war der nagelneue HR-Servo. Der Servo lief in Post-Absturz-Tests eigentlich ganz gut, aber zeigte aber plötzlich Aussetzer. Ein Y-Kabel vom Empfänger-HR-Ausgang zum HR-Servo und zu einem zweiten Referenzservo brachte endgültige Klarheit. Der eingebaute HR-Servo zeite sporadische Aussetzer, die der Referenzservo nicht zeigte. Ein sehr unangenehmer Fehler. Während der Bau- und Einstellzeit des Modells zeigten sich keinerlei Probleme und sporadische HR-Tests waren immer erfolgreich. Auch während der ersten 69 Minunten Erstflugzeit, waren keine Probleme erkennbar. So kam mir die Idee einen ServoTester zu bauen, der über einen längeren Zeitraum (2 Stunden) den Servo in unterschiedlichen Positionen anfährt und die Servohebelposition überprüft. Introduction

Konzept

Die Konzeptidee ist sehr einfach. Der Mikrokontroller, erzeugt PWM Servosignale (1.0us - 2.0us Impulse) an einem digitalen Ausgang. So kann der Servo gesteuert werden. Der Positions-Sensor/-Potentionmeter ist ein Spannungsteiler, dessen Spannung am Pin des beweglichen Teils ein Maß für die Position ist. Der Arduino hat mehrere einfache ADCs (Auflösung 1024), die benutzt werden können, um diese Spannung zu messen. Ein weiterer Spannungsteiler unterstützt als Sicherheitscheck eine Batterieunterspannungs-Warnung/-Abschaltung und 2 LEDs dienen als einfache Statusmelder. Zusätzlich werden an der USB-Schnittstelle Textnachrichten ausgegeben. Die Verarbeitungslogik ist als Arduino Sketch in C++ geschrieben und bei GitHub unter [https://github.com/Pulsar07/ServoTester] hinterlegt.

Hardware

Außer einem Arduino Nano, ist nicht viel notwendig. Zwei Status LEDs (low current LED), um ein simples Benutzerinterface zu realisieren und ein hochwertiges Cermet Potentiometer, das als Positionssensor dient und mechanisch mit dem Servoarm des Servos verbunden ist. Dazu kommen noch ein paar Widerstände und ein Kondensator, wie im Schaltplan dargestellt. Hardware

upload:ServoTesterAufbau.jpg

Schaltplan

upload:SchaltplanServoTester.png

Benutzerschnittstelle - Textnachrichten

Der Arduino gibt detaillierte Benutzernachrichten an der seriellen Schnittstelle (USB) aus. Wenn der Arduino über die USB-Schnittstelle an einen PC angeschlossen wird und ein Programm zur Kommunikation mit der seriellen Schnittstelle verfügbar (minicom/putty/ArduinoIDE-Serial monitor) ist, kann bei einer Baud-Rate von 57600 baud mitgelesen werden.

Benutzerschnittstelle - 2 Status LEDs

  • grüne und rote LED blinken synchron: ServoTester ist in Initialisierung
  • grüne und rote LED blinken abwechselnd: ServoTester ist in Initialisierung und hat temporäre Probleme:
    • obwohl der Servo-Hebel in Mittelstellung ist, ist der Positionssensor nicht in Mittelstellung (Gestänge stimmt nicht und/oder Servohebel zeigt in Mittelstellung nicht senkrecht nach oben )
    • obwohl sich der Servo-Hebel leicht bewegt, kann diese Bewegung am Positionssensor nicht detektiert werden.
  • grün blink langsam (1.5s): es ist ein nicht behebarer Fehler während der Initialisierung aufgetreten, Test wird nicht gestartet. Neutstart durch Reset-Button oder Stromzufuhr.
  • grün leuchtet dauerhaft: Test Prozedur läuft normal
  • rot blinkt, während grün dauerhauft leuchet: Jeder rote Blinkzyklus entspricht einer fehlerhaften Positionsprüfung. Das sollte bei einem funktionierndem Servo und einer ordentlichen mechanischen Verbindung Servo-Sensor nicht auftreten.
  • grün leuchtet, hat aber kurze (0.5s) Aus-Phasen: Test Prozedor ist beendet.
    • rot is dabei Aus: Test wurde erfolgreich beendet ohne Fehler
    • rot blinkt: Test wurde beendet mit Positionsfehler. Anzahl der Blink-Phase entspricht dem Anzahl an fehlerhaften Prüfungen.

Bedienerhinweise

Der ServoTester muss an eine 2s LiIon Batterie angeschlossen werden. Die Nutzung eines Labornetzgerätes ist möglich, jedoch ist darauf zu achten, dass nicht mehr als 8.4V Spannung angelegt wird und dass eine Stromstärke größer 1 Ampere eingestellt wird, da beim Servo-Speed-Test hohe Ströme (je nach Servo) angefordert werden. Der Arduino Nano kann optional mit der USB Schnittstelle eines PC verbunden werden, um neue Firmware auf den Arduino zu laden oder um Textnachrichten an einen seriellen Monitor zu übertragen. Wenn die Batterie mit dem ServoTester verbunden wird, wird :

  • der Servo in Mittelposition gefahren.
  • wenn der Positionssensor die Mittelposition dedektiert, wird durch eine leichte Bewegung des Servos, die Bewegung des Sensors getestet.
  • in dieser Phase kann der Servohebel in der korrekten Position auf die Achse montiert werden.
  • im nächsten Schritt werden die Servopositionen (+/-100%) kalibriert.
  • danach wird ein Servo-Speedtest durchgeführt, bei dem der Servo von 0% auf +/-100% in maximaler Geschwindigkeit gefahren wird. Die Zeit bis zum Erreichen der Endposition wird als Textnachricht ausgegeben.