Strona Główna
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy RegulaminRegulamin  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj




mikrosterowniki.pl

Przyszłość jest w naszych rękach...
...bo przyszłość to robotyka.





Poprzedni temat «» Następny temat
Sterownie serwami
Autor Wiadomość
_cyna_PL 



Pomógł: 1 raz
Posty: 47
Otrzymał 1 piw(a)
Skąd: Z nikąd
Wysłany: 23 Sie 08 04:28   Sterownie serwami

Witam :)

Mam mały problem z sterowaniem serwem. Czytałem w help bascoma o instrukcji "CONFIG SERVOS" . Nie wiem czemu serwo po podaniu :
Kod:

Servo(1) = 100                      'włącz na 1000 mikrosekund

Servo(2) = 200                      'włącz na 2000 mikrosekund



ustawia się w ta sama pozycje [ max w lewo]

Oto program :
Kod:
$regfile = "m8def.dat"
$crystal = 8000000
Config Servos = 1 , Servo1 = Portc.0 , Reload = 10

Config Portc.0 = Output

Enable Interrupts

Do
Servo(1) = 100



Loop
Postaw piwo autorowi tego posta
 
 
marek91 



Pomógł: 7 razy
Posty: 94
Otrzymał 12 piw(a)
Skąd: Mikołów
Wysłany: 23 Sie 08 05:05   

Propozycja: skopiuj cały program z pliku pomocy i pozamieniaj tylko niektóre dane (porty)
_________________
Gość klikając przycisk "piwo" stawiasz browara biednemu dziecku z afryki
Postaw piwo autorowi tego posta
 
 
 
_cyna_PL 



Pomógł: 1 raz
Posty: 47
Otrzymał 1 piw(a)
Skąd: Z nikąd
Wysłany: 23 Sie 08 06:42   

Jak skopiuje z help bascoma to wcale się nie obraca;/
Postaw piwo autorowi tego posta
 
 
Kshaq


Pomógł: 1 raz
Posty: 87
Otrzymał 29 piw(a)
Skąd: Sosnowiec

II miejsce w konkursie na najlepszy artykuł.

Wysłany: 23 Sie 08 08:30   

Hm... a procek na pewno jest taktowany 8MHz? To też może być przyczyna, program myśli, że coś trwa 1 sekunde, a w rzeczywistości jest dwa razy wolniej lub dwa razy szybciej :)

//daniel93
Usunąłem żeby nie wprowadzać w błąd.
_________________
Pozdrawiam,
Rafał.
Postaw piwo autorowi tego posta
 
 
_cyna_PL 



Pomógł: 1 raz
Posty: 47
Otrzymał 1 piw(a)
Skąd: Z nikąd
Wysłany: 24 Sie 08 10:24   

Cytat:
Hm... a procek na pewno jest taktowany 8MHz?


tak jest taktowany 8 mhz
Postaw piwo autorowi tego posta
 
 
daniel93 



Pomógł: 11 razy
Posty: 390
Otrzymał 19 piw(a)
Skąd: Wujskie
Wysłany: 24 Sie 08 11:06   

Przetestuj to:
Kod:
    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Servos = 1 , Servo1 = Portc.0 , Reload = 10

    Config Portc.0 = Output

    Enable Interrupts

    Do
    Servo(1) = 100
 
    wait 5
 
    Servo(1) = 200

    wait 5
    Loop


Pownien zmieniać pozycje co 5s.
Postaw piwo autorowi tego posta
 
 
_cyna_PL 



Pomógł: 1 raz
Posty: 47
Otrzymał 1 piw(a)
Skąd: Z nikąd
Wysłany: 24 Sie 08 04:23   

Cytat:
Przetestuj to:
Kod:
$regfile = "m8def.dat"
    $crystal = 8000000
    Config Servos = 1 , Servo1 = Portc.0 , Reload = 10

    Config Portc.0 = Output

    Enable Interrupts

    Do
    Servo(1) = 100
 
    wait 5
 
    Servo(1) = 200

    wait 5
    Loop

Pownien zmieniać pozycje co 5s.


Żadnej reakcji sprawdzałem na innych serwach, i innym Procku i tez to samo :-?

Po chwili namyslu pdalem taki program :

Kod:
$regfile = "m8def.dat"
    $crystal = 8000000
    Config Servos = 1 , Servo1 = Portc.0 , Reload = 10

    Config Portc.0 = Output

    Enable Interrupts

    Do
    Servo(1) = 100



    Loop


Po odpaleniu serwo ustawie się w pozycji prawie na środku.

ale po dodaniu kolejnej pozycji na jakiej ma się ustawić bez czasu oczekiwania serwo nie reaguje na polecenia.
Ostatnio zmieniony przez _cyna_PL 24 Sie 08 04:59, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 
 
urbi


Posty: 15
Otrzymał 1 piw(a)
Skąd: Września
Wysłany: 24 Sie 08 05:46   

Na początek sprawdż to co radził Kshaq. Napisz prosty programik, który zapala/gasi diodę LED co określony czas, np. 1 sekunde (polecenie Wait 1) i zobacz czy rzeczywiście trwa to sekundę. Możesz mieć włączony podzielnik i wszystko działa nie tak.
Postaw piwo autorowi tego posta
 
 
_cyna_PL 



