Inhaltsverzeichnis:

So lesen Sie viele Schalter mit einem MCU-Pin - Gunook
So lesen Sie viele Schalter mit einem MCU-Pin - Gunook

Video: So lesen Sie viele Schalter mit einem MCU-Pin - Gunook

Video: So lesen Sie viele Schalter mit einem MCU-Pin - Gunook
Video: ARDUINO BASICS #17 - Mehrere Taster an einem Pin betreiben 2024, November
Anonim
So lesen Sie viele Schalter mit einem MCU-Pin
So lesen Sie viele Schalter mit einem MCU-Pin

Haben Sie schon einmal bei einem Projekt/einen Projekten getummelt und das Projekt wächst und wächst, während Sie ihm weitere Dinge hinzufügen (wir nennen das einen Feaping Creaturism)? In einem kürzlich durchgeführten Projekt baute ich einen Frequenzmesser und fügte einen Signalgenerator/Frequenzsynthesizer mit fünf Funktionen hinzu. Ich hatte bald mehr Schalter, als ich noch verfügbare Pins hatte, also was soll ein Mann tun?

Ich hatte jedoch bald sieben weitere Schalter an meiner Funbox (ja, so nannte ich meinen Funktionsgenerator … ich weiß, ich habe keine Kreativität) und hier ist eine kurze Anleitung, die Ihnen zeigt, wie Sie dasselbe tun können. Es erfordert keine Schieberegister oder spezielle ICs. Tatsächlich ist auch kein Mikrocontroller erforderlich, wenn diskrete Halbleiter verwendet werden. Hier ist eine Möglichkeit, mehrere Schalter mit einem einzigen Pin an Ihrem AVR (oder einem anderen Mikrocontroller …):)

Schritt 1: Das Wesentliche (nicht wirklich)

Um dies zu erreichen, benötigen Sie einige Komponenten. Es hilft, eine Vielzahl von Switches zu haben, die Sie verwalten müssen. Sie benötigen auch einige Widerstände und entweder einen Mikrocontroller mit ADC (Analog-to-Digital-Konvertierung) oder auf andere Weise, um anzuzeigen, dass ein Schalter aktiviert war und welcher Schalter es war.

Wenn Sie möchten, können Sie dies mit einem spannungsgesteuerten Oszillator anzeigen, möglicherweise mit einigen Blinklichtern oder alternativ mit Ton. In diesem 'ible werde ich so tun, als würden wir einen AVR verwenden, aber in Ihrer Welt können Sie so tun, als würden Sie alles tun, was Sie glücklich macht. Ich vermisse Bob Ross.

Schritt 2: Der Spannungsteiler

Der Spannungsteiler
Der Spannungsteiler
Der Spannungsteiler
Der Spannungsteiler

Im Wesentlichen verwenden wir dazu eine Technik und Schaltung, die als Spannungsteiler bezeichnet wird. Spannungsteiler teilen, wie Sie vielleicht vermutet haben, die Spannung V,, in,, durch einen von Ihnen bestimmten Wert. Sie können die Spannung mit mehreren Komponenten teilen, einschließlich Kondensatoren und Induktivitäten, aber hier werde ich es mit dem guten alten Widerstand tun. Die Idee Was wir tun, besteht darin, zwei Komponenten in Reihe zu schalten, die jeweils einzeln einen Spannungsabfall an der Komponente verursachen. Schauen Sie sich das erste Bild an, wenn ich keinen Sinn mache. Es besteht eine Potentialdifferenz von 9V von Schiene zu Schiene. Zwischen 9V und 0V liegen zwei Widerstände in Reihe. Jeder von ihnen wird je nach Widerstand einen Spannungsabfall über sich selbst erfahren, wie Sie sich wahrscheinlich von V = IR erinnern. Wenn Sie eine Spannungsmessung zwischen den beiden Widerständen vornehmen, erhalten Sie einen Wert zwischen 9 V und 0 V, je nachdem, wie viel Spannung am ersten Widerstand abgefallen ist und wie viel über dem zweiten Widerstand noch vor 0 V abfällt. Es gibt eine einfache Formel zur Berechnung des Spannungsabfalls an einem Widerstand in dieser Situation und sieht so aus. Die Spannung über Widerstand 1 (R1) sei V1 und die Spannung über Widerstand zwei (R2) sei V2. Da ich keine Formatierung mehr verwenden kann, sehen Sie sich Bild 2 unten für die Formel an … In unserem Widerstandsteiler kann die Vout-Spannung also durch unsere Formel für V2 bestimmt werden (da wir GND auf 0 V beziehen). Was hat das damit zu tun, dass eine Reihe von Schaltern von einem Pin erkannt werden? Nun, blättern Sie um und ich zeige es Ihnen!

