Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 27 lip 2026, o 12:09


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 14 sty 2013, o 13:56 
Offline
Nowy

Dołączył(a): 09 wrz 2012
Posty: 17
Pomógł: 0

Witam, w internecie są przykładowe programy do sterowania serw za pomocą timerów, lecz ja muszę to zrobić na opoźnieniach. Robię pracę inżynierską, w której wykorzystuję 6 serwomechanizmów modelarskich. Promotor powiedział, żebym je właśnie wysterowywał za pomocą zwykłych opóźnień ( na czas np. 1,5ms na porcie stan wysoki, a przez czas 18ms stan niski i żeby to zrobić wszystko w pętli, która będzie "krążyć" np. 80 raz - jest to czas wystarczający do ustawienia się serwa przez chwilę). Nie ma problemu, gdy chcę kilka serw ustawić na ten sam kąt, lecz nie wiem jak zrobić, aby kilka silniczków w tym samym czasie obracały się o różne kąty np. 1serwo-90stopni 2serwo-180stopni 3serwo- 0 stopni. Niżej przedstawiam, praktycznie pusty program, zawierający jedynie jedną pętlę, w której wykonuje się jakiś tam ruch serwa, pokazuję to po to, aby pokazać mniej więcej o co mi chodzi. Ma ktoś może jakiś pomysł jak to wykonać?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2013, o 14:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2011
Posty: 582
Lokalizacja: okolice Wrocławia :)
Pomógł: 24

Żeby sterować kilkoma serwami musisz najpierw rozpisać sobie które serwo na jaki czas ma być wysterowane, nastepnie albo sterować nimi po kolei przez delay i wyliczać milisekundy ręcznie do każdego potrzebnego impulsu lub napisać procedurę która to zrobi za Ciebie.

Samo jednak sterowanie przez delay jest trochę nie na miejscu ale jak ktoś się uprze?.... nic nie poradzisz...

Kilka razy wertowaliśmy temat serw na forum, między innymi tutaj topic1095.html

Zobacz zresztą na rysunek który znajduje się w tamtym poście i potraktuj te 3 serwa jako Twoje, spójrz na przebiegi i zrób takie same w swoim programie :)

Obrazek

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2013, o 15:44 
Offline
Nowy

Dołączył(a): 09 wrz 2012
Posty: 17
Pomógł: 0

Rozumiem ten rysunek, potrafię zrobić tak, żeby każde np. te 3 serwa poruszały się jedno po drugim, w różnych kąt, lecz zastanawiam się jak zrobić aby te 3 serwa poruszały się w tym samym czasie w różnych wychyleniach kąta. Jeżeli napisze kilka takich pętli for jak napisałem wyżej będą się one wykonywać jedna po drugiej, a mi zależy na tym, aby poruszały się w tym samym czasie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2013, o 21:34 
Offline
Użytkownik

Dołączył(a): 14 sty 2013
Posty: 36
Pomógł: 2

Ja bym troszkę inaczej podszedł do sprawy.
Cały cykl ma 20 ms, 0,7 ms jest maksymalne wychylenie nazwijmy -90 st. 2 ms. jest maksymalne wychylenie +90 st.

więc może coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Oczywiście czasy opóźnień należy zmienić uwzględniając czasy instrukcji ale w teorii powinno działać :)


Autor postu otrzymał pochwałę


Ostatnio edytowano 14 sty 2013, o 22:43 przez strzelec, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2013, o 00:01 
Offline
Nowy

Dołączył(a): 09 wrz 2012
Posty: 17
Pomógł: 0

Dzięki strzelec, właśnie mniej więcej o takie coś mi chodziło :)
Antystatyczny według mnie sterowanie serwami nie jest tak proste jak sterowanie ledami. Wiem, że na opóźnieniach nie jest to profesjonalne rozwiązanie no ale cóż, tak promotor mi powiedział żeby zrobić, ponieważ jest to łatwiejsze rozwiązanie... Btw. na pracę inżynierską mam zrobić robota kroczącego, który będzie chodził właśnie za pomocą 6 serw, a ruch tych serw będzie sterowany poprzez pilot- odbiornik podczerwieni(RC5). Programować uczę się sam, niestety nie miałem zajęć z programowania AVR-ów lub innych mikrokontrolerów, dlatego też mogę Wam się wydawać trochę "zielony" w tym temacie :P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2013, o 15:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2011
Posty: 582
Lokalizacja: okolice Wrocławia :)
Pomógł: 24

