Skocz do zawartości

Enkodery do silników pololu 50:1


kirex

Pomocna odpowiedź

Witam,

przymierzam się do budowy swojego pierwszego robota (takiego do nauki ale podchodzącego pod minisumo) na gąsienicach T22, napędzać go chcę dwoma silnikami pololu 50:1.

Zastanawiam się w jaki sposób rozpoznawać o jaki kąt obracam roboty przy skręcaniu. Z tego co wyczytałem na forum, to najprościej będzie wykorzystać enkoder z myszki kulkowej ale tu nasuwa się pytanie. Przy jakich maksymalnych obrotach silnika, enkoder umieszczony na przedłużeniu wału będzie wstanie jeszcze poprawnie zliczać impulsy? Jeśli silnik ma 500 obrotów na sekundę, to czy nie jest to przypadkiem za dużo, myszą z taka "prędkością" raczej nie poruszamy 🙂

Czytałem również o czujnikach hall'a ale tu nie do końca rozumiem jak to ma działać. Czy magnes (neodymowy mały z otworem w środku) do tego typu czujnika ma być nakładany na przedłużony wał a czujnik hall'a umieszczony równolegle do wału?

Który sposób do obliczania kąta będzie lepszy?

Link do komentarza
Share on other sites

Do minisumo spokojnie starczy Ci jakiś czujnik odbiciowy + tarcza z czarnymi/białymi polami.

Jeżeli chcesz stosować tarcze i transoptory z myszki, to przy większych prędkościach wszystko zacznie się rozpływać, tak jak podejrzewasz. Rozwiązaniem jest zastosowanie komparatora napięć na wyjściach transoptorów - zobacz jak to rozwiązał grabo w devilu.

Link do komentarza
Share on other sites

Enkodery stosuje się raczej do pomiaru przemieszczeń. Przy większych prędkościach sygnał z fototranzystora rzeczywiście jest zniekształcony - rozwiązanie? tak jak napisał mog123, zerknij w schemat Devila 🙂

Do rozpoznawania obrotów względem własnej osi zdecydowanie lepszy będzie żyroskop. Na wyjściu żyroskopu otrzymujemy co prawda informację o prędkości obrotowej, ale po odfiltrowaniu i scałkowaniu można to przekształcić na wartość obrotu.

Link do komentarza
Share on other sites

Dzięki za odpowiedź, zajrzę do devila i poczytam o żyroskopie.

Przejrzałem żyroskopy i tanie to to nie jest ale zatrzymałem się na dłużej przy http://robodudes.com/zyroskopy/129-l3g4200d-lga16-zyroskop.html czy taki układ będzie się nadawał?

Czy można gdzieś dostać podstawki pod takie scalaki, bo zanim wrzuciłbym to do robota, to chciałbym potestować na zwykłej płytce.

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

Jeśli używasz gąsienic T22 z pololu, to możesz użyć enkodera na "koło":

http://www.pololu.com/catalog/product/1217

Są co prawda o wiele mniej dokładne niż takie na wale silnika, ale pytanie czy potrzebujesz aż takiej dokładności. Problemem tych enkoderów jest jedynie to, że przy użyciu gąsienic, musisz je umieścić pionowo, gdyż umieszczone poziomo (pod silnikiem) nie będą równomiernie oświetlone czujniki odbiciowe (z powodu braku czarnego pola po wewnętrznej stronie felgi). To trochę komplikuje sprawę, ale przy zastosowaniu odpowiednich rozwiązań typu kątowniki itp, silniki po prostu mocujesz pionowo, razem z enkoderami.

Jako że to Twój pierwszy robot, a nie potrzebujesz dużej dokładności enkoderów, polecałbym wydrukowanie tarczy (o małej ilości pól) i umieszczenie jej na przedluzonym wale silnika, a odczyt oczywiście transoptorem odbiciowym.

Link do komentarza
Share on other sites

Enkodery stosuje się raczej do pomiaru przemieszczeń. Przy większych prędkościach sygnał z fototranzystora rzeczywiście jest zniekształcony - rozwiązanie? tak jak napisał mog123, zerknij w schemat Devila 🙂

Właśnie, dlaczego w Devilu użyłeś zewnętrznego wzmacniacza pracującego jako komparator, czy tylko z powodu braku wolnych portów analogowych w mikrokontrolerze?

Link do komentarza
Share on other sites

Enkodery stosuje się raczej do pomiaru przemieszczeń. Przy większych prędkościach sygnał z fototranzystora rzeczywiście jest zniekształcony - rozwiązanie? tak jak napisał mog123, zerknij w schemat Devila 🙂

Właśnie, dlaczego w Devilu użyłeś zewnętrznego wzmacniacza pracującego jako komparator, czy tylko z powodu braku wolnych portów analogowych w mikrokontrolerze?

