Software - Interessante sofTware und harTware.

17 Servos per Summensignal steuern

Kombination zweier existierender Projekte

Aus den Einzelprojekten Servos per Arduino steuern und RC Summensignal per Microcontroller einlesen lässt sich ein Servo-Mixer kombinieren.
Berechnet wird das PWM-Signal für 24 Servos. Da auf dem Arduino Nano Board nicht alle Ausgänge herausgeführt sind, und nun auch noch Pin D8 (PB0) als Eingang für das Summensignal dient, sind nur noch 17 Servos übrig.

Anpassung der Timer-Verwendung

Beide Projekte verwenden den 16bit-Timer Timer1. Da dieser in unterschiedlichen Modi verwendet wird, muss entweder der PWM-Thread oder der Summensignal-Thread auf einen anderen Timer ausweichen.
Für das Einlesen des Summensignals sind die 16bit Auflösung von Timer1 wichtig. Beim Generieren der Zeitbasis für das PWM-Signal ist hingegen ein 8bit-Timer kein Nachteil. Deswegen wird der Software-PWM-Thread für die Servos auf Timer2 ausgelagert.

Software-Design

Verwendung der Timer / Data Flow

Wichtig: Die Interrupts des Servo-Threads (PWM) und der Interrupt für das Einlesen des Summensignals sind nicht verschränkt. Auch wenn das Summensignal ausbleibt läuft die Software weiter, gibt ein gültiges PWM-Signal (auf Basis des letzten korrekt empfangenen Summensignals) aus.
Das Entspricht sozusagen der Failsafe-Einstellung "Hold Position".

Download Sourcecode: 17 Servos per Summensignal am Arduino Nano steuern

Speicherbedarf laut Compiler:

FLASH: 2880 Byte von 30720 Byte 9%
RAM: 554 Byte von 2048 Byte 27%

Optionale Debug-Ausgabe auf der Konsole

Wenn man die Zeilen "Serial.begin(115200);" und "printDebugMessages(*dataset);" einkommentiert, werden auf der Konsole (USB) die eingelesenen Werte ausgegeben.
Dieser Zusätzliche Rechenaufwand verzögert nur die Verarbeitungszeit in der Main Loop.

Bemerkenswert: weder die Präzision beim Einlesen des Summensignals noch das ausgegebene PWM-Signal wird von langwierigen Routinen innerhalb der Main Loop beeinflusst. Das ermöglicht komplexe Berechnungen mit den Servosignalen.

Bekannte Einschränkungen