Schritt 3: Spannungsteiler-Leiter

Spannungsteiler-Leiter
Spannungsteiler-Leiter

Nehmen wir nun an, wir haben alle unsere Schalter, vielleicht sechs oder acht oder sechzehn, alle über Widerstände verbunden, die jeweils als Spannungsteiler fungieren, so dass, wenn sich der Zustand des Schalterpins ändert, die Spannung gelesen wird und basierend auf dem Spannungspegel, wir wissen, welcher Schalter gerade aktiviert wurde. Schauen Sie unten. Im Bild unten habe ich zwei Schalterblöcke verbunden. Der oberste Block hat zwei Schalter und der unterste Block hat fünf Schalter. Sie können Ihre separaten Kipp-, Moment-, Tast- usw. Schalter auf die gleiche Weise anschließen. Das Wichtigste zu beachten ist der Widerstand, mit dem Ihr Schalter verbunden ist. In meinem Beispiel habe ich den Widerstand des nächsten Widerstands fast verdoppelt, um eine Spannungslücke zu erzeugen, die einfach zu messen ist und nicht mit dem Schalter davor oder danach verwechselt wird. Wenn Sie es noch nicht bemerkt haben, schauen Sie noch einmal hin und stellen Sie fest, dass wir wieder bei unserem alten Freund, dem ohmschen Spannungsteiler, sind. Der erste Widerstand, der 10 kOhm, ist mit 5 V verbunden und der zweite Widerstand - der Widerstand, der V. bestimmtaus für den SWITCH_ADC-Pin, mit jedem Schalter verbunden, und daher ist jedem Schalter eine bestimmte Vout-Spannung zugeordnet, die von dem ADC-Pin gelesen werden kann, der an SWITCH_ADC angeschlossen ist. Bestimmen Sie als Nächstes die erwartete Vout von jedem Schalter wie folgt

Vout = Vin * (R2 / (R1 + R2))

für Schalter eins:

Vout = 5V * (500 / (10000 + 500)) = 5*0,048 = 0,24V oder 240 mV

für Schalter zwei:

Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0,18 = 0,9V oder ~900mV

und so weiter.. Fühlen Sie sich frei, R2 durch Ihre eigenen Werte zu ersetzen, wenn Sie nur bestimmte Widerstände zur Hand haben … Das Wichtigste hier ist, eine ausreichend große Spannungslücke zwischen den Schaltern zu halten, damit jede Fehlerquote am ADC auftritt Versetzen Sie Sie nicht in die Spannung, die von einem benachbarten Schalter erwartet wird. Ich habe festgestellt, dass es am einfachsten ist, die Teilerleiter zu bauen und ein Multimeter / Voltmeter auf den ADC-Pin zu legen und jeden Pin zu drücken und zu sehen, welche Werte Sie erhalten. Sie sollten ziemlich genau zu dem passen, was Sie berechnen. Sobald Sie alle erwarteten Spannungswerte von jedem Schalter mit einem bestimmten Widerstand haben, können Sie Ihre MCU den ADC-Pin lesen und mit Ihren bekannten Werten vergleichen, um festzustellen, welcher Schalter gedrückt wurde. Angenommen, Sie haben eine Interrupt-Service-Routine registriert, die aufgerufen wird, wenn eine Änderung am ADC-Pin erkannt wird. In diesem ISR können Sie den ADC lesen und diesen Wert mit Ihrer Switch-Tabelle vergleichen. Wenn Sie einen 8-Bit-ADC-Wert verwenden, wird Ihre Spannung in eine Zahl zwischen 0 und 255 umgewandelt, die einer Spannung zwischen 0 V und 5 V entspricht. Dies setzt voraus, dass Sie Ihren ADC auf diese Weise konfiguriert haben.

Schritt 4: Zusammenfassung

Jetzt sollten Sie also wissen, wie Sie mit GPIO-Pins für Switches sparsam umgehen. Immer wenn Ihnen die GPIO-Pins ausgehen oder kaum noch welche haben, oder wenn Sie feststellen, dass Sie eine Reihe von Schaltern verwenden werden, ist der Widerstandsteiler der richtige Weg, um Ihre GPIO-Pins zu sparen und gleichzeitig eine robuster Mechanismus zur Erkennung von Schalterzugriffen.

Empfohlen: