PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servo funktioniert einfach nicht



Inkoknito
02.01.2008, 16:23
hallo,

ich hab hier ein Servo von Acoms den AS -12, herausgefunden hab ich schon das die mittelstellung bei 20 ist und links bei 10 und rechtsbei 30, kann das schonmal sein das die werte so dicht bei einander liegen?

so aber nun das eiegentliche Problem:

der servo läuft einfach nicht flüssig er zuckelt und ruckelt einfach nur ich hatte mal folgendes Progamm geschrieben



$regfile = "m32def.dat"
$crystal = 1000000

Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 5

Enable Interrupts
Dim I As Byte


Do
For I = 10 To 30 Step 1
Servo(1) = I
Waitms 10
next
Loop

ichh hab auch schon so ziemlich viel hier forum gelesen und probiert aber ich griegs einfach nicht gebacken.

und wenn ich die takt frequenz von 1 Mhz auf was anderes andere stimmen die Stell wert gleich nicht mehr.

bislle hilfe wäre echt nett ich binhier schon voll am verzweifeln

danke^^

Michael
02.01.2008, 16:35
Hallo Inkoknito,

Die Bascom-Servo Routine wird bei dir alle 5 Mikrosekunden aufgerufen (Reload Wert)
Bei einer Taktfrequenz von 1 MHz sind das 5 Takte !!

Für die Benutzung des Servo-Befehls solltest du mindestens 8Mhz Taktfrequenz und einen Mindest-Reload-Wert von 10 haben.

Der Reload Wert multipliziert mit dem Wert von Servo() ergibt die Impulslänge in Mikrosekunden. Sie sollte zwischen 1000 und 2000 liegen.

Ist die Taktfrequenz und/oder der Reload Wert zu niedrig, gibt es Überläufe, die man schwer vorausberechnen kann -> Servo ruckelt.

Gruß, Michael

Inkoknito
02.01.2008, 16:48
hy danke Michael für deine schnelle antwort
ich hab das mal geändert in folgendes Programm

$regfile = "m32def.dat"
$crystal = 8000000

Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10

Enable Interrupts
Dim I As Byte


Servo(1) = 10


so jetzte hab ich Servo(1) = 10 der servo steht aber nicht stell er zuckt zwar nicht am endwert aber in der mitte etwa 3 millimeter hin und her
wenn ich bsp 100 eingebe dann zuckt der servo links oder rechts an der mittelstellung.
das gibs doch garnicht das muss doch irgendwie funzen
mfg

stefan_Z
02.01.2008, 16:50
Du hast die neue Frequenz auch über die Fusebits eingestellt?

Inkoknito
02.01.2008, 16:53
wie über die fusebits? ich nehm den internen oszilator muss ich da noch was in den fusebits umstellen ich dacht das muss man nur wenn ich einen externen nehme?

mfg

Xtreme
02.01.2008, 17:46
Nö, der interne Oszillator ist auf 1Mhz eingestellt. Willst du ihn ändern hilft es nichts, den $crystal Wert im Quelltext zu verändern. Das muss über die Fusebits geschehen (CKSEL)
Im übrigen bin ich mir nicht sicher, ob der interne Osizillator genau genug für Servoansteuerung ist.

Inkoknito
02.01.2008, 21:31
danke nochmal für eure antworten

hab ich gemacht die fusebits auf 8 mhz gestellt auf intern RC osz 8mhz start up time 6CK + 0ms und geh dann auf write FS
jedoch wird das irgend wie nicht gespeichert. komisch?

aber kann das wirklich daran liegen das der mega nur auf 1mhz das der servo ruckel beim fahren?

mfg

stefan_Z
02.01.2008, 22:32
http://palmavr.sourceforge.net/cgi-bin/fc.cgi
Die Seite ist EXTREM prakisch... schau mal da!
probieren kostet nix...

Inkoknito
02.01.2008, 22:40
und wie was kann man da machen^^ also was ich da mach ist schon klar aber wofür : )
meine fusebits werden in bascom nicht gespeichert werder der interner 8mhz osz. oder alles andere was ich veränder
das wäre aber die einzige idee warum die servos nicht richtig funzen sonst hab ich alles schon ausprobier : / langsam zweifel ich an mir.

mfg

stefan_Z
02.01.2008, 23:23
Machs mit PonyProg, dann gehts.

Xtreme
03.01.2008, 11:19
aber kann das wirklich daran liegen das der mega nur auf 1mhz das der servo ruckel beim fahren?


Jop...



Für die Benutzung des Servo-Befehls solltest du mindestens 8Mhz Taktfrequenz und einen Mindest-Reload-Wert von 10 haben


meine fusebits werden in bascom nicht gespeichert werder der interner 8mhz osz. oder alles andere was ich veränder

Kann er den Chip denn überhaubt noch auslesen?? Vieleicht hast du schon zu viel verändert ;)
Welche Bascom- Version?