Tastenfeld ohne Tasten – Q-Touch mit dem AT42QT1070

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.

qtouch-Schaltung-chip-AT42QT1070-Prinzip

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:

  1. 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
  2. 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)
  3. 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.

qtouch-Schaltung-chip-AT42QT1070-chip

Best Price Square Sensor, QTOUCH, 7-Key, 14SOIC AT42QT1070-SSU by ATMEL
Best Price Square Sensor, QTOUCH, 7-Key, 14SOIC AT42QT1070-SSU by ATMEL*
SENSOR, QTOUCH, 7-KEY, 14SOIC AT42QT1070-SSU By ATMEL; Manufacturer Part No : AT42QT1070-SSU

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)

 

qtouch-Schaltung-chip-AT42QT1070-Schaltungsskizze2

Standalone Mode mit 5 Keys und 5 Ausgängen (Foto aus Datenblatt)

qtouch-Schaltung-chip-AT42QT1070-Schaltungsskizze

Comms Mode mit 7 Keys und I2C Bus (Foto aus Datenblatt)

 

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).

qtouch-Schaltung-chip-AT42QT1070-Tabelle

Tabelle aus Datenblatt (Datenblatt Download unten in diesem Beitrag)

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

qtouch-Schaltung-chip-AT42QT1070-Platine-Schaltbild

 

Leiterplatte und Bestückungsplan

qtouch-Schaltung-chip-AT42QT1070-Platine

qtouch-Schaltung-chip-AT42QT1070-Platine-Foto

Leiterplatte in der Durchsicht

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.

qtouch-Schaltung-chip-AT42QT1070-Modul

 

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.

Zum Platinen Shop

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.

Leiterplatten Hersteller

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>

    Dein Name (Pflichtfeld)

    Deine E-Mail-Adresse (Pflichtfeld)

    Deine Nachricht an den Autor des Beitrages

    Bitte beweise, dass du kein Spambot bist und wähle das Symbol Baum.

     

    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:


    cc_logo310

    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

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

    scroll to top