PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servo spinnt rum..



Razzorhead
14.08.2009, 00:37
Hi leute,

Ich bin dabei mir ein bein eines hexapods zu bauen, erstmal zum testen.
Aber irgendwie will mein servo nicht so wie ich das will.
Am anfang als ich ihn getestet hatte hatte er so ca. 60 schritte bis zum anschlag.
Mittlerweile kommts mir vor als obs nurnoch 7 sind!
Ich steuer den servo über den internen bascom servo(i) befehl an.
Wenn ich nun zb etwas in der art mach:



Do
Waitms 30
Incr Winkel
Servo(1) = Winkel
If Winkel = 30 Then
Winkel = 0
End If
Loop


Ist bevor die 30 erreicht wurde schon lange der anschlag erreicht.
Dabei habe ich gehört servos sollen bei 50 ihren anfang haben, 100 mitte und 150 ende.
Ausserdem ruckelt das teil manchmal wie sau, wenns auf den kopf steht bzw nicht ganz gerade... und das programm wird währenddessen auch unterbrochen!
Der servo ist der VSD-1 von conrad.
http://www1.conrad.de/scripts/wgate/zcop_b2c/~flN0YXRlPTQyMzYzMzY0NzI=?~template=pcat_product_d etails_document&product_show_id=205387&no_brotkrumennavi=1&zhmmh_area_kz=LN

Natürlich kann man für 5€ nicht viel erwarten, aber immerhin das der servo das macht was er machen soll.
Wenn ich ihn über taster ansteuern will spinnt der völlig rum und macht eh was er will, kann aber auch sein weil ich nicht gemerkt hatte das der schrittbereich bis gerademal ca. 15~20 geht...
Also mach ich was falsch oder ist es einfach ein scheiss servo der schon im eimer ist?

gruß
Raz
//edit: zum glück les ich mich gerade in C rein... es nervt absolut keine kontrolle zu haben...

recycle
14.08.2009, 02:13
Ausserdem ruckelt das teil manchmal wie sau, wenns auf den kopf steht bzw nicht ganz gerade... und das programm wird währenddessen auch unterbrochen!
......
Natürlich kann man für 5€ nicht viel erwarten, aber immerhin das der servo das macht was er machen soll.

Ja, aber im Gegenzug kann das Servo auch verlangen, dass man es richtig ansteuert und ausreichend füttert ;-)
Dass der Servo deinen Programmablauf umprogrammiert ist recht unwahrscheinlich und wenn das Programm nicht richtig läuft und sogar stehen bleibt, wird der Servo wohl kaum noch die richtigen Steuerimpulse bekommen.
Wenn der Servo nur müde zappelt und der Contoller resetted hört sich das für mich nach einer wackeligen, zu schwachen Stromversorgung an.



Also mach ich was falsch oder ist es einfach ein scheiss servo der schon im eimer ist?

An einer RC Fernbedienung machen meine 5€ Servos von Conrad bisher alle das was sie sollen und sind noch nicht auffällig schnell kaputt gegangen.



//edit: zum glück les ich mich gerade in C rein... es nervt absolut keine kontrolle zu haben...

Klingt ein bischen als hättest du dir deine vorherige Frage inzwischen selbst beantwortet, denn wenn es an den Servos läge, könnte eine andere Programmiersprache die auch nicht besser machen ;-)

Was bewegt dich zu der Annahme, dass du in C mehr Kontrolle hast?
Dass es in Bascom eine fertige Routine für Servos gibt, heisst nicht, dass du die unbedingt benutzen musst.
Die kannst du dir in Bascom genauso mit einem Timer selber zusammen basteln wie in C.

radbruch
14.08.2009, 07:44
Hallo

Die 5€-Servos funktionieren zufriedenstellend. Ich tippe eher auf einen Fehler in der Servokonfiguration. Neben dem richtigen Reloadwert und freigegebenen Interrupts muss unbedingt die richtige Taktfrequenz des Kontrollers angegeben werden ($crystal = xxxxxxx) Der Drehbereich der Servos startet normaleweise nicht bei null, dies ist eigentlich schon ein Hinweis auf ein falsches Timeing. Hier ein Beispiel für einen Mega32 mit 8MHz:

$regfile = "M32def.dat" ' RP6 mit Mega32
$crystal = 8000000 ' taktet mit 8MHz

Config Servos = 2 , Servo1 = Porta.0 , Servo2 = Porta.1 , Reload = 10
Servo(1) = 90
Servo(2) = 85
Config Porta.0 = Output
Config Porta.1 = Output
Enable Interrupts
(Servomitte ist hier etwa 90)

Möglicherweise ist das Anschlusskabel im Servo nicht richtig angelötet. Bei einigen meiner Billigservos traten Kürzschlüsse auf, weil sich einzelne Kupferdrähtchen an den Lötpunkten berührten. Auch Kabelbrüche treten ungewöhnlich häufig auf, weil die Kabel so eng verlegt sind und keine vernünftige Zugentlastung eingebaut wurde.

Gruß

mic

Razzorhead
14.08.2009, 14:35
Natürlich startet ein servo normalerweise nicht bei 0
Das ist mir klar, aber nach meinen ganzen rumtesten hab ich gemerkt das der servo mit 0 für einen anschlag gut klar kommt, wenn der andere anschlag schon bei 20 ist.
Mit dem code hier hab ich nochmal geschaut wo der servo sich nun wie bewegt.



While Winkel < 20
Incr Winkel
Servo(1) = Winkel * 10
Waitms 100
wend


Das ganze läuft wie folgt ab:
winkel = 10 rechter anschlag
Winkel = 20 linker anschlag.
Also nix mit 90 mitte :D (leider)
Die servos sind richtig eingestellt und der mega8 läuft auf 8mhz intern oszi.

der servo hat etwa 10 schritte...

Nun gut ab jetzt kann ich schreiben er hatte 10 schritte... hab die fuses nochmal gecheckt und siehe da ... er läuft (komischerweise) nur auf 1mhz.
Das erklärt das rumgespinne :D

Aber nicht das zucken wenn er "auf dem rücken" liegt.
da es nicht bei aufrechter position ist kann es schlecht was mit unzureichender stromversorgung oder so zu tun haben...
Wenigstens kann ich ihn nun richtig ansteuern :)

LG raz