Inhaltsverzeichnis:

Verwenden Sie 1 analogen Eingang für 6 Tasten für Arduino - Gunook
Verwenden Sie 1 analogen Eingang für 6 Tasten für Arduino - Gunook

Video: Verwenden Sie 1 analogen Eingang für 6 Tasten für Arduino - Gunook

Video: Verwenden Sie 1 analogen Eingang für 6 Tasten für Arduino - Gunook
Video: Arduino Tutorial - 3. Einfacher Input (#3) 2024, November
Anonim
Verwenden Sie 1 Analogeingang für 6 Tasten für Arduino
Verwenden Sie 1 Analogeingang für 6 Tasten für Arduino

Ich habe mich oft gefragt, wie ich mehr digitale Eingänge für mein Arduino bekommen könnte. Mir ist vor kurzem eingefallen, dass ich in der Lage sein sollte, einen der analogen Eingänge zum Einbringen mehrerer digitaler Eingänge zu verwenden. Ich habe schnell gesucht und herausgefunden, wo die Leute dies tun konnten, aber dass diese nur das gleichzeitige Drücken einer einzigen Taste erlaubten. Ich möchte in der Lage sein, jede beliebige Kombination von Tasten GLEICHZEITIG zu drücken. Mit Hilfe von TINKERCAD CIRCUITS habe ich mich daran gemacht, dies zu verwirklichen.

Warum sollte ich gleichzeitige Tastendrücke wollen? Wie im TinkerCad Circuits-Design dargestellt, könnte es für DIP-Schaltereingänge zur Auswahl verschiedener Modi innerhalb des Programms verwendet werden.

Die Schaltung, die ich entwickelt habe, verwendet die vom Arduino verfügbare 5-V-Quelle und verwendet 7 Widerstände und 6 Tasten oder Schalter.

Schritt 1: Die Schaltung

Die Rennbahn
Die Rennbahn

Arduinos haben analoge Eingänge, die einen Eingang von 0 V bis 5 V akzeptieren. Dieser Eingang hat eine Auflösung von 10 Bit, was bedeutet, dass das Signal in 2^10 Segmente oder 1024 Zählungen unterteilt wird. Auf dieser Grundlage könnten wir maximal 10 Tasten auf 1 analogen Eingang in einen analogen Eingang eingeben, während gleichzeitiges Drücken ermöglicht wird. Aber dies ist keine perfekte Welt. Es gibt Widerstände in Leitern, Rauschen von externen Quellen und unvollkommene Leistung. Um mir also viel Flexibilität zu geben, habe ich geplant, dies für 6 Tasten zu entwerfen. Dies wurde teilweise durch die Tatsache beeinflusst, dass TinkerCAD Circuits ein 6-Schalter-DIP-Schalterobjekt hatte, das das Testen vereinfachte.

Der erste Schritt in meinem Design bestand darin, sicherzustellen, dass jede Taste, wenn sie einzeln gedrückt wird, eine eindeutige Spannung liefert. Dies schloss aus, dass alle Widerstände den gleichen Wert haben. Der nächste Schritt war, dass die Widerstandswerte, wenn sie parallel addiert werden, nicht den gleichen Widerstandswert wie ein einzelner Widerstandswert haben konnten. Bei Parallelschaltung von Widerständen kann der resultierende Widerstand durch Rx=1/[(1/R1)+(1/R2)] berechnet werden. Wenn also R1=2000 und R2=1000 ist, ist Rx=667. Ich spekulierte, dass ich durch die Verdoppelung der Größe jedes Widerstands für keine der Kombinationen den gleichen Widerstand sehen würde.

Meine Schaltung bestand bis zu diesem Punkt also darin, 6 Schalter mit jeweils eigenem Widerstand zu haben. Es ist jedoch ein weiterer Widerstand erforderlich, um diese Schaltung zu vervollständigen.

Der letzte Widerstand hat 3 Zwecke. Erstens fungiert er als Pull-Down-Widerstand. Ohne den Widerstand ist der Stromkreis unvollständig, wenn keine Tasten gedrückt werden. Dies würde es der Spannung am Analogeingang des Arduino ermöglichen, auf ein beliebiges Spannungspotential zu schweben. Ein Pull-Down-Widerstand zieht die Spannung im Wesentlichen auf 0 V herunter. Der zweite Zweck besteht darin, den Strom dieser Schaltung zu begrenzen. Das Ohmsche Gesetz besagt, dass V = IR oder Spannung = Strom multipliziert mit Widerstand ist. Bei einer gegebenen Spannungsquelle bedeutet ein größerer Widerstand, dass der Strom kleiner wäre. Wenn also ein 5-V-Signal an einen 500-Ohm-Widerstand angelegt würde, wäre der größte Strom, den wir sehen könnten, 0,01 A oder 10 mA. Der dritte Zweck besteht darin, die Signalspannung bereitzustellen. Der durch den letzten Widerstand fließende Gesamtstrom wäre: i=5V / Rtotal, wobei Rtotal = Rlast + {1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Geben Sie jedoch nur 1/Rx für jeden Widerstand ein, für den die entsprechende Taste gedrückt ist. Aus dem Gesamtstrom wäre die dem Analogeingang zugeführte Spannung i*Rlast oder i*500.

Schritt 2: Beweis - Excel

Beweis - Excel
Beweis - Excel

Der schnellste und einfachste Weg, um zu beweisen, dass ich mit dieser Schaltung einzigartige Widerstände und damit einzigartige Spannungen erhalten würde, bestand darin, die Fähigkeiten von Excel zu verwenden.

Ich habe alle möglichen Kombinationen von Schalteingängen eingerichtet und diese sequentiell nach binären Mustern organisiert. Ein Wert von "1" zeigt an, dass der Schalter eingeschaltet ist, leer bedeutet, dass er ausgeschaltet ist. Oben in der Tabelle habe ich die Widerstandswerte für jeden Schalter und für den Pull-Down-Widerstand eingegeben. Ich habe dann den äquivalenten Widerstand für jede der Kombinationen berechnet, außer wenn alle Widerstände ausgeschaltet sind, da diese Widerstände keinen Einfluss haben, wenn sie nicht von einer Stromquelle versorgt werden. Um meine Berechnungen zu vereinfachen, damit ich jede Kombination kopieren und einfügen kann, habe ich alle Kombinationen in die Berechnung einbezogen, indem ich jeden Schalterwert (0 oder 1) mit seinem invertierten Widerstandswert multipliziert habe. Dadurch wurde sein Widerstand aus der Berechnung eliminiert, wenn der Schalter ausgeschaltet war. Die resultierende Gleichung ist im Bild der Tabelle zu sehen, aber Req = Rx+1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Mit Itotal = 5V / Req bestimmen wir den Gesamtstrom durch die Schaltung. Dies ist derselbe Strom, der durch den Pulldown-Widerstand fließt und uns die Spannung an unseren analogen Eingang liefert. Dies wird berechnet als Vin = Itotal x Rx. Wenn wir sowohl die Req-Daten als auch die Vin-Daten untersuchen, können wir sehen, dass wir tatsächlich eindeutige Werte haben.

An dieser Stelle scheint es, dass unsere Schaltung funktioniert. Nun, um herauszufinden, wie man den Arduino programmiert.

Schritt 3: Arduino-Programmierung

Arduino-Programmierung
Arduino-Programmierung
Arduino-Programmierung
Arduino-Programmierung
Arduino-Programmierung
Arduino-Programmierung

Als ich anfing, über die Programmierung des Arduino nachzudenken, plante ich zunächst, individuelle Spannungsbereiche einzurichten, um festzustellen, ob ein Schalter ein- oder ausgeschaltet war. Aber als ich eines Nachts im Bett lag, kam mir der Gedanke, dass ich in der Lage sein sollte, eine Gleichung dafür zu finden. Wie? EXZELLEN. Excel hat die Fähigkeit, Gleichungen zu berechnen, um Daten am besten in ein Diagramm einzupassen. Um dies zu tun, möchte ich eine Gleichung des Integer-Werts der Schalter (binär) gegen den Spannungseingang, der diesem Wert entspricht. In meiner Excel-Arbeitsmappe habe ich den Integer-Wert auf der linken Seite der Kalkulationstabelle abgelegt. Nun, um meine Gleichung zu bestimmen.

Hier ist ein kurzes Tutorial, wie Sie die Gleichung einer Linie in Excel bestimmen.

1) Wählen Sie eine Zelle aus, die keine Daten enthält. Wenn Sie eine Zelle ausgewählt haben, die Daten enthält, versucht Excel zu erraten, was Sie tendieren möchten. Dies erschwert das Einrichten eines Trends erheblich, da Excel selten richtig vorhersagt.

2) Wählen Sie die Registerkarte "Einfügen" und wählen Sie ein "Scatter"-Diagramm aus.

