Also ich habe eine Servoansteuerung anhand des tutorials von rn-wissen
gebaut. Das Programm sieht so aus, wie angehängt.
Die Servos am Board drehen sich. Jedoch ist die Mittelstellung ca. 10°
neben der eigentlichen Mittelstellung und die Servos drehen sich nicht
bis zum Anschlag, obwohl rein rechnerisch genau 1ms-2ms gesendet werden.
Darüber hinaus ist die Reaktionszeit sehr uneinheitlich. manchmal
reagiert das Ganze innerhalb einer Sekunde, manchmal brauchts aber auch
weit mehr..
Ich hab einen Mega8 mit 16MHz-Quarz und daran hängen zwei Robbe FS 100.
Was genau läuft da schief?
OCR1A = F_CPU / (100000); // alle 10µs ein IRQ
Auf welche Taktfrequenz ist der Originalcode angepasst?
Hast du diese Taktfrequenz?
Du darfst auch servopos nicht sofort updaten, sondern musst über eine
Zwischenvariable gehen. Erst dann, wenn in der IRQ der zyklische Reset
nach 20ms gemacht wird, kannst du gefahrlos servopos aus dieser
Zwischenvariablen neu besetzen.
Aussderdem: kleb nicht daran, dass dein Servo bei 1.5ms den Servohebel
auf 90° zum Gehäuse dreht. Wenn du dir dein Servo ansiehst, siehst du in
der Mitte des Servohebels eine Schraube. Die kann man aufmachen, den
Hebel abziehen und verdreht wieder aufsetzen -> Bei Servomittelstellung
steht der Hebel schief.
Zudem gibt es auch noch unterschiedliche Timing-konventionen.
Konventionelle Fernsteuerungssender erlauben normalerweise die
Einstellung um welche Art von Servos es sich handelt: UNI oder
Multiplex-Standard. Die haben unterschiedliche Zeiten für
unterschiedliche Positionen.
Hallo,
ich hab die mechanische mittelposition ermittelt und der servo liegt
daneben..
der code ist für was weiß ich entwickelt ;) hab ihn angepasst. da es
sich aber bei mir um den 16bit-timer handelt, sollte 16000000 / 100000 =
160 kein Problem sein (eigentlich nicht mal mit dem 8-bit-timer)
prescaler ist 1..
das mit dem direkt setzen. Also muss ich warten bis der Servocounter 0
ist?
Moin!
Ohne mir den Code angesehen zu haben: Praktisch niemand garantiert dir,
dass Servos mit 1ms genau am einen, 2ms am anderen Anschlag und mit
1.5ms genau in der Mitte sitzen.
Wenn du sicher bist, dass du wirklich genau 1.5ms lange Pulse sendest,
(Oszi?) dann frag Robbe mal - die werden dir genau das erzählen.
MfG, Heiko
Der mechanische Mittelpunkt muss nicht der "elektrische" (1,5ms)
Mittelpunkt sein. Bei den üblichen Modellen drehen die Servos eh nur
maximal +/- 45°. (mit den "Servohacks" auch mehr). Der mechanische
Drehweg liegt aber deutlich drüber (meist >270°)...eben weil man damit
etwas Spiel hat.
Also: Servo einbauen, 1,5ms Impuls...Mittelstellung...Ruderhorn
montieren und freuen... ;)
Versuch lieber die Pulsbreite bei Links- und Rechtsanschlag zu finden
und dann daraus die Mitte zu interpolieren. Kann mich dunkel erinnern
das bei meinen Servos das bei 1.5-2.5ms war. Sollte man für jeden Servo
individuell ausloten und mittels Offsetvariable in den Code einbringen.
MFG Hellsing
uiii... mein programm wird dann wohl doch größer..
naja, was solls.. ich werd mich also erst mal mit dem zufrieden geben
was ich hab und weiter schauen...
Hm, blöde Frage. Aber hast du den Servohebel auch genau mittig
aufgesetzt?
Wenn Du z.B. einen 4-er Servohebel hast, sind die Positionen immer
leicht verschoben, je nach dem welchen Hebel Du zu Deiner
Neutralposition drehst.
Probier einfach mal einen anderen der 4 Servoarme aus (also jeweils ca.
90 Grad drehen), und Du wirst sehen, dass die Position/Winkel immer
leicht anders ist.
Gruß
Dirk
ist bei servos völlig normal, dass mechanische nicht gleich elektrischer
mitte ist.
auch halten sich die wenigsten servos an die nominelle minimale und
maximale pulsdauer von 1 bzw. 2ms.
augen zu und durch...
Es gibt auch unterschiedliche Typen und Systeme von Servos. Jeder
Modellbauhersteller kocht da sein eigenes Süppchen.
Ich habe hier u.a. Servos, die 1-3ms benötigen.
Gruß
Jobst
>Ein Hoch auf die Standardisierung.. :(
Der Standard ist, dass Servos alle mit einem PWM-Signal betrieben
werden.
Wobei Robbe ein neues System auf den Markt gebracht hat, bei dem die
Servos alle parallel an einem Bus betrieben werden.
TecDroiD schrieb:> Ein Hoch auf die Standardisierung.. :(
Das ist in der Modellbau-Praxis viel weniger ein Problem als es jetzt
klingt. Dort bestimmt sowieso der anzusteuernde Aktuator wieviel Weg du
benötigst und den stellt man sich zuallererst durch Einhängen des
Bowdenzugs in die Hebel ein. Und die Mittelstellung ist mit einem
kleinen Schraubenzieher durch umstecken des Hebels schnell geändert.
Eine eigene Frage?
Dieser Thread ist über 16 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.