Probleme beim Auslesen von kapazitiven Sensoren (Kupferfolie)

Hi Leute,

ich arbeite gerade an einem Projekt, wo ich eine Büste gieße (edit: Aus Gips) (habe eine Silikonform), die an manchen Stellen mit kapazitiven Sensoren (Kupferfolie) ausgestattet wird um sie interaktiv zu gestalten.

Hier in Kürze das Vorgehen:

  • In die Silikonform des Kopfes pinsele ich eine dünne Schicht Gips und lasse sie trocknen
  • Darauf klebe ich dann an den interaktiven Stellen runde Stücke Kupferfolie (Durchmesser ca. 2,5 cm) und löte jeweils ein Kabel an
  • Darauf kommt dann eine Schicht Heißkleber
  • Dann kommt nochmal Kupferfolie (über die gesamte Fläche der Sensoren/Heißkleber). Daran löte ich auch ein Kabel an (wird später mit GND verbunden)
  • Zum Schluss der Rest Gips, trocknen lassen, Büste entnehmen, fertig :slight_smile:

Soweit, so gut. Was mir jetzt gerade Kopfzerbrechen bereitet ist, dass einer der Sensoren einfach nicht so will, wie ich es gerne hätte.

Habe einen Test mit 3 Sensoren gemacht und einer zickt rum. Ich habe mal 2 Videos gemacht, weil man das da besser sieht, als ich es erklären kann:

  • Hier ein Video, das zeigt, wie das ganze aussieht, wenn ich Sensor 1 + 2 angeschlossen habe → Supi
  • Hier ein Video, das zeigt, wie’s aussieht, wenn ich Sensor 1 + 3 angeschlossen habe → Schneckentempo, als ob irgendwas hängt. Nicht wundern, Code ist gleich aber ich hab die Sensoren auf dem Breadboard umgesteckt.

Hier noch der Code:

#include <CapacitiveSensor.h>

//CapacitiveSensor cs_4_2 = CapacitiveSensor(4,2);
CapacitiveSensor cs_4_6 = CapacitiveSensor(4,6);
CapacitiveSensor cs_4_8 = CapacitiveSensor(4,8);

void setup() {
  //cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);
  cs_4_6.set_CS_AutocaL_Millis(0xFFFFFFFF);
  cs_4_8.set_CS_AutocaL_Millis(0xFFFFFFFF);
  Serial.begin(9600);
}

void loop() {
  long start = millis();
  //long total1 =  cs_4_2.capacitiveSensor(30);
  long total2 =  cs_4_6.capacitiveSensor(30);
  long total3 =  cs_4_8.capacitiveSensor(30);

  //Serial.println(total1);
  //Serial.print("\t");
  Serial.print(total2);
  Serial.print("\t");
  Serial.println(total3);

  delay(10);
}

Wäre super dankbar, wenn sich jemand denken könnte, woran das liegen kann. Ist da vielleicht beim Anlöten was schiefgegangen oder was könnte das Problem sein?

Danke und liebe Grüße

Hi,

was mich irritiert ist die Beschreibung Deiner kapazitiven Sensoren. Wenn die Folien deckungsgleich sind, dann bilden diese Kondensatoren, die Du von außen weniger beeinflussen kannst, als wenn es Flächen sind, die nebeneinander angeordnet sind, und erst durch Hand auflegen zu einem Kondensator werden.
Was Du aber testen solltest ist, die Kabel einfach mal tauschen bei dem nicht funktionierenden Sensor - Fläche oben, Fläche unten, als Gegentest auch mal bei denen es funktioniert ...

Gruß André

Ich poste hier mal noch 2 Bilder, wo man sieht, wie es vom Prinzip her aussieht:
Hier sieht man, wie es aussieht nach dem Heißkleber (das Bild ist vom vorletzten Kopf, beim letzten hab ich den Heißkleber nur noch in einem Quadrat, das alle Sensoren abdeckt, aufgetragen).

Und hier sieht man die Grounding-Kupferfolie.

Umstecken hab ich schon probiert, leider ohne Erfolg. Was genau meinst du mit Fläche oben/unten?

Kann es vielleicht sein, dass es irgendwie zu einem Kurzen kommt bei dem einen Sensor?

ok, ich hatte eine andere Vorstellung davon, vergiss oben/unten.
Evtl. tatsächlich ein Kurzschluss. Gips ist aber auch hygroskopisch, lege das Ding mal in die Sonne, evtl hilft das.

Gruß André

