Witam.
Buduję sterownik kamery z servo, sterowanie podczerwienią RC5. Zacząłem od servo. Zmodyfikowałem program z książki M.Wiązani. Dwa przyciski obracają servem w prawo i w lewo. Oto program:
$regfile = "m8def.dat"
$crystal = 10000000
Config Pinc.1 = Output
Config Pinb.1 = Input
Config Pinb.2 = Input
Config Servos = 1 , Servo1 = Portc.1 , Reload = 10
Dim I As Byte
S1 Alias Pinb.2
S2 Alias Pinb.1
Enable Interrupts
Set Portb.1
Set Portb.2
I = 100
Servo(1) = I
Do
Debounce S1 , 0 , Prawo , Sub
Debounce S2 , 0 , Lewo , Sub
Loop
End
Prawo:
I = I + 2
If I = 162 Then
I = 160
End If
Servo(1) = I
Return
Lewo:
I = I - 2
If I = 38 Then
I = 40
End If
Servo(1) = I
Return
Kilka dni temu chodziło dobrze na dwóch moich servach Hitec: HS81 i HS322. Dziś odpaliłem i i HS322 nie chce się obracać w lewo. W prawo obraca się, ale gdy wciskam przycisk obracający w lewo servo stoi. Mogę je ręcznie obrócić w lewo do pewnego położenia. Dopiero wtedy ponownie mogę obracać je w prawo (jakby zapamietało położenie zgodnie z wciśnięciami przycisku, ale nie mogło się obrócić). Normalne, że serva lekko brzęczą, nawet gdy się nie poruszają??
Jaka powinna być warość parametru RELOAD?? Od czego zależy??
W książce M.Wiązani autor pisze, że wychylenie wałka można zmieniać w zakresie 0,9 - 2,1ms, a środkowe położenie jest 1,5ms dla serva HS311.
Z mojego doświadczalnego programu wynika, że środkowe położenie mam 1ms (wartość I=100 mnożę przez reload??) dla HS322. Dobrze rozumuję??
Napisałem też podobny program, ale dla dwóch serv. Nie działał jednak własciwie. Serva nie zmieniały położenia osi wogóle, albo z opóźnieniem po wciśnięciu przycisku.
Buduję sterownik kamery z servo, sterowanie podczerwienią RC5. Zacząłem od servo. Zmodyfikowałem program z książki M.Wiązani. Dwa przyciski obracają servem w prawo i w lewo. Oto program:
$regfile = "m8def.dat"
$crystal = 10000000
Config Pinc.1 = Output
Config Pinb.1 = Input
Config Pinb.2 = Input
Config Servos = 1 , Servo1 = Portc.1 , Reload = 10
Dim I As Byte
S1 Alias Pinb.2
S2 Alias Pinb.1
Enable Interrupts
Set Portb.1
Set Portb.2
I = 100
Servo(1) = I
Do
Debounce S1 , 0 , Prawo , Sub
Debounce S2 , 0 , Lewo , Sub
Loop
End
Prawo:
I = I + 2
If I = 162 Then
I = 160
End If
Servo(1) = I
Return
Lewo:
I = I - 2
If I = 38 Then
I = 40
End If
Servo(1) = I
Return
Kilka dni temu chodziło dobrze na dwóch moich servach Hitec: HS81 i HS322. Dziś odpaliłem i i HS322 nie chce się obracać w lewo. W prawo obraca się, ale gdy wciskam przycisk obracający w lewo servo stoi. Mogę je ręcznie obrócić w lewo do pewnego położenia. Dopiero wtedy ponownie mogę obracać je w prawo (jakby zapamietało położenie zgodnie z wciśnięciami przycisku, ale nie mogło się obrócić). Normalne, że serva lekko brzęczą, nawet gdy się nie poruszają??
Jaka powinna być warość parametru RELOAD?? Od czego zależy??
W książce M.Wiązani autor pisze, że wychylenie wałka można zmieniać w zakresie 0,9 - 2,1ms, a środkowe położenie jest 1,5ms dla serva HS311.
Z mojego doświadczalnego programu wynika, że środkowe położenie mam 1ms (wartość I=100 mnożę przez reload??) dla HS322. Dobrze rozumuję??
Napisałem też podobny program, ale dla dwóch serv. Nie działał jednak własciwie. Serva nie zmieniały położenia osi wogóle, albo z opóźnieniem po wciśnięciu przycisku.