Hallo zusammen,
ich habe ein spezifisches Problem bei einer Servoansteuerung.
Sas Servo ist eines seiner RC-Analge, wird also mit 1000 bis 2000µs angesprochen, mitte in 1500µs.
Es geht um einen Anwendungsfall, wo dieses Servo mittels eines Schalters am Sender von einer Stellung in die nächste fährt, un eben beim zurückschalten wieder zurück.
Eigentlich also ganz trivial, könnte man jedenfalls vermuten.
dazu kommt nach, dass das Servo sich mit einer über ein Poti einstellbaren Geschwindigkeit bewegen soll.
Auch nicht so schwer. Differenz neue Pulslänge/alte Pulslänge in abs() addieren oder subtrahieren in 1µs Schritten.
Das Servo bewegt ein größeres langes Teil hin und her, es soll "Scale" aussehen, daher sehr langsam.
Das alles läuft auch schon bestens, wenn da nicht, ja , wenn da nicht diese Einschaltphase wäre, wo nach servo attach mit voll Speed in die Mitte gedonnert würde, oder gar an den Anschlag, so dass das dünne lange Teil zu brechen droht, hat man den Eindruck.
Nun ist es so, das im normalen Betrieb folgender Endzustand erreicht wird:
Das Servo wurde mittel Schalter am Sender in die eine, oder die andere Endstellung gefahren.
diese Stellungen sind sendeitig genau justiert, also z.B. 1210µs und 1847µs, Damit das Gestänge das zu bewegende Teil in genau die richtigen Stellungen fährt.
Dann wird der Empänger ausgeschaltet. Dann der Sender.
Jetzt wird der Sender eingeschaltet ( Er strahlt also schon mal z. B die Pulslänge von 1847ms wieder ab, da der Schalter ja noch so steht, wie beim Einschalten.
Jetzt wird der Empfänger unter Saft gesetzt, damit auch der Adrduino ( übrigens eine Nanao ).
Jetzt soll das Servo aber nicht mit voll Stoff losrennen. Es soll einfach stehenbleiben wo es steht. Da der Empfänger und der Arduino erst mal hochfahren müssen, und erst mal servo attach gemacht wird. Tut das Servo dies aber nicht.
Erst nach Durchlauf dess Sketches bis an die Stelle, wo der eingehende Impuls wiederum als Servosignal anliegt, fährt das Servo in die Mitte, und zwar mit Vollgas.
Ich würde gerne eine Situation herstellen, das der Servo zunächst mal keinen Impuls bekommt.
Das kleine einschaltzucken ist Servoabhängig, ein guter macht danicht viel und benimmt sich einigermassen.
Jetzt soll der Sketch erst mal schauen, ob denn am Eingang bereits halbwegs konstante Impulse gelesen werden. Also in diesem Fall hier die oben zufällig erdachten 1847µs.
Dann erst soll der mit Servo attach beschriebene Augang beginnen, diese Impulslänge auszugeben, und beim Schalten halt zu wechseln.
Ich habe auch schon probiert, Sender und Empänger einzuschalten, und zu warten bis der Empänger sauber ausspuckt, und dann erst den Arduino zu starten( z.B. mittesl Reset.
Aber auch da fährt der Servo in Millsekunden zur Mitte um dann wieder die Endstellung anzufahren.
Da die Modell notwendige Endstellung noch nicht bekannt ist, und sich ggf. auch leicht anpassbar sein muss, der befreundete Anwender aber nicht irgendwelche Werte in irgendeiner lib ändern kann/soll, suche ich nach einer Möglickeit, das ganze ohne das Anfahren der Mittelstellung zu programmieren.
Was funktioniert, aber antiquiert ist, das der Arduino eine weiter Funktion ausführt, indem er 10 Sek. nach den Einschalten ein Ralais dauerhaft betätigt, das dann erst den Servo bestromt.
Hab ich probiert, funktioniert, aber eigentlich, lächel, programmiert man nicht einen contrller und bedient sich modernster Mittel, um dann mittel Relais einen Servo zu bestromen.
Schöner fände ich, die Ausgabe der Servoimpulse einfach zu unterdücken, also nichts auszugeben, bis sauber die Impulse gelesen werden.
Und genau da komme ich nicht weiter.
Wie kann ich nach "servo.attach" verhindern, das Ausgang schon aktiv Impulse rausschmeißt, und nicht erst wartet, was denn für eine Imulslänge gerade am Eingangspunkt anstehen, und dann diese ausgibt.
Hat da jemand eine zündende Idee?