Skocz do zawartości

problem z serwem TowerPro (program)


beowolf

Pomocna odpowiedź

Witajcie. To mój pierwszy post na tym forum. W najbliższym czasie chcę zbudować robota dwunożnego na kształt maszyn z gry mechwarrior. Trochę materiałów zebrałem, dziś kupiłem serwa no i chciałem je sprawdzić. Mam uC Atmega8. Podłączyłem jedno serwo, napisałem w bascomie skromny program, ale serwo nie działa. Zasilam je z osobnego zasilacza 4,5V. Serwo ma moment 1,6kg (9g wagi). Oto program.

$regfile = "m8def.dat"
$crystal = 8000000
Config Pinb.3 = Output
Config Servos = 1 , Servo1 = Portb.3 , Reload = 10
'Enable Interrupts
Dim Zmienna As Integer
Zmienna = 100
Cls
Do
Servo(1) = Zmienna
Waitms 1000
Zmienna = Zmienna + 10
If Zmienna = 300 Then Zmienna = 100
Cls
Lcd Servo(1);

Loop
End

Czy widzicie tu jakiś błąd? serwo wogóle nie reaguje.

Link do komentarza
Share on other sites

W najbliższym czasie chcę zbudować robota dwunożnego na kształt maszyn z gry mechwarrior.

Jeżeli ma być sterowane krzesłem, to już jest tutaj taki jeden 😃, co to miał w zamyśle ... A wracając do tematu zmieniłeś fuse bity? Bo jeżeli nie ... to fusy okazały się jak zwykle nieocenionym narzędziem diagnostycznym.

Link do komentarza
Share on other sites

krzesłem....ha:)

Fusebity zmienione bo mikroprocek działa. Tylko z tymi serwami mam problem. Według kolegi program jest dobry? Czy pin sterujący serwem musi być jakiś konkretny?

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

Problem tkwi najprawdopodobniej tu:
'Enable Interrupts 

Dałeś " ' ", więc odblokowanie przerwań się nie skompilowało i nie działa. Daj tak:

Enable Interrupts

A co przerwania mają wspólnego z tym kodem, skoro on nie korzysta z timerów.

Link do komentarza
Share on other sites

Ogólnie to wszystko fajnie, ale ... z tego co pamiętam to lepiej mieć 10MHz, bo poniżej są jakieś problemy i ogólnie to średnio działa.

$regfile = "m8def.dat"
$crystal = 10000000
$baud = 9600

Config portc.5 = Output
Config SERVOS = 1 , Servo1 = Portc.5 , Reload = 10
Config Int0 = FALLING
Config Rc5 = Pind.2 , timer = 2

On Int0 Przerwanie

Enable Interrupts
Enable Int0

Dim Address As Byte
Dim Command As Byte
Dim serwo1 As Byte

serwo1 = 100

Print "Start programu"

Do
  Servo(1) = serwo1
Loop

Przerwanie:
  Disable Int0
  Enable Interrupts
  Getrc5(address , Command)
  If Address <> 255 Then
     Command = Command And &B01111111

     if Command = 32 then
        serwo1 = serwo1 + 5
     end if
     if Command = 33 then
        serwo1 = serwo1 - 5
     end if

     Print Address ; "  " ; Command ; " " ; serwo1
  End If
  Enable Int0
Return

Kiedyś sobie naskrobałem takie coś do testowania serwa, działało 🙂, więc się możesz zasugerować i z Integer zmienić na Byte, ogólnie to wtedy nawet przykład z helpa działał 😋. W każdym bądź razie za ten kod nie ręczę, ale raczej działał.

KD93, całkiem możliwe że masz racje 🙂

Link do komentarza
Share on other sites

Korzysta, to jest Config Servos.

Wiem bo kiedyś tak samo zrobiłem, zapomniałem napisać i bez odblokowania przerwań nie działa.

Mea culpa 🙂, zasugerowałem się zmiennymi, masz rację, przerwania powinny być włączone, ja mam kiepskie doświadczenia z poleceniem config serwos, ale niektórzy piszą, że lepiej używać wyższych kwarców przy tym sposobie sterowania serwami, mi przy 16MHz dopiero działało.

Link do komentarza
Share on other sites

przerwania włączyłem ale nadal nic. Ten program u kolegi Luko - w poleceniach servo1 nie ma nawiasów. U mnie bez nawiasów wyskakuje błąd. Czy pin sterujący musi być podłączony pod jakiś konkretny pin mikroprocesora? Zauważyłem takie coś - gdy wyłącze przerwania to czas generowany przez kwarc jest dobry - to znaczy na wyświetlaczu lcd wartości zwiększają się o 10 (według programu) co 1 sekunde. A gdy włącze przerwania to ten czas jest dłuższy...

Link do komentarza
Share on other sites

Jest tylko jedno polecenie Servo(1) pomiędzy DO i LOOP, reszta to jest zmienna korygowana o konkretną wartość, bądź jak widać na początku przypisanie wartości ... coś pomieszałeś chyba 😋

Link do komentarza
Share on other sites

beowolf, a na LCD wyświetla się prawidłowo? Zakres 100-300 to dużo za dużo, ale skoro ci wogóle nie reaguje to problem gdzie indziej jest rzeczywiście.

To który program w końcu wałkujemy, Twój czy Luko?

Link do komentarza
Share on other sites

mój ale wcześniej była mowa o Luco. Wiem, że za dużo, ale do wartości 200 serwo powinno wogóle reagować. A ono nic nie robi. Nawet jak wywale z programu LCD i inne komendy z nim związane to i tak serwo nie reaguje

Link do komentarza
Share on other sites

Jedyne co mi do łba przychodzi to to taktowanie, być może razem z niskim napięciem zasilania powoduje to nieprawidłowość. Jesteś pewny na 100%, że masz ustawione 8MHz? Masz może w domu jakiś rezonator 10MHz lub więcej? Bo powinien być użyty co najmniej 10MHz, ale matrix chyba kiedyś robił na 8 i mu działało podobno.

Link do komentarza
Share on other sites

mam 16 mhz ale nie wiem czy dobry. Podłączyłem go, ale znowu nie wiem czy dobrze ustawiłem fusebity bo nic nie działało. Nawet czas zliczał źle. Jeśli kolega wie jakie mają mieć wartości hfuse i Lfuse to jeszcze raz przelutuje

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.