Pomógł: 1 raz
Posty: 47
Otrzymał 1 piw(a)
Skąd: Z nikąd
Wysłany: 24 Sie 08 06:24   

Cytat:
Napisz prosty programik, który zapala/gasi diodę LED co określony czas, np. 1 sekunde (polecenie Wait 1) i zobacz czy rzeczywiście trwa to sekundę.



sprawdzałem i jest tak jak ma być :-P
Postaw piwo autorowi tego posta
 
 
urbi


Posty: 15
Otrzymał 1 piw(a)
Skąd: Września
Wysłany: 25 Sie 08 01:27   

Dobrze, że oscylator jest ustawiony prawidłowo, ale jednak nie w tym rzecz.
Znalazłem właśnie fragment w książce Marcina Wiązani: "[...] Aby serwa były prawidłowo obsługiwane, należy stosować dla mikrokontrolera rezonatory kwarcowe o częstotliwości powyżej 8 MHz..." Autor w swoim przykładzie stosuje kwarc 10 MHz, może spróbuj zrobić tak samo.
Postaw piwo autorowi tego posta
 
 
_cyna_PL 



Pomógł: 1 raz
Posty: 47
Otrzymał 1 piw(a)
Skąd: Z nikąd
Wysłany: 25 Sie 08 01:34   

nie mam 10 MHz ;p muszę skoczyć do sklepu
Postaw piwo autorowi tego posta
 
 
daniel93 



Pomógł: 11 razy
Posty: 390
Otrzymał 19 piw(a)
Skąd: Wujskie
Wysłany: 25 Sie 08 01:58   

Nie wiem czy to polecenie korzysta z timera - jeśli tak to musisz dodać enable timerX
Postaw piwo autorowi tego posta
 
 
urbi


Posty: 15
Otrzymał 1 piw(a)
Skąd: Września
Wysłany: 25 Sie 08 07:51   

Polecenie korzysta z licznika Timer0, ale wygląda na to, że przerwanie jest odblokowywane automatycznie. Należy jedynie odblokować globalny system przerwań (Enable Interrupts).
Postaw piwo autorowi tego posta
 
 
Maxo 



Pomógł: 2 razy
Posty: 185
Otrzymał 6 piw(a)
Skąd: Krynica-Zdrój
Wysłany: 03 Wrz 08 03:48   

A na pewno dobrze podłączone serwo ?;] tzn Czy kabelki się nie pomyliły i sygał jest podawany na odpowiedni...
Postaw piwo autorowi tego posta
 
 
misiek1994 



Pomógł: 2 razy
Posty: 190
Otrzymał 13 piw(a)
Skąd: z Sędziszowa
Ostrzeżeń:
 1/3/4
Wysłany: 03 Wrz 08 05:57   

Wygląda to tak, jakbyś miał jakieś zwarcie. Serwo, jeśli podasz tylko sygnał sterujący obraqca się na środek. Może masz zwarce między zasilaniem, a sterowaniem???
Postaw piwo autorowi tego posta
 
 
 
_cyna_PL 



Pomógł: 1 raz
Posty: 47
Otrzymał 1 piw(a)
Skąd: Z nikąd
Wysłany: 04 Wrz 08 06:23   

Cytat:
A na pewno dobrze podłączone serwo ?;] tzn Czy kabelki się nie pomyliły i sygał jest podawany na odpowiedni...


Tak serwo jest dobre podłączone.

Cytat:
Może masz zwarce między zasilaniem, a sterowaniem???


nie na zwarcia , wszystko dokładnie sprawdziłem .
Postaw piwo autorowi tego posta
 
 
daniel93 



Pomógł: 11 razy
Posty: 390
Otrzymał 19 piw(a)
Skąd: Wujskie
Wysłany: 04 Wrz 08 04:06   

_cyna_PL napisał/a:
Kod:
Servo(1) = 100                      'włącz na 1000 mikrosekund

Servo(2) = 200                      'włącz na 2000 mikrosekund

Znalazłem błąd, masz o zero za dużo, zamaist:
Kod:
Servo(1) = 100

powinno być:
Kod:
Servo(1) = 10
Postaw piwo autorowi tego posta
 
 
JStan 


Posty: 26
Otrzymał 7 piw(a)
Skąd: Sanok
Wysłany: 03 Paź 08 07:44   

Z tym kwarcem to nie jest tak, jeśli zastosuje się 10MHz to jest równy przelicznik poprostu na ms potem. Jeśli jest inny to nic się nie dzieje, natomiast przy większej liczbie serw warto zastosować kwarc 16MHz. Ja na płytce testowej mam 8MHz i na nim sprawdzałem serwa i działają.

Pozdrawiam!!
_________________
Moje konstrukcje:

Manipulator - http://www.dioda.com.pl/f...lator-vt920.htm
Postaw piwo autorowi tego posta
 
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


website uptime

Powered by phpBB modified by Przemo © 2003 phpBB Group
REKLAMAPorównywarka cen elektronikiLove and Lighttaniec z gwiazdamitaniec nowoczesny Warszawakredyt przez internetneroBearShare