ATtiny816 Peripheral Touch Controller(PTC) QTouch?

OP #6165374
Lesenswert?

Guten Tag

Ich arbeite zurzeit an einem Projekt, in dem ich einen ATtiny816 als 
Mikrocontroller verwende. Dort möchte ich gerne zwei Touch-Buttons in 
Verbindung mit dem PTC verwenden. Ich habe schon eine Leiterplatte mit 
den zwei Buttons darauf hergestellt. Ich verwende dabei "mutual 
capacitance sensing".

Nun habe ich Probleme mit dem Programmieren. Ich werde nicht schlau 
durch die User Guides. Die zwei Buttons sollten im Programm nur den 
Mikrocontroller vom Schlaf aufwecken und während der Laufzeit lesbar 
sein.

Atmel Start wollte ich eigentlich benutzen, da werde ich jedoch auch 
nicht schlauer.

Kennt sich jemand mit PTC bzw QTouch Library aus?

Mit freundlichen Grüssen
Fabian
Gast #6165433
Lesenswert?

Fabian G. schrieb:
> Die zwei Buttons sollten im Programm nur den
> Mikrocontroller vom Schlaf aufwecken

Können die das? Wie ich das verstanden habe, muss der µC Timer gesteuert 
aufwachen und die Buttons abfragen.

Du kannst in den Beispielen nach "Wake" suchen. Muss auch nicht direkt 
für deinen ATtiny816 sein.
#6166034
Lesenswert?

QTouch ist doch nur Software und nutzt nur den ADC. Da es keinen echten 
Hardware Touch Cotnroller gibt muss der Kern wohl wenigstens kurz laufen 
um einen Tastendruck zu erkennen.

in der AVR3005 steht mehr oder weniger explizit dass wakeup über touch 
nicht funktioniert. Ob man die QTouch library so konfigurieren kann dass 
der µC periodisch aufwacht weiß ich leider nicht.
Gast #6166106
Lesenswert?

Fabian G. schrieb:
> "Supports wake-up on touch from Sleep mode"
>
> Laut Datenblatt sollte dies möglich sein.

Der Schlafmodus wird unterschieden in "Idle, Standby, Power Down". Der 
PTC arbeitet noch im Standby-Modus, wozu allerdings (mindestens) der ADC 
aktiv sein muß. Die Stromaufnahme ist daher >= 0,3 mA. Ferner ist der 
ADC durch PTC nicht für andere Aufgaben verwendbar.

Für stromsparenden Batteriebetrieb ist der PTC wohl nicht brauchbar.
#6166125
Lesenswert?

m.n. schrieb:
> Ferner ist der
> ADC durch PTC nicht für andere Aufgaben verwendbar.

Sicher?

Ich habe hier mal Touchtasten ohne die Lib implementiert.
Da kann man natürlich auch alle anderen ADC-Eingänge im ADC-Interrupt 
mit auslesen:
Beitrag "QTOUCH ohne ASF (C Sourcecode)"

Zur Auswertung der Touchtasten muß man den AVR zyklisch aufwecken 
(WDT-Interrupt oder 32kHz Timer).
OP #6166137
Lesenswert?

K. S. schrieb:
> QTouch ist doch nur Software und nutzt nur den ADC. Da es keinen echten
> Hardware Touch Cotnroller gibt muss der Kern wohl wenigstens kurz laufen
> um einen Tastendruck zu erkennen.

Der ATtiny816 besitzt einen Hardware Touch Controller.

m.n. schrieb:
> Für stromsparenden Batteriebetrieb ist der PTC wohl nicht brauchbar.

Habe ich jetzt auch gerade bemerkt.

Kennst du oder jemand anderes eine einfache externe Schaltung, welche 
einen Mikrocontroller via Interrupt vom Power-Down Mode wecken kann? Sie 
sollte eine Stromaufnahme von <10uA besitzen.
Gast #6166195
Lesenswert?

Peter D. schrieb:
> m.n. schrieb:
>> Ferner ist der
>> ADC durch PTC nicht für andere Aufgaben verwendbar.
>
> Sicher?

Das hatte ich vorhin im Datenblatt gelesen und fand es enttäuschend. Im 
Datenblatt findet sich zudem eine Tabelle 1.1.1 dazu die Fußnote 1:
"The PTC takes control over the ADC while the PTC is used."