Hast du schon in Erwägung gezogen einen "Touch-Sensor-Chip" zu verwenden?
Zum Beispiel MPR121 (für bis zu 12 Touch-Sensoren):
Board: Overview | Adafruit MPR121 12-Key Capacitive Touch Sensor Breakout Tutorial | Adafruit Learning System
Datenblatt

Oder einer der vielen anderen Touch-Sensoren.

Ohne zusätzliche Hardware, also nur mit Arduino und Folienstücken ist das nicht sonderlich zuverlässig. Vor allem, wenn (wie in den Fotos zu sehen) die Folienstücke eher klein sind und nahe beieinander sind.

Habe mal eine "Klaviertastatur" am Boden realisiert. Das funktionierte recht gut (ohne zusätzliche Hardware), aber die "Sensoren" waren dabei recht groß (ca. 7 x 14 cm).

Bei kleineren Touch-Flächen habe ich mit den erwähnten MPR121 gute Erfahrungen gemacht.
Beispiels eines meiner Test-Aufbauten:
MPR121_Testaufbau.png
(Die Münze liegt da nur zum Größenvergleich.)

MPR121_Testaufbau.png

Oh, das klingt gut, ich wusste gar nicht, dass es sowas gibt. Danke dir vielmals! Hab gesehen, dass es zum einen den "Capacitive Touch Sensor Breakout" (hier) gibt und zum anderen den "Capacitive Touch Shield for Arduino" (hier). Ich verstehe gerade nicht so wirklich den Unterschied.

Hi

Das Shield packst Du auf einen Uno - fertig.
Beide werden wohl per I²C angesprochen, wobei Du Dich beim Shield nur noch um die Sensoren kümmern musst.
Beim Breakboard noch zusätzlich halt um den Bus.
Hier kannst Du dann - aufgrund des ADDR-Pin, mindestens zwei der Breakboards am gleichen Bus benutzen, wenn Du mit den 12 Sensoren nicht auskommst.

... das Shield hat auch einen ADDR-Pin - also 'das Gleiche in grün'

MfG

"Capacitive Touch Sensor Breakout" (hier)
ist "nur" ein "Breakout-Board" also, die Anschlüsse des recht kleinen MPR121 SMD-Chips sind zugänglich gemacht und es sind auch nötige Bauteile mit drauf. Das ist praktisch genau das gleiche wie auf meinem Foto (#4), nur von einer anderen Firma (dieses - ist aber wohl nicht mehr erhältlich).
Um die Verbindungen zu deinem Mikrocontroller-Board musst du dich selbst kümmern z.B. durch Anlöten von Kabeln.

"Capacitive Touch Shield for Arduino" (hier)
Ist ein "Shield" - also zum direkten Aufstecken auf einen UNO (oder andere). Kein Löten nötig falls du ein passendes Board verwendest.

Wie bereits erwähnt wurde: Wie sich der Gips mit den Touch-Flächen verträgt wäre jedenfalls zu klären. Es könnte der Wassergehalt Probleme machen.
Ich habe bisher Erfahrung mit Holz, Papier (Pappe), Thermoplasten, Marmor und Textilien gesammelt. Das hat auch unter Materialstärken von 10mm oder mehr funktioniert. Gips - keine Ahnung.

Ihr seid wirklich klasse, danke euch vielmals.

Ja, das mit dem Gips ist so eine Sache. Wenn er nur ganz dünn über dem Sensor liegt und trocken ist, hat es bisher ganz gut geklappt (bis auf diesen 1 Sensor :slight_smile: )

Falls du ein Messgerät (Multimeter) hast, dann würde ich mal die Widerstände zwischen der “GND-Folie” und den einzelnen “Sensor-Folien” messen (Verbindung der Sensoren zum Arduino vorher trennen). Und auch die Widerständen der Sensoren untereinander - vor allem benachbarte.
Der Widerstand muss “sehr hoch” sein (unendlich). Wenn du viel niedrigere Werte misst, dann ist was faul.

Kann ich leider nicht machen, weil ich an die Sensor-Folien etc. gar nicht mehr rankomme, weil der Kopf schon fertig gegossen ist :slight_smile: Bereits wenn die Heißkleber-Schicht drauf ist, komme ich an die Sensoren nicht mehr ran.

Ich meinte eigentlich: Messen an den Kabeln, die zu den Sensorfolien gehen.
Es geht darum zu testen, ob es eine elektrische Verbindung zwischen ihnen besteht.

Ah, achso :slight_smile: Das mach ich mal.

So, Update: Als ich das Ganze heute nochmal probiert habe, hat alles ohne Probleme geklappt. Ich schätze, dass das Problem daher kam, dass der Gips vllt. noch etwas nass war.

Danke für die Rückmeldung!
Super, dass es jetzt funktioniert!