PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servo Signal in C oder Assembler generieren?



11.05.2004, 16:35
Hallo
Kann ich ein Signal zum steuern von Servos auch ohne Timer generieren. Hat jemand ein ein paar Codezeilen für einen Atmel?

Dino Dieter
11.05.2004, 16:39
Hallo

Wieso willst oder kannst du dafür keinen Timer benutzen ?

Man kann das auch ganz "hart" mit Delays machen, also reine Rechenzeit verbraten. Dann kann dein uC aber die ganze Zeit nichts anderes machen. Dafür ist er doch zu schade.

MFG
Dieter

11.05.2004, 18:12
Weil das Hauptprogramm nur in bestimmten momenten etwas Zeit hat. Eine Unterbrechnung durch einen Interrupt würde es durcheinander bringen.

Dino Dieter
11.05.2004, 21:57
Hallo

Ein Servo erwartet aber im Normal Falle, alle 20 ms neue Impulse. Klar man kann das etwas ausweiten, Bereiche von 10 bis 50 ms sollten kein Problem sein. Wenn du jetzt rechnest, das du min. 1ms bis max. 2 ms in der Servo Funktion hängst und das alle 50 ms, kannst du dir ja ausrechnen, was an Zeit für die anderen Sachen bleibt.

Wenn der Servo keine Last zu halten hat, kann man den auch einmal ansteuern, der bleibt in der Stellung dann ja stehen. Und jede Sekunde ein Implus zum auffrischen, sollte ja drin sein.

Also grundsätzlich eine Schleife von 1 ms + eine Variable Zeitschleife für die Stellung, im Bereich von 0 bis 1 ms.

MFG
Dieter

Gottfreak
11.05.2004, 22:14
Du kannst auch irgendwo in deiner Hauptschleife(eine Stelle, die je nach gewünschter Genauigkeit mit mindestens 50kHZ durchlaufen wird) übberprüfen, wie lange das Einschalten des Impulses schon her ist (mit Timer brauchts auf jeden Fall weniger Rechenleistung als mit Warteschleifen. Du kannst ja einen Timerwert auch ohne Interupt abfragen(Ich denke das meintest du mit "ohne Timer").).

11.05.2004, 23:35
Also einfach gesagt: Die Datenleitung vom Servo muß auf high geschaltet werden, dann eine Warteschleife von 1 bis maximal 2 ms und dann wieder Datenleitung auf Low setzen. Und das ganze halt so oft wie möglich.

Habe ich das richtig so verstanden?

Gottfreak
11.05.2004, 23:39
Klingt richtig (obgleich man natürlich statt der Warteschleife noch alles mögliche in den 1-2 ms machen könnte).

Minifriese
12.05.2004, 06:20
So oft wie möglich würde ich nicht sagen. Der Impuls sollte etwa alle 20 ms kommen, mehr bringt keine Verbesserung. Ich hab mal versucht, es möglichst schnell zu machen, aber da hat mein Servo angefangen zu brummen. Ob das allerdings schadet, weiß ich nicht. Könnte ja sein, daß man damit die Elektronik irrtiert...
Nils