Hallo,
die Platine "Die Gelbe" habe ich für ein nicht-Modellbau-Projekt entwickelt und dient dazu ein Servo über 4 Schalteingänge auf einstellbare Positionen zu fahren. In meiner Anwendung werden die Schalteingänge über einen 433MHz Funkempfänger angesteuert, man kann dies aber natürlich auch über ein herkömmliches Schaltmodul oder Sensoren (Schalter/Taster usw.) tun. Weiterhin ist Platz für einen Taster 6x6 mm und ein Trimm-Poti (stehend) vorgesehen, sowie eine LED mit Vorwiderstand.
Der Sketch für die Platine hat folgende Funktionen:
Das Servo an J2 wird über ein Signal an den Schalteingängen D3 bis D6 auf die programmierte Position/en gefahren, dabei wird zwischen kurzer und langer Betätigung unterschieden:
- kurz an D4 fährt das Servo auf die linke Position und nach der eingestellten Haltezeit zurück auf die Mittelstellung; lang an D4 fährt das Servo auf die linke Position und es bleibt dort stehen bis ein Signal über D3, D5 oder D6 erkannt wird
- kurz an D5 fährt das Servo auf die rechte Position und nach der eingestellten Haltezeit zurück auf die Mittelstellung; lang an D5 fährt das Servo auf die rechte Position und es bleibt dort stehen bis ein Signal über D3, D4 oder D6 erkannt wird
- kurz an D3 fährt das Servo zurück auf die Mittelstellung
- kurz an D6 fährt das Servo erst auf die linke Position und nach der Haltezeit auf die rechte Position, dann nach der Haltezeit wieder auf die Mittelstellung (Signale an D3, D4 und D5 werden solange ignoriert)
- lang an D6 fährt das Servo erst auf die rechte Position und nach der Haltezeit auf die linke Position, dann nach der Haltezeit wieder auf die Mittelstellung (Signale an D3, D4 und D5 werden solange ignoriert)
- Kalibrierungs-Routine für Servo-Positionen und Haltezeit, wird über den Taster gestartet
- Poti zur Einstellung der Servo-Positionen (Mitte, Rechts und Links) und Haltezeit
- Eingestellte Werte werden im EEPROM abgespeichert und bei jedem Start des Arduino ausgelesen, so daß die Kalibrierung nur einmalig nötig ist
- Schalteingang über positives (z.B. mit Funkempfänger) oder negatives Signal
- LED leuchtet, wenn sich das Servo nicht in der Mittelstellung befindet
Anwendungsbeispiel:
Eine Türe/Klappe öffnen oder einen Kran/den Turm einer Kanone auf rechte oder linke Position drehen, je nach Betätigungsdauer mit automatischer Rückstellung nach Ablauf der Haltezeit oder Verweilen auf Position bis ein neues Steuersignal erkannt wird.
Kalibrierung:
Es wird empfohlen, das Poti vor dem Starten der Kalibrierung in die Mittelstellung zu bringen um einen unerwünschten Ausschlag nach rechts oder links zu vermeiden!
- Taster 1x kurz drücken startet die Kalibrierung, es kann nun die Mittelstellung über das Poti eingestellt werden. Die LED blinkt währenddessen 1x schnell.
- Taster 1x kurz drücken speichert den Wert für die Mittelstellung; nun kann die linke Position über das Poti eingestellt werden. Die LED blinkt währenddessen 2x schnell.
- Taster 1x kurz drücken speichert den Wert für die linke Position; nun kann die rechte Position über das Poti eingestellt werden. Die LED blinkt währenddessen 3x schnell.
- Taster 1x kurz drücken speichert den Wert für die rechte Position; nun kann die Haltezeit (500 bis 10.000 ms) über das Poti eingestellt werden. Die LED blinkt währenddessen 4x schnell.
- Taster 1x kurz drücken fährt das Servo auf die linke Position für die Dauer der Haltezeit. Dieser Schritt kann beliebig oft wiederholt werden, so daß die Änderungen über das Poti sofort überprüfbar sind.
- Taster 1x lang drücken speichert die Haltezeit. Die LED leuchtet für 2 Sekunden und zeigt das Ende der Kalibrierung an. Danach wird das Programm gestartet.
Im Serial Monitor der Arduino IDE können die Einstellungen während der Kalibrierung nachverfolgt werden. Im Loop-Teil sind diese ausgeklammert, können aber z.B. zur Fehlersuche aktiviert werden, in dem man die „//“ Zeichen vor den Serial.print(ln) Zeilen entfernt.
Der Sketch ist für positive (5V) oder negative (GND/Minus) Schaltsignale vorhanden. Bei Verwendung von positiven Signalen (wie beim Funkempfänger) muß das Widerstands-Netzwerk als Pull-Down eingesetzt werden. Bei negativen Signalen werden die internen Pull-Up Widerstände des Arduinos verwendet, das Widerstands-Netzwerk darf dann nicht auf die Platine gelötet werden!
Im Sketch kann die minimale und maximale Impulslänge (544 bis 2400 μs) eingestellt werden, abhängig vom verwendetem Servo oder zum Begrenzen der Endpunkte. Diese Werte werden dann auch bei der Kalibrierung berücksichtigt.
Die Haltezeit kann von 500 bis 10.000 ms eingestellt werden, eine Änderung im Sketch ist möglich.
Benötigte Bibliotheken:
Button.h - Button-Arduino 2.0.0 by Davide Palladino
Servo.h - in Arduino IDE enthalten
EEPROM.h - in Arduino IDE enthalten