Für die Eingabe von Informationen in Zusammenhang mit einem Display oder Einstellung von Werten sind Taster, Drehgeber oder Potentiometer nicht immer die schönste oder beste Lösung. Entweder gibt es Probleme mit der Platzierung, der Größe oder die kleinen Spalten machen Probleme bei Feuchtigkeit in rauer Umgebung. Möchte man eine optisch ansprechende Lösung realisieren, so sind Touch Sensoren bestens für so eine Bedienung geeignet. Diese können hinter den verschiedensten Frontplatten, wie Aluminium, Plexiglas oder Fliesen angebracht werden und detektieren ganz unsichtbar die Berührung.
Die beschriebene Methode ermittelt die Berührung nicht über eine Kapazitätsmessung, sondern wird über eine Charge-Transfer-Messung detektiert.
Dieses kleine Projekt zeigt die Verwendung des Chips AT42QT1070 auf einer kleinen Platine für den Einbau auf eine Hutschiene. Unterstützt werden 7 Tastflächen (Berührungsflächen). Die Abfrage der Tasten erfolgt dabei einfach über einen I2C-Bus.
Das Prinzip des Chips AT42QT1070 bzw. Moduls
Zunächst wollen wir uns die Bauart und Funktion genauer ansehen.
Der Schaltkreis vom Typ AT42QT1070 detektiert die Berührung unseres Fingers mit der „Platine“. Auf der Oberseite wird die Sensorfläche, die nur aus einer Leitbahn besteht, entsprechend als Tastfläche markiert.. Auf der Unterseite der Platine befinden sich die eigentlichen Leitbahnen, die als Sensor dienen.
Funktionsprinzip der Schaltung mit dem AT42QT1070
Es gibt 2 Kondensatoren die als Speicher für Ladungen dienen, den Kondensator Cs als Speicher und die “Touch” Elektrode als Kondensator gegen Erde.
Am Anfang werden beide entladen, um die Kondensatoren in einen definierten Zustand zu bringen. Das bedeutet, dass PB1 und PC1 als Ausgänge und auf LOW geschaltet werden. Etwas warten damit Entladung auch vollständig erfolgt. Danach werden in einer Schleife folgende Punkt abgearbeitet:
- Der Touch Kondensator wird über PB1 aufgeladen (nur wenige pf). Dabei ist der Port PC1 als Eingang geschaltet, damit in den Cs kein Strom fließen kann
- Pin PB1 wird als Eingang konfiguriert und PC1 als Ausgang mit 0V. Jetzt wandert die Ladung aus dem Touch Kondensator in Cs (welcher viel grösser ist und sich nur gering auflädt)
- Wenn die Spannung am Cs ausreicht um vom AVR als 1 gelesen zu werden, wird die Schleife beendet und durch geführte Schleifenanzahl ausgegeben. Der Zählerstand ist ein Maß für die benötigten Ladezyklen. Wenn die Spannung am Cs nicht ausreicht, beginnt die Schleife von vorne.
Der Endstand des Zählers verändert sich, wenn man mit dem Finger den Touchsensor berührt.
Sozusagen wird durch den kleineren Touch-Kondensator schrittweise der große Kondensator Cs aufgeladen. Die Anzahl der benötigten Ladezyklen hängt von der “Größe” des Touch Kondensators ab. Und die wiederum von dessen Umgebung (Finger).
Der verwendete Chip bzw. Schaltkreis AT42QT1070
Sehen wir uns das nächste IC selber an. Er wird in einem SO14 Gehäuse angeboten. Als Chip im DIP-Gehäuse gibt es ihn leider nicht. Also etwas SMD Löterfahrung wäre von Vorteil. Bitte die Bauart genau beachten.
Letzte Aktualisierung am 2024-11-20 / * Affiliate Links
Verwendung:
Der AT42QT1070 kann in zwei verschiedenen Modi betrieben werden:
- Standalone Mode – autarker Betrieb von 5 Keys und 5 Ausgängen zum Anschluss von z.B. LEDs
- Comms Mode – bis zu 7 Keys (Tasten), Auswertung über den I2C Bus (unser Modul)
Zuordnung der AT42QT1070 Register zu den Tastenfeldern
Als letztes habe ich eine Kopie aus dem Datenblatt des Herstellers eingefügt. Es werden die einzelnen Register angegeben. Es sind weitere Einstellungen möglich, auf die ich nicht weiter eingehe. Wir wollen uns nur mit dem Comms Mode beschäftigen. Die anderen Eigenschaften werden aber in dem Datenblatt ausführlich erläutert (siehe unten unter Downloads).
Technische Angaben
- Betriebsspannung von 1,8V bis 5,5V
- I2C Bus max. 400 kHz
- Bus Adresse (nach Hersteller) 0x1B – verwendet 0x36
Von verschiedenen Herstellern werden unterschiedliche Fertig-Module angeboten, am Ende dieses Beitrages haben wir die beliebtesten Angebote aufgelistet. Oder einfach hier* nach dem Chip suchen.
Schaltplan
Leiterplatte und Bestückungsplan
Ansicht des fertigen Moduls Q-Touch mit den Tasten 0 bis 6
Die genaue Größe und Anordnung der Tastflächen bitte der Platinen Zeichnung entnehmen.
Die Belegung der Steckbuchsen entspricht dem Roboternetz-Definitionen. Die Pins 4 und 5 werden nur mit Widerständen an +5V angeschlossen.
Beispielprogramm in C
In der Software kann die Abfrage verschiedener Register eingestellt werden. Damit kann auch die Empfindlichkeit bei verschiedenen Materialien überprüft werden.
/* ATB_Touch_Prg_1.c Created: 27.03.2016 17:37:48 Author : AS */ // Hardware D2 - Display I2C, P92 - AT42QT1070 // P30 - Board 1 mit AT1284p mit 16MHz, NT2 mit 5/12V 3A #include <stdbool.h> #include <avr/pgmspace.h> #include "main.h" #include <util/delay.h> #include "i2clcd.h" #include "i2cmaster.h" #include "avr/io.h" #include "util/delay.h" #include "avr/interrupt.h" #include <stdlib.h> int8_t d; int8_t dt; uint8_t ret; // Variable für I2C Kommunik. char Buffer[20]; // Variable für LCD Anzeige void anzeige() // Unterprg Anzeige { lcd_printlc(1,2,"Touch + Display"); // Zeile 1 lcd_printlc(2,3,"Touch Modul 1"); // Zeile 2 lcd_printlc(3,2,"mit AT42QT1070"); // Zeile 3 lcd_printlc(4,2,"(by achim 2016)"); // Zeile 4 } void erfassung() // Unterprg erfassung { ret = i2c_start(0x36); // Start if (ret == 0) // Abfrage Bus { i2c_start( 0x36 ); // Addressiere Device i2c_write( 0x03 ); // Setze lesezugriff ori 0x03 // bei 0x02 ändert von 0 auf 1 bei jeder Taste - Detection Status // bei 0x03 gibt jede Taset einen Bit Wert aus - Key Status // bei 0x05 Anzeige Empfindlichkeit Key 0 // bei 0x07 Anzeige Empfindlichkeit Key 1 // bei 0x09 Anzeige Empfindlichkeit Key 2 // bei 0x0B Anzeige Empfindlichkeit Key 3 // bei 0x0D Anzeige Empfindlichkeit Key 4 // bei 0x0F Anzeige Empfindlichkeit Key 5 // bei 0x11 Anzeige Empfindlichkeit Key 6 i2c_start( 0x36 | 0x01 ); // Starte Lesezugriff d=i2c_readNak(); // Wert auf d übertragen i2c_stop(); } else // Fehlererkennung { // Wenn AT kein OK sendet lcd_command(LCD_CLEAR); // Leere Display _delay_ms(2); // Warte 2ms lcd_printlc(1,1,"Fehlermeldung:"); // "Lesevorgang" lcd_printlc(3,4,"AT42QT1070"); // "Nicht OK (NOK)" lcd_printlc(4,2,"nicht OK"); // "Lesevorgang" _delay_ms(2000); // Warte 2ms } } int main(void) // Beginn Hauptprogramm { cli(); // Interrupts deaktiviert i2c_init(); // Starte I2C Bus lcd_init(); // Starte I2CLCD lcd_light(0); // 0=Licht an, 1=aus // Display Befehle lcd_command(LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKINGOFF); lcd_command(LCD_CLEAR); // Leere Display _delay_ms(2); // Warte 2ms anzeige(); _delay_ms(5000); // Warte 5000ms auf Start lcd_command(LCD_CLEAR); // Leere Display _delay_ms(2); // Warte 2ms while(1) { erfassung(); // Unterprg Touch auslesen lcd_command(LCD_CLEAR); // Leere Display _delay_ms(2); // Warte 2ms itoa(d, Buffer, 10 ); // Umrechnung Werte lcd_printlc(3,14,Buffer); // Anzeige Werte lcd_printlc(1,1,"Anzeige Keys:"); // Anzeige Text Maske lcd_printlc(3,1,"Key Wert:"); lcd_printlc(4,1,"Taste Key:"); if (d==1) // Auswertung der Keys und Zuordnung { dt=0; } if (d==2) { dt=1; } if (d==4) { dt=2; } if (d==8) { dt=3; } if (d==16) { dt=4; } if (d==32) { dt=5; } if (d==64) { dt=6; } if ((d==1)||(d==2)||(d==4)||(d==8)||(d==16)||(d==32)||(d==64)) { itoa(dt, Buffer, 10 ); // Ausgabe Text Tasten lcd_printlc(4,13,Buffer); } else { lcd_printlc(4,13,"---"); // Wenn keine Taste dann --- } _delay_ms(100); } }
Bauteile Bestückungsliste / Bestellliste
Platinenbezeichnung Beschreibung Bestellnummer/Bezugsquelle L1 LED, 20 mA, 3 oder 5 mmC1 Bezugsquelle Reichelt* R1 Widerstand 220 Ohm Bezugsquelle Conrad* R2,4,5,6-12 Widerstand 10 KOhm Bezugsquelle Conrad* R3 Widerstand 100 kOhm Bezugsquelle Conrad* C1,2 Elko 100/16 C3,4 Kondensator 100 nF Bezugsquelle Reichelt* IC AT 42 QT 1070 ( SMD ) Bezugsquelle Farnell* 2 Stück Wannenstecker 2x5, RM 2,54 Bezugsquelle Reichelt* 1 Stück Stiftleisten 2-polig Bezugsquelle Reichelt* 1 Stück Jumper Bezugsquelle Reichelt* 1 Stück Platine P92 (72x64 mm) Alle Angaben ohne Gewähr
Downloads
Q-Touch Gerber Leiterplatten-Dateien(ZIP)
Datenblatt AT42QT1070 (PDF)
Leiterplatte zum Projekt bestellen
Neu! Die Leiterplatte für dieses Projekt ist direkt über den Shop PlatinenCenter erhältlich. Da die Platinen dort vorgefertigt werden, sind diese sehr preiswert lieferbar.
Individuelle Leiterplatten
Möchtest du keine vorgefertigte Leiterplatte, weil Du vielleicht vorher Änderungen an dem Layout vornehmen möchtest, dann empfehlen ich die Anbieter auf unserer Leiterplatten-Service Seite.
Das Leiterplattenangebot ist ein Service Angebot der jeweiligen Anbieter. Bei Fragen bezüglich Lieferung und Preis bitte dort nachfragen!
Ähnliche Module und Sensoren
Letzte Aktualisierung am 2024-11-21 / * Affiliate Links
Weblinks zum Thema
Bezugsquelle für Chip AT42QT1070
Viel Spaß mit dem Projekt, euer Achim!
Bitte beachten: In diesem Beitrag wurden einige Skizzen und Infos verwendet, die vom Hersteller bzw. aus dem Datenblatt stammen.
Beitrag und Fotos: Autor Achim - Homepage
Frage direkt den Autor stellen <klick hier>
Weitere Hinweise
Vor dem Aufbau bitte nachfolgende Hinweise lesen:
Das Projekt unterliegt einer CC-Lizenz - Lizenzhinweis (zum Aufklappen anklicken)
Um ihnen weitgehende Möglichkeiten zum Nutzen der Schaltung einzuräumen, wurde dieses Projekt jetzt unter die CC-Lizenz gestellt. Sie haben So die Möglichkeit die Schaltung beliebig zu verändern oder weiterzugeben. Lediglich die kommerzielle Weitergaben ist nur mit Genehmigung möglich! Genauere Hinweise finden Sie im Lizenztext.
Bei einer Veröffentlichung oder Weitergabe ist nachfolgender Text sichtbar zu übernehmen:
Projekt (Schaltung & Projektdateien) von Autor Achim, ist lizenziert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.
Über diese Lizenz hinausgehende Erlaubnisse können Sie beim Autor erhalten.
Die Homepage des Autors lautet: mikrocontroller-elektronik.de
Lizenziert wurde das Projekt von: Autor/User Achim,
Veröffentlicht wurde es unter www.Roboternetz.de & www.Mikrocontroller-Elektronik.de
Dieser Name und diese Webseiten sind bei der Weitergabe stets deutlich sichtbar zu nennen!
Achtung: Es kann keinerlei Garantie für die Fehlerfreiheit der Schaltung oder anderer Projektdateien übernommen werden! Der Nachbau und Betrieb geschieht auf eigene Gefahr! Jegliche Haftung für Schäden oder Verletzungen wird ausgeschlossen! Schadensersatzansprüche, gleich aus welchem Rechtsgrund, sind ausgeschlossen.
Sicherheitshinweise und Haftungsausschluss (zum Aufklappen anklicken)
Dieses Projekt dient vornehmlich für Lehrzwecke und zum Experimentieren. Für den Aufbau sollten ausreichend Elektronik Grundkenntnisse und Kenntnisse bezüglich der Sicherheit (Experimentieren mit Strom und Handhabung gängiger Werkzeuge wie Lötkolben etc.) vorhanden sein. Unter dem Menüpunkt Buchvorstellungen als auch auf der Seite RN-Wissen.de empfehle ich diesbezüglich noch interessante Literatur mit der man sich dies erarbeiten kann. Für Fragen bezüglich Elektronik und Mikrocontroller empfehle ich das Forum: Roboternetz.de
Sicherheitshinweise und Haftungsausschluss