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
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.
"Supports wake-up on touch from Sleep mode" Laut Datenblatt sollte dies möglich sein.
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.
:
Bearbeitet durch User
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.
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).
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.
:
Bearbeitet durch User
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.ä."
Peter D. schrieb: > Ich habe hier mal Touchtasten ohne die Lib implementiert. 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.
:
Bearbeitet durch User
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.
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.
pegel schrieb: > Ein Piezo mit Schutzschaltung für den INT Pin? > Braucht keinen Strom, anklopfen genügt. Das ist recht störempfindlich. Eine offene "Leiterbahnschleife", die den Netzbrumm einfängt, könnte noch gehen.
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.
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.
:
Bearbeitet durch User
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.
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
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.
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.
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.