mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Servo ansteuerung


Autor: Peter Zimmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ->Andre<- (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: wizz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab hier einen funktionierenden Servo code für zwei servos, 100
Schritte auflösung, ohne wackeln etc. Servo 1 kann testweise über zwei
taster gesteuert werden. Interesse?

Autor: Peter Zimmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Zimmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus Neubauer (roboscan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Wizz ist der Code von dir in C?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.