Go Down

Topic: Resistives Sensorarray für eine Schuhsohle (Velostat) (Read 4065 times) previous topic - next topic

SpaghettiCode

Wenn alle Kreuzungspunkte mit der Velostat-Widerstandsmatte untereinander verbunden sind, bräuchte man noch zusätzlich in jedem Kreuzungspunkt eine Diode, um das Ganze frei von Rückwirkungen zu halten, oder ?
Naja, ein "Kanalübersprechen" hast Du bei so einer Konstruktion schon, aber solange der Widerstand am direkten Druckpunkt um wenigstens eine Größenordnung kleiner ist als der Widerstand zum Nachbarkanal (Spalte) sollte das Signal auswertbar bleiben. Hier hängt viel von der Sohlenkonstruktion ab, wie gut die Druckpunkte voneinander unterscheidbar und damit messbar sind.

Gruß André


ma1kels

Quote
Mir ist ein Problem aufgefallen:
Wenn alle Kreuzungspunkte mit der Velostat-Widerstandsmatte untereinander verbunden sind, bräuchte man noch zusätzlich in jedem Kreuzungspunkt eine Diode, um das Ganze frei von Rückwirkungen zu halten, oder ?

Aber das müsste auch schon bei deiner direkten Widerstandmessung zwischen einem Spalten- und einem Reihendraht der Fall sein, auch wenn die gerade nicht aktiven Reihen und Spalten nicht auf LOW, sondern offen sind.
Ne da denkst du falsch glaub ich, also es funktioniert vom Aufbau her alles so wie es sollte. Mir fehlt jetzt eben nur noch der korrekte Anschluss der 6 Spalten.

michael_x

Quote
fehlt jetzt eben nur noch der korrekte Anschluss der 6 Spalten
In meinem Bildchen von heute 02:18 sind das die Linien links (4 in diesem Beispiel-Bild)
Eine von denen sollte OUTPUT HIGH sein, die anderen INPUT (= High Impedance) oder LOW.

Quote
solange der Widerstand am direkten Druckpunkt um wenigstens eine Größenordnung kleiner ist als der Widerstand zum Nachbarkanal
Na, im Gegensatz zu einer Tasten-Matrix, werden ja "alle" Kreuzungspunkte mehr oder weniger gleichmässig belastet. Immerhin geht der Einfluss der Nachbar-Kanäle durch zwei Widerstände hintereinander, aber dafür durch alle 5 Nachbarspalten. So ganz bin ich von einer Lösung ohne Dioden noch nicht überzeugt.




SpaghettiCode

Immerhin geht der Einfluss der Nachbar-Kanäle durch zwei Widerstände hintereinander, aber dafür durch alle 5 Nachbarspalten.
Damit hast Du zwar Recht, aber um so weiter weg der 2. /3./ 4. Nachbarkanal ist um so größer und unbedeutender wird der Widerstand der Folie. Die soll nur 0.1 - 0.2mm dick sein. Unter der Annahme, daß der Widerstand der Folie nicht richtungsgebunden ist, hast Du am Druckpunkt 0,1mm Folie, zum Nachbardruckpunkt meinetwegen 5mm, also 1:50 auch den Widerstand. Der übernächste ist dann schon egal ...
Als Denkanstoß: der NANO hat 8 Analogeingänge A0-A7, A4+A5 sind I²C, bleiben 6x, passt!

Gruß André

michael_x

Mir geht es nicht darum, den Widerstand über mehrere Zentimeter längs der Folie zu messen.

Vielmehr denke ich, dass die Widerstände an den anderen Kreuzungspunkten über die im Moment eigentlich nicht beachteten Spalten- und Reihen-Leitungen mitgemessen werden.

Wenn ein Fuß auf der Sohle steht, sind gut die Hälfte der Kreuzungspunkte mehr oder weniger belastet, und eine Mischung aus vielen parallel und hintereinander geschalteten Widerständen wird bei jeder Zeile-Spalte-Kombi gemessen.
( Wenn nicht jeder Kreuzungspunkt mit einer Diode entkoppelt wird. )

SpaghettiCode

Michael, ich glaube Du hast Recht.
Ohne Entkopplung bekommt man da eine Menge paralell und seriell geschalteter Widerstände "zu sehen",
da der Druckpunkt eben kein Punkt ist, sondern flächig mit ein paar Nuancen. Ich war da noch beim DruckPunkt.

Gruß André

ma1kels

Quote
Als Denkanstoß: der NANO hat 8 Analogeingänge A0-A7, A4+A5 sind I²C, bleiben 6x, passt!
Ich nutze einen Pro Mini, da habe ich nur A0-A3 ?!


Quote
Wenn ein Fuß auf der Sohle steht, sind gut die Hälfte der Kreuzungspunkte mehr oder weniger belastet, und eine Mischung aus vielen parallel und hintereinander geschalteten Widerständen wird bei jeder Zeile-Spalte-Kombi gemessen.
Also das eigentliche Ziel am Ende soll sein, die Druckverteilung in Form einer Heatmap über Processing darstellen zu können. Ich denke da spielen die parallel und seriell geschalteten Widerstände keine Rolle oder?

agmue

Ich denke da spielen die parallel und seriell geschalteten Widerstände keine Rolle oder?
Schlechte Sensorwerte ergeben eine schlechte Heatmap. Den Einwand von michael_x solltest Du daher auf jeden Fall ernst nehmen. Wenn Du Druckpunkte hättest, könntest Du auf einen vernachlässigbaren Einfluß hoffen. Dein Bild zeigt aber große Druckflächen relativ zu den Bereichen ohne Kupferfolie, weshalb ich diese Vereinfachung für unwahrscheinlich erachten und nur nach sorgfältigen Messungen akzeptieren würde.

