Ich möchte den Sensor-Wert von vier baugleichen LDRs messen. Das Problem ist, das die Sensor-Werte von Pin zu Pin unterschiedlich sind. Ich habe die Pins getauscht, heißt den ersten LDR in A3 etc. gesteckt, es hat sich nichts getan, die Werte sind an den Pins gleichgeblieben, aber trotzdem von Pin zu Pin unterschiedlich.
Ich habe versucht die Werte, ugf. auf denselben Wert zu multiplizieren, doch wenn ich den einen Sensor-Wert multipliziere, wird der andere auch größer.
Hier ist die Schaltung :
Diesen Code habe ich verwendet:
int LDR1 = A0;
int LDR2 = A1;
int LDR3 = A2;
int LDR4 = A3;
int LdrWert1 = 0;
int LdrWert2 = 0;
int LdrWert3 = 0;
int LdrWert4 = 0;
void setup()
{
Serial.begin(9600);
}
void loop() {
LdrWert1 = analogRead(LDR1)
LdrWert2 = analogRead(LDR2)
LdrWert3 = analogRead(LDR3)
LdrWert4 = analogRead(LDR4)
Serial.println(LdrWert1);
Serial.println(LdrWert2);
Serial.println(LdrWert3);
Serial.println(LdrWert4);
delay(100);
}
Nicht nur die LDRs haben Bauteiltoleranzen, auch die verwendeten Widerstände. Wenn du das Problem rechnerisch nicht auflösen kannst, bleibt dir eigentlich nur noch die Selektion einzelner Bauteile aus einer größeren Menge.
Wenn die Werte gleich sein sollen wirst du für jeden Kanal eine Skalierung benötigen. Dazu wirst du je mindestens einen Multiplikator und einen Offset brauchen .
Ich würde jeweils zwei Messwerte nehmen bei unterschieflicher Beleuchtung und die und die mittels y=ax+b skalieren .
Klar der LdR ist nicht linear mit obigem Ansatz gehst du eigendlich von einer Linearen Kurve aus zwischen den beiden Messwerten , was ja nicht stimmt .
Wenn das nicht genau genug ist kannst du ja auch mehrere Messwerte nehmen und trägst die in eine Excell Tabelle ein. Da kannst du dir da eine genäherte Gleichung ausgeben lassen die du dann für jeden Kanal in in deinem Sketch verwendest.
Heinz
Nachtrag
Ich vergesse immer das es ja noch map() gibt , geht natürlich auch als lineare Näherung