Skocz do zawartości

Sterownie serwami


_cyna_PL

Pomocna odpowiedź

Witam 🙂

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

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 :

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

Config Portc.0 = Output

Enable Interrupts

Do
Servo(1) = 100



Loop
Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Przetestuj to:

    $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.

Link do komentarza
Share on other sites

Przetestuj to:
$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 :

$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.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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ć 😋

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.