Servo ansteuerung

Gast #51589
Lesenswert?
• ▲
▼
Hallo,
ich habe von meinen Bruder ein leicht defektes Multiplex Servo bekomme
(ein Zahnrad ist nicht mehr ganz ok). Und das wollte ich nun Ansteuern.
Leider fährt es nur ganz nach rechts bis zum Anschlag.
Was ist an diesem Code falsch?
Ich habe den Timer so Inhaliziert das er alle 0,1ms ein Timerinterupt
liefert.
SIGNAL(SIG_OUTPUT_COMPARE2)    //intruptcpmparematch vom timer 2
{
stimer++;
servo++;
if (servo == 200){      //alle 20ms mache signal
sbi (PORTD, 5);        //ausgang setzen
servo = 199;        //variable zurücksetzen damit schleife gleich beim
nächsten durchlauf betreten wird
servoi++;
if (servoi == 7){      //impulsbreite in 0,1ms schritten
cbi (PORTD, 5);        //wenn impulsbreite erreicht dann kanal
zurücksetzen
servo = 0;        //und aus der schleife raus
}
}
}
Danke schonmal.
Gruß
Peter
Gast #51590
Lesenswert?
• ▲
▼
Hallo Peter,

leider bin ich nicht mit dem C-Code vertraut, programmiere nur in ASM.

Nur nochmal zur Info...

Das Servo erwartet als Steuersignal folgendes:

loop:
Ausgang für 20ms auf LOW setzen
Ausgang für 1.5ms auf HIGH setzen
springe nach loop

Der HIGH-Wert von 1.5ms setzt das Servo in die Mittelposition.
Änderst Du zur Laufzeit auf 1.0ms, fährt das Servo nach ganz rechts.
Bei 2.0ms nach ganz links.

Wenn Du Multiplex-Servos hast, dann sollte die Orangene Leitung für das
Steuersignal sein.

Gruß,
Andre.
Gast #51592
Lesenswert?
• ▲
▼
Hallo,
ich habe im vorherigen Posting noch vergessen das ich den Mega32
verwende und das nur der Timerinterupt ist. Also nicht der vollständige
Code.

@Andre Das habe ich schon gewusst aber trotzdem danke. Mein Servo hat
nur ein gelbes Kabel. Des wird wohl des steuer signal sein.

@wizz wenn er in C ist dann wäre es gut wenn du ihn posten könntest.

Gruß
Peter
Gast #51593
Lesenswert?
• ▲
▼
Hallo,
Ich habe den fehler jetzt endlich gefunden. servoi muss ja nach jeden
Impuls zurückgesetzt werden. Jetzt geht es wunderbar. Es zittert auch
nicht wie es bei meinem Bruder manchmal war.
Gruß
Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.