Anschließen eines geerdeten NO-Schalters an eine Abtastschaltmatrix

Ich arbeite an einem Projekt, das eine Scanning-Switch-Matrix enthält. Es enthält auch einen Joystick mit integriertem Druckknopf. Ich habe keine IO-Pins am Mikro, aber in meiner Schaltmatrix sind Lücken, daher möchte ich den Taster in die Matrix integrieren. Der Taster ist jedoch dauerhaft intern mit dem Massestift des Joysticks verbunden.

Ich bin mir ziemlich sicher, dass ich einen NPN-Transistor verwenden kann, um die Signalleitung vom Druckknopf über die Matrixstifte zu verbinden, wie ich es mit einem normalen Druckknopf tun würde, aber ich möchte sicherstellen, dass mir nichts Wichtiges fehlt.

Ich skizzierte etwas, von dem ich denke, dass es funktionieren könnte. R3 ist der interne Pull-up-Widerstand im Mikrocontroller. Für die anderen Schalter in der Matrix würde Q1 durch einen NO-Schalter mit einer Reihendiode ersetzt, die zwischen Erde und dem Ausgang geschaltet ist. Ich habe das Gefühl, dass meine vorgeschlagene Schaltung rückwärts ist und tatsächlich nur aktiviert wird, wenn mein Druckknopf NICHT gedrückt wird, aber ich denke, das würde nur einen weiteren Transistor benötigen, um dieses Signal umzukehren.

Geben Sie hier die Bildbeschreibung ein

So sieht die Schaltung für einen normalen Schalter in der Matrix aus (beachten Sie, dass keiner der Pins auf GND gesperrt ist, wie dies bei dem Schalter der Fall ist, den ich jetzt zu integrieren versuche).

Geben Sie hier die Bildbeschreibung ein

Das Matrix-Scannen funktioniert, indem eine einzelne Spalte niedrig eingestellt wird und der Rest drei Zustände hat. Anschließend werden alle Zeilen eingelesen. Anschließend wird zur nächsten Spalte gewechselt und erneut eingelesen.

Hat jemand bessere Vorschläge oder Korrekturen?

Können Sie Ihren Scanner so ändern, dass die Säule drei Zustände hat, anstatt sie hochzuziehen?
Ich habe gerade meinen Code überprüft. Sieht so aus, als hätte ich mich an meinen Scanvorgang falsch erinnert, und ich bin tatsächlich schon dabei, die Spalte dreifach anzugeben.

Antworten (1)

Wenn Sie Ihren Scan-Code ändern könnten, um die Spalte entweder hoch statt niedrig zu ziehen, müssen Sie nichts Besonderes tun, um diesen Schalter zu lesen. Verbinden Sie den Spalteneingang mit R2 und lesen Sie den Schalter von der Verbindungsstelle von R2 und dem Schalter ab. Sie möchten auch den internen Pull-up-Widerstand an den Spalteneingängen anstelle der Zeileneingänge aktivieren.

Wenn das nicht möglich ist, sollte Ihre Schaltung funktionieren. Stellen Sie sicher, dass Sie die Säule mit drei Zuständen versehen, anstatt hoch zu ziehen, da Sie sonst den Basis-Emitter-Übergang zu stark in Sperrrichtung vorspannen und Q1 möglicherweise nicht mögen. Sie könnten auch einen PNP für Q1 verwenden, der die Logik umkehrt (ich denke, Sie wollen das sowieso). Im PNP-Fall kann man auch auf R2 verzichten.

Es hört sich so an, als würde meine Schaltung tatsächlich das Gegenteil von dem sein, was ich will (Eingang ist niedrig, Q1 sieht offen aus, Eingang offen, Q1 zieht niedrig, anstatt umgekehrt). Würde das Problem mit R2 behoben, wenn es mit der anderen Seite von R1 verbunden wäre?
@ben, es wäre kein Problem, aber ich bin mir nicht ganz sicher, warum Sie das tun möchten. Vielleicht verstehe ich deine Frage nicht wirklich. Vielleicht könnten Sie einen Schaltplan mit allen beteiligten Komponenten zeichnen ?
Der Eingang ist entweder GND oder offen, also brauche ich einen Pull-up-Widerstand (R2).
@ben wenn das der Fall ist, warum sollte man sich überhaupt mit dem Transistor beschäftigen? Ich muss dein Problem nicht verstehen.
Ich habe versucht, meine Frage ein wenig zu klären und den Schaltplan, den ich zu replizieren versuche, aufgenommen und den von mir vorgeschlagenen Schaltplan verbessert, um die wahre Funktionalität besser widerzuspiegeln.