Skocz do zawartości

[ Bascom] Sterowanie serwami atmega8 8MHz


hansfreak

Pomocna odpowiedź

Witam wszystkich , jako że jest to mój pierwszy post na diodzie.

Staram się do bólu wykorzystywać opcję szukaj ale mój problem niestety ją przerósł 🙂

Czy jest możliwe sterowanie 2 serwonapędami przy użyciu polecenia servos(n)= x przy zew rezonatorze 8MHz? Przy studiowaniu książki Marcina Wiązania natknąłem się na informację że powinno to być powyżej 8MHz (w tamtejszym przykładzie zastosowano 10MHz). Chciałem sprawdzić tą informację 😋 , więc przerobiłem program tak aby obserwować pracę serw dla poszczególnych wartości "I" od 0 do 150. Zaobserwowałem zmianę położenia serwa 1 z każdym krokiem w przedziale od 0 do 65 , następnie następuje blokada więc zakładam że szerokość impulsu sterującego wynosi powyżej 2,0ms . Mógłby mi ktoś łopatologicznie wytłumaczyć jak się ma parametr RELOAD i częstotliwość rezonatora do charakterystyki generowanego sygnału pwm ?

załączam program

UWAGA przestrzegam przed używaniem tego programu może doprowadzić do uszkodzenia serwa !!!

$regfile = "m8def.dat"
$crystal = 8000000
Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinc.1 = Input
Config Pinc.2 = Input
Config Servos = 2 , Servo1 = Portb.1 , Servo2 = Portb.0 , Reload = 10
Config Lcdpin = Pin , Db4 = PortD.5 , Db5 = PortD.4 , Db6 = PortD.3 , Db7 = PortD.2 , E = PortD.0 , Rs = PortD.1
Dim I As Integer

Enable Interrupts

I = 0
Cls
Lcd "SERWO v1"
Wait 2
Cls
Do

  Cls
  For I = 0 To 150
  Servo(1) = I
  Servo(2) = 150 - I
  I = I + 1
  Locate 1 , 1
  Lcd I
  Waitms 200
  Next I
  I = 0

Loop
End

Link do komentarza
Share on other sites

Osobiście w ogóle nie polecam używania polecenia Servo(x) przy dwóch i większej ilości serw. Nie da się sterować serwami. Próbowałem w wakacje opanować 2 serwa naraz i się nie udało. Dopiero gdy podłączyłem pod dwa sprzętowe PWMy to wszystko działało bez zarzutu i to niejako w tle, ponieważ sygnał PWM jest niezależnie generowany sprzętowo, nie programowo jak w poleceniu Servo(x). Dodatkowo dochodzi jeszcze jedna zaleta, pomimo niezbyt dobrej jakości serw udało mi się osiągnąć około 170° przy rozdzielczości mniej niż 2°. Choć skoki serwa nie były równe to i tak wycisnąłem z nich więcej niż mógłbym się tego spodziewać.

Link do komentarza
Share on other sites

Przecież bascom nie stoi na przeszkodzie sterowaniu serwami poprzez timery 🙂 , zastanawiałem się głównie nad problemem wykorzystania rezonatora 8MHz ( pozwoli to uniknąć montowania rezonatora i kondensatorów w układzie) co do C może faktycznie daje więcej możliwości ale jak dla mnie bascom jest intuicyjny ,wystarczająco rozbudowany , szybki w pisaniu a w przypadku konieczności posiadania większej kontroli nad programem wystarczy posłużyć się assembler 'owymi wstawkami do biblioteki... 🙄 Tak czy inaczej zrobię jak radzi Sabre bo rzeczywiście sterowanie serwami równolegle do programu jest z pewnością efektywniejsze

Pozdrawiam 😉

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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.