Programme photorésistance

Bonjour à tous! Je suis en train de réaliser un projet en classe de terminale et me voici face à un problème.Je vous le détail donc dans un soucis de compréhension du programme.

J’utilise une photorésistance faisant office de capteur de luminosité dans mon projet or j’aimerais que le moniteur d’arduino m’affiche non pas ses valeurs de luminosité sans unité mais avec des lux. Ayant un peu cherché sur internet j’ai lu qu’il était question de ‘‘calibrer’’ la photorésistance.

Au final j’ai essayé un programme ( qui regroupe le programme sur la photorésistance et un autre sur un capteur à ultrason, j’ai donc séparé les deux parties par des retours de ligne) qui à l’aide d’une autre résistance( 10kohm ici) me permet d’acquérir la résistance de la photorésistance pour une certaine luminosité.

La luminosité en lux est exprimée par la formule suivante: a*Résistance puissance b
où a et b sont des constantes et “Résistance” est la résistance de la photorésistance en ohm.
Tout cela avait pour but de trouver a et b et d’appliquer cette formule à toute luminosité (valeur donnée par la photorésistance brut sans unité) pour avoir une valeur exprimée en lux.

Or lorsque je lance mon programme il m’affiche des résultats négatifs, d’où vient mon erreur? Auriez vous une autre solution plus simple à mon problème de départ?
Bonne journée à vous.

 int trigV=5;
 int echoV=4;
 float tension;
 float intensite;
 float resistance;
 float valeur;
 float lum;
 float a=-67247;
 float b=-0.59;
 float dureeV;
 float distance;
 
void setup() {
  pinMode(trigV,OUTPUT);
  pinMode(echoV,INPUT);
  Serial.begin(9600);
  Serial.begin(9600);
}

void loop() {
 digitalWrite(trigV,LOW);
 delayMicroseconds(2);
 digitalWrite(trigV,HIGH);
 delayMicroseconds(10); //on envoie le signal pendant 10ms
 digitalWrite(trigV,LOW);


//calculer la durée de l'aller-retour de la voiture
 dureeV=pulseIn(echoV,HIGH); //pulseIn chronometre à partir du moment où on lance le signal ultrason

 distance=(340*dureeV*0.000001*100)/2; // en cm
Serial.print("distance =");  
Serial.print(distance);
Serial.print("cm");


Serial.print(" ");
 if (distance<100){ // distance exprimée en cm 


  Serial.println("PIETON");
 }
 else{
 Serial.println(" ");
 }
 






valeur = analogRead(A0);
 Serial.print(" ");
 Serial.println(valeur);
 delay(250);
 tension=(valeur*5)/1023;//en volts
 Serial.print(tension);
 Serial.println("Volts");

 
 intensite=tension/10;
 Serial.print(intensite);//en mA
 Serial.println("mA"); 
 resistance=(5-tension)*1000/intensite;
 Serial.print(resistance);//en ohm
 Serial.println("ohm"); 
 lum=a*pow(resistance,b);//en lux
 Serial.print(lum);
 Serial.println("lux"); 
 
  }

J'ai écrit des choses à ce sujet : capteurs-de-temperature-humidite-pression-luminosité

Voir 5. Les capteurs de luminosité

Il y a même un bout de code.

Je ne suis peut être pas la personne la plus fiable à propos de ce sujet mais je pense qui faudrait simplement, dans le noir, éclairer la photorésistance avec plusieurs lumières dont "le lux" est connu et ainsi tracer la courbe du lux en fonction de la résistance et grâce à excel ou regressi obtenir un modèle sous forme d'équation. Je reprécise que je ne sais pas du tout si cela fonctionnerait.

 float a=-67247;
 float b=-0.59;

........

 lum=a*pow(resistance,b);//en lux

Moi, je ne suis pas trop surpris que le résultat soit négatif. Peut-être as-tu mal déterminé les paramètres qui modélisent ta photorésistance.

Merci pour vos réponses, en effet le problème venait d'un simple moins... Je m'en veux d'avoir fait une erreur aussi bête @fdunews. Je suis allé voir ton site @hbachetti et i lest très complet et intéressant merci !
Cela pourrait aussi marcher effectivement @jamy31 merci pour ta réponse.
Bonne journée à vous.

L'essentiel, c'est qu'au final ça fonctionne.