Wie erweitere ich die Anzahl der mir zur Verfügung stehenden analogen (Eingangs-) Pins?


26

Ich weiß bereits, wie man die Anzahl der digitalen Pins eines Arduino mithilfe eines Multiplexers erweitert.

Ich möchte die Anzahl der analogen Eingangskanäle erhöhen, die ich habe. Eine Lösung besteht darin, einen weiteren Arduino als Slave hinzuzufügen.

Wie würde ich die Anzahl der analogen Eingangskanäle erhöhen? (Ich gehe davon aus, dass einige MUX- und ADCs beteiligt sind). Wenn es zu kompliziert ist, eine Antwort zu schreiben, ist auch eine allgemeine Beschreibung der Schaltung / des Codes in Ordnung.

Ich bin auch offen für Schildvorschläge, obwohl ich es vorziehen würde, wenn es eine nicht zu harte Hardwarelösung gäbe.


Antworten:


32

Wenn Sie bereits mit digitalen Multiplexer-Chips vertraut sind, sind Sie hier richtig! Sie können auch für analoge Signale verwendet werden.

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

Die Grundvoraussetzung ist genau wie beim digitalen Signalmultiplex. Sie verwenden den 4051-Chip als "Spurwechsler" und lesen das Signal der Spur, auf die Sie den Chip umschalten lassen. Der 4051 verwendet 3 digitale Pins und 1 zusätzlichen analogen (oder digitalen) Pin am Arduino, um bis zu 8 Eingangsspuren zu erstellen. Einige Multiplexer sind verkettbar, sodass Sie ziemlich einfach 8 weitere Signale hinzufügen können, ohne sie vom Arduino selbst entfernen zu müssen.

Es ist genau wie bei der Technik, die Sie bereits für digitale Signale kennen. Schließen Sie einfach den Kanal, von dem Sie gelesen haben, an einen analogen anstatt an einen digitalen Pin an, durchlaufen Sie die Binärzustände und lesen Sie die analogen Werte.

Ich habe ein animiertes GIF für dich gemacht.

Bildbeschreibung hier eingeben


3
Während der Link die Frage beantwortet, könnten Sie etwas näher darauf eingehen? Kurz über die Strecke schreiben? (Link nur Antworten werden entmutigt im Netzwerk)
Manishearth

Okay. Antwort erweitert.
Steve Cooley

3
Eine Klarstellung: Der 4051, den Sie erwähnen, ist ein analoger Multiplexer, kein digitaler Multiplexer. Ich würde dies in Ihrer Antwort klarstellen, da es definitiv digitale Multiplexer gibt, die dies nicht erreichen können, da ihre Ausgangs- und Eingangstreiber nicht für eine lineare Reaktion ausgelegt sind. Vielleicht ist es eine zusätzliche Anmerkung wert, dass das Verketten von analogen Muxen das Signal abhängig von den Eigenschaften von mux
naven87 beeinflussen kann. 13.04.13

1
Es ist anzumerken, dass die Auswahl von analogen Multiplexern nicht trivial ist. Der Entwickler sollte Spannungsschwankungen (die meisten arbeiten nur innerhalb des Versorgungsbereichs, wie z. B. Operationsverstärker), Bandbreite, Einschaltwiderstand, Übersprechen usw. usw. in Betracht ziehen, wobei Spannungsschwankungen das größte Potenzial darstellen show stopper.
Mister Mystère

Ich glaube, Sie können auch einen digitalen Pin verwenden, um einen Sensor mit Strom zu versorgen. Schalten Sie also einfach einen digitalen Pin ein, um VCC zu erfassen und den gleichen analogen Pin zu verwenden.
Ciasto piekarz

10

Es kann wichtig sein, sich daran zu erinnern, dass der ATmega-Chip des Arduino selbst einen analogen MUX verwendet. Die Uno-basierten (ATmega328) Chips haben nur einen einzigen ADC. Die 6 analogen Eingänge sind eigentlich ein MUX, der an diesen einen ADC angeschlossen wird.

Aus diesem Grund können Sie jeweils nur 1 Analogeingang lesen.

Wenn Sie analoge Eingänge erweitern, müssen Sie möglicherweise überlegen, wie viel Zeit für das gesamte MUX-Verfahren erforderlich ist und ob in Ihrer Anwendung zusätzliche externe ADCs erforderlich sind.


1

Bedenken Sie Folgendes: Fügen Sie ATtiny 85 mit serieller Kommunikation mit dem Arduino hinzu, es verwendet 2 Pins für Rx, Tx und Sie haben 3 weitere Pins, die als Analog verwendet werden können. Diesmal können Sie Ihr eigenes Protokoll entwickeln, der ATtiny kann den Algorithmus verarbeiten und die verarbeiteten Informationen an Arduino senden. Es ist auch sehr billig. Ich habe es selbst ausprobiert. Es ist eine schöne Architektur, denke ich.

Schönen Tag

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.