Forum: Mikrocontroller und Digitale Elektronik Microchip CapTouch Fragen


von typ (Gast)


Lesenswert?

Hallo zusammen. Ich habe einen PIC16F1827. Dieser besitzt unter anderem 
ein I²C-Modul und einen Internen 32MHz Oscillator. Zudem hat er 12 
sogenannte CapTouch oder CapSense-Channel.
Link zum Datenblatt:
http://ww1.microchip.com/downloads/en/DeviceDoc/41391C.pdf

Diese sind zum Schalten per kapazitiver Veränderung (Kondensator), also 
per "annähern" vom Finger, gedacht.

Allerdings werd ich aus der Technik nicht so ganz schlau. Ich habe das 
so verstanden, dass man 2 Kupferflächen hat (Masse und den Eingang vom 
PIC) und dazwischen eine Kapazität ist. Durch Annähern des Fingers wird 
Diese geändert. Das Programm im PIC soll das irgendwie mit dem Timer 
erkennen, wie sehr die Kapazität abweicht, also wie nah der Finger an 
den Flächen ist, und somit kann man auch eine gewisse Schaltentfernung 
einstellen.


Ich stelle mir allerdings noch folgende Fragen:

1. Hab ich das so überhaupt richtig verstanden?

2. Dürfen die 2 Flächen eine gewisse Größe nicht unter- bzw. 
überschreiten und müssen Diese in einem bestimmten Größenverhältnis 
sein?

3. Ist diese einstellbare Entfernung abhängig von Größe oder 
Feuchtigkeit vom Finger (oder von was Anderem)?

4. Hat jemand damit schon mal was gemacht und kann mir eventuell einen 
C-Code schicken?

5. Kann man diese 2 Flächen per Kabel steckbar machen, sodass man mit 
einem 2poligem Kabel eine Platine mit dem Feld verbinden kann oder geht 
das wegen dem Kabel nicht (oder nur geschrimte Kabel)?

6. Muss man die Messung irgendwie Kalibrieren, oder kann man sagen, dass 
z.B. eine Abweichung von 10 nF immer 4 mm Entfernung sind? (Der Wert 
10nF ist nur ein Beispiel, ich weiß nicht, was da ein realistischer Wert 
ist)

7. Gibt es so ein Projekt vielleicht schon fertig zum nachbauen? (siehe 
unten, was es werden soll)


Ich will nämlich ein kleines Modul machen. Über I²C soll man die 
CapSense-Eingänge auslesen und die gewünschte Schaltentfernung schreiben 
können.

von John B. (johnbauer)


Lesenswert?

Hallo Typ,
Microchip nennt das mTouch.

Es ist nur eine Fläche. Die Flächen sollten nicht zu klein sein, damit 
die Kapazitätsänderung nicht zu klein ist. Entwicklungsboards mit 
Software gibt es von Microchip.

Evaluation Kit bei Reichelt
http://www.reichelt.de/?ACTION=3;ARTICLE=96468;PROVID=2402

Die Dokumentation und Downloads von Microchip
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en541143

Demoboard von Microchip
http://www.youtube.com/watch?v=uUxbehXSiJA

Wie gut ist dein Englich? Auf YT gibt es ein paar Lehrvideos von 
Microchip zur Funktion und zum Design.

Vorstellung Teil 1-3
http://www.youtube.com/watch?v=JVRuDY4X88M
http://www.youtube.com/watch?v=vAJWtbp9kA8
http://www.youtube.com/watch?v=ABfBdn598tI

Design Guidelines Teil 1+2
http://www.youtube.com/watch?v=plDH4LFhgno
http://www.youtube.com/watch?v=ubROolgus98

Gruß
John

von Lehrmann M. (ubimbo)


Lesenswert?

typ schrieb:
> Ich stelle mir allerdings noch folgende Fragen:
>
> 1. Hab ich das so überhaupt richtig verstanden?

Ja im Grunde schon. Der Teufel steckt im Detail. Es gibt gute Videos auf 
Youtube. Hat ja mein Vorgänger schon erwähnt

> 2. Dürfen die 2 Flächen eine gewisse Größe nicht unter- bzw.
> überschreiten und müssen Diese in einem bestimmten Größenverhältnis
> sein?
Auch das ist richtig. Die Größe spielt eine entscheidende Rolle. Darum 
sollte man sich die Design Guidlines zu gemüte führen

