Wie man mehrere Kontaktpunkte erkennt und identifiziert

Ich suche nach einer Möglichkeit, mehrere Kontaktpunkte von Kraft oder Druck zu erkennen und zu unterscheiden. Ich habe eine verwandte Frage unter der unten aufgeführten URL gestellt:

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

Die darin gegebene Antwort bestand darin, ein D2A zu erstellen und die Kontaktpunkte zu bestimmen, indem es aus dem ausgegebenen Spannungspegel extrahiert wurde. Ich fand diese Lösung ein bisschen "klobig", da ich dann die Originalsingle in mein grob gemachtes D2A leiten werde, das dann zur Verarbeitung wieder in ein A2D geleitet wird.

Ich suche nach einer alternativen Lösung für dieses Problem. Alle Vorschläge sind willkommen

Warum bereitet Ihnen "klobig" ein Problem? Wenn Sie (sagen wir) zehn Drähte haben (ich erinnere mich an Ihre ursprüngliche Frage) und Sie sie mit der D2A-Technik "kombiniert" haben, werden Sie klobig und es ist diese Klumpigkeit, die es Ihnen ermöglicht, zwischen Draht A und Draht B zu unterscheiden, die mit dem Metall kurzschließen Platte. Mehr Hilfe brauchte Verständnis.
'Clunky' lässt sich nicht gut skalieren ... Ich könnte viele Drähte benötigen, sodass die potenzielle Widerstandsvarianz bei den meisten Mikrocontrollern ein Problem mit dem A2D-Eingangswiderstand verursacht
Wollen Sie damit sagen, dass das D2A-System möglicherweise nicht der beste Weg nach vorne ist?
Nun, ich mag diesen Ansatz wirklich, ich kann einfach nicht sehen, wie es funktionieren würde, wenn ich sagen wir 50 Datenleitungen verwenden würde. So wie ich es verstehe, haben die meisten A2Ds auf Mikrocontrollern eine Eingangswiderstandsbegrenzung von ~ 2k-~10k und ich würde denken, dass die Variabilität der Verwendung dieses Systems beim Lesen von einem Mikrocontroller inkonsistente Ergebnisse liefern würde ... Bitte beweisen Sie mir das Gegenteil, damit ich es noch einmal tun kann dieser Ansatz :)
Um meinen Kommentar anzuhängen - Da es n Zeilen gibt und der Wert der Widerstände um Potenzen von 2 ^ n steigt, kann ich mir anscheinend nicht vorstellen, wie ich dies mit einem Mikrocontroller A2D verbinden soll, um konsistente Ergebnisse zu erzielen ... Ich würde denken, dass es Probleme mit den Einschränkungen der A2D-Widerstandsbeschränkungen des Mikrocontrollers geben würde ... Sehen Sie das irgendwie?

Antworten (1)

Ich habe die vorherige Frage beantwortet und dachte, es wäre Ihnen egal, auf welchen Punkt gedrückt wurde, und ich wollte nur wissen, ob einer von ihnen gedrückt wurde.

Jetzt möchten Sie wissen, welche Punkte gedrückt werden und wie Sie mit nur wenigen Mikrocontroller-Pins eine große Anzahl erkennen können. Mein Vorschlag ist diesmal, einige Schieberegister zu verwenden . Diese erfordern nur wenige Pins und viele können miteinander verkettet werden, um viele Zeilen zu lesen und die parallelen Daten in serielle Daten umzuwandeln, die in den Mikrocontroller getaktet werden. Sie benötigen einen SR, der PISO (Parallel In, Serial Out) macht und kaskadiert werden kann. Ein universeller SR wie der CD74HCT299 sollte in Ordnung sein. Weitere Optionen finden Sie bei Mouser, Farnell, Digikey usw. - hier sind Lose von Farnell .

Sie haben jetzt "gleichzeitig" erwähnt, aber nicht genau definiert, wie schnell Sie dies einschätzen. Ich gehe davon aus, dass es im Vergleich zur Taktrate eines Mikrocontrollers nicht so schnell sein muss, wenn menschliche Berührungen erkannt werden sollen.

Wenn Sie beispielsweise 256 Zeilen lesen und Ihr Takt bei 1 MHz liegt, dann sehen Sie ungefähr 0,25 ms, um alle Daten einzutakten - das ist leicht schnell genug, um sicherzustellen, dass Sie keine Berührung verpassen. Abhängig von den verwendeten Schieberegistern (Laufzeitverzögerung, maximale Anzahl seriell verketteter Register - z. B. könnten Sie zwei oder vier Ketten anstelle einer langen machen) könnten Sie schneller fahren - viele kleine Mikros haben ein SPI-Peripheriegerät, das mindestens bis zu leisten kann 8MHz.

Je nachdem, wie Sie die Dinge tun möchten und wie schnell es sein muss, können Sie es beispielsweise als 8x8- oder 16x16-Matrix einrichten und jeweils eine Zeile scannen.

Hier ist ein Beispiel für zwei verkettete SRs (von dieser Seite ):

2 verkettete SRs

Ah, ich vergaß auch wieder die Reaktionszeit zu erwähnen :) .... Nun, ich möchte bis zu 128 Zeilen in einer Art von 1 ms erkennen .... Ist das mit dieser Lösung möglich?
Ich entschuldige mich ... es ist ~ 0,1 ms
Ich habe noch nie so viele miteinander verkettet, aber ja, ich denke, das sollte mit schnellen Schieberegistern machbar sein (wenn Sie die Datenblattspezifikationen auf Dinge wie Setup / Hold, Mindesttakt und Laufzeitverzögerung überprüfen, können Sie ungefähr berechnen, wie schnell Sie können go) Sie können immer zwei Sätze von 8 anstelle von einem von 16 verwenden, um die Dinge zu beschleunigen (obwohl Sie 6 Pins anstelle von 3 benötigen würden)