Ich hoffe, Dir ist die Langsamkeit des AD-Wandlers bewußt.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

combie

Quote
Ich nutze einen Pro Mini, da habe ich nur A0-A3 ?!
Schaue nochmal genau nach....
Auch mal die Lötpunkte abseits der üblichen Stiftleisten.
Da wirst du vermutlich A6 und A7 finden.
Gefährlich, was Theorien aus Menschen machen können.
Schlimmer, was Menschen aus Theorien machen.

ma1kels

In meinem Bildchen von heute 02:18 sind das die Linien links (4 in diesem Beispiel-Bild)
Eine von denen sollte OUTPUT HIGH sein, die anderen INPUT (= High Impedance) oder LOW.

Okay, Danke habe es verstanden. Ist den der Code hier dann so auch in Ordnung?

Code: [Select]
//Mux control pins for output signal (OUT_pin) default for arduino mini pro
const byte s0 = 13;
const byte s1 = 12;
const byte s2 = 11;
const byte s3 = 10;

int analogPin = A0;

int val = 0;

byte kanal = 0; // Wertebereich 0 .. 11

void setup() {
 
  pinMode(s0, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);
  pinMode(s3, OUTPUT);


  Serial.begin(9600);
 
}

void loop() {
  setzeMUXAdresse(kanal, s0, s1, s2, s3) ;
  int val =  analogRead(analogPin);
  Serial.print("Kanal"); Serial.print(kanal);
  Serial.print(" : "); Serial.println(val);
  delay(500);
  kanal++;
  if (kanal > 11) kanal = 0;
}

void setzeMUXAdresse(byte kanal, const byte S0, const byte S1, const byte S2, const byte S3) {
  digitalWrite(S0, bitRead(kanal, 0));
  digitalWrite(S1, bitRead(kanal, 1));
  digitalWrite(S2, bitRead(kanal, 2));
  digitalWrite(S3, bitRead(kanal, 3));
}


Quote
Schlechte Sensorwerte ergeben eine schlechte Heatmap. Den Einwand von michael_x solltest Du daher auf jeden Fall ernst nehmen.
Ja na gut, das klingt logisch. Ich werd den Tipp im Hinterkopf behalten und in der Schaltung berücksichtigen. Ich bräuchte ja dann 72 Dioden + Vorwiderstände? Hab ich es so richtig verstanden? Zwischen jeden Kreuzungspunkt eine Diode mit Vorwiderstand schalten?


michael_x

Quote
Ist den der Code hier dann so auch in Ordnung
Na ja, das ist noch der Code vom letzten Mal.

Mit dem du 1 von den 6 Spalten messen kannst,  (wenn du sie entsprechend anschliesst)

Aber sonst immer noch in Ordnung, schätze ich mal...

SpaghettiCode

Ich bräuchte ja dann 72 Dioden + Vorwiderstände? Hab ich es so richtig verstanden? Zwischen jeden Kreuzungspunkt eine Diode mit Vorwiderstand schalten?
In Michaels Schaltung in #14 sind die Widerstände Deine Foliendruckpunkte. Und ja, 72 Dioden. Und wenn ich jetzt richtig liege, müssten die mit in die Sohle, oder Du musst jede Menge Drähte nach außen führen. Und da die Dioden nicht Deine Druckpunkte sein sollen, solltest Du Dir ein neues Design überlegen. Damit brauchst Du kleine Dioden.
https://diotec.com/tl_files/diotec/files/pdf/datasheets/1n4148ws.pdf ... gibts für 2c bei Reichelt. Und die müssen dann auch noch mit viel "Luft" verlötet werden, also daß die nicht sofort abreißen bei der ersten Dehnung der Sohle.
Ich hoffe, ich habe es diesmal bis zu Ende gedacht, Michael?

Gruß André

DrDiettrich

Wenn die Kreuzungspunkte nicht isolierte Punkte sind, sondern über die Velostat-Matte miteinander verbunden sind, dann läßt sich da nicht viel sinnvoll messen, egal ob mit oder ohne Dioden. Es bleibt nichts übrig als die Matte zu zerschnipseln, so daß alle Kreuzungspunkte voneinander isoliert sind.

michael_x

#28
Jul 12, 2018, 11:05 am Last Edit: Jul 12, 2018, 12:07 pm by michael_x Reason: mit Bild
Quote
Es bleibt nichts übrig als die Matte zu zerschnipseln, so daß alle Kreuzungspunkte voneinander isoliert sind.
Na ich denke, der Widerstand von einem "Kreuzungspunkt" zum nächsten ist erheblich größer als der Widerstand quer durch die Dicke der Matte. Das wäre also eher uninteressant oder egal.

Aber wie man da mechanisch die (72) Dioden zuverlässig reinkriegt, weiß ich auch nicht.
Das simple Prinzip mit den Kupferbahnen kreuzweise und der Matte dazwischen ist damit weg.

Gibt es noch "Plattengleichrichter" ?
Meine Vermutung: a) nein b) auch keine Lösung

Wie kriegt man so Dinger

hochkant gehalten, so dass man sich draufstellen kann und sie auch noch einen Kontaktwiderstand deutlich kleiner als die Velostat - Matte haben?

Das Bild stellte übrigens AliExpress freundlicherweise zur Verfügung

Tommy56

Hier wären mal konkrete Widerstandswerte vom TO hilfreich.

a) zwischen 2 gekreuzten Elektroden am Messpunkt unbelastet
b) zwischen 2 gekreuzten Elektroden am Messpunkt maximal belastet
c) zwischen 2 benachbarten Elektroden in Längsrichtung
d) zwischen 2 benachbarten Elektroden in Querrichtung

Dann wäre es nicht nur ein Herumgerate.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Go Up