Wenn überhaupt, würde ich das auch eher über den WDT steuern.

Fabian G. schrieb:
> Kennst du oder jemand anderes eine einfache externe Schaltung, welche
> einen Mikrocontroller via Interrupt vom Power-Down Mode wecken kann? Sie
> sollte eine Stromaufnahme von <10uA besitzen.

Du brauchst nur R1, R2 und C1 von der Schaltung: 
Beitrag "EIN-AUS mit Taster per Interrupt, ATtiny25 o.ä."
Gast #6166203
Lesenswert?

Fabian G. schrieb:
> Kennst du oder jemand anderes eine einfache externe Schaltung, welche
> einen Mikrocontroller via Interrupt vom Power-Down Mode wecken kann? Sie
> sollte eine Stromaufnahme von <10uA besitzen.

Ein Piezo mit Schutzschaltung für den INT Pin?
Braucht keinen Strom, anklopfen genügt.
#6166219
Lesenswert?

Fabian G. schrieb:
> K. S. schrieb:
>> QTouch ist doch nur Software und nutzt nur den ADC. Da es keinen echten
>> Hardware Touch Cotnroller gibt muss der Kern wohl wenigstens kurz laufen
>> um einen Tastendruck zu erkennen.
>
> Der ATtiny816 besitzt einen Hardware Touch Controller.
Hast du zufällig irgendeine Quelle zur wirklichen Funktionalität von 
dem? Da es keine Beschreibung der Register oder Hardware im Datenblatt 
gibt würde ich fast vermuten, dass das nur ein anders konfigurierter ADC 
mit Firmware ist. Müsste man aber wohl mal die QTouch lib lesen um das 
herauszufinden.



> Kennst du oder jemand anderes eine einfache externe Schaltung, welche
> einen Mikrocontroller via Interrupt vom Power-Down Mode wecken kann? Sie
> sollte eine Stromaufnahme von <10uA besitzen.

Taster geht nicht?

in der oben erwähnten AVR3005 wird ein Proximity Sensor erwähnt, 
spezifisch der AT42QT1010. Der hat zwar eine zu hohe Stromaufnahme, aber 
vllt. findest du noch was besseres.

es gibt mechanische Neigungsschalter/Vibrationsschalter, eventuell geht 
sowas.

wenns ganz experimentell werden soll Pin direkt auf Metallischen Kontakt 
führen (plus Schutzbeschaltung). Bei einem NE555 am Trigger Eingang hat 
das funktioniert, schön ist aber anders. ein Transistor/Darlington wird 
wohl notwendig sein, da so ein alter NE555 bipolare Eingänge hat.
OP #6166270
Lesenswert?

m.n. schrieb:
> Du brauchst nur R1, R2 und C1 von der Schaltung:
> Beitrag "EIN-AUS mit Taster per Interrupt, ATtiny25 o.ä."

Meine eine ohne Taster sondern mit Touch.

Bernd K. schrieb:
> Man kann Touch zur Not sogar mit ganz normalen GPIO-Pins machen, es gibt
> sogar eine Variante die nur einen einzigen Pin und gar keine externe
> Beschaltung braucht, ist dann halt leider ziemlich CPU-Intensiv.

Wie sollte die denn aussehen?

K. S. schrieb:
> Hast du zufällig irgendeine Quelle zur wirklichen Funktionalität von
> dem? Da es keine Beschreibung der Register oder Hardware im Datenblatt
> gibt würde ich fast vermuten, dass das nur ein anders konfigurierter ADC
> mit Firmware ist. Müsste man aber wohl mal die QTouch lib lesen um das
> herauszufinden.

Das war ja auch mein Problem, dass ich nirgends etwas schlaues gefunden 
habe.

K. S. schrieb:
> Taster geht nicht?

Nein, muss Touch sein. Kostengünstig wäre von Vorteil, habe da auch 
schon an einen TTP223 gedachte, welcher sehr wenig Strom baucht und auch 
nicht teuer ist.

Am besten wäre eine Analoge Schaltung mit wenigen Bauteilen.


Ich entwickle einen kleinen Würfel, der Batterie betrieben ist und durch 
zwei Touch Knöpfe bedient wird. Dieser wird dann auch in einer grossen 
Serie produziert, deshalb auch kostengünstig.
#6166283
Lesenswert?

Fabian G. schrieb:
> Bernd K. schrieb:
>> Man kann Touch zur Not sogar mit ganz normalen GPIO-Pins machen, es gibt
>> sogar eine Variante die nur einen einzigen Pin und gar keine externe
>> Beschaltung braucht, ist dann halt leider ziemlich CPU-Intensiv.
>
> Wie sollte die denn aussehen?

Du misst mit ner engen Zählschleife die Zeit die vergeht zwischen 
Einschalten des Pullup und Erkennung von High. Zwischen zwei Messungen 
schaltest Du auf Ausgang-Low. Rechne etwa mit nem Dutzend 
Schleifendurchläufen bei unberührter Sensorfläche und deutlich mehr wenn 
der Finger in die Nähe kommt.
#6166287
Lesenswert?

Fabian G. schrieb:
> Kennst du oder jemand anderes eine einfache externe Schaltung, welche
> einen Mikrocontroller via Interrupt vom Power-Down Mode wecken kann? Sie
> sollte eine Stromaufnahme von <10uA besitzen.

Der Watchdog ist mit ~0,7µA angegeben.
Für das Feststellen, ob gedrückt reicht erstmal nur eine AD-Wandlung und 
die dauert 120µs (200kHz / 25).
Läßt man dem MC etwa alle 200ms aufwachen, ist der AVR nur zu 0,06% 
aktiv und der mittlere Verbrauch ist bequem <10µA.
Eine externe Schaltung ist daher überflüssig.
OP #6166306
Lesenswert?

Peter D. schrieb:
> Der Watchdog ist mit ~0,7µA angegeben.
> Für das Feststellen, ob gedrückt reicht erstmal nur eine AD-Wandlung und
> die dauert 120µs (200kHz / 25).
> Läßt man dem MC etwa alle 200ms aufwachen, ist der AVR nur zu 0,06%
> aktiv und der mittlere Verbrauch ist bequem <10µA.
> Eine externe Schaltung ist daher überflüssig.

Das funktioniert also auch, wenn ich ein TouchPad auf einer Leiterplatte 
habe, welches mit Lötstoplack bedeckt ist?

Bernd K. schrieb:
> Du misst mit ner engen Zählschleife die Zeit die vergeht zwischen
> Einschalten des Pullup und Erkennung von High. Zwischen zwei Messungen
> schaltest Du auf Ausgang-Low. Rechne etwa mit nem Dutzend
> Schleifendurchläufen bei unberührter Sensorfläche und deutlich mehr wenn
> der Finger in die Nähe kommt.

Macht sinn Ja, aber dann habe ich sicher eine etwas höhere Stromaufnahme
#6166334
Lesenswert?

Fabian G. schrieb:
> Macht sinn Ja, aber dann habe ich sicher eine etwas höhere Stromaufnahme

Sicher, das ist der Nachteil davon. Es ist halt ein Notbehelf, aber 
immerhin ist es überhaupt möglich. Die nächstbessere Variante erfordert 
2 Pins und einen Kondensator, die wäre erheblich empfindlicher und 
präziser, aber mindestens genauso CPU-Intensiv. Besser wirds erst mit 
Analogschalter, Kondensator und zwei Timern, dann enfällt schonmal die 
CPU-Last.

Aber ein Controller der Touchsensing in Hardware schon eingebaut hat ist 
natürlich in jeder Hinsicht die bessere Lösung.
#6166507
Lesenswert?

Fabian G. schrieb:
> Das funktioniert also auch, wenn ich ein TouchPad auf einer Leiterplatte
> habe, welches mit Lötstoplack bedeckt ist?

Für meine Versuche haben ich eine Rasterplatine genommen und 3*5 
Lötaugen gebrückt. Gedrückt wird auf die B-Seite.

Die Variante mit dem ADC hat den Vorteil, daß sie ratiometisch mißt (VCC 
unabhängig) und weitgehend temperaturstabil ist. Die Ruhekapazität hängt 
hauptsächlich vom Aufbau ab, man könnte den Wert auch im EEPROM 
speichern.
Für die Methode mit Digitalpins muß das nicht zutreffen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren