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.
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 ?!!!!
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.
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ß
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.
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