Jak mogę zwiększyć liczbę dostępnych pinów analogowych (wejściowych)?

26

Wiem już, jak zwiększyć liczbę pinów cyfrowych na Arduino za pomocą multipleksera.

Chcę zwiększyć liczbę posiadanych analogowych kanałów wejściowych. Jednym z rozwiązań jest dodanie kolejnego Arduino jako niewolnika.

Jak zwiększyć liczbę analogowych kanałów wejściowych? (Zakładam, że w grę wchodzą niektóre MUXing i ADC). Jeśli napisanie w odpowiedzi jest zbyt skomplikowane, ogólny zarys obwodu / kodu również byłby odpowiedni.

Jestem również otwarty na zasłanianie sugestii, choć wolałbym, gdyby istniało niezbyt trudne rozwiązanie sprzętowe.

Manishearth
źródło
Powiązany post electronics.stackexchange.com/a/62500/7036
Nick Alexeev

Odpowiedzi:

32

Jeśli znasz już układy cyfrowego multipleksera, dobra wiadomość! Mogą być również używane do sygnałów analogowych.

http://playground.arduino.cc/Learning/4051

Podstawowa przesłanka jest dokładnie taka jak w przypadku cyfrowego multipleksowania sygnału. Używasz układu 4051 jako „zmieniacza linii” i odczytujesz sygnał z dowolnego pasa, na który chcesz przełączyć układ. 4051 wykorzystuje 3 piny cyfrowe i 1 dodatkowy pin analogowy (lub cyfrowy) na arduino, aby utworzyć do 8 linii wejściowych. Niektóre multipleksery można łączyć w łańcuchy, więc możesz dość łatwo dodać 8 dodatkowych sygnałów bez konieczności ciągłego odbierania ich od samego arduino.

Jest to dokładnie tak jak technika, którą już znasz dla sygnałów cyfrowych, po prostu podłącz kanał, z którego czytasz, do analogowego styku zamiast cyfrowego, a następnie przełączaj się między stanami binarnymi i odczytuj wartości analogowe.

Zrobiłem dla ciebie animowany gif.

wprowadź opis zdjęcia tutaj

Steve Cooley
źródło
3
Chociaż link odpowiada na pytanie, czy mógłbyś trochę rozwinąć? Napisz w skrócie o obwodzie? ( W sieci odradza się odpowiedzi tylko w linku )
Manishearth,
W porządku. Odpowiedź rozszerzona.
Steve Cooley,
3
Jedno wyjaśnienie, 4051, o którym wspominasz, to multiplekser analogowy, a nie cyfrowy, wyjaśnię w twojej odpowiedzi, ponieważ zdecydowanie istnieją cyfrowe multipleksery, które nie mogą tego osiągnąć, ponieważ ich sterowniki wyjściowe i wejściowe nie są zaprojektowane do odpowiedzi liniowej. Może warto dodać, że łączenie multiplekserów analogowych może wpływać na sygnał w zależności od charakterystyki
multipleksera
1
Warto zauważyć, że multipleksery analogowe nie są trywialne do wyboru, projektant powinien wziąć pod uwagę wahania napięcia (większość działa tylko w zakresie zasilania, jak opampy), szerokość pasma, rezystancję włączenia, przesłuch itp., Itp., Wahanie napięcia jest największym potencjałem pokaż korek.
Mister Mystère,
Wierzę, że możesz również użyć cyfrowego styku do zasilania czujnika, więc po prostu włącz jeden cyfrowy styk względem sensownego VCC i udostępnij ten sam analog.
Ciasto piekarz
10

Warto pamiętać, że sam układ ATmega Arduino korzysta z analogowego MUX. Układy oparte na Uno (ATmega328) mają tylko jeden ADC. 6 wejść analogowych to tak naprawdę MUX, który łączy się z tym jednym ADC.

Dlatego możesz jednocześnie odczytywać tylko 1 wejście analogowe.

Podczas rozszerzania wejść analogowych może być konieczne rozważenie, ile czasu zajmuje wykonanie tego całego MUXingu i czy dodatkowe aplikacje ADC są potrzebne w twojej aplikacji.

Baldengineer
źródło
1

Zastanów się: dodaj ATtiny 85 z komunikacją szeregową z Arduino, używa 2 pinów dla Rx, Tx i masz jeszcze 3 piny, które mogą być używane jako analogowe. W tym momencie możesz opracować własny protokół, ATtiny może przetwarzać algorytm i wysyłać przetworzone informacje do Arduino, jest to również bardzo tanie, sam próbowałem, jest to fajna architektura.

Dobry dzień

Avi
źródło