Forum: Mikrocontroller und Digitale Elektronik QTouch-ADC für AVR


von Steffen B. (worstmann)


Lesenswert?

Ich hab mich jetzt auch mal mit dem Thema beschäftigt und dabei ist mir
aufgefallen, dass es ja auch die Variante QTouch per ADC gibt.
Kann mir jemand erläutern worin der essentielle Unterschied liegt? 
Schließlich ist das ja von der Beschaltung einfacher. Nur 1 Rs am ADCx 
Pin.
Und kann man das Prinzip mit jedem AVR umsetzen der über Touch-Channels 
verfügt?

von Steffen B. (worstmann)


Lesenswert?

Keiner mal diese Methode untersucht?

von Peter D. (peda)


Lesenswert?

Hast Du mal nen Link?

Peter

von spess53 (Gast)


Lesenswert?


von spess53 (Gast)


Lesenswert?

Hi

Mist funktioniert als Link nicht. Ist das PDF zur AVR259-AppNote.

MfG Spess

von Bernhard M. (boregard)


Lesenswert?

Ich vermute er bezieht sich auf:
http://www.atmel.com/Images/doc8332.pdf
Kapitel 2.1

Gruß,
Bernhard

von Steffen B. (worstmann)


Lesenswert?

Genau das ist es ;)
Bin grad dabei nen Probeaufbau zu machen, so wie schon Peter es gemacht 
hatte mit 2 Portleitungen je Touch-Pad nach der alten Methode.

von Kevin M. (kiv112)


Lesenswert?

Hallo

Laut Atmel erlaubt die QTouch-ADC-Methode genauere Messungen.
Bei der alten Methode, wird die Zeit gemessen.

Jedoch ist momentan QTouch-ADC nur mit den Tiny20/40 möglich und dies 
nur mit der IAR-Toolchain (freie Version verfügbar).

Gruss Kevin

von spess53 (Gast)


Lesenswert?

Hi

>Jedoch ist momentan QTouch-ADC nur mit den Tiny20/40 möglich und dies
>nur mit der IAR-Toolchain (freie Version verfügbar).

Bist du sicher, das das nur mit dem zusätzlichen Interrupt möglich ist?

MfG Spess

von Peter D. (peda)


Lesenswert?

Kevin M. schrieb:
> Jedoch ist momentan QTouch-ADC nur mit den Tiny20/40 möglich und dies
> nur mit der IAR-Toolchain (freie Version verfügbar).

Es müßte eigentlich mit jedem MC gehen, der einen ADC hat.
Ich vermute mal, das ist mit dem mTouch von Microchip identisch, da wird 
die Ladungsmenge auf dem S&H Kondensator des ADC gemessen.

Schritt 1:
Pin als Ausgang auf VCC aufladen,
ADC Dummymessung nach GND (S&H-Kondi entladen).

Schritt 2:
Pin auf Tristate und mit ADC messen.


Peter

von kiv112 (Gast)


Lesenswert?

Atmel stellt jedenfalls nur QTouchADC-Library-Files für diese beiden 
Tiny's für die IAR-Toolchain zur Verfügung (laut Library Selection Guide 
- Excel File von Atmel).

Wahrscheinlich wird QTouchADC ein ähnliches Verfahren sein, wie CVD von 
MC, wie Peter schrieb, man müsste die Methode einfach selber 
implementieren.

Gruss Kevin

von Steffen B. (worstmann)


Lesenswert?

Ich hab das auch so verstanden, dass das Verfahren mit jedem AVR 
funktioniert der über einen ADC verfügt.

Als Bestückung sollte dann aber ausreichen entsprechendes großes PAD 
10x10mm meinetwegen 10k (Atmel hat in der AppNote AVR3000 vorgeschlagen 
1k - 1M) in Reihe dazu an den ADCx PIN und am Ausgang zum Test 
irgendeine LED.

Ich werd mich mal an nem Testprogramm versuchen. Wenn jemand Ergebnisse 
mit irgendeinem AVR erreicht hat wärs schön hier zu lesen.

von Daniel (Gast)


Lesenswert?

Ja, QTouch-ADC alias CSD scheint ein abgewandeltes, evtl. auch 
verbessertes (differentielle Messung) CVD-Verfahren (Microchip) zu sein. 
(Oder aus Patentrechtlichen gründen nur umbenannt, wobei die 
Erfindungshöhe einen Kondensator in einen anderen zu laden IMHO nicht 
patentwürdig sein kann)

Nur dass man bei Atmel eben das Low-Level-Handling der QTouch-Library 
überlassen KÖNNTE wenn denn auch andere als die Tinys (und die noch dazu 
nur via IAR-Compiler) unterstützt würden.

