Il existe 2 types de capteurs, analogique et numérique (TOR).
Analogic / TOR
TOR
Analogic

UR3=Vcc−Uldr
Uldr=VccRldr+R3Rldr
Uldr(Rldr+R3)=Vcc.Rldr
Uldr.Rldr+Uldr.R3=Vcc.Rldr
Rldr(Uldr−Vcc)=−Uldr.R3
Rldr=Uldr−Vcc−Uldr.R3
Rldr=−UR3−Uldr.R3
Rldr=UR3Uldr.R3

Sur le graph en échelle log, la courbe est une droite de type y=a.x+b
log(Rldr)=m.log(Lux)+log(b)
m: Coefficient directeur
m=−5decades7decades=−57=−1,4
b: Ordonné à l'origine (R=1)
Par lecture graphique b = 1,25.1007
log(Lux)=m.log(Rldr)+log(b)
log(Lux)=log(Rldrm)+log(b)
log(Lux)=log(Rldrm.b)
10log(Lux)=10log(Rldrm.b)
Lux=Rldrm.b
Lux=(1,25.107).R−1,4
unsigned int AnalogValue;
float resistorVoltage;
float ldrVoltage;
float ldrResistance;
float ldrLux;
#define MAX_ADC_READING 1023
#define ADC_REF_VOLTAGE 5
#define VCC_VOLTAGE 5
#define REF_RESISTANCE 10000 // 10k / --103--
#define LUX_CALC_SCALAR 12500000
#define LUX_CALC_EXPONENT -1.4
// Lux = 1,25E07 x R^(-1.4)
void setup() {
Serial.begin(9600);
}
void loop() {
AnalogValue = analogRead(A0);
ldrVoltage = (float)AnalogValue / MAX_ADC_READING * ADC_REF_VOLTAGE;
resistorVoltage = VCC_VOLTAGE - ldrVoltage;
ldrResistance = ldrVoltage/resistorVoltage * REF_RESISTANCE;
ldrLux = LUX_CALC_SCALAR * pow(ldrResistance, LUX_CALC_EXPONENT);
Serial.println(ldrLux);
}
void setup() {
pinMode(1, INPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop() {
bool light = digitalRead(1);
Serial.print("Light = ");
Serial.println(light);
if (light) {
digitalWrite (13, LOW);
} else {
digitalWrite (13, HIGH);
}
}
Plus d'info > capteur-luminosite
Luxmètre > capteur-luminosite