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

Ich weiß bereits, wie man die Anzahl der digitalen Pins auf einem Arduino mit einem Multiplexer 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 nehme an, dass einige MUXing und ADCs beteiligt sind). Wenn es zu kompliziert ist, eine Antwort zu schreiben, wäre auch ein allgemeiner Überblick über die Schaltung / den Code in Ordnung.

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

Antworten (3)

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

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

Die Grundvoraussetzung ist genau wie beim digitalen Signalmultiplexing. Sie verwenden den 4051-Chip als "Spurwechsler" und lesen das Signal der Spur, auf die Sie den Chip wechseln lassen. Der 4051 verwendet 3 digitale Pins und 1 zusätzlichen analogen (oder digitalen) Pin auf dem 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 ständig vom Arduino selbst entfernen zu müssen.

Es ist genau wie die Technik, die Sie bereits für digitale Signale kennen, schließen Sie einfach den Kanal, von dem Sie lesen, an einen analogen Pin anstelle eines digitalen an, durchlaufen Sie dann die binären Zustände und lesen Sie die analogen Werte.

Ich habe ein animiertes GIF für dich erstellt.

Geben Sie hier die Bildbeschreibung ein

Während der Link die Frage beantwortet, könnten Sie etwas näher darauf eingehen? Kurz über die Schaltung schreiben? (Nur Link-Antworten werden im Netzwerk nicht empfohlen )
In Ordnung. Antwort erweitert.
Eine Klarstellung, der von Ihnen erwähnte 4051 ist ein analoger Mux, kein digitaler Mux. Ich würde in Ihrer Antwort klarstellen, dass es definitiv digitale Muxs gibt, die dies nicht erreichen können, da ihre Ausgangs- und Eingangstreiber nicht für eine lineare Reaktion ausgelegt sind. Vielleicht eine zusätzliche Anmerkung wert, dass das Verketten von analogen Muxen das Signal abhängig von den Eigenschaften des Mux beeinflussen kann
Es ist erwähnenswert, dass die Auswahl analoger Muxes nicht einfach ist. Der Designer sollte den Spannungshub (die meisten arbeiten nur innerhalb des Versorgungsbereichs, wie Operationsverstärker), die Bandbreite, den EIN-Widerstand, das Übersprechen usw. usw. berücksichtigen, wobei der Spannungshub das größte Potenzial darstellt Stopper zeigen.
Ich glaube, Sie können auch einen digitalen Pin verwenden, um einen Sensor mit Strom zu versorgen, also schalten Sie einfach einen digitalen Pin in Bezug auf VCC ein und teilen Sie dasselbe analoge.
Das wäre etwa so: blueberryde.com/shop/24-channel-analog-expander-shield/… ? Und wären Leistungsprobleme?

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 mit diesem einen ADC verbunden ist.

Aus diesem Grund können Sie nur 1 analogen Eingang gleichzeitig lesen.

Beim Erweitern der analogen Eingänge muss möglicherweise berücksichtigt werden, wie viel Zeit für all dieses MUXing benötigt wird und ob zusätzliche externe ADCs in Ihrer Anwendung erforderlich sind oder nicht.

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. So können Sie Ihr eigenes Protokoll entwickeln, das 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