Skocz do zawartości

Multipleksowanie czujników linii


KD93

Pomocna odpowiedź

Witam

Przymierzam się do przebudowy "Bajtla" i chce zwiększyć ilość czujników, do 7 a może nawet 9.

Mam pytanie jak to podłączyć to przetwornika A/C i jak to obsługiwać, bo nie wiem który z AVR'ów ma 9 wejść ADC. Bobby pisał mi coś o multipleksowaniu, ale nie wiem jak to się robi w przypadku czujników. Schemat mile widziany 😅

Link do komentarza
Share on other sites

Attiny26 ma 11, jego następcy Attiny261/461/861 mają również po 11 kanałów ADC, ATmega1280/2560 ma 16 kanałów ADC ale to już duże obudowy TQFP100. Za jakiś czas sam będę robił płytkę pod ATmega1280 🙂, na które już czekam z allegro.

  • Lubię! 1
Link do komentarza
Share on other sites

A po co ma się komunikować z głównym mikrokontrolerem? Przecież on może być być głównym. Attiny861 może być za mały do robota, ale ATmega1280 jest już niezłym mózgiem, który w zupełności wystarczy do każdego lfr'a.

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

Schemat jest trywialny i nie ma tu co rysować. Wyjścia, które normalnie dawałbyś np. na komparator podłączasz bezpośrednio pod nóżki ADC procesora. Później pozostaje ustawić rejestry (wybrać np. napięcie referencyjne) i napisać prostą funkcję, która będzie Ci tablicowała wyniki.

U mnie taka funkcja wygląda tak:

ISR(ADC_vect)
{
WynikiADC[i] = ADCH; // Zapisanie wyniku konwersji
i++; // Nowy indeks tablicy

if((7&ADMUX) == 7){
	ADMUX = ADMUX & (0b11111000);

	if((ADCSRB & (1<<MUX5)) == 0) ADCSRB |= (1<<MUX5);
	else{
		ADCSRB &= ~(1<<MUX5);
		i=0;
	}
}
else ADMUX = ADMUX + 1;
ADCSRA |= (1<<ADSC); // Następna konwersja ADC
}

W tym przypadku obsługuje 16 wejść ADC ATmegi 1280. Ważne jest, żeby ręcznie wyzwalać kolejną konwersje ADC. W sytuacji automatycznego wyzwalania po każdej konwersji dochodziłoby do zapisywania dwa razy wartości czujnika podłączonego do ADC0, a później wszystko by się poprzesuwało - o ile się nie mylę.

Link do komentarza
Share on other sites

Hej,
to o czym piszecie nie ma nic wspólnego z multipleksowaniem. Zobaczcie np. na układy z rodziny 4051 (np. ten ). Macie tutaj 8 wejść (podpinacie np. czujniki) i jedno wyjście (np. podpięte pod 1 pin ADC) o tym które z wejść jest "przekierowywane" na wyjście decydują 3 linie adresu. Podsumowując, możecie obsłużyć 8 czujników 4-ma pinami uC, dodając 2 układ do 16-tu czujników 5-ma pinami (zakładając wspólne linie adresowe).

Pozdrawiam.

Link do komentarza
Share on other sites

Hej!

Oczywiście, że ma! Multipleksowanie oznacza zwielokrotnianie. Przetwornik analogowo-cyfrowy w który zostały wyposażone układy AVR ma wiele wejść. Przy pomocy rejestrów można ustawiać z którego wejścia aktualnie chcemy zrobić "pomiar".

Tymczasem Ty rzuciłeś notą katalogową multipleksera. Rzeczywiście można byłoby do takiego projektu użyć multipleksera, dodałoby to jeden układ efekt byłby dokładnie ten sam. Mógłbyś użyć odrobinę wysiłku i przed napisaniem wiadomości zorientować się o czym pisali Twoi poprzednicy 😉

Link do komentarza
Share on other sites

TIMONek, ale właśnie chodziło o to, że ten multiplekser wbudowany ma za mało wejść,

Mógłbyś użyć odrobinę wysiłku i przed napisaniem wiadomości zorientować się o czym pisali Twoi poprzednicy 😉

Teraz przypomniało mi się jeszcze o fajnym saposobie odczytywania rezystancji - obczaj sobie komendy config rc i getrc, z tym, że nie nadaje się to do pomiaru napięć, ale do pomiaru rezystancji/pojemności.

Link do komentarza
Share on other sites

Atmega8 chyba najpopularniejszy mikrokontroler stosowany w amatorskich projektach ma 8 we ADC, wspominaliście o miktrokontrolerach które mają więcej wejść ADC. Z kolei multiplekser zaproponowany przez prokto jest ośmiowejściowy. Stąd napisałem, że efekt byłby dokładnie ten sam. Więc po co dodawać dodatkowy układ?

Link do komentarza
Share on other sites

Atmega8 chyba najpopularniejszy mikrokontroler stosowany w amatorskich projektach ma 8 we ADC, wspominaliście o miktrokontrolerach które mają więcej wejść ADC. Z kolei multiplekser zaproponowany przez prokto jest ośmiowejściowy. Stąd napisałem, że efekt byłby dokładnie ten sam. Więc po co dodawać dodatkowy układ?

No nie do końca - tylko w obudowie tqfp ma 8 kanałów adc, dip ma 6, z czego dwa chyba tylko ośmiobitowe.

Link do komentarza
Share on other sites

Timonek, zauważ, że wykorzystując sposób, o którym pisał prokto, wykorzystujesz tylko 1 wejście ADC Atmegi, a pod pozostałem 7 możesz podpiąć kolejne czujniki, zwiększając ich liczbę do max. 15. Jak dla mnie to nie jest ten sam efekt 😋

Link do komentarza
Share on other sites

Ja do każdego wejścia ADC dałbym po multipleskerze i zrobiłbym LF z 64 czujnikami! yeah!

Swoją drogą nie rozumiem, dlaczego zostałem zaatakowany przez Was. Nikomu z Was nie przeszkadzało za to zdanie:

"to o czym piszecie nie ma nic wspólnego z multipleksowaniem. "
Link do komentarza
Share on other sites

Panowie w mikrokontrolerach jest właśnie multiplekser, który jest częścią składową struktury, jest to o tyle wygodniejsze, że nie trzeba dodawać zewnętrznego multipleksera. Mikrokontroler i tak mierzy za pomocą jednego przetwornika dane z wielu wejść multipleksera, a to czy ten multiplekser jest 6-cio, 8-mio, 11-sto czy w końcu 16-sto wejściowy zależy od tego ile wolnych nóżek miał dany mikrokontroler.

Link do komentarza
Share on other sites

rasta, ale żeś się rozpisał... Skoro w koszu lądują dziesiątki bezwartościowych postów to twój tez powinien. Wiem co to multipleksowanie, ale nie wiem jak to wygląda w przypadku czujników do LF'a, tym bardziej że jak wiemy odczyty muszą być szybkie.

Dzięki wszystkim za odpowiedzi, będę miał w przyszłym tygodniu trochę czasu (matury) to pokombinuję.

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.