Skocz do zawartości

Komparator vs ADC do lf'a


aixI

Pomocna odpowiedź

Witajcie.

Mam do Was pytanie, co lepiej zastosować do robota typu line follower do odczytów stanów czujników? ADC - w mojej atmedze8A jest tylko 8 tych kanałów i mogę mieć tylko 8 czujników, a jak użyję komparatorów to mogę mieć, np. 15/16 czujników (taka liczba jest już znacznie lepsza) ale w moim odczuciu gorzej z ustawianiem wag czujników jak i wyliczania średniej, pod którymi czujnikami jest linia. Bo jak korzystam z ADC to mniej więcej wiem jak to zrobić, ale jak bym chciał się przesiąść na komparatory (lm339) to mam problem. Jak to jest u Was? Jak wy to robicie?

Z góry dzięki za odpowiedź.

Link do komentarza
Share on other sites

Czytałem, jak przeglądałem roboty opisane na Forbocie, np. https://www.forbot.pl/forum/topics7/line-follower-funsiasty-vt5458.htm Ale nie rozjaśnia mi to sprawy, jak miałbym używać multipleksowania ADC to użyłbym gotowego scalaka, np. 4051 ( http://www.tme.eu/pl/details/4051/uklady-logiczne-rodziny-cmos/# ) tylko nie wiem, czy akurat jest on analogowy, ponieważ pisze: Typ układu scalonego cyfrowy, albo tego: 74HC4051 ( http://www.tme.eu/pl/katalog/?cleanParameters=1&searchClick=1&search=74HC4051 ).

Nasuwa się drugie pytanie, jak w ogóle używa się multipleksera, np. analogowego, który będzie potrzebny do zwielokrotnienia ADC? (byłoby to moje pierwsze starcie z nimi 😉)

A jakbym chciał użyć komparatorów (lm339) to jak wyliczać średnią pozycję? Jak przypisać wagi czujnikom, które dają 1/0 od razu na piny uC? (ogólnie jaka liczba czujników jest dobra? parzysta, czy nieparzysta? Lepiej mieć jeden czujnik na środku czy dwa?)

Link do komentarza
Share on other sites

Zwykły 4051 należy do tzw. serii 4000. Została ona wymyślona niewiele później niż słynna 74xx ale bardzo się od niej różniła. Najważniejsze to zupełnie inny zakres zasilań (3-15V zamiast 5V ±5%) oraz znikomy pobór mocy związany z technologią CMOS. Dzisiaj to standard, ale w dawniej był to wyczyn. W CMOSie dawało się robić - obok zwykłych bramek AND czy OR również przełączniki analogowe i było oczywiste, że w serii 4000 pojawią się w końcu takie układy jak 4066 czy seria multiplekserów analogowych 4051, 52 i 53. Do dzisiaj można je kupić i choć mają wielu konkurentów (Analog robi chyba z 50 rodzajów kluczy analogowych, to samo Maxim, Linear, ST itd..) to ceną i rozpowszechnieniem chyba nikt ich nie przebije. Niestety jako stare układy mają swoje cechy, do których trzeba się przyzwyczaić i pamiętać o nich przy projektowaniu. Najważniejsze to relatywnie duża rezystancja przejścia. Jeżeli po drugiej stronie klucza masz duża impedancję obciążenia to nie przeszkadza, choć - szczególnie przy małych napięciach zasilania - dodatkowe prawie 1kΩ szeregowo włączonego klucza może być problemem przy większych częstotliwościach. Rodzina 4000 była generalnie dużo wolniejsza niż 74xx i miała tragicznie słabe obciążalności wyjść. Pojedyncza bramka serii 4000 nie była w stanie wysterować nawet jednej diody LED (których wtedy nie było, a te pierwsze potrzebowały grubo ponad 20mA żeby w ogóle zacząć) nie mówiąc o czymś poważniejszym. Problemem było nawet przejście sygnału 4000 -> 74xx nie tylko z uwagi na poziom zasilań bo przecież można było oba puścić z 5V, ale właśnie z uwagi na prąd obciążenia. W drugą stronę z kolei 5-woltowe 74xx nie zapewniało odpowiednio wysokiej jedynki na wyjściu (tylko 2.4V) co nie wystarczało CMOS-om itd. Rodzina 4000 nadrabiała swoje słabości dużymi marginesami zakłóceń bo przecież przy zasilaniu 15V szpilki musiały mieć wysokość aż 8V by przekroczyć próg przełączania wejść. Często przesądzało to o jej stosowaniu w środowiskach o dużych zakłóceniach np. w sterownikach przemysłowych - to były czasy przedprocesorowe.

Rodzina 74xx szybko "pozazdrościła" CMOS-om ich kostek analogowych. Trzeba tu przypomnieć, że rodziny te nie są kompatybilne nóżkowo: 4 bramki NAND są inaczej ułożone w 4011 niż w 7400. To samo z rejestrami, licznikami i wszystkim innym. Szybko więc wymyślono rozwiązanie pośrednie: zrobimy układy CMOS które będą miały wyprowadzenia serii 4000 ale będą fajnie i szybko pracować przy 5V i współpracować z rodzinami 74xx. Wzięto początek nazwy z jednej rodziny a koniec z drugiej i tak powstały układy np. 74HC4051 - multiplekser analogowy mający dobre parametry przy 5V kompatybilny wyprowadzeniami z dziadkiem 4051. Oczywiście podłączenie tego nowego układu do 15V załatwi go na 100%. Jeśli projektujesz system na 5V i musisz użyć multipleksera analogowego, to stosuj układy serii 74HC4000 zamiast zwykłych 4000 choć w odpowiednio zaprojektowanym układzie oba będą działać wymiennie.

  • Lubię! 2
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

