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



Teraz jest 8 lut 2025, o 00:14


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 25 sty 2013, o 11:50 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

Jak obsługuje się procesorem enkoder optyczny? Chodzi mi o metodę postepowania. Nie oczekuje gotowego kodu, bo na razie przymierzam się delikatnie do tematu a na pisanie kodu to jeszcze trochę czasu. Zastanawiam się tylko jak to powinno wyglądać. W jaki sposób zlicza się impulsy z enkodera tak, aby nie zabsorbować procesora całkowicie ta czynnością.
Faktycznie to będzie wyglądało tak: dwa silniki z przymocowaną śrubą do każdego z nich, lewa i prawa strona. Każda śruba sprzęgnięta będzie z enkoderem (po jednym enkoderze na śrubę). Zadanie procesora to takie wysterowanie silnikami, aby obie śruby kręciły się z taką samą prędkością, co w efekcie powinno dać równe pozycję dla nakrętek. Enkodery po 200 impulsów na obrót, szybkość obrotu to ok. 1 obrót na sekundę.
Tak jak napisałem wcześniej proszę o zarys sposobu postępowania, jak zacznę coś pisać i będę miał problem (a pewnie będę miał) to poproszę o konkretną pomoc/podpowiedź.
Pozdrawiam
Tomek



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

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

O obsłudze enkodera było już jakiś czas temu ładnie opisane

topic817.html#p2305

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2013, o 13:32 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

Wydaje mi się, że wskazany przez ciebie temat dotyczy enkodera „ręcznego”, że tak go nazwę. Czyli mniej impulsów i mniejsza częstotliwość. Czy zaprzęgnięcie timera w jego przerwaniach do skanowania stanów na wejściu, pod które podłączony jest enkoder to jest właściwe rozwiązanie w przypadku dwóch enkoderów po 200 impulsów na sekundę? Dodatkowo w moim przypadku nie istotne jest wykrywanie kierunku.
Tak jak napisałem poprzednio szukam wskazówek - informacji o zasadzie działania. Wskazany przez ciebie temat odwiedziłem wcześniej, ale jak napisałem powyżej nie jestem pewien czy w moim przypadku również obowiązuje taka logika. Jeśli tak powinno być to ok. mam odpowiedź, jeśli nie czekam nadal.
Pozdrawiam



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

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

Dobrze Ci się wydaje... najpierw odpisałem później przeczytałem do końca... :oops:

Tobie chodzi o sterowanie silnikiem z zastosowaniem sprzężenia zwrotnego, tak sa zrobione serwonapędy (nie mylić z serwami modelarskim).

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2013, o 14:15 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Przy użyciu mikrokontrolera ATMEGA88PA można to zrobić następująco. Impulsy podajesz na wejście timera 0 (końcówka PD4 - T0 ) i wejście timera 2 (końcówka PB6 - TOSC1). Kwarc odpada, a te timery ustawione na zliczanie impulsów zewnętrznych Timer 1 możesz wykorzystać do sterowania dwoma silnikami prądu stałego (PB1 - OC1A, PB2 - OC1B). Co sekundę lub nawet częściej (nie rzadziej) sprawdzasz stan liczników TCNT0 i TCNT2 i zmieniasz prędkość silników według jakiegoś algorytmu i wyzerowujesz liczniki.

_________________
Dragonus Cracovus: Biomagia



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

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

Tak dokładnie o coś takiego mi chodzi takie sprzężenie zwrotne.
To jednak dobrze myślałem :-).
• Czyli zliczanie odbywa się w tle?
• Timer1, jako generator PWM-ma z wypełnieniem sterowanym poprzez wartości zliczonych impulsów (tak uproszczając).
• Timer w trybie zliczania impulsów, kiedy ich naliczy za dużo to się zeruje automatycznie, liczy od nowa i wystawia flagę przepełnienia, która muszę wyzerować? Pytam o Timer0 i Timer2, bo wychodzi mi, że będę musiał zliczyć max 20000 impulsów, czyli raczej się nie zmieści w 8-bitach.
Dobrze myślę, że jest też coś takiego jak porównanie kiedy osiągnie jakąś wartość to zgłasza przerwanie?

Dziękuję za informacje.
Pozdrawiam
Tomek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2013, o 15:10 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

1. Timery czy to w trybie licznika zewnętrznych impulsów, czy jako generator PWM działają całkowicie niezależnie od programu. W programie oczywiście możesz w każdej chwili odczytać/zmieniać stan liczników. Tylko odblokowane przerwania od tych timerów zakłócają pracę głównego programu, ale na chwilkę (kod przerwania oczywiście musi być napisany zgodnie ze sztuką).
2. Tak. Dobrze trzeba to przemyśleć jak to powiązać.
3. Do tych dwóch timerów skoro masz, aż 20 tysięcy impulsów możesz podejść na 3 sposoby.
- nie co 1 sekundę, a co 10ms odczytywać rejestry TCNTx
- odblokować przerwania od przepełnienia i w tym przerwaniu zwiększać zmienną licznikx, wtedy wszystkie impulsy to licznikx * 256 + TCNTx
- wpisać do rejestru OCR0y, OCR2 np. 100 i odblokować przerwanie od zrównania wartości i podobnie jak wyżej zwiększać licznikX, wtedy wszystkie impulsy to licznikx * 100 + TCNTx
gdzie x = 0 lub 2

_________________
Dragonus Cracovus: Biomagia



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

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

Dziękuję Krauser. Potwierdziłeś moje myśli a ja upewniłem się, że mniej więcej wiem o co chodzi :) Teraz tylko muszę poczekać na chwilę czasu i zmierzę się z problemem. Jeszcze raz dziękuje serdecznie.
Pozdrawiam
Tomek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2013, o 22:29 
Offline
Użytkownik

Dołączył(a): 12 sty 2012
Posty: 32
Pomógł: 1

Jeden silnik i przekładnia z pasami zębatymi do dwóch śrub napędowych.
Pasy zębate i koła nie są drogie.
Do tego jeden enkoder.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2013, o 22:32 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

Niestety tak się nie da. Muszą być dwa silniki, dwa enkodery i dwie śruby. Gdyby można było jednym silnikiem napędzać dwie śruby za pomocą przekładni (jakiejkolwiek) to enkodery były by zbędne.
Tomek



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: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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