Skocz do zawartości

Multipleksowanie czujników linii


Pomocna odpowiedź

Napisano

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 😅

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

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.

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

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.

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 😉

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.

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?

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.

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 😋

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

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.

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

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