> 3. Ist diese einstellbare Entfernung abhängig von Größe oder
> Feuchtigkeit vom Finger (oder von was Anderem)?
Hauptsächlich ist sie von der Kapazität des Fingers abhänig. In wiefern 
das mit der Größe zu tun hat darüber habe ich mir noch keine Gedanken 
gemacht. Die Feuchtigkeit spielt mit Sicherhei eine Rolle - die Frage 
ist nur wie groß ist der Einfluss. Wasser auf der Oberfläche hat 
defintiv recht starken Einfluss auf das Verhalten

> 4. Hat jemand damit schon mal was gemacht und kann mir eventuell einen
> C-Code schicken?
In den App Notes sind C Codes vorhanden. Man muss diese Prinzip aber 
verstehen. Dann kann man es auch selbst programmieren. Allerdings muss 
man sagen, dass das ein Fortgeschrittenenprojekt ist. Als Anfänger ist 
das nichts und endet nur in Frustration. Glaube bitte nicht, dass dir 
genau das nicht passieren wird. So denkt nämlich jeder =) xD nix für 
ungut

> 5. Kann man diese 2 Flächen per Kabel steckbar machen, sodass man mit
> einem 2poligem Kabel eine Platine mit dem Feld verbinden kann oder geht
> das wegen dem Kabel nicht (oder nur geschrimte Kabel)?
Es ist die Frage nach der Länge dieses Kabel. Erfahrungsgemäß sind 10cm 
das absolute Maximum in freien Kabeln. Wenn man da ein Handy daneben 
hält geht's schon mit dem Touch-Sensing durch. Gemeint ist die Strecke 
"Touchplatte" <> PIC und nicht die Strecke PIC <I2C> Schalteinheit. 
Wegen der I2C Länge solltest du die dortigen Bestimmungen lesen.

> 6. Muss man die Messung irgendwie Kalibrieren, oder kann man sagen, dass
> z.B. eine Abweichung von 10 nF immer 4 mm Entfernung sind? (Der Wert
> 10nF ist nur ein Beispiel, ich weiß nicht, was da ein realistischer Wert
> ist)
Grundsätzlich muss man jede Taste einzeln kalibrieren. Meist ist nicht 
ganz identlisch geätzt oder Lötstellen sind minimalst schlechter. Das 
ist generell alles so eine etwas wackelige Sache. Kalibrieren in jedem 
Fall jede Taste einzeln. Gute Kalibration braucht sehr lange und ist 
sehr anstrengen

> 7. Gibt es so ein Projekt vielleicht schon fertig zum nachbauen? (siehe
> unten, was es werden soll)
Interessanter nein. Es gibt von Microchip ein Demoboard. Damit empfiehlt 
es sich anzufangen.

typ schrieb:
> Ich will nämlich ein kleines Modul machen.
OK

> Über I²C soll man die
> CapSense-Eingänge auslesen und die gewünschte Schaltentfernung schreiben
> können.
Einlesen klar aber was dann? Ich versteh an dem Satz nur Bahnhof ...
Schaltentfernung schreiben ?!!!!

von typ (Gast)


Lesenswert?

John Bauer schrieb:
> Es ist nur eine Fläche. Die Flächen sollten nicht zu klein sein, damit
> die Kapazitätsänderung nicht zu klein ist.

Aber man braucht doch eine Masse oder nicht? Das könnte ja evtl die 
Große Massefläche auf der Platine sein, die CopperArea.

Lehrmann Michael schrieb:
> Allerdings muss
> man sagen, dass das ein Fortgeschrittenenprojekt ist

Dachte ich mir auch schon. Deshalb hätte ich auch nichts gegen einen 
fertigen Code bzw. fertiges Projekt.

Lehrmann Michael schrieb:
> Erfahrungsgemäß sind 10cm
> das absolute Maximum in freien Kabeln.

Ok, denn ich will das Modul recht nahe an den Tastern haben, jedoch sind 
die nicht immer gleich von der Größe bzw. der Verteilung der Tasten. 
Deshalb wollte ich die mit Kabeln anstecken.

Lehrmann Michael schrieb:
> Grundsätzlich muss man jede Taste einzeln kalibrieren. Meist ist nicht
> ganz identlisch geätzt oder Lötstellen sind minimalst schlechter. Das
> ist generell alles so eine etwas wackelige Sache. Kalibrieren in jedem
> Fall jede Taste einzeln. Gute Kalibration braucht sehr lange und ist
> sehr anstrengen

Das ist schonmal doof. Wenn das wirklich so ausschlaggebend ist, dann 
nützt das allgemeine Modul ja auch nicht so viel oder?

Lehrmann Michael schrieb:
> Interessanter nein.

