Forum: Mikrocontroller und Digitale Elektronik Touch ohne Verbindung mit Erdmasse gesucht


von Thorsten G. (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

Du brauchst einen differentiellen Touchsensor. Die meisten Touchscreens 
arbeiten so. Ich glaube Atmel hat ne Menge QT100 & Co.

von Udo S. (urschmitt)


Lesenswert?

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.

von Thorsten G. (Gast)


Lesenswert?

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?

von Thorsten G. (Gast)


Lesenswert?


von Falk B. (falk)


Lesenswert?

Könnte sein.

von Peter D. (peda)


Lesenswert?

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
von doppelschwarz (Gast)


Lesenswert?

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.

von Thorsten G. (Gast)


Lesenswert?

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.

von Max H. (hartl192)


Lesenswert?

Hast du Stützkondensatoren an den QT1010?
Wie sieht deine Schaltung aus?

: Bearbeitet durch User
von Harald W. (wilhelms)


Lesenswert?

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.

von Thorsten G. (Gast)


Lesenswert?

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.

von Max H. (hartl192)


Lesenswert?

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
von Thorsten G. (Gast)


Lesenswert?

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.

von Thorsten G. (Gast)


Lesenswert?

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.

von Google (Gast)


Lesenswert?

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.

von doppelschwarz (Gast)


Lesenswert?

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.

von Thorsten G. (Gast)


Lesenswert?

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
}

von Thorsten G. (Gast)


Lesenswert?

Ich meine nicht direkt am Ausgang von Arduino sondern an drittes QT 
Eingang.

von doppelschwarz (Gast)


Lesenswert?

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.

von Thorsten G. (Gast)


Lesenswert?

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.

von Shuzz (Gast)


Lesenswert?

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...

von Thorsten G. (Gast)


Lesenswert?

Mehr ist da doch nicht mehr. Der Arduino liest 1 bzw. 0 vom QT beim 
Berühren( 1 - berührt, 0 - nicht berührt).

von doppelschwarz (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.