IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

AD8495 mesure thermocouple K


Sujet :

Arduino

  1. #1
    Membre actif
    Inscrit en
    Juillet 2004
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 859
    Points : 240
    Points
    240
    Par défaut AD8495 mesure thermocouple K
    Bonjour à tous

    J'essaie de faire fonctionner à l'aide d'un arduino nano , le module AD8495
    avec le croquis suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    // SPDX-FileCopyrightText: 2019 Kattni Rembor for Adafruit Industries
    //
    // SPDX-License-Identifier: MIT
    //
    #define TC_PIN A0          // set to ADC pin used
    #define AREF 3.3           // set to AREF, typically board voltage like 3.3 or 5.0
    #define ADC_RESOLUTION 10  // set to ADC bit resolution, 10 is default
    
    float reading, voltage, temperature; 
    
    float get_voltage(int raw_adc) {
      return raw_adc * (AREF / (pow(2, ADC_RESOLUTION)-1));  
    }
    
    float get_temperature(float voltage) {
      return (voltage - 1.25) / 0.005;
    }
    
    void setup() {
      Serial.begin(115200);
    }
    
    void loop() {
      reading = analogRead(TC_PIN);
      voltage = get_voltage(reading);
      temperature = get_temperature(voltage);
      Serial.print("Temperature = ");
      Serial.print(temperature);
      Serial.println(" C");
      delay(1000);
    }
    en toute logique , je devrais lire une température ambiante en Vout
    si Vout = 1.369 soit 23.8C°
    or
    si je laisse la formule tel quelle soit Vout = (voltage - 1.25) / 0.005
    je lis => image1
    si je change le coefficient en 1.03 en lieu et place de 1.25
    je lis => image 2

    le module a comme schéma ceci : ( adafruit_products_AD8495_Sch.png )
    et je précise que j'ai bien en pin 2 : vref = 1.25v

    il se trouve que la formule doit être adaptée avec une valeur de référence qui risque de varier suivant le type d'arduino et de AD8495
    mas question est :

    peut-on envisager de mettre par ex une tension de référence externe et faire le calcul via cette référence plutôt que celle de 1.25v

    auriez-vous d'autres suggestions ou retours sur ce produit

    merci mille fois
    pascal
    Images attachées Images attachées    

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 222
    Points : 11 755
    Points
    11 755
    Par défaut
    Bonjour,
    Le TLVH431 qui fournit le 1.25V pour ton AD8495 est déjà une Vref externe. Si ta question est comment faire pour qu'une Vref ait une valeur fixe ? Malheureusement ça n'existe pas et ce n'est pas un problème.

    Même la légendaire LTZ1000A à whatdouzevingtmilleballe (87€ HT pce ) est donnée entre 7V et 7.5V et elle équipe des instruments de mesure qui coûte le prix d'une bagnole ou même d'une maison mais ce n'est pas grave car en pratique on mesure la valeur de VREF une fois et on la rentre sa valeur dans le soft pour les calculs. Quant à son bruit électronique de 1.2µVpeak-peak il peut être "effacé" en moyennant les mesures + décimation. Ensuite ce qu'on attend d'une bonne VREF c'est qu'elle ne dérive pas trop avec la température ou dans le temps. A titre d'exemple, la LTZ1000A varie de 0.000005%/°C et au bout de 30 jours à température constante elle aura variée de 0.00015%. Une des vérifications métrologiques c'est d'observer cette dérive et de recalibrer si besoin, par correction et/ou ajustement et/ou relecture de la VREF et mise à jour du soft.

    Du côté Arduino la pire chose à faire c'est ça #define AREF 3.3 // set to AREF, typically board voltage like 3.3 or 5.0, prendre la tension d'alim comme VREF, car la tension d'alim varie avec la température ambiante, avec les variations de température provoquées par le courant qui traverse le régulateur, avec les variations de la tension en entrée du régulateur, avec les variations du courant de sortie du régulateur, avec le bruit que tous les autres composants peuvent générer en étant alimentés par le régulateur. La bonne pratique c'est de prendre une VREF pour l'ADC du Arduino ou sa VREF interne.

    Dans le cas qui t'intéresse tu peux même faire un montage un peu plus ratiométrique, même si ça ne le sera pas tout à fait, pour t'affranchir le plus possibles des variations.

    Nom : Capture079.PNG
Affichages : 48
Taille : 10,3 Ko

    Dans le montage ci dessus tu as une VREF genre TL431 2.5V et qui va directement comme référence pour l'ADC de l'Arduino. Au passage, on divise par deux les 2.5V via R2 et R3 pour faire une référence 1.25V pour le AD8495. R2 et R3 devront avoir idéalement "si on chipote" un faible TCR (faible variation en fonction de la température afin de diviser toujours par 2).

    En sortie du AD8495 la tension de sortie vaudra à 25°C :
    VOUT = (25°C * 0.005V) + 1.25V = 1.375V

    Et la valeur dans l'ADC :
    ADC = (1.375V * 1024) / 2.5V = 563,2

    Maintenant imagine que la VREF de 2.5V fasse en réalité 2,470V ce qui est possible car le fabricant dit que c'est la valeur minimum qu'on peut trouver dans un lot de TL431.

    En sortie du AD8495 la tension de sortie vaudra à 25°C :
    VOUT = (25°C * 0.005V) + 1.235V = 1.36V

    Et la valeur dans l'ADC :
    ADC = (1.36V * 1024) / 2.5V = 563,8

    Dans l'ADC tu verras toujours 563 puisqu'il n'y aura pas de virgule. On est donc ratiométrique dans une certaine mesure.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #3
    Membre actif
    Inscrit en
    Juillet 2004
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 859
    Points : 240
    Points
    240
    Par défaut
    Bonsoir Vincent

    j'ai bien noté la tension de référence en "cascade"
    mais j'ai oublié de préciser une chose importante c'est que le module que j'utilise ( genre adafruit)
    comporte déjà sur le pcb le TLVH431 et je n'ai que Vout et Gnd pas la sortie ref
    il faudrait donc que je puisse enlever le TLVH431 (mais je perdrais aussi la compensation de soudure froide pour le thermocouple) pour avoir l'accès à la pin2 du AD8495
    je vais donc regarder tout çà

    merci encore
    pascal

Discussions similaires

  1. Mesure de température avec thermocouple.
    Par Beginner. dans le forum Arduino
    Réponses: 7
    Dernier message: 16/12/2021, 18h27
  2. Réponses: 9
    Dernier message: 08/10/2011, 06h10
  3. Réponses: 6
    Dernier message: 09/04/2007, 17h52
  4. [Timer]Comment mesurer un intervalle de temps ?
    Par Pill_S dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 18h39
  5. Mesurer le temps des instructions
    Par luckylucke dans le forum Assembleur
    Réponses: 9
    Dernier message: 03/09/2003, 22h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo