www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik [AVR Mega 8] Servo bewegt sich nur in eine Richtung


Autor: Tilman Stremlau (killerfaultier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe heute mal versucht, einen Servo anzusteuern. Dazu wollte ich
ganz einfach anfangen:
#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.h>

int main() {
 // Alle Pins des Ports B als Ausgang definieren:
  DDRD = 0xff; 

  while(1) {
  // 5 auf high
  PORTD=(1<<PD5);
  _delay_ms(1);
  // 5 auf low
  PORTD &= ~(1<<PD5);
  _delay_ms(9);
  _delay_ms(10);
 }
}

Ich benutze das Pollin Board, bei F_CPU habe ich 16, 8, 4, 1
ausprobiert. Der Takt müsste auf intern gestellt sein.

Doch leider bewegt sich der Servo nur in eine Richtung bis zum Anschlag.

Wo liegt das Problem?

Grüße

[Eine kleine Diskussion gibt es dazu unter 
Beitrag "Re: einfache Servoansteuerung" dieser Thread wurde 
aber leider gesperrt]

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tilman Stremlau schrieb:

> Doch leider bewegt sich der Servo nur in eine Richtung bis zum Anschlag.
> Wo liegt das Problem?

Da gibt es IMHO kein Problem.
Genau das hast du ja programmiert!

> Der Takt müsste auf intern gestellt sein
Du hast aus dem alten Thread nichts gelernt. Mit 'müsste' kommt man 
nicht weiter. Wie ist denn nun die Einstellung deines internen Taktes?

Im zweifelsfall probierst du es aus:
Häng anstelle deines Servos eine LED an den Ausgang und lass dieses 
Programm laufen:
#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.h>

int main() {
 // Alle Pins des Ports B als Ausgang definieren:
  DDRD = 0xff; 

  while(1) {
    PORTD=(1<<PD5);
    _delay_ms(1000);
    PORTD &= ~(1<<PD5);
    _delay_ms(1000);
  }
}
Wenn dein interner Takt tatsächlich auf 8Mhz steht, dann ist deine LED 1 
Sekunde hell und 1 Sekunde dunkel. Ist die LED 8 Sekunden an und 8 
Sekunden aus, dann steht der interne Takt auf 1Mhz und nicht auf 8.

Damit kommst du erst mal von 'müsste' weg, hin zu: Ich weiß das der 
interne Takt auf so_und_soviel Mhz steht! Etwas zu wissen ist dann schon 
etwas ganz anderes als etwas zu vermuten. Damit kann man dann auch 
arbeiten.

Autor: Tilman Stremlau (killerfaultier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry :D

Ich habe den Fehler gefunden *schäm*:

Meine TV-Fernbedienung hat wohl nur 3V anstatt den angenommenen 6V... 
jetzt funktioniert alles wunderbar :D

Ich bedanke mich für alle, die hier geantwortet haben!

Grüße

Autor: Sprachen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz klar, der Zusammenhang!

Gast

Autor: Tilman Stremlau (killerfaultier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, ja das klingt wohl etwas komisch^^

Erklärung:
Ich wollte mir die 6V für den Servo von meiner Fernbedienung (die hier 
rumlag) abgezapfen (mein Netzteil wurde schon für das Pollin Board 
verbaut), aber da waren nur 3V drauf (was man unter der Abdeckung nicht 
sah).

Grüße

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.