Ich würde auch die Klemmen an die 6 analogen Eingangspins anschließen und 6 eindeutige Spannungen haben, eine pro Draht. Der Arduino liefert den Ausgang nur, wenn die 6 Drähte an den richtigen Anschlüssen angebracht sind. Mit anderen Worten, dann sieht der Arduino die richtige analoge Spannung an den jeweiligen Pins.
Ich persönlich würde dem Ausgang der PWMs einen RC-Tiefpassfilter hinzufügen . Weitere Informationen hier. Ihr PWM-Ausgang würde in den Vin gehen und dann würde der Vout in Ihr Kabel (dh den Analogeingang) gehen. Ein Filter pro Kanal.
Der RC-Filter schützt den Arduino vor Kurzschlüssen zu + ve, Gnd und den anderen Pins und bietet ein wenig Schutz vor statischer Aufladung. Es wird auch Ihren Code vereinfachen.
Im Moment müssen Sie ausgefallenen Code implementieren, um die Spannung an diesen analogen Pins zu mitteln. Der RC-Filter würde diesen Code im Wesentlichen nicht benötigt.
Um den Wert des Widerstands und des Kondensators zu berechnen, den Sie benötigen: Es gibt einen sehr guten Artikel bei All About Circuits, der sich ausführlich mit diesem Thema befasst .
Um den Wert zu berechnen, müssen wir die Häufigkeit kennen:
Die Frequenz des PWM-Signals an den meisten Pins beträgt ungefähr 490 Hz. Auf der Uno-Karte und ähnlichen Karten haben die Pins 5 und 6 eine Frequenz von ungefähr 980 Hz. - Arduino Analog Write
Ich habe http://sim.okawa-denshi.jp/en/PWMtool.php verwendet , um die erforderlichen R & C-Werte mit einer sehr geringen Welligkeit (<60 mV) unter Verwendung gemeinsamer Werte zu berechnen. Ich habe meine Berechnungen auf 490 Hz gestützt, da die niedrigeren Frequenzen bei Tiefpassfiltern am schlechtesten abschneiden.
Ich schlage vor, Sie verwenden Werte von R = 10k
und C = 4.7uF
. Sie können mit diesen Werten spielen, bis Sie die gewünschte Ausgabe erhalten.
Eine letzte Sache, die ich in Betracht ziehen würde, ist, die Klemmen, die mit den analogen Pins verbunden sind, etwas zu schützen. Dies kann ein kleiner Widerstand in Reihe oder ein paralleler 5,1-V-Zener (der Pin hat diesen möglicherweise bereits?) Oder eine Kapazität parallel sein.
EDIT:
Ich hatte gerade eine Gehirnwelle - Sie müssen die PWMs nicht verwenden, um die verschiedenen analogen Werte auszugeben - Sie könnten stattdessen eine Spannungsteilerschaltung verwenden. Kein RC-Filter erforderlich. Zum Beispiel:
simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab
Edit # 2:
Jonathan schrieb:
Der einzige kleine Nachteil, den ich bemerke, ist, dass wenn der Benutzer zwei Drähte an denselben Anschluss angeschlossen hat, dies alle an den anderen Anschlüssen gelesenen Spannungen beeinflusst, was es schwierig macht, dem Benutzer eine inkrementelle Rückmeldung über die Anzahl der Drähte zu geben richtig angeschlossen.
Dies kann leicht gelöst werden, indem 6 einzelne Spannungsteilernetzwerke bereitgestellt werden, wie unten gezeigt. Beachten Sie, dass jeder Spannungsteiler ein anderes Verhältnis hat.
simulieren Sie diese Schaltung