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?
Hi Mist funktioniert als Link nicht. Ist das PDF zur AVR259-AppNote. MfG Spess
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.
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
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
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
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
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.
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) ;-)
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
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.
Weiterer code von cpldcpu in Beitrag "QtouchADC Re: qtouch - sekt oder selters" (Dezember 2012) Sowie https://github.com/martin2250/ADCTouch https://github.com/NicoHood/AnalogTouch
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.