Saturation mesure TSL2591 ?

Bonjour,
Je réalise un projet qui permet de comparer des mesures de lumière incidente (du soleil notamment).
Pour cela, j'utilise un luxmètre TSL2591 car il prend jusqu'à 88k lux ce qui est correct pour le soleil.
Cependant, en réalisant des tests, j'ai quelques soucis:
au delà d'une certaine intensité lumineuse, il semble que le capteur "sature". Pour mes 10 valeurs (dont je fais après la moyenne) (cf code), quand l'intensité lumineuse devient trop importante, les valeurs ne s'affichent simplement plus dans le moniteur série. J'aurai par exemple 6 valeurs seulement.
Je pense pourtant avoir réalisé les bons réglages pour une telle intensité lumineuse.
Avez-vous une solution à apporter à mon problème s'il-vous-plait ?
Merci,

[code]


#include <Wire.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_TSL2591.h"
#include <LiquidCrystal_I2C.h>



//INI DU CAPTEUR TSL

Adafruit_TSL2591 tsl = Adafruit_TSL2591(2591);
//INI DE L'ECRAN LCD

LiquidCrystal_I2C lcd(0x27, 20, 4);

void setup() {
  Serial.begin(9600);
  Wire.begin();
  Wire.beginTransmission(0x27);
  LiquidCrystal_I2C lcd(0x27, 20, 4);
  lcd.begin(16, 2);
  lcd.init();
  lcd.clear();
  lcd.backlight();
  lcd.print("Mesure en cours");
}
//DEFINITION DES VARIABLES
long ciel_sum = 0;
long sol_sum = 0;
int countciel = 0;
int countsol = 0;

void configureSensor(void)
{
  tsl.setGain(TSL2591_GAIN_LOW);
  tsl.setTiming(TSL2591_INTEGRATIONTIME_100MS);
}

//PRISE DES MESURES 10 SECONDES CHACUNE
void loop() {
  for (int i = 0; i < 10; i++) {
    sensors_event_t event;
    tsl.getEvent(&event);
    if (event.light) {
      Serial.println(event.light);
      ciel_sum += event.light;
      lcd.clear();
      lcd.backlight();
      lcd.print(event.light);
    }
    countciel++;
    delay(1000);
  }
 
}
[/code]

hello
sur ton site marchand, il y a cet avertissement

Note that some checks need to be performed on the sensor data in case the sensor saturated. If saturation happens, please adjust the gain and integration time up or down to change the sensor's sensitivity and output range.

ici, aux 3/4 de la page

sinon, un filtre devant le capteur devrait aussi régler le problème de saturation

Bonsoir

tsl.setGain(TSL2591_GAIN_LOW);
tsl.setTiming(TSL2591_INTEGRATIONTIME_100MS);

il semble que cette combinaison corresponde déjà à la sensibilité minimale pour la bibliothèque utilisée

Cependant, en réalisant des tests, j'ai quelques soucis: au delà d'une certaine intensité lumineuse,

A quel niveau d'éclairement la saturation est-elle constatée ?

L'exemple de base fourni par Adafruit avec sa bibilothèque montre comment gérer le spectre (choix entre 3 fonctions pour interroger le capteur) il faut peut être creuser ce point = eviter d'utiliser , si je comprend bien, la valeur brute fournie par

tsl.getEvent(&event);

Merci dfgh et al1fch pour vos réponses.
Vu que les valeurs ne s'affichent pas, c'est difficile à lire, mais il semble que cela bloque au dessus de 15/20k lux.
Ce qui me surprend vis-à-vis de mon programme est aussi que sur le programme test (fourni pour utiliser le capteur), il n'y a aucune saturation et j'obtiens bien des valeurs jusqu'à 80k lux (voire plus). Je vais (ré)essayé les autres méthodes proposées par le programme test mais je crois que j'avais le même problème.
Je me demande si le problème ne vient simplement pas de mon code (syntaxe ou autre) que j'aurais mal identifié étant donné ma faible expérience sur Arduino.
Merci

Tu n'appelles pas configureSensor() c'est voulu?

1 Like

Là était donc mon oubli !! Cela fonctionne maintenant.
Merci beaucoup ! :smile:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.