sollte das "Interessanterweise" heißen? Ich hab sowas in der Art 
schonmal gesehen, nur direkt mit festen Tastern und auch nicht zum 
nachbauen.

Lehrmann Michael schrieb:
> Einlesen klar aber was dann? Ich versteh an dem Satz nur Bahnhof ...
> Schaltentfernung schreiben ?!!!!

Also der PIC soll als I²C-Slave fungieren. Ein Master kann über ein 
Befehl den aktuellen Status der Eingänge anfordern. Durch einen weiteren 
Befehl, so hab ich es mir gedacht, könnte man einen Wert übergeben, mit 
dem der PIC dann die erlaubte Toleranz einberechnen kann. Also 
meinetwegen, wenn der Finger einen Abstand von <5mm hat, ist eine 
Frequenzabfälschung von >500Hz und genau diese beispielsweise 500Hz will 
ich in den PIC schreiben, um festzulegen, dass er ab 5mm vor der Fläche 
schalten soll.


Gibt es nicht evtl von Maxim oder von ST ein IC, was das schon macht? 
Also 1 zu 1 Parallel In, Parallel Out.

von Lehrmann M. (ubimbo)


Lesenswert?

typ schrieb:
> John Bauer schrieb:
>> Es ist nur eine Fläche. Die Flächen sollten nicht zu klein sein, damit
>> die Kapazitätsänderung nicht zu klein ist.
>
> Aber man braucht doch eine Masse oder nicht? Das könnte ja evtl die
> Große Massefläche auf der Platine sein, die CopperArea.

Es gibt verschiedene Varianten die Masse(n) zu legen. Hierzu solltest du 
dringends die Design Guidlines Lesen die dir gelinkt wurden =)

typ schrieb:
> Lehrmann Michael schrieb:
>> Erfahrungsgemäß sind 10cm
>> das absolute Maximum in freien Kabeln.
>
> Ok, denn ich will das Modul recht nahe an den Tastern haben, jedoch sind
> die nicht immer gleich von der Größe bzw. der Verteilung der Tasten.
> Deshalb wollte ich die mit Kabeln anstecken.

Davon rate ich dir klipp und klar ab. Mach lieber eine größere 
Leiterplatte denn frei hängende Kabel im Raum. Sonst wirst du nicht 
glücklich.

typ schrieb:
> Lehrmann Michael schrieb:
>> Grundsätzlich muss man jede Taste einzeln kalibrieren. Meist ist nicht
>> ganz identlisch geätzt oder Lötstellen sind minimalst schlechter. Das
>> ist generell alles so eine etwas wackelige Sache. Kalibrieren in jedem
>> Fall jede Taste einzeln. Gute Kalibration braucht sehr lange und ist
>> sehr anstrengen
>
> Das ist schonmal doof. Wenn das wirklich so ausschlaggebend ist, dann
> nützt das allgemeine Modul ja auch nicht so viel oder?

Ja und nein. Auch das Modul muss kalibriert werden. Je mehr Zeit man in 
die Kalibration steckt, desto besser wird das Ergebnis und desto 
zuverlässiger und genauer wird die Detektion. Klar funktioniert die 
grobe Kalibration auch so halbwegs aber um ein Feeling wie z.B. beim 
iPood Wheel zu erhalten bedarf es einiger Zeit und Erfahrung. Es gibt 
aber von Microchip ein Tool das das Kalibrieren grafisch vereinfacht. 
Such mal bei google nach "mTouch" und klick dann auf die Microchip HP.

typ schrieb:
> Lehrmann Michael schrieb:
>> Interessanter nein.
>
> sollte das "Interessanterweise" heißen? Ich hab sowas in der Art
> schonmal gesehen, nur direkt mit festen Tastern und auch nicht zum
> nachbauen.

Ja sollte interessanter Weise heißen. Also ich kenne keine Projekte mit 
mTouch wo die Firmenware + Layout zusammen veröffentlicht wären. Auf 
Youtube gibt's tausende Videos aber da ist nie Source dabei. Das Layout 
könnte man ja erraten. Ansonsten Demoboard von Microchip und deren Code.

typ schrieb:
> Also der PIC soll als I²C-Slave fungieren. Ein Master kann über ein
> Befehl den aktuellen Status der Eingänge anfordern. Durch einen weiteren
> Befehl, so hab ich es mir gedacht, könnte man einen Wert übergeben, mit
> dem der PIC dann die erlaubte Toleranz einberechnen kann. Also
> meinetwegen, wenn der Finger einen Abstand von <5mm hat, ist eine
> Frequenzabfälschung von >500Hz und genau diese beispielsweise 500Hz will
> ich in den PIC schreiben, um festzulegen, dass er ab 5mm vor der Fläche
> schalten soll.

