Hi,
ich verstehe was du meinst. Werde die 20ms durch die 18ms ersetzen. Das Servo steht unter keiner mechanischen last. Es wird auf dem Servo ein SRF05 installiert und dieser wird dann vom servo gedreht.
mfg Kay
Druckbare Version
Hi,
ich verstehe was du meinst. Werde die 20ms durch die 18ms ersetzen. Das Servo steht unter keiner mechanischen last. Es wird auf dem Servo ein SRF05 installiert und dieser wird dann vom servo gedreht.
mfg Kay
mal ne kurze frage am rande:
es steht ja geschrieben, das bei 4 mhz ein pulseout befehl eine länge von 1 us
ausgibt also sind dann 1500us 1,5ms also die mitte des servos. wie rechnet man das dann eigentlich um wenn man z.b. 12 mhz hat und dann auch eine länge von 1500us erzeugen will?
Hier habe ich mal eben ein kleines programm geschrieben, mit dem ich ein servo mit hilfe von zwei tastern verstellen kann... kann man das so lassen? ich kann es leider erst morgen testen da mein atmega8 noch nicht da ist^^.
und noch ne kleine anfängerfrage: kann man für eine variable ein definitionsbereich einstellen?
vielen dank, mfg adrian
Code:$regfile = "m8def.dat"
$crystal = 4000000
Config Portc.0 = Output
Config Pinc.1 = Input
Config Pinc.2 = Input
Dim I As Word
Up Alias Pinc.1
Down Alias Pinc.2
I = 1500
Portc.0 = 0
Wait 1
Pulse:
Pulseout Portc , 0 , I
Waitms 18
If Up = 1 Then
I = I + 50
End If
If Down = 1 Then
I = I - 50
End If
Goto Pulse
Wenn du bei 4 MHz 1500 einstelle musst, um 1,5ms zu bekommen, dann musst du bei 12 MHz:
1500/4*12 einstellen.
Vorrausgesetzt das Pulseout absolut Taktabhängig ist, was ich vermute, da kein Timer verwendet wird.
Was dein Programm angeht, so müßte es funktionieren. Kommt aber auch darauf an, wie du die Taster beschaltet hast. Gehen die von den Input-Pins an +? Dann solltest du besser einen Pulldown-Widerstand einfügen. Du kannst die Taster natürlich auch an - gehen lassen und die internen Pullups verwenden. Dann müßten die if-abfragen allerdings lauten "if up=0 then".
Was den Definitionsbereich angeht ist dies nur über dim in gewissen Grenzen möglich (Byte, Integer, Word, etc.) du solltest daher noch ein dein Programm einbauen, das z.B. I nur dann erhöht wird, wenn der Wert von I nicht schon zu hoch ist und nur dann vermindert wird, wenn der Wert keinen kleineren Impuls als 1ms erzeugt.
Damit beugst du einem an seine Grenzen anschlagenden Servo vor.
Gruß MeckPommER
Hey super, vielen dank für die schnelle antwort. also das mit dem pullup/pulldown ist mir auch noch aufgefallen...das werde ich also noch ändern. Und vielen dank für den tipp mit dem, dass I einen bestimmten wert nicht über-/unterschreiten darf!
Viele Grüße.... Adrian
p.s: Ich werde das programm heut oder morgen mal testen und hier dann bericht erstatten.