Dobrze, więc postanowiłem sobie rozkminić jak działa ten multiplekser (74HC4051 - http://www.tme.eu/pl/Document/50ea3802c0be00bd6987902b2938070f/74HC_HCT4051.pdf )

1. Jeżeli czujnik (Y0) wykrył linie, to kanał Y0 "każe" wszystkim wyjściom S0, S1, S2 być na 0 - czyli stan L.

2. Jeżeli czujnik (Y5) wykrył linie, to kanał Y5 "każe" wyjściom S0, S1, S2 być kolejno na: S0 - 1 (H), S1 - 0 (L), S2 - 1 (H).

Dobrze rozumiem?

(mówię, np. czujnik (Yx), bo chyba do tych pinów Yx (Y0 - Y7) są podłączone wyjścia czujników, tak?)

Link do komentarza
Share on other sites

Nie, tak działa koder priorytetowy. Ma kilka wejść (np. 4, 8 lub 16) na które podajemy jedynki i zera oraz kilka wyjść (odpowiednio 2, 3 lub 4) na których koder odpowiada binarnym numerem wejścia na którym zobaczył stan aktywny. Priorytetowy dlatego, że zawsze odpowiada numerem najstarszego wejścia. Gdy zgłosisz się na wejścia numer np. 1, 2 i 5 to dostaniesz odpowiedź 101 czyli 5 dziesiętnie.

Multiplekser analogowy to zwykły przełącznik. Po jednej stronie ma jeden pin - nazwijmy go Y a po drugiej np. 4, 8 lub 16 pinów X. Na cyfrowe wejścia adresowe (np. A, B, C, ew. D) podajesz numer jednej z 4, 8 lub 16 linii X która zostaje połączona z Y. Koniec. To cała filozofia. 4051 jest multiplekserem analogowym czyli rzeczywiście łączy jak zwykły drut jedną stronę z drugą a sygnały możesz przesyłać w dowolną stronę. Jeżeli do X0..X7 podłączysz czujniki a do Y wejście przetwornika ADC, to wysyłając z procesora do multipleksera trzy sygnały adresu (ABC) podłączasz wybrane wejście Xn do Y czyli do wejścia przetwornika.

Dodatkowo masz jeszcze wejście INHIBIT które w stanie 1 blokuje działanie multipleksera i niezależnie od stanu wejść adresowych, żadne Xn nie jest podłączone do Y.

Multipleksery/demultipleksery/dekodery cyfrowe (np. 74151 lub 74138) działają troszkę inaczej, ale to temat na inną okazję.

EDIT:

1. Nazwy X-Y z mojego opisu można zamienić miejscami jeśli akurat w danych katalogowych Twojego scalaka są odwrotnie, tj masz dużo pinów Yn i jeden X (a może Z).

2. Czasem multipleksery są wielokanałowe (4052, 4053) i wtedy działa to jak kilka przełączników równoległych, adresowanych wspólnymi wejściami A, B.. itd.

3. Multipleksery analogowe obu serii (74HC4000 i zwykłe 4000) mają jeszcze jedną fajną właściwość. Dzięki obecności nóżki dodatkowego zasilania Vee mogą przenosić sygnały zarówno ujemne jak i dodatnie względem masy. Zwykle w prostych systemach z jednym zasilaniem nie jest to potrzebne i wtedy Vee=GND, ale gdy podłączymy Vcc do +5V a Vee do -5V to mamy możliwość pracy z sygnałami w zakresie ±5V. Co ciekawe sygnały logiczne na wejściach adresowych wciąż są odniesione do GND i to jest najfajniejsze w tym wszystkim, bo można je podłączyć wprost do wyjść np. procesora bez pośrednictwa jakichś konwerterów poziomów.

Link do komentarza
Share on other sites

Czyli tak:

*Mam podłączone piny: S0, S1, S2 do trzech pinów uC, aby dokonać pomiaru, np. na Y4 (pin 1), to muszę ustawić S0 - L, S1 - L, S2 - H, tak? (pomijam pin 6 - E, bo go chyba podłączam do masy, tak?) A pin 3, czyli Z muszę podłączyć do dowolnego pinu ADC?

3. Multipleksery analogowe obu serii (74HC4000 i zwykłe 4000) mają jeszcze jedną fajną właściwość. Dzięki obecności nóżki dodatkowego zasilania Vee mogą przenosić sygnały zarówno ujemne jak i dodatnie względem masy. Zwykle w prostych systemach z jednym zasilaniem nie jest to potrzebne i wtedy Vee=GND, ale gdy podłączymy Vcc do +5V a Vee do -5V to mamy możliwość pracy z sygnałami w zakresie ±5V. Co ciekawe sygnały logiczne na wejściach adresowych wciąż są odniesione do GND i to jest najfajniejsze w tym wszystkim, bo można je podłączyć wprost do wyjść np. procesora bez pośrednictwa jakichś konwerterów poziomów.

*Ok, ale mi chyba -5V nie potrzebne : ), czyli jak robię układ zasilany napięciem 5V, to Vee podłączam do masy.

Link do komentarza
Share on other sites

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...

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.