Problème valeures sonde uv

Bonjour à tous.

J'ai installé une sonde uv (guva s125d) sur un Arduino pro-mini qui envoi les valeur sur Domoticz.
Quand la sonde est a l’intérieur la valeur est bien à zéro, par contre quand je suis dehors et qu'il y a du soleil, même voilé, la sonde grimpe rapidement vers des valeurs maxi, ce qui laisse supposer qui si un jour il fait grand soleil (ça va bien arriver) je serais hors échelle.
Elle est alimenté en 3.5 volts, dans l'exemple d'Henri elle est en 5 volts.
La tension d'alimentation peut jouer sur la valeur des data ? Il faudrait rajouter une résistance ?
Merci.

/*
 * The MySensors Arduino library handles the wireless radio link and protocol
 * between your home built sensors/actuators and HA controller of choice.
 * The sensors forms a self healing radio network with optional repeaters. Each
 * repeater and gateway builds a routing tables in EEPROM which keeps track of the
 * network topology allowing messages to be routed to nodes.
 *
 * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
 * Copyright (C) 2013-2019 Sensnology AB
 * Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
 *
 * Documentation: http://www.mysensors.org
 * Support Forum: http://forum.mysensors.org
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * version 2 as published by the Free Software Foundation.
 *
 *******************************
 *
 * REVISION HISTORY
 * Version 1.0 - epierre
 * Contribution: bulldoglowell, gizmocuz
 *
 * DESCRIPTION
 * Arduino UVM-30A
 * Index table taken from: http://www.elecrow.com/sensors-c-111/environment-c-111_112/uv-sensor-moduleuvm30a-p-716.html
 * Because this table is pretty lineair, we can calculate a UVI with one decimal
 *
 * Connect sensor:
 *
 *   +   >>> 5V
 *   -   >>> GND
 *   out >>> A0
 *
 * License: Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)
 */

// Enable debug prints to serial monitor
#define MY_DEBUG

// Enable and select radio type attached
#define MY_RADIO_RF24
//#define MY_RADIO_NRF5_ESB
//#define MY_RADIO_RFM69
//#define MY_RADIO_RFM95

#include <MySensors.h>

#define UV_SENSOR_ANALOG_PIN 0

#define CHILD_ID_UV 0

uint32_t SLEEP_TIME = 30*1000; // Sleep time between reads (in milliseconds)

MyMessage uvMsg(CHILD_ID_UV, V_UV);

uint32_t lastSend =0;
float uvIndex;
float lastUV = -1;
uint16_t uvIndexValue [12] = { 50, 227, 318, 408, 503, 606, 696, 795, 881, 976, 1079, 1170};


void presentation()
{
    // Send the sketch version information to the gateway and Controller
    sendSketchInfo("UV Sensor", "1.2");

    // Register all sensors to gateway (they will be created as child devices)
    present(CHILD_ID_UV, S_UV);
}

void loop()
{
    uint32_t currentTime = millis();

    uint16_t uv = analogRead(UV_SENSOR_ANALOG_PIN);// Get UV value
    if (uv>1170) {
        uv=1170;
    }

    //Serial.print("UV Analog reading: ");
    //Serial.println(uv);

    int i;
    for (i = 0; i < 12; i++) {
        if (uv <= uvIndexValue[i]) {
            uvIndex = i;
            break;
        }
    }

    //calculate 1 decimal if possible
    if (i>0) {
        float vRange=uvIndexValue[i]-uvIndexValue[i-1];
        float vCalc=uv-uvIndexValue[i-1];
        uvIndex+=(1.0/vRange)*vCalc-1.0;
    }

    //Serial.print("UVI: ");
    //Serial.println(uvIndex,2);

    //Send value to gateway if changed, or at least every 5 minutes
    if ((uvIndex != lastUV)||(currentTime-lastSend >= 5UL*60UL*1000UL)) {
        lastSend=currentTime;
        send(uvMsg.set(uvIndex,2));
        lastUV = uvIndex;
    }

    sleep(SLEEP_TIME);
}

Bonjour

La référence GUVAS125D correspond à une photodiode UV (cf doc GUVAS125D ) .
Guva.png
Quel schéma est actuellement utilisé pour la raccorder à la carte Pro Mini ?

Remarque : le code semble utiliser un capteur V à 3 bornes, pas 2 comme la phodiode GUVAS125D

 * Connect sensor:
 *
 *   +   >>> 5V
 *   -   >>> GND
 *   out >>> A0

Le code ne correspond pas au branchement direct d'une photodiode GUVAS125D
Une circuit éléctronique intermédiaire est nécessaire.
Est-il en place ? Si oui quel est-il ?

Ta sonde UV ne serait-elle pas plutôt une UVM-30A ? (cf Doc Technique)
donc une photodiode UV + son éléctronique d'adaptation
UVM30A.png

Guva.png

UVM30A.png

Voilà le schéma du module UVM-30A
Schema.png

Schema.png

Merci al1fch,

Oui ma sonde correspond à un capteur uv 3 bornes avec une GUVAS125D dessus raccordée comme la pièce jointe sur un pro-mini.
un + 3.3v
un gnd
la sortie data sur une entrée analogique.

Si le module est un UVM-30 (ou équivalent),
Si son schéma correspond à celui donné au dessus ,
SI j'analyse bien ce schéma...

Alors la tension de sortie du module UV n'est pas dépendante de la tension d'alimentation mais est égale à 4,3 fois le courant travesant la diode, courant exprimé en µA.
Indépendante tant que l'on reste sous le 'plafond' de la tension d'alimentation.
Bien entendu la tension de sortie du module ne peut excéder la tension d'alimentation.
Un courant de 1µA donnera 4,3V ....si la tension d'alimentation est 5V,il est clair que les 4,3V ne seront pas atteint avec ne alim à 3,3V

Une alimentation de 3,3V ne permet donc pas d'atteindre des valeurs de mW/cm2 aussi élevées qu'une alimentation de 5V, le 'plafond' est plus bas

dudule63:
Merci al1fch,

Oui ma sonde correspond à un capteur uv 3 bornes avec une GUVAS125D dessus raccordée comme la pièce jointe sur un pro-mini.
un + 3.3v
un gnd
la sortie data sur une entrée analogique.

Bonjour
Si j'ai bien tout compris :

  • tu utilise un pro mini (base 328P)
  • ton module sort entre 0 et ~1170 mV
    Pour obtenir la meilleure dynamique possible , il faut que la référence de tension du CAD soit le plus proche possible de
    1170mV
    La solution la plus simple est ici AMHA d'utiliser la reference de tension interne (donnée pour 1.1V , mais la valeur exacte peut être facilement mesurée )
    par l'instruction
    analogReference(INTERNAL)

Merci Artouste,

Je vais creuser le sujet et je reviens vers vous.