Handdrehkurbel mit Anzeige


Google-Suche auf MEINE-SCHALTUNG.de :





Dauerkalender


Klaviatur mit Touchsensoren


Am Beispiel einer Klaviatur sollen zehn einfache Touchsensoren mit nur einer einzigen Leitung abgefragt werden. Die Leitung wird an einen analogen Pin des Arduino Nano angeschlossen. Sollte dies gelingen, würde es eine enorme Einsparung an I/O-Pins bedeuten.

Touchsensoren

Touchsensoren

Als Touch-Sensoren verwenden wir hier fertige Module, die auf dem Berührungssensor TTP223-BA6 basieren. Das kleine Modul hat die Abmessungen 11.5 x 8 mm und kann durchaus für eine kleine Mini-Tastatur angewendet werden. Die Sensoren arbeiten im Bereich von 2,5 bis 5,5, V und eignen sich damit sehr gut für eine Zusammenarbeit mit Arduino. Durch Anlöten von kleinen Brücken kann das Modul in vier Betriebsarten betrieben werden. Wir entscheiden uns für den Auslieferungszustand. Hier wird beim Betätigen des Sensors ein HIGH-Signal generiert.

Touchsensor Rückseite

Touchsensor Rückseite

Der Spannungsteiler

Die Aufgabe wird mithilfe eines Spannungsteilers realisiert. Der Spannungsteiler besteht aus 11 Widerständen. Ein Punkt des Spannungsteilers wird mit einem analogen Eingang des Arduino verbunden. Die Widerstände des Teilers müssen so ausgewählt werden, dass bei Betätigen eines Touch-Sensors nur eine bestimmte, dem Sensor zugeordnete Spannung an diesem Punkt auftritt. So kann man anschließend in dem Programm die Nummer des Sensors ermitteln und ihm eine bestimmte Musiknote zuordnen. Die Schwierigkeit in der Schaltung besteht also darin, die notwendigen Widerstandswerte zu berechnen.

Berechnung der Widerstände

Teil des Spannungsteilers

Teil des Spannungsteilers

Die Abbildung oben zeigt ein Teil des Spannungsteilers. Das Verhalten innerhalb des Spannungsteilers ist an allen P-Punkten gleich. Nehmen wir als Beispiel den Touch-Sensor Nr. S3. Bei betätigen des Sensors schaltet er durch und sein Ausgang liefert am Punkt P3a eine Spannung von 4 V. Da der Spannungsteiler mit Masse verbunden ist, fließt durch Widerstände R3, R2, R1 und Ro Strom I. Der Strom muss auch die Diode D3 passieren. Hier entsteht ein Spannungsabfall von Ud=0,45V. So messen wir am Punkt P3b eine Spannung von U=4-0,45= 3,55 V. Das Verhalten wiederholt sich an allen P-Punkten.
Damit zu späterem Zeitpunkt der Mikrocontroller erkennen kann, welcher Sensor betätigt wurde, benötigen wir an seinem analogen Eingang jeweils eine andere Spannung Ue, die jeden Sensor eindeutig identifiziert. Deswegen wird das Spannungsintervall von 3,55 auf zehn gleiche Teile (10 Sensoren) unterteilt und jedem Sensor eine feste Spannung zugeordnet. Ein Teilintervall beträgt in dem Beispiel 0,3V. Dem ersten Sensor S1 wird die Spannung von 3,1 V zugeordnet. Folglich beträgt die „Erkennung“-Spannung des S3-Sensors 2,50 V (3,1 – 0,3 – 0,3). Der Widerstand R3 muss demnach so berechnet werden, dass die Spannung Ue, die anschließend vom Controller gemessen wird, 2,5 V beträgt. Für die Berechnung werden einfach die Grundformen des Ohm’sches-Gesetzes verwendet:

I = U / R = U / (Ro+R1+R2+R3) (bei U=~3,45V) und
Ue = I * Ro.

Bei Berechnungen muss man schrittweise vorgehen. Bevor R3 berechnet werden kann, müssen R1 und R2 ermittelt werden. Eine gute Hilfe kann bei dieser Aufgabe eine Exel-Tabelle leisten.
Da sich die Berechnungsschritte wiederholen, ergibt sich daraus eine Grundformel, die für die Berechnung aller Widerstände gilt. Die Grundformel und Ergebnisse für unseren Spannungsteiler sind unten tabellarisch zusammengefasst.

Tabelle der Widerstände

Tabelle der Widerstände