Zapewne dlatego, że odczyt z ADC jest o wiele wolniejszy, a poza tym nie możesz wtedy użyć przerwań (nawet jakby były na tych pinach), a enkoder najlepiej się obsługuje przerwaniami. Po prostu przy kilkudziesięciu tysiącach "tików" enkodera na sekundę, najlepiej to zrobić poprzez dostrojenie zewnętrznego komparatora w taki sposób, by po prostu enkoder wywoływał przerwania w miarę równych odstępach. W obsłudze przerwania robisz prostą inkrementację/dekrementację zmiennej, a w pętli głównej korzystasz z tej informacji, bez zawracania sobie głowy odczytem danych z enkoderów.

Gdybyś chciał użyć ADC, musiałbyś w pętli głównej w kółko odczytywać wartość ADC (co jest czasochłonne), porównywać tą wartość z zadanym progiem, a następnie sprawdzać, czy wartość ta jest inna niż poprzednio zapisana, by poprawnie odczytać zmianę stanu. Po pierwsze, to mało wygodne robić takie rzeczy w głównej pętli, a po drugie, nie wiem czy przy tylu zmianach stanu enkodera na sekunde, nie gubiłbyś odczytów - pętla główna musiałaby mieć bardzo krótki czas działania.

Link do komentarza
Share on other sites

MatManiak te enkodery też do tanich nie należą a potrzebne są dwie sztuki :/

Zdecydowałem się na żyroskop L3G4200D, zobaczymy co z tego wyjdzie, czy sobie poradzę 🙂

Link do komentarza
Share on other sites

Enkodery stosuje się raczej do pomiaru przemieszczeń. Przy większych prędkościach sygnał z fototranzystora rzeczywiście jest zniekształcony - rozwiązanie? tak jak napisał mog123, zerknij w schemat Devila 🙂

Gdybyś chciał użyć ADC, musiałbyś w pętli głównej w kółko odczytywać wartość ADC (co jest czasochłonne), porównywać tą wartość z zadanym progiem, a następnie sprawdzać, czy wartość ta jest inna niż poprzednio zapisana, by poprawnie odczytać zmianę stanu. Po pierwsze, to mało wygodne robić takie rzeczy w głównej pętli, a po drugie, nie wiem czy przy tylu zmianach stanu enkodera na sekunde, nie gubiłbyś odczytów - pętla główna musiałaby mieć bardzo krótki czas działania.

Mój błąd bo nie zaznaczyłem jasno, iż chodziło mi o wykorzystanie przetwornika AD właśnie jako komparatora. Nie wiem jak w PIC, ale w AVR przetwornik pracujący jako komparator może generować takie przerwania. Szybkość nie powinna być problemem, bo silnik obracający się 8000obr/min daje z encodera (32 szczeliny) 8000 * 32 / 60 = 4266 impulsów na sekundę.

W sumie z ciekawości tylko zapytałem, zobaczymy co Grabo odpowie.

Link do komentarza
Share on other sites

Enkodery stosuje się raczej do pomiaru przemieszczeń. Przy większych prędkościach sygnał z fototranzystora rzeczywiście jest zniekształcony - rozwiązanie? tak jak napisał mog123, zerknij w schemat Devila 🙂

Właśnie, dlaczego w Devilu użyłeś zewnętrznego wzmacniacza pracującego jako komparator, czy tylko z powodu braku wolnych portów analogowych w mikrokontrolerze?

Zapewne używał wbudowanego timera z funkcją obsługi enkoderów, a w tym przypadku adc odpada. Dzięki temu nie trzeba bawić się w żadne przerwania.

Link do komentarza
Share on other sites

Dokładnie tak jak Harnas napisał, dsPIC którego użyłem ma sprzętowy interfejs do obsługi enkoderów inkrementalnych. Przy maksymalnych obrotach silnika, na wyjściu fototranzystora nie było już ładnego sygnału prostokątnego, tylko sinusoida o amplitudzie 1V 🙂 Komparator był najprostszym sposobem rozwiązania problemu.

Link do komentarza
Share on other sites

Dokładnie tak jak Harnas napisał, dsPIC którego użyłem ma sprzętowy interfejs do obsługi enkoderów inkrementalnych. Przy maksymalnych obrotach silnika, na wyjściu fototranzystora nie było już ładnego sygnału prostokątnego, tylko sinusoida o amplitudzie 1V 🙂 Komparator był najprostszym sposobem rozwiązania problemu.

Eh, no tak - zapomniałem, że w dsPIC jest obsługa sprzętowa enkoderów - szkoda, że w atmegach nie ma (dopiero w niektórych Xmegach jest, ale to i tak chyba tylko 1 enkoder.. a xmega tak samo mało popularna w Polsce jak PIC 😉).

Link do komentarza
Share on other sites

MatManiak, czas przenieść się na STM32 🙂

No tak było by najlepiej, bo na stm32 też obsługa enkoderow jest, a i częstotliwość taktowania duża, ale jak zacząłem szukać w internecie informacjio programowaniu stm32 to zaczęło mnie to trochę przerażać (choć ja 10x bardziej jestem programistą niż elektronikiem) - jakieś skomplikowane to wszystko w porównaniu do arduino na którym "się wychowałem" (mam na myśli samodzielna naukę elektroniki) - może kiedyś😉

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.