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.


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


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.


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ń

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.