3) Klicken Sie mit der rechten Maustaste in das Diagrammfeld und klicken Sie auf „Daten auswählen…“. Dies öffnet das Fenster "Datenquelle auswählen". Wählen Sie die Schaltfläche Hinzufügen, um mit der Auswahl der Daten fortzufahren.

4) Geben Sie ihm einen Seriennamen (optional). Wählen Sie den Bereich für die X-Achse aus, indem Sie auf den Aufwärtspfeil klicken und dann die Spannungsdaten auswählen. Wählen Sie den Bereich für die Y-Achse aus, indem Sie auf den Aufwärtspfeil klicken und dann die Ganzzahldaten (0-63) auswählen.

5) Klicken Sie mit der rechten Maustaste auf die Datenpunkte und wählen Sie „Trendlinie hinzufügen…“Wählen Sie im Fenster „Trendlinie formatieren“die Schaltfläche Polynom. Wenn wir uns den Trend ansehen, sehen wir, dass die Ordnung von 2 nicht ganz übereinstimmt. Ich wählte eine Bestellung von 3 und fand, dass dies viel genauer war. Aktivieren Sie das Kontrollkästchen für "Gleichung im Diagramm anzeigen". Die endgültige Gleichung wird jetzt auf dem Diagramm angezeigt.

6) Fertig.

OK. Zurück zum Arduino-Programm. Jetzt, da wir die Gleichung haben, ist die Programmierung des Arduino einfach. Der Integer, der die Schalterpositionen darstellt, wird in 1 Codezeile berechnet. Mit der Funktion "bitread" können wir den Wert jedes einzelnen Bits erfassen und so den Zustand jeder Schaltfläche kennen. (SIEHE FOTOS)

Schritt 4: TinkerCAD-Schaltungen

TinkerCAD-Schaltungen
TinkerCAD-Schaltungen

Wenn Sie TinkerCAD Circuits noch nicht ausprobiert haben, tun Sie es jetzt. WARTEN!!!! Beenden Sie das Lesen meines Instructable und überprüfen Sie es dann. TinkerCAD Circuits macht das Testen von Arduino-Schaltungen sehr einfach. Es enthält mehrere elektrische Objekte und Arduinos, mit denen Sie sogar das Arduino zum Testen programmieren können.

Um meine Schaltung zu testen, habe ich 6 Schalter mit einem DIP-Schalterpaket eingerichtet und an die Widerstände gebunden. Um zu beweisen, dass der Spannungswert in meiner Excel-Tabelle korrekt war, habe ich am Eingang des Arduino ein Voltmeter angezeigt. Das hat alles wie erwartet funktioniert.

Um zu beweisen, dass die Arduino-Programmierung funktionierte, gab ich die Zustände der Schalter mit den digitalen Ausgängen des Arduino auf LEDs aus.

Ich habe dann jeden Schalter für jede mögliche Kombination umgeschaltet und bin stolz sagen zu können "ES FUNKTIONIERT"!!!

Schritt 5: "So lange und danke für all die Fische." (Ref.1)

Das muss ich noch mit echter Ausrüstung ausprobieren, da ich gerade beruflich unterwegs bin. Aber nachdem ich es mit TinkerCAD Circuits bewiesen habe, glaube ich, dass es funktionieren wird. Die Herausforderung besteht darin, dass die von mir angegebenen Werte der Widerstände nicht alle Standardwerte für Widerstände sind. Um dies zu umgehen, plane ich, Potentiometer und Kombinationen von Widerständen zu verwenden, um die Werte zu erhalten, die ich brauche.

Vielen Dank für das Lesen meiner instructable. Ich hoffe, dass es Ihnen bei Ihren Projekten hilft.

Bitte hinterlassen Sie Kommentare, wenn Sie versucht haben, dasselbe Hindernis zu überwinden und wie Sie es gelöst haben. Ich würde gerne mehr Möglichkeiten erfahren, dies zu tun.

Schritt 6: Referenzen

Sie dachten nicht, dass ich ein Zitat ohne Quellenangabe machen würde, oder?

ref. 1: Adams, Douglas. So lange und vielen Dank für all die Fische. (Das vierte Buch der Per Anhalter durch die Galaxis "Trilogie")

Empfohlen: