|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
malix Profesionalec
Pridružen/-a: Sre Jan 2004 16:11 Prispevkov: 100 Kraj: Maribor
|
Objavljeno: Pet Feb 10, 2012 2:35 pm Naslov sporočila: Servo motor in PWM |
|
|
Po dolgem času sem se spet usedel za Atmele AVR 32 in 8MHZ kristal
Predelal sem modelarski servo motor da se lahko neskončno vrti v levo in v desno stran.
Nikakor mi ne uspe narediti PWM signala, ki je primeren za servo motorje
Vsakih 20 ms mora biti impulz dolg 1.25 ms za levo in 1.75 ms za desno stran vrtenja.
Ali ima kdo kaj podobnega kje v predalu? _________________ www.MaLiX.si |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Pet Feb 10, 2012 10:04 pm Naslov sporočila: |
|
|
Hoj,
servo ukaz v Bascomu je malo neposrečen (beri - ne deluje dobro). Zato ti priporočam uporabo tega programa:
Koda: | 'Program *** Step motor ***
$crystal = 8000000
$regfile = "m8515.dat "
$hwstack = 32
$swstack = 8
$framesize = 32
Dim Servo As Word
Ucsrb.3 = 0 'necessary only if bootloader is used
Ucsrb.4 = 0 'necessary only if bootloader is used
Servo1_pin Alias Portb.0 'Servo1 control pin
Servo2_pin Alias Portb.0 'Servo2 control pin
'in this example only Servo1 is used buth Servo2 definition is necessary;
'therefore, Servo2 targets the same pin as Servo1, but is never used
Gosub Config_servo
Do
Servo = 1500
Gosub Servo1 'set Servo1 in the middle position
Wait 5
For Servo = 900 To 2100
Gosub Servo1 'turn Servo1 slowly from one...
Waitms 5 '... to the other end position
Next
Wait 5
Loop
End
'* Servo Motor Subroutines
End
Dim Servo_aux As Long
Servo1:
Gosub Servo12
Disable Interrupts
Compare1a = Servo_aux
Enable Interrupts
Return
Servo2:
Gosub Servo12
Disable Interrupts
Compare1b = Servo_aux
Enable Interrupts
Return
Servo12:
Servo_aux = -1
Decr Servo
If Servo < 20000 Then
Servo_aux = _xtal / 1000
Servo_aux = Servo_aux * Servo
Servo_aux = Servo_aux / 8000
End If
Incr Servo
Return
Config_servo:
Config Servo1_pin = Output
Config Servo2_pin = Output
On Compare1a C1a_sub Nosave
On Compare1b C1b_sub Nosave
On Capture1 T1_sub Nosave
Compare1a = -1
Compare1b = -1
Capture1 = _xtal / 400
Enable Compare1a
Enable Compare1b
Enable Capture1
Enable Interrupts
Config Timer1 = Timer , Prescale = 8 , Clear Timer = 1
Set Tccr1b.wgm13
Return
C1a_sub:
Reset Servo1_pin
Return
C1b_sub:
Reset Servo2_pin
Return
T1_sub:
Set Servo1_pin
Set Servo2_pin
Return |
Lp
Jure |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu You cannot attach files in this forum You cannot download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|