sieht aus wie ein EKG aus :(

Hallo,

habe heute ein Arduino Uno gekauft, da mein Sohn ein Projekt für die Schule machen wollte - Lügendetektor

Dazu haben wir dieses Video gefunden, wo alles sehr gut aussieht:
YouTube Video
und der Code dazu:

Code auf GitHub

Da wir nur das Arduino haben ohne der RBG-Led, wurde dieser Teil im Code entfernt

int mittelwert = 10;
int counter = 0;

int kalibriere(int sekunden) {  // Wir kalibrieren die Messung, damit wir die
  // Veränderungen der Leitfähigkeit gut sehen
  // können, denn darauf kommt es ja an - auf die
  // Veränderungen
  int messungen_pro_sekunde = 10;
  int num_messungen = messungen_pro_sekunde * sekunden;
  double sum_werte = 0;

  for (int i = 0; i < num_messungen; ++i) {
    //    set_pixel(i % 2);
    sum_werte += analogRead(A1);
    delay(int(1000 / messungen_pro_sekunde));
  }

  return int(sum_werte / num_messungen);
}

void setup() {
  pinMode(A1, INPUT);
  Serial.begin(115200);
  Serial.println("Kalibriere");
  mittelwert = kalibriere(5);
}

void loop() {
  float reading = analogRead(A1) - mittelwert;
  reading = (5. * reading) / 1.023;

  if (counter % 10 == 0) {
    Serial.print(reading);
    Serial.println(" mV");
  }

  counter++;
  delay(10);
}

Nur sieht das Ergebnis mehr nach einem EKG aus als nach einer schönen Messkurve an der man "Lügen" erkennen könnte :frowning:

Selbst wenn pinMode(A1, INPUT) auf pinMode(A1, INPUT_PULLUP) gesetzt wird :frowning:

Kann mir da jemand helfen :sob:

DANKE !!

Sorry, habe ich vergessen zu erwähnen:

Drähte wurden an +5V und an A0 PIN angehängt.

Seufz:
Kann mir da jemand helfen :sob:

Ich habe den Code nur überflogen und das Video nicht ganz gesehen. Bei einer Zigarette fiel mir aber ein, dass Du einen Analogpin mit Dingen initialisierst, die man sonst mit Digitalpins macht. Ich kenne mich damit bislang nicht aus, aber ich vermute, dass sich der Pin dadurch nicht wie ein Analog- sondern wie ein Digitalpin verhält. Lass Dir den gelesenen Wert mal auf der seriellen Schnittstelle ausgeben oder benutze den „seriellen Plotter“ (in der Arduino-IDE im Werkzeug-Menü).

Nuja ... ein Schuss ins Blaue :slight_smile:

Gruß

Gregor

    sum_werte += analogRead(A1);

Seufz:
Drähte wurden an +5V und an A0 PIN angehängt.

Erscheint mir widersprüchlich, welchen Pin benutzt du denn wirklich?

Im Prinzip wird mit der einen Hand der Draht vom +5V gehalten und mit der anderen Hand der A0. dazwischen ist es somit der Körperwiderstand.

Dadurch dass beim lügen (schwitzen) unbewusst und ungewollt der Körperwiderstand verändert macht sich dieser auf dem Analogeingang bemerkbar.

Am Serial Plotter wird die Kurve angezeigt.

Schaue mal den Beitrag #3 nochmal an. Da wurde darauf hingewiesen dass du die Werte auf A1 ausliest, aber auf A0 deinen Draht hast. Das kann eigentlich nicht funktionieren. Entweder A0 Auslesen nicht A1, oder dn Draht auf A1 stecken.

stimmt. war mein Fehler - habe es zuerst am A0 gemacht (war auch im Cocde auf A0) -- habe es danach mit A1 probiert obwohl es keinen Unterschied geben sollte

Um es richtigzustellen - Draht wird immer an der PIN anghängt welche im Code angesteuert wird.

5V - Körper - Ax misst keinen Widerstand, dazu müsste Ax einen Strom messen, keine Spannung.

Irgendwie fehlt mir da der Spannungsteiler...

Es gibt ja ein Standard-Bespiel in der Software - da wird genau dasselbe gemacht, jedoch ohne ein "Kalibrierung" vorzunehmen.

/*
  ReadAnalogVoltage

  Reads an analog input on pin 0, converts it to voltage, and prints the result to the Serial Monitor.
  Graphical representation is available using Serial Plotter (Tools > Serial Plotter menu).
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
*/

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage = sensorValue * (5.0 / 1023.0);
  // print out the value you read:
  Serial.println(voltage);
}

Na dann.

könnte ein Kondensator da vielleicht helfen (bin kein Profi :frowning: )

Mir ist aber aufgefallen, dass selbst wenn die Drähte nicht berührt werden, irgendetwas gemessen wird.

Wenn ich den Draht vom analogen Eingang abstecke ist dann ruhe im Haus - ansonsten scheint der Draht irgendwelche Signale als Antenne rein zubekommen

Seufz:
Mir ist aber aufgefallen, dass selbst wenn die Drähte nicht berührt werden, irgendetwas gemessen wird.
Wenn ich den Draht vom analogen Eingang abstecke ist dann ruhe im Haus - ansonsten scheint der Draht irgendwelche Signale als Antenne rein zubekommen

Von diesem Effekt kann ich ein Lied singen ...

Ich hatte mal die Idee, ein super-einfaches Oszi zu bauen. Theoretisch war das eine feine Sache. Blöderweise hatte ich jedes Mal schon dann „Signale“, obwohl die Tastköpfe noch nichts zu tasten hatten. Schon Handbewegungen reichten aus, um irgendwas „zu empfangen“ oder den Empfang zu verändern. Jetzt schlummert das halbfertige Minimal-Oszi seit ein paar Monaten in der „zu erledigen“-Kiste.

Gruß

Gregor

:frowning:

genau so ist es, jede Bewegung in Richtung das Drahtes von Ax spiegelt sich im Plotter wieder.

Selbst wenn GND hinzugenommen wird (andere Hand) verlagert sich das ganze nur auf ein anderes Niveau (Wert) und geht dort wie gewohnt weiter

Ich bräuchte vielleicht einen geschirmten Draht oder so

Kennt jemand vielleicht eine Schaltung, welche als Lügendetektor am Experimentierbrett verwendet werden könnte ?

Ich brauche unbedingt einen halbwegs vorzeigbaren Lügendetektor :frowning:

Hänge doch einfach mal einen Widerstand von 2 kOhm von A0 nach GND, wenn A0 Dein Eingang ist, damit sich ein Spannungsteiler ergibt.

Gruß Tommy

Hi,

versuche mal +5V ---- 1MOhm ---- A1 ---- Finger ---- GND

Wenn ich meine Finger nass mache komme auf einen Widerstand von Minimum 200K.

Danke, werde mal den Widerstand besorgen und probieren :slight_smile:

Ich schätze dass der A1 Draht noch immer als Antenne fungieren wird

Hallo -
es scheint nicht zu funktionieren. Wieso - Weshalb - Warum?

Ich finde das ein interessantes Projekt. Das werde ich mal auf die To-Do-Liste für den Winter setzen.

  1. Widerstandsmessung
    Ich fürchte man muß die evtl. geringe Widerstandsänderung per OP verstärken.
    Das Kalibrieren legt den Arbeitspunkt fest.

Was noch interessant ist:

  1. Puls messen und anzeigen

  2. Oximeter - Anzeige der Sauerstoffsättigung.