Skocz do zawartości

[Atmega8][BASCOM]Problem z serwem.


szakalikus

Pomocna odpowiedź

Witam serdecznie.

Zaczynam przygodę z serwami. Zakupiłem TG9e i powstał następujący problem.

Z tego co widze po kodach innych użytkowników oraz po poradniach, aby ustawić serwo w danej pozycji należy wysłać na nie impuls o danym czasie trwania, w każdym razie robicie to w sposób Serwo(1)=150 np i orczyk ustawia sie na danym odchyleniu, Serwo(1)=80, inne odchylenie itp i zamykacie to w pętli loop aby ciagle to było wysyłane. Ja mianowicie wgrałem na moją atmege8 program z kompendium

:

$regfile = "m8def.dat" 
$crystal = 12000000 
Config Servos = 1 , Servo1 = Portd.1 , Reload = 10 
Config Portd = Output 
Enable Interrupts 
Dim Zmienna As Integer 'Nasze "odchylenie" serwa 
Zmienna = 150 'Czas trwania impulsu będzie wynosić Zmienna*Reload=1500us (1,5ms) 
Do 
  Servo(1) = Zmienna 
  Waitms 1000 
Loop 
End 

I serwo zachowuje się w sposób następujący. Po podłaczeniu zasilania dziwny skok w lewo (niezaleznie od kodu, nawet bez atmegi przeskakuje i to moje pytanie dlaczego) a następnie niezależnie od wpisanej wartości czy dam zmienna 150 czy 80 dąży do jednego odchylenia i to tylko w lewą stronę ! Jedyna różnica to prędkość skoków gdzyż przy zmienna 150 robi to malutkimi skoczkami a przy zmienna 80 trzy przeskoki i juz stoi. Jeżeli ręcznie przechyle je w lewo to nic sie nie dzieje , jedynie idzie od maxymalnego odchylenia po prawej o jakies 70 stopni w lewo i to jest finalne położenie w każdym przypadku. Czy ktoś jest w stanie mi pomóc? i wyjaśnic co jest tego przyczyną? może ja nie do konca rozumiem idee tego sprzętu.

z góry dziękuję i pozdrawiam

Link do komentarza
Share on other sites

Ja też się borykam/łem z tym problemem. Zauważyłem natomiast następujące rzeczy:

Servo to potężny generator zakłóceń, który może zawiesić procesor, lub zdestabilizować jego pracę. Dobrze jest rozdzielić szynę zasilania serv i reszty elektroniki. Filtrowanie zasilanie także pomaga,W moim przypadku w pewien sposób pomogło to że CPU zasilam przez diodę + kondensator 100uF, dzięki temu skoki napięcia na zasilaniu, nie restartują mi CPU.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

To z założenia ten kod programu powinien natychmiastowo jednym przesunięciem ustawić orczyk w jednej pozycji i go tam trzymać? a po zmianie wartości na przesunąć o pewien kąt w lewo od położenia 150 i dalej stać w miejscu? Bo tak jak mówie serwo wariuje, skoczki małe robi, zatrzymuje się, nie idzie dalej , idzie w jedną stronę itp.

[ Dodano: 02-08-2011, 20:01 ]

Btw. zmienilem taktowanie z 12M na 8M gdyż na takim taktuje atmega8 (kod najprawdopodobniej pod inną)

Link do komentarza
Share on other sites

Tak. Serwo powinno przejść do jednej pozycji i tam się zatrzymać o ile będziesz do niego wysyłał cały czas sygnał. Gdzieś czytałem, że serwa czasami mają tendencję to przesuwania pozycji neutralnej. Wtedy należy przeczyścić jakąś cześć serwa. Poczytaj coś na forach modelarskich o tym.

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

BlackJack Nieźle! W końcu coś ruszyło do przodu! Przy oddzielnym źródle zasilania serwo zachowuje sie calkiem inaczej, jakby troche bardziej sensownie, zaczynam kolejną próbę edycji kodu celem dojscia do ładu i składu. Kto by pomyślał!

[ Dodano: 02-08-2011, 20:23 ]

Teraz dla odmiany po zapodaniu oddzielnego układu zasilania zawsze kręci się skokowo w prawo, niezależnie od zadanej wartości wrrrrr

Link do komentarza
Share on other sites

Nie programuję w bascomie, ale czy napewno co 20ms wysyłasz sygnał trwający około 1.5ms?

[ Dodano: 02-08-2011, 20:43 ]

A tak dokładnie co 18.5ms, bo cały cykl powinien trwać 20ms.

Link do komentarza
Share on other sites

Nie do końca rozumiem idee tego reload itp także ciężko mi odpowiedzieć na Twoje pytanie, ale program wziąłem z kompendium wiedzy o serwach z tego forum także podejrzewam, że powinno działać 🙂 Poza tym patrzyłem na programy innych użytkowników i wszystko było zorganizowane tak samo. Może ktoś od Bascoma się wypowie?🙂

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.