leszek90 napisał(a):
... Btw. na pracę inżynierską mam zrobić robota kroczącego, który będzie chodził właśnie za pomocą 6 serw, a ruch tych serw będzie sterowany poprzez pilot- odbiornik podczerwieni(RC5). Programować uczę się sam, niestety nie miałem zajęć z programowania AVR-ów lub innych mikrokontrolerów, dlatego też mogę Wam się wydawać trochę "zielony" w tym temacie :P


Ja mam wrażenie że Twój promotor też jest zielony.... :roll:
Bez urazy ale ja też nie widzę jakoś robota i to jeszcze sterowanego pilotem RS-5 opartego na procedurach ruchu z Delay.....
Tak czy inaczej życzę powodzenia....

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2013, o 17:32 
Offline
Nowy

Dołączył(a): 09 wrz 2012
Posty: 17
Pomógł: 0

Heh, no też mi tak się wydaje... Tzn. tak mam już ogarniętą obsługę odbiornika RC5, do tego pomiar napięcia baterii i wyświetlanie jej na wyświeltaczu. Teraz właśnie staram się ogarnąć algorytm ruchu robota i to jest najtrudniejsza sprawa. Zobaczymy jak te delaye wpłyną na cały program....

Promotor mówił, że da się tak zrobić... zobaczymy co z tego wyjdzie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2013, o 15:18 
Offline
Nowy

Dołączył(a): 09 wrz 2012
Posty: 17
Pomógł: 0

Ehh, wznawiam temat, gdyż mam kolejny problem i nie wiem co może być tego przyczyną, otóż udało mi sie napisać program, który steruje ruchem robota w przód za pomocą pilota RC5 i idzie on świetnie. Lecz, gdy napiszę dodatkową funkcję, że np. robota ma sie ukłonić po naciśnieciu jakiegoś tam przycisku to, gdy przycisnę przycisk odpowiadający za ruch robota w przód nie idzie on tak jak należy... Nie mam pojęcia dlaczego następuje zakłócenie tego chodu... Ma ktoś jakiś pomysł dlaczego tak jest? Jest to bardzo ważne dla mnie...
cmd- jest to kod przycisku pilota
Ruch robota w przód jest złożony z 6 kroków.
Niżej przedstawiam pętlę główną programu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2013, o 16:41 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27463
Lokalizacja: Szczecin
Pomógł: 1045

A pisali ci wyżej że DELAY'e doprowadzą cię do szaleństwa .... właśnie się zaczyna .... niestety szaleństwo :(

a do tego jeszcze piszesz kod tak jakbyś nie wiedział co to są funkcje w języku C :( .....

I jeśli do tego jeszcze jakaś kiepska obsługa RC5 - to właśnie taki kod - to przepis - JAK NIE NALEŻY pisać programów, albo co zrobić żeby sobie utrudnić życie :(

1. Wyprowadź ruchy do funkcji
2. wprowadź timery programowe
3. pozbądź się tych delayów

i nagle się okaże, że to proste .... Przecież w książce niebieskiej masz opisane timery programowe - wystarczyłoby tu ich użyć w najprostszej postaci .....

ale przede wszystkim FUNKCJE panie kolego - funkcje - bo ten zbitek kodu to koszmar niestety :(

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2013, o 16:52 
Offline
Nowy

Dołączył(a): 09 wrz 2012
Posty: 17
Pomógł: 0

Wiem, że na razie kod nie wygląda ładnie, ale to są tylko testy... Myślisz, że jak powstawiam te ruchy robota do funkcji to może ten problem się rozwikłać?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2013, o 16:58 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27463
Lokalizacja: Szczecin
Pomógł: 1045

Przede wszystkim inaczej od razu na to spojrzysz - przecież tu masz groch z kapustą :( ... niech każda funkcja odpowiada za jakiś ruch i wywołuj po kolei funkcje - to już ci się poukłada - a teraz ? coś tam się miesza - no i jak pisałem - jak ty odbierasz to RC5 ???

bo RC5 i do tego takie delaye to nieszczęście ??? jaką masz bibliotekę do RC5?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2013, o 17:02 
Offline
Nowy

Dołączył(a): 09 wrz 2012
Posty: 17
Pomógł: 0

bibliotekę rc5 mam z jakiejś strony zajmującej się robotyką. Wydaje mi się, że jest to porządny kod. Niżej przedstawię tę bibliotekę:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO