-
Hallo!
Habe das gleiche Problem mit dem Servo. Hab die Werte
Servo(1) = 30
Waitms 1000
Servo(1) = 90
Waitms 1000
Servo(1) = 180
Waitms 1000
versucht und der Servo läuft ruckartig nur in eine Richtung und versucht am Endanschlag weiterzufahren. Wenn ich die Spannung vom Servo wegnehm und wieder draufgebe läuft er in den gleichen Schritten in die andere Richtung. Der Servo (Robbe RS 101) ist schon recht alt, so ca. 15 Jahre. Kann´s sein, dass diese anders angesteuert werden müssen?
MfG
Timmy
-
also raptor_79 ich meinte kann ich den PWM so berechnen,einstellen das er ein high von z.b. 1.5 ms sendet. als nächstes wollte ich das so machen das ich über rs 232 z.b. sende l für links und er sagt dem pwm wie er den puls zu machen hat und der servo geht einmal links.
und über software kann man sowas denke ich doch auch machen um jeden port benutzen zu können nur wie mache ich für jeden pin das timing. bei pwm hätte ich ja nur begrentzt ports oder.
frage: kann man ausrechnen was man in die servo befehle einsetzten muss um die richtige pulslange zu bekommen.
desweiteren bei einer fernsteuerung ist es doch so eine bestimmte hebel stellung gibt einen bestimmten puls und dieser puls sagt dem servo wo er stehen soll und dort bleiben bis der puls z.b. erhöht wird sodas der servo einwenig weiter geht und dort bleibt. gibt es da irgend wie was womit man sich sowas erschliessen kann oder so.
ich habe keinen so ein alten servo also ich glaube kaum das es daran liegt denn sonst müsste ja jeder modellflieger seine servos austauschen weil die nich kompatibel zu einer neuen fernsteuerung sind. bei mir ist das mit der spannung was du das beschreibst jedoch nicht. er leuft bei mir egal was ich da einsetzt ob 30 oder 180 oder von mir aus 255 immer in eine richtung und das immer noch auch wenn er am ansclag angekommen ist. ich weiss ehrlich nicht wo da der fehler sein soll.
bei wem von euch geht das den und welche servos mit welchen werten für 1 schritt links
1 schritt rechts
und zentral mitte
habt ihr.
das macht mich nämlich völlig verrückt ich könnte ja dem nach nichteinmal einen hexapod ohne zusätze steuern.
mfg
-
ist es den viel komplizierter wenn man einen 10 Bit timer nimmt?
-
Hallo AVRBoy,
Hier gab es letztes Jahr eine Disskussion zum Thema. Das Flußdiagramm am Ende zeigt eine Möglichkeit. Bei Bedarf kram ich auch das Programm dazu nochmal raus.
Gruß, Michael
-
ich habe meie werte mit RELOAD=7
mit 10 gehts bei mir auch nicht.
ich hab das genze mit einem oszi ausgemessen bzw. verglichen.
läuft super.
und was die servos angeht.
also das servosignal (das ist das signal, was vom empfänger an das servo abgegeben wird) sieht so aus.
puls nach 18ms, der selber 2ms dauert bei vollausschlag in eine richtung, und 1,5ms bei neutral (knüppel mitte) und 1,1ms etwa wenn vollausschlag andere richtung.
das sind aber jetzt die werte für mein servo und geproggtem sender.
grundsätzlich wird/ist das immer so. zumindest im groben. generell muß ich bei servos die endpositionen und neutralstellung anpassen. (beim flugzeug jetzt) das mach ich, indem ich es an der fernsteuerung einstelle)
würde die werte jetzt aber im großen und ganzen als allgemein geltend bezeichnen, da ich je mehrere flugzeute und servos habe (neue und sehr alte) und es aber nie probleme gibt. ich kanns immer einstellen.
schlimmstenfalls muß ich wegen servobrummen (servo steht an) den vollausschlag zurücktrimmen/begrenzen. aber die servos lassen sich immer steuern.
mach es einfach mit "SERVO" mit config servo kannst ja den port bestimmen. da und servo(2) sagt dann ja auch, welches servo gemeint ist.
noch fragen?
Code:
$regfile = "M32def.dat"
$crystal = 4915200
$baud = 4800
'*******************************************************************************
'******************************* LCD-Conf-Block ********************************
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0
Config Lcdbus = 4
Config Lcdmode = Port
Cursor Off Noblink
'Config Servo
Config Servos = 1 , Servo1 = Portb.1 , Reload = 7 'Reload=7 funktioniert am besten
'Config Servopin on AVR
Config Portb.1 = Output
'Enables Interrupts
Enable Interrupts
Cls
Do
Servo(1) = 35 'Links 35=linker Anschlag
Lcd "Position 35"
Waitms 200
Cls
Servo(1) = 90 'Mitte 90=etwa die Mitte
Lcd "Position 90"
Waitms 200
Cls
Servo(1) = 180 'Rechts 180=rechter Anschlag
Lcd "Position 180"
Waitms 200
Cls
Loop
End
das ist ein kleines servotest programm. hab dir das mal hingestellt. muß halt nur an deinen MC angepasst werden (pin/port-belegung)