Ja nu das ist der einfachste Teil der Übung. Das sollte kein Problem 
sein. Hat ja so gut wie jeder PIC I2C an Bord und ansonsten kann man das 
super einfach per Software nachmachen. www.sprut.de ist die beste 
(deutschsprachige) Adresse für diese Trivialitäten / 
Anfängerangelegenheiten (sorry soll nicht abwertend sein).

typ schrieb:
> Gibt es nicht evtl von Maxim oder von ST ein IC, was das schon macht?
> Also 1 zu 1 Parallel In, Parallel Out.

Meinst du nun den I2C oder die "kapazitative detection" ? Ich vermute du 
suchst einen IC:

Daten (kapazitative Auswertung ) "verschlüsseln" <> I2C <> Kabel <> I2C 
<> Daten "entschlüsseln" ????

Das ist mit einem / zwei PIC einfacher als einen extra IC zu beschalten. 
Einen PIC brauchst du ja mindestens.

typ schrieb:
> Lehrmann Michael schrieb:
>> Allerdings muss
>> man sagen, dass das ein Fortgeschrittenenprojekt ist
>
> Dachte ich mir auch schon. Deshalb hätte ich auch nichts gegen einen
> fertigen Code bzw. fertiges Projekt.

Da hilft nur "Übung macht den Meister"

Viel Erfolg und melde dich bei Fragen =)


Gruß

von typ (Gast)


Lesenswert?

Lehrmann Michael schrieb:
> Hierzu solltest du
> dringends die Design Guidlines Lesen die dir gelinkt wurden =)

Ja werde ich machen.

Lehrmann Michael schrieb:
> Davon rate ich dir klipp und klar ab. Mach lieber eine größere
> Leiterplatte denn frei hängende Kabel im Raum. Sonst wirst du nicht
> glücklich.

Ja das stimmt. Nur Ziel war es ja, ein kleines Modul bzw eine kleine 
Platine zu machen, das quasi schon fertig ist und nur noch die Pads und 
der I²C-Bus angeschlossen werden müssen und dann gehts.

Lehrmann Michael schrieb:
> www.sprut.de ist die beste
> (deutschsprachige) Adresse für diese Trivialitäten /
> Anfängerangelegenheiten (sorry soll nicht abwertend sein).

jaja, die Seite kenn ich nur zu gut;) Gibt es denn bessere, nicht 
deutschsprachige Seiten oder warum hast du das betont ?

Lehrmann Michael schrieb:
> Meinst du nun den I2C oder die "kapazitative detection" ?

Ich meine als Beispiel ein IC in DIP18, das neben + und - noch 8 
CapSense Eingänge hat, so wie der PIC auch. Dann wird intern die 
Auswertung gemacht und dann über 8 TTL-Ausgänge der Status ausgegeben. 
Also Eingänge I.0 - I.7 und Ausgänge O.0 - O.7. An den Eingängen die Pad 
anschließen und wenn ein Finger in die nähe des Pads kommt, das an I.2 
angeschlossen ist, geht O.2 auf High. Also einfach ein Konverter. Hoffe 
es ist so verständlicher ;)

Vorteil wäre, dass man das IC dann z.b. auf ein Frontpanel machen kann 
und die TTL-Signale ohne Probleme per Kabel an das Hauptmodul stecken 
kann. Und 8 Eingänge im µC braucht man ja so oder so, nur mit dem IC ist 
es einfacher zu Programmieren und man kann µCs benutzen, die nicht so 
ein mTouch-Modul integriert haben.

von Peter D. (peda)


Lesenswert?

Lehrmann Michael schrieb:
> Es ist die Frage nach der Länge dieses Kabel. Erfahrungsgemäß sind 10cm
> das absolute Maximum in freien Kabeln. Wenn man da ein Handy daneben
> hält geht's schon mit dem Touch-Sensing durch.

Da ist die Atmel Qtouch Methode aber deutlich unempfindlicher und 
toleranter.

Der Trick dabei ist, daß beim Auswerten der Sensor kurzgeschlossen wird 
und somit Störungen nicht durchkommen.
Man benötigt 2 IO-Pins und einen externen Kondensator pro Taste.
Das Prinzip ist eine Ladungspumpe, der externen Kondensator (33nF) wird 
durch die Handkapazität (wenige pF) aufgeladen und die Zahl Aufladungen 
bis zum Erreichen der Schwellspannung gezählt.
Bei Annäherung des Fingers wird die Zahl kleiner.


Peter

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.