Skocz do zawartości

LF z multiplexerami


Pomocna odpowiedź

Napisano

Witam wszystkich!

Piszę dzisiaj z takim oto problemem. Otóż, stworzyłem schemat linefollowera opartego o analogowy odczyt stanu czujników wykorzystując zewnętrzne multiplexery (układy 4051). Na ich wejścia wchodzą sygnały z KTIR-ów, a z wyjść wchodzę na ADC mikrokontrolera (atmega32). Wykorzystywane są dwa takie multiplexery (12 czujników). Moim założeniem było takie sterowanie odczytem:

1. Wybieram odpowiednie wejście multiplexera ustawiając wejścia adresowe

2. Odczytuję za pomocą ADC uC stan wybranego czujnika

I to po prostu chciałem zapętlić/ wykonywać w przerwaniu. Czy takie odczytywanie (12 czujników) nie będzie zbyt wolne? Czy wykorzystywanie takich multiplexerów to gra "warta świeczki"? Pozdrawiam 🙂

Wszystko zależy jeszcze od realizacji programowej oraz od tego jakich osiągów oczekujesz. Były już takie projekty realizowane na forum. Powinno działać całkiem dobrze, ale przetworniki ADC w AVR nie są demonami prędkości 🙂

Robot ma mieć turbinę EDF, więc osiągi oczekiwane powinny być raczej powyżej "średniej" 🙂 Jaka jest optymalna częstotliwość odczytywania czujników w dosyć szybkim linefollowerze? Programowo będzie realizowany regulator PI oraz będzie wykorzystywany odczyt z enkoderów optycznych.

marcin123123, a jakiej rozdzielczości enkodery chcesz użyć? Nie lepiej zainteresować się STMami? Szybki ADC + wbudowany interfejs od enkoderów.

  • Lubię! 1

Odnośnie adc na Atmega32 to przy 8 czujnikach uzyskałem częstotliwość pomiaru ok 500Hz.

Do 1-1,5m/s to może wystarczy ale coś szybszego to rzeczywiście bym zrezygnował z AVR'a, sam zamierzam w przyszłości przerzucić się na ARM'y

Będą to zwykłe enkodery optyczne Pololu z tarczami pięcio-łopatkowymi pracujące z Pololu HP 10:1. Będą dawały ok. 200 impulsów na obrót za przekładnią. STM narazie niestety odpada, bo czas mocno goni i nie mogę teraz zaczynać uczyć się pracy z nową rodziną uC.

EDIT:

Jeżeli z jednego wejścia ADC atmegi32 można odczytywać z częstotliwością ok. 150-200kHz, to w przypadku wykorzystania dwóch wejść częstotliwość spada o połowę czyli do ok. 75kHz, tak? Jeżeli się nie mylę to będę mógł odczytywać stany z dwóch wejść co około 10us, czy to naprawdę tak wolno?

10us to nie jest dużo aczkolwiek wszystko zależy od zastosowania,
pamiętaj, że pętla programu również wykonuje się jakiś określony czas,
aby nie uzależniać szybkości odczytu ADC od obiegu całej pętli,
zrób osobny podprogram do ADC wywoływany timerem by częstotliwość odczytu była stała

  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...