Damit man die Widerstandswerte anschließend leichter einstellen kann, werden in der Schaltung Potenziometer angeschlossen. Da die einzelnen Intervalle nur 0,3 V betragen, muss man die berechneten Werte ziemlich genau einhalten. Bei Testen der Schaltung kann man dank Potenziometer manche Widerstände bei Bedarf noch etwas nachjustieren.

Die Dioden D1 bis D10 haben eine Sperr-Funktion. In einem nicht betätigten Zustand sind die Signalpins der Sensoren mit Masse verbunden.

Nachdem der Spannungsteiler fertig ist, können der Schaltung die restlichen Komponenten hinzugefügt werden.

Lautsprecher 3W

Lautsprecher 3W (8 Ohm)

Arduino nano

Arduino Nano

Die Spannung für die Sensoren stellt ein Spannungsregler bereit. Hier wird ein fester Spannungsregler L78L05 (5 VDC) eingesetzt.

Spannungsregler 5 V

Spannungsregler 5 V

Der Schaltplan

Schaltplan

Schaltplan

Testschaltung

Testschaltung

Testschaltung

Das Programm

Die Zuordnung der Frequenzen für jede Taste erledigt das Programm. Die Frequenzen repräsentieren die Töne, die später beim Betätigen der Tasten aus dem Lautsprecher zu hören sein werden. Die Frequenzen befinden sich in der Variable „Note []“. Damit das Lesen der Werte im Laufe des Programms einfacher erfolgen kann, sind die Werte rückwärts eingetragen. Da wir nur 10 Tasten verwenden, werden nur 10 Werte benötigt. Die Werte entstammen der folgenden Tabelle:

Noten Tabelle

Noten-Tabelle mit zugehörigen Frequenzen

Notensystem

Notensystem

In unserem Beispiel entspricht die erste Taste der Note c‘. Ihr wird die Frequenz von 262 Hz zugewiesen.

Das Programm untersucht dauernd die Situation an dem analogen Eingang A1. Sobald hier Spannung ansteigt, dh. eine Taste wurde betätigt, bekommt das Programm von dem Mikrocontroller eine Zahl geliefert. Sie liegt zwischen 0 und 1023. Der Wert 1023 steht für 5 V. Mithilfe von diesem Wert wird ermittelt, welche Taste gedrückt wurde. Sobald die Tastennummer bekannt ist, wird an dem digitalen Ausgang D2 mithilfe der Funktion tone() ein Signal mit der zugehörigen Frequenz ausgegeben. Der Lautsprecher wird aktiv.

Arduino


// ***************************************************************************************
// Klaviatur mit Touch-Sensoren
// Töne mit passivem Lautsprecher
// Arduino Nano, IDE 1.8.13
// ***************************************************************************************

int Analog_Pin = 1;
int Lautsprecher = 2; 
int Frequenz; 
                                                            // Frequenzen der Noten
                                                            // für 10 Tasten beginnend mit c'
int Note [] = { 659, 587, 523, 494, 440, 392, 349, 330, 294, 262 };
                                                            // Spannungswerte in V * 10
                                                            // für 10 Tasten
int Spannungswert [] = { 4, 7, 10, 13, 16, 19, 22, 25, 28, 31 };                
        
                                                          
void setup() {
  
    pinMode (Lautsprecher, OUTPUT);                         // Digitaler Ausgang für Lautsprecher
}

void loop() {
  
    int Wert_Ist = analogRead(Analog_Pin);                  // Analog Eingang aktuell
    if (Wert_Ist > 50) {                                    // Start bei ca. 0,25 V
      for (int i = 0; i < 10; i++) {                        // 10 Intervalle bilden und untersuchen
        int U_Wert = Spannungswert [i] * 20;                // Faktor 20 =~ 1023/50
        int Wert_Min = U_Wert - 31;                         // untere Grenze eines Intervalls
        int Wert_Max = U_Wert + 31;                         // obere Grenze
        if ((Wert_Ist > Wert_Min) && (Wert_Ist < Wert_Max)) {    // Intervall gefunden
          Frequenz = Note [i];                              // Taste Nr.= i, Frequenz zuordnen
        }
      }
      tone (Lautsprecher, Frequenz);                        // Lautsprecher ON
    }
    if (Wert_Ist < 51) {                                     
        noTone (Lautsprecher);                              // Lautsprecher OFF
    }    
}
// ***************************************************************************************       


Kurzvideo

Touch-Sensor Klaviatur


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz