Hey, ich suche eine Lösung für einen Touchsensor, der im Batteriebetrieb funktionieren soll. Zuerst hatte ich es wie auf dieser Seite rumprobiert: http://playground.arduino.cc//Main/CapacitiveSensor?from=Main.CapSense#.UxCA8YW2_Yc Das funktioniert ganz. Mit einem Problem, dass mein System mobil sein muss und das System nur bei Masse von der Erde funktioniert. Heißt, habe ich die Masse nur von der Batterie, reagieren die Sensoren überhaupt nicht, das ich kein Potentialunterschied habe. Berühre ich aber die Masse, funktiert es wunderbar. Jetzt suche alternative Lösungen, wo man auch das System mit Batterie funktioniert. Hoffe, ich habe ich habe mich verständlich ausgedruckt. Mfg TG
Du brauchst einen differentiellen Touchsensor. Die meisten Touchscreens arbeiten so. Ich glaube Atmel hat ne Menge QT100 & Co.
Hautwiderstandssensor, mit 2 durch einen schmalen steg getrennten Metallplatten. Durch Berührung werden die beiden hochohmig durch den Finger verbunden. War früher (TM) öfter in Fernbedienungen verbaut als das noch Berührungssensor und nicht Touch-Sensor hies.
Falk Brunner schrieb: > Du brauchst einen differentiellen Touchsensor. Die meisten > Touchscreens > arbeiten so. Ich glaube Atmel hat ne Menge QT100 & Co. Ich habe hier QT1010 rumliegen. Heißt das, wenn ich diese Schaltung aufbaue(Link), soll es funktionieren, auch bei Batterie?
Thorsten G. schrieb: > http://playground.arduino.cc//Main/CapacitiveSensor?from=Main.CapSense#.UxCA8YW2_Yc Das mit dem Widerstand ist viel zu unempfindlich. Es gibt 2 deutlich bessere Methoden. Eine lädt einen Kondensator (10..33nF) um (QTouch). Die andere lädt den S&H-Kondensator des internen ADC um (QTouchADC). Erklärungen dazu gibts bei Atmel.
:
Bearbeitet durch User
Thorsten G. schrieb: > Ich habe hier QT1010 rumliegen. Heißt das, wenn ich diese Schaltung > aufbaue(Link), soll es funktionieren, auch bei Batterie? QT1010 und QT1012 funktionieren definitiv mit Batterie, haben wir in der Firma schon als Beispielschaltung erstellt (Werbegeschenk). Schaltung wie im Datenblatt angegeben, Empfindlichkeit über Widerstände einzustellen.
doppelschwarz schrieb: > Thorsten G. schrieb: >> Ich habe hier QT1010 rumliegen. Heißt das, wenn ich diese Schaltung >> aufbaue(Link), soll es funktionieren, auch bei Batterie? > > QT1010 und QT1012 funktionieren definitiv mit Batterie, haben wir in der > Firma schon als Beispielschaltung erstellt (Werbegeschenk). Schaltung > wie im Datenblatt angegeben, Empfindlichkeit über Widerstände > einzustellen. Ich habe jetzt 3 QT1010 für 3 Sensoren eingebaut. Es scheint zu funktionieren, aber es hat einen merkwürdiges Verhalten. Ich lese digital am Analogen Eingängen vom Arduino(A0, A1, A2). Die Berührungssensoren sind getrennt. Egal welches Sensor ich berühre, scheint nur ein Eingang zu reagieren. PS: Schaltung auf Kurzschlüsse überprüft.
Hast du Stützkondensatoren an den QT1010? Wie sieht deine Schaltung aus?
:
Bearbeitet durch User
Udo Schmitt schrieb: > War früher (TM) öfter in Fernbedienungen verbaut als das noch > Berührungssensor und nicht Touch-Sensor hies. ...und wurde wenige Jahre später wieder abgeschafft, weil es wohl zu unzuverlässig war.
Ich habe erstmal die Schaltung wie im Datenblatt aufgebaut, nur ohne Cx und Rs. Und Pull-Down von 100k an jedem Eingang. Wie gesagt, egal welches Sensor ich berühre, reagiert immer A1. Ich bau jetzt einen Stützkondensator ein.
Hast du vllt ein Foto vom Aufbau? Ich würde sagen, dass der Hersteller einen guten Grund hat, um Cs im Schaltplan einzuzeichnen... Cx ist nur die zu Messende Kapazität, z.B. dein Finger.
:
Bearbeitet durch User
Man würde auf dem Foto nichts erkennen können, da ich beim QT VSS und VDD hochbiegen musste, da es auf der Lochraster nicht passt. Cs ist drinne.
OK, die Stützkondensatoren sind eingebaut. 2 Eingänge empfangen immer HIGH's und reagieren nicht. Ein Pin funktioniert. Er verändert sein Zustand beim Berühren von LOW auf HIGH.
mal auf Englisch: "Capacitive Touch Sensor" oder ähnlich. Habe da gerade einen Film (in Englisch) gesehen, der genau erklärt, wie das ohne Erde, auch mit Batterie fuktioniert. Leider habe ich den Link nicht gespeichert.
2 mögliche Fehlerquellen: 1. Software im Arduino: Messe die Output-Pins von Hand, sind ja diskret. Sollte sich dann mit Deiner Anzeige decken. 2. Hardware: Zeichne einfach kurz den Schaltplan von Hand und mach ein Foto. Den QT brauchst du ja nur einmal zeichnen (sollten alle gleich beschalten sein). Allerdings sollte Rs schon eingebaut sein, da er den Ladestrom begrenzt und für eine konstante Ladezeit sorgt. Die Empfindlichkeit wird übrigens mit Cs eingestellt, nicht mit Rs, wie ich oben geschrieben hatte. Laut Datenblatt typischerweise 8,2 nF, aber natürlich abhängig vom Overlay.
Okay, hier meine Schaltung und der Aufbau(Links): Aufbau: http://s14.directupload.net/images/140303/hrnesawg.jpg Schaltung: http://s14.directupload.net/images/140303/i5aoahys.jpg Weiteres Phänomen, dass ich festgestellt habe: Ich habe die Elektroden getrennt und direkt mit dem Finger die Leitung angefasst. Wenn ich die linke Leitung anfasse, messen A2 und A0 ein High(die äußeren IC's), obowhl nur A2 reagieren soll. Fasse ich direkt an A0, passiert nichts. Mein Code:
1 | #include <digitalWriteFast.h> |
2 | /* |
3 | DigitalReadSerial |
4 | Reads a digital input on pin 2, prints the result to the serial monitor |
5 | |
6 | This example code is in the public domain. |
7 | */ |
8 | |
9 | |
10 | #define A A2 |
11 | #define B A1 |
12 | #define C A0 |
13 | |
14 | // digital pin 2 has a pushbutton attached to it. Give it a name: |
15 | |
16 | |
17 | // the setup routine runs once when you press reset: |
18 | void setup() { |
19 | // initialize serial communication at 9600 bits per second: |
20 | Serial.begin(9600); |
21 | // make the pushbutton's pin an input: |
22 | pinMode(A, INPUT); |
23 | pinMode(B, INPUT); |
24 | pinMode(C, INPUT); |
25 | |
26 | |
27 | |
28 | } |
29 | |
30 | // the loop routine runs over and over again forever: |
31 | void loop() { |
32 | // read the input pin: |
33 | int A2 = digitalRead(A); |
34 | int B2 = digitalRead(B); |
35 | int C2 = digitalRead(C); |
36 | // print out the state of the button: |
37 | |
38 | Serial.print(A2); |
39 | Serial.print("\t"); |
40 | Serial.print(B2); |
41 | Serial.print("\t"); |
42 | Serial.println(C2); |
43 | |
44 | delay(100); // delay in between reads for stability |
45 | } |
Ich meine nicht direkt am Ausgang von Arduino sondern an drittes QT Eingang.
Der Code sieht jetzt mal nicht falsch aus. Die Hardware allerdings ist nicht optimal aufgebaut. Beim Touch sollte man möglichst den Touch auf die eine Seite und den Rest auf die andere Seite löten, da der Touch leicht beeinflussbar ist. Versuch einfach mal noch, die Rs einzulöten, sollte ja möglich sein. SNS und SNSK sind auf der richtigen Seite der Taste? Das sieht man auf dem Bild nicht so gut. Falls Du es nochmal neu machen kannst: richte SNS und SNSK in Richtung der Tasten (90°-Drehung) und führe alle anderen Leitungen auf der anderen Seite weg. Den Kondensator zwischen Pin 2 und 5 zur Not einfach über den IC löten. Die Touchbauteile auch möglichst nah am IC und kurze Leitungen verwenden.
OK, ich habe die Fehler anscheinend behoben. Mein dritter QT war defekt, also umgetauscht. Und im Code darf man nicht das Makro "#define A A2" benutzen, da der Compiler wahrscheinlich beim Einlesen "pinMode(A, INPUT);" das A als A0 interpretiert. Rs ist auch eingebaut worden.
Wo bitte ist denn in dem Code die Touch-Routine?!? o0 Alles was ich da sehe ist ein digitales Auslesen der I/O Pins. Wenn Du da nen Taster ranpappst geht das so, aber für (Q)Touch braucht's dann doch noch was mehr...
Mehr ist da doch nicht mehr. Der Arduino liest 1 bzw. 0 vom QT beim Berühren( 1 - berührt, 0 - nicht berührt).
Shuzz schrieb: > Wo bitte ist denn in dem Code die Touch-Routine?!? o0 Der QT1010 und QT1012 sind fertige, programmierte Controller, bei denen man nur die Empfindlichkeit über die Kapazitäten einstellen kann, sonst nichts. Und sie geben gedrückt oder nicht gedrückt diskret aus, Entprellung findet schon im Controller statt.
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.