Übrigens, das Umgebungslicht kann man auch per Software unterdrücken. Ich mach das folgendermassen:
Zuerst das Umgebungslicht mit ausgeschalteter FrontLED messen und merken, dann mit eingeschalteter FrontLED nochmal messen und von diesem Signal die erste Messung (nur Umgebungslicht) abziehen.
Von der normalen Messung wird also der durch das Umgebungslicht verursachte Wert abgezogen und damit kompensiert. Im Prinzip ist es dasselbe wie bei den IR-Detektoren, die mit 36 kHz takten.
Ein Beispielcode ist hier:
Code:
int i, don, doff;
FrontLED(OFF);
LineData(lineData);
doff = (lineData[0] - lineData[1]);
FrontLED(ON);
LineData(lineData);
don = (lineData[0] - lineData[1]);
i = don - doff;
Ohne diese Kompensation hatte ich sehr stark vom Umgebungslicht abhängige Werte. Je nach Stärke des Umgebungslichts waren die Werte bis zu 5mal höher als im Dunkeln. Jetzt bleiben die Werte auch mit Umgebungslicht auf dem Level wie im Dunkeln. Bei mir ist die Differenz zwischen schwarz und weiss jetzt ziemlich konstant und liegt bei etwa 60. Insbesondere im Betrieb mit einer Regelschleife hat das den Vorteil, dass die Verstärkung nicht mehr schwankt.
Bei zuviel Umgebungslicht versagt auch diese Methode, da hilft nur abschatten.
Probiert es mal aus, vielleicht erspart es einen Umbau.
Gruss Waste
Lesezeichen