Diese Einschränkung auf die (bei uns völlig ungebräcuhlichen) Tinys 
erschließt sich mir in keinster Weise!
SEHR ärgerlich! Denn man kann offfenbar auch sehr kleine Tasten 
zuverlässig damit implementieren. Nur bei sehr kleinen Geräten ist neben 
dem ohnehin notwendigen normalen ATmega kein Platz für zusätzliche 
Tiny-MCUs...

Hier mal eine gute Erklärung des CSD-Verfahrens von Atmel:
http://www.atmel.com/Images/doc8497.pdf

Und hier die Erkläung des CVD-Verfahrens von Microchip:
http://ww1.microchip.com/downloads/en/AppNotes/01298A.pdf

Es gibt auch ein paar fertig programmierte ICs, die unterstützen dann 
sogar die von Microchip bekannte Entstörleitung (habe den Namen gerade 
vergessen), die Strippe heißt bei Atmel natürlich anders (auch 
vergessen) ;-)

von Waldemar M. (waldim90)


Lesenswert?

Ey cool, mit eurer Anleitung und den Hilfen der docs von Atmel und 
Microchip hab ichs doch tatsächlich hinbekommen! (ist mein erster qtouch 
button)

Folgender Code läuft auf einem Atmega2560 (Arduino Mega) mit einer ca 
10x10mm Fläche auf einer Lochrasterplatine mit 1K als Widerstand:
1
 
2
    DDRF = 0xFF;                //Port auf Ausgang setzten
3
    PORTF = 0b00000001;          // PINF0 auf High um CS zu laden und PINF1 auf LOW
4
    delayMicroseconds(1);        // kurz warten bis geladen
5
    ADMUX = (ADMUX & 0b11100001) | (1<<MUX0); //ADC Kanal ändern um Cs&h zu entladen
6
    ADCSRA |= (1<<ADSC);          // ADC Cs&h entladen
7
    while(ADCSRA & (1<<ADSC)){  }
8
    adc0 = ADC;                  //speichern um nachher zu überprüfen
9
    DDRF = 0x00;                  //Port auf Eingang
10
    PORTF = 0x00;                  //Tristate
11
    ADMUX = (ADMUX & 0b11100000);  //Wieder ADC0 Kanal wählen
12
    delayMicroseconds(1);          //warten?! geht auch ohne...
13
    ADCSRA |= (1<<ADSC);            //Messung
14
    while(ADCSRA & (1<<ADSC)){  }
15
    adc1 = ADC;
16
    adc2 += adc1;                  //Mittelwertbildung
Das ganze läuft natürlich in einer for Schleife

Wenn nichts in der nähe ist, schwankt der gemittelte ADC Wert maximal um 
2 und ab ca 2cm steigt der ADC Wert um ca 3-4 an (von 483 auf 486) und 
wenn ich den Finger auf die Fläche auflege steigt der Wert um ca 300. 
Wenn ich den Finger von der anderen Seite der Platine auflege dann 
steigt der Wert um ca 45 an und auch wenn ich meine Handyledertasche 
dazwischenlege steigt der Wert immer noch um ca 20 an.
Kann man das ganze noch empfindlicher auslegen? Größere Kupferfläche?

Was ich nicht verstehe: Bei Microchip wird nur einmal gemessen, bei 
Atmel wird 2 mal gemessen, das heißt einmal wird die Kupferfläche auf 
VCC gebracht und der s&h C damit geladen und das andere mal andersrum, 
wieso das ganze? Ist es dann genauer, zuverlässiger?

Ist die "normale" Qtouch Methode, also ohne ADC und mit Zeitmessung, 
besser?

MfG Waldemar

von M. K. (avr-frickler) Benutzerseite


Lesenswert?

Daniel schrieb:
> Ja, QTouch-ADC alias CSD scheint ein abgewandeltes, evtl. auch
> verbessertes (differentielle Messung) CVD-Verfahren (Microchip) zu sein.
> (Oder aus Patentrechtlichen gründen nur umbenannt, wobei die
> Erfindungshöhe einen Kondensator in einen anderen zu laden IMHO nicht
> patentwürdig sein kann)

Wir hatten letztens einen Vertreter von Microchip im Haus der uns das 
vorgeführt hat. Der meinte auch das sie da ein Patent drauf haben.

Waldemar Müller schrieb:
> Kann man das ganze noch empfindlicher auslegen? Größere Kupferfläche?

Der Vertreter nannte ein Anwendung eines Kunden in Asien, die haben für 
die Fussgänger-Ampeln einen berührungslosen Taster gebaut. Es reicht aus 
wenn man die Hand ein paar cm vor den Schalter hält.

von Info (Gast)


Lesenswert?


von Info (Gast)


Lesenswert?

Jetzt erst gefunden, das Resultat ist hier präsentiert:
Beitrag "TinyTouchLib - Touchbutton library für Attiny"

(Achtung, dies ist ein alter Thread)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.