So kodieren Sie eine große Anzahl digitaler Eingangssignale in ein Signalergebnis

Ich würde gerne wissen, wie ich gleichzeitige Impulse auf mehreren Drähten erkennen kann. Im Wesentlichen werde ich mehrere Drähte haben, die beim Drücken als Verbindungspunkte dienen. Eine einfache Visualisierung davon wäre, wenn Sie mehrere Drähte sehen würden, die über eine Metallplatte drapiert sind (aber sie nicht berühren). Die Platte würde mit dem negativen Ende der Batterie verbunden und die Drähte würden mit dem positiven Ende des Teigs verbunden. Bei Berührung trifft der Draht auf die Platte und pulsiert. Anfangs dachte ich an so etwas wie einen 64-6-Encoder, aber jetzt habe ich das Gefühl, dass es viel bessere Lösungen gibt.

Kurz gesagt, was ist der beste Weg, um 2 ^ n in n Datenzeilen zu codieren?

Jede Hilfe ist willkommen!

Müssen Sie jederzeit erkennen können, welche oder wie viele Eingangsleitungen „aktiv“ sind? Würde ein einfacher Parallel-in-Seriell-Ausgangs-IC nicht das tun, was Sie beschreiben?
Wie simultan ist "gleichzeitig" und was ist falsch am 2^n-Encoder?

Antworten (3)

Sie können problemlos 6 digitale Leitungen in eine analoge Leitung codieren . Ich erinnere mich, dass mein alter Sony MD Walkman früher so etwas gemacht hat, um alle seine Tasten in einer einzigen Zeile zu codieren. Jede Taste verbindet einen Widerstand mit einem anderen Wert mit der Erfassungsleitung. Die Widerstandswerte sind so gewählt, dass jede Tastenkombination einen einzigartigen Parallelwiderstand erzeugt. Dieser Widerstand wird gemessen und die Tastenkombination kann vom Mikrocontroller berechnet werden.

Widerstände

Hier habe ich die Metallplatte gezeichnet, und sechs Drähte schweben darüber. Jeder Draht ist mit einem anderen Widerstandswert verbunden. Was Sie hier erstellen, ist im Grunde ein manueller Digital-Analog-Konverter .

Einige Beispiele:

  • Keine Drähte berühren sich -> Ausgangsspannung = Vcc
  • Erster Draht berührt -> Ausgangsspannung = Vcc x 1/2
  • Zweiter Draht berührt -> Ausgangsspannung = Vcc x 2/3
  • Erster und letzter Draht berühren sich -> Ausgangsspannung = Vcc x 0,667/1,667
Das ist eine coole Verbesserung meiner Idee und auch ein schönes Bild.
Sony geht besser als das, ihre FCB-Kamerablöcke verwenden eine Matrix von Widerständen, um eine Menge Tasten auf einer Tastatur zu codieren.
Ich liebe diese Idee! Ich werde das auf jeden Fall ausprobieren. Danke!
Haben Sie Vorschläge zur Art des zu verwendenden Mikrocontrollers?
Kann diese Schaltung modularisiert werden und dann mehrere derselben Schaltung parallel von derselben Spannungsquelle verwendet werden? (Ich habe Probleme mit den 2 ^ n-Widerstandswerten, die bei großen Zahlen nicht gut skalieren.)
@Buck - Ja, Sie können so viele davon haben, wie Sie möchten, solange jede Output_Voltage-Leitung separat behandelt wird (z. B. geht jede in einen anderen ADC-Kanal).

Wenn ich dich richtig verstehe, suchst du nach so etwas wie einem kabelgebundenen OR- Setup:

Verkabeltes ODER

Im obigen Diagramm sind A und B voneinander isoliert (dh wenn B hoch geht, geht A nicht), aber wenn eines von beiden hoch geht, geht C hoch. Die Anzahl der oben genannten Dioden/Anschlüsse kann beliebig erhöht werden.
Oder wenn Sie etwas komplexere Dinge benötigen, können Sie eine Reihe von Logikgattern oder sogar ein CPLD verwenden.

Wenn Sie "gleichzeitige Impulse auf mehreren Drähten erkennen" möchten und nicht daran interessiert sind, wie viele oder welche dazu beitragen, verbinden Sie jeden Draht über einen 10k-Widerstand mit einem gemeinsamen Punkt und verbinden Sie diesen gemeinsamen Punkt über 1k mit Masse. Wenn 1 Draht die Metallplatte berührt (verbunden mit +5 V), sehen Sie 0,455 Volt über dem gemeinsamen 1k; Wenn mehrere Drähte die Metallplatte berühren, sehen Sie 0,833 V (2 Drähte kurzgeschlossen) und diese steigt, wenn mehr Drähte kurzgeschlossen werden. Verwenden Sie eine einfache Komparatorschaltung, um Spannungen über etwa 0,6 V zu erkennen, und dies sollte funktionieren.