sieh mal in der Hilfe unter "config servos" nach.
Vielleicht gehts dann besser.
Hi,
Ich möchte gerne ein Servo mit PWM am Pin d5 beim MEGA32 (sollte dieser spezial port sein oder?) ansteuern. Hab dazu folgenen code zusammengesucht.
aber leider ruckelt das Servo nur ein bischen, habs auch schon mit anderen Werten außer -50 -> 50 versucht immer ruckelt das servo und zieht eine menge an Strom. Ist der Code den Richtig oder liegt da der Fehler begraben, denn mit einer normalen Fehrnsteuereung kann man das Servo normal anstuern ohne Probleme.Code:$regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 1000000 Config Portd = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 Enable Timer1 Enable Interrupts Do Compare1a = 50 Compare1b = -50 Portd.6 = 1 Waitms 2000 Compare1b = 50 Compare1a = -50 Portd.6 = 0 Waitms 2000 Loop End
sieh mal in der Hilfe unter "config servos" nach.
Vielleicht gehts dann besser.
Schon mal das Wort Servo angeklickt?
Da ist ein Code dabei. Das muss nicht so kompliziert wie bei deinem Code sein.
jon
Hi, Danke
den Code hab ich schon ausprobiert und zwar in der form
läuft immer noch nicht , bei diesem Code blinkt nicht einmal das led. Das Servo rukelt immer noch, zwar anders als beim ersten code aber.... Vorm halben jahr hatte ich schon ein mal mit Servos etwas gebaut damals hab ich es auch hin bekommen leider nur habe ich den code nicht mehr. Ist denn der Code nun falsch muss man irgentwelche spezial Bits noch setzten?Code:$regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 1000000 Config Servos = 2 , Servo1 = Portd.4 , Servo2 = Portd.5 , Reload = 1 Config Portd = Output Enable Interrupts Do Servo(1) = 110 Servo(2) = 100 Portd.6 = 1 Waitms 2000 Servo(1) = 60 Servo(2) = 60 Portd.6 = 0 Waitms 2000 Loop End
probier mal: reload=10
Gruß, Rene
hi,
ich hab mal ein servo dran gehangen wo das poti abgekoppelt ist etc.
da läuft der erste Code rukel frei leider verhält er sich bei einem "normalen" servo komisch. Das schlägt aus und zuckt ein bischen rum.
Beim Zweiten code ruckelt das abgekoppelte servo in einer Richtung. und bei dem Normalen servo ruckelt das acuh zu immer der gleichen stelle(egal wie ich die werte wähle ). Woran kann das liegen ?
MFG
die frequenz von 1Mhz ist viel zu wenig habe persönlich die erfahrung gemacht das das servo sich erst ab 4Mhz so richtig verhält
das servo ansich alleine sollte gehen aber wenn noch ein timer ins spielkommt und dann noch timer 0 dann ist essig mit sauberem signal bei 1Mhz
beim tiny26 mit 8mhz intern ist das alles kein problem siehe oben im beitrag
wenn das layout für eagel gewünscht wird oder das programm kann ich gerne zur verfügung stellen
eminen wichtig bei Bascom ist die reienfolge der inizialisierungCode:'///////////////////////////////////////////////////////// '/// Bascom ISP Programmer TEST /// '/// PORT B toggel LED SERVOan portb3 LCD ' ADC1 porta1=signal 0-5V FUNKTION TYNY26 feb 2007 '///////////////////////////////////////////////////////// $regfile = "AT26def.dat" ' used device $crystal = 8000000 $hwstack = 32 ' default use 32 $swstack = 10 'default use 10 for $framesize = 40 'default use 40 for Ddra = &B11110000 Config Adc = Free , Prescaler = 64 , Reference = Off Start Adc Config Pinb.3 = Output Config Pinb.4 = Output Config Pinb.5 = Output Config Servos = 1 , Servo1 = Portb.3 , Reload = 10 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portb.5 , Rs = Portb.4 Config Lcd = 20 * 2 Const Teiler = 0.00488 Const Teiler2 = 1.636 Enable Interrupts Dim Wertad As Word Dim Tmp As Word Dim Wertse As Byte 'Dim A As Byte 'Dim Teiler As Single Dim Volt As Single Wertad = 500 Do Waitms 10 Wertad = Getadc(1) If Wertad > 1022 Then Wertad = 1022 If Wertad < 10 Then Wertad = 10 Tmp = Wertad / 4 If Tmp > 150 Then Tmp = 150 If Tmp < 40 Then Tmp = 40 Wertse = Low(tmp) Servo(1) = Wertse Volt = Wertad * Teiler Cls Lcd "Volt :" ; Volt Locate 1 , 11 : Lcd " V " '; Fusing(volt , "# . ##") Lowerline Wertse = Wertse - 40 Volt = Wertse * Teiler2 Lcd "Grad :" ; Volt Locate 2 , 13 : Lcd " " '; Fusing(volt , "# . ##") Waitms 100 Loop
Lesezeichen