Partage
  • Partager sur Facebook
  • Partager sur Twitter

thermomètre proteus + arduino problème led

Sujet résolu
    5 février 2021 à 14:09:25

    bonjour,

    je suis une débutant en arduino et proteus je veux réaliser un projet sur le  thermomètre avec ces quatre fonctionnements 

    La fonction F1 est assurée par un capteur analogique de température via la
    thermistance LM35 (résistance qui varie en fonction de la température de
    l
    environnement extérieur).
    La fonction F2 de conversion est assurée via le convertisseur
    analogique/numérique du type microcontrôleur Arduino d'architecture Atmel
    AVR.
    La fonction daffichage numérique F3 se fait via un LCD numérique de type
    LM044L.
    La fonction F4 est assurée par les trois LEDs de contrôle (verte, rouge et bleu)
    dont l
    allumage dépende de lintervalle de température consigne

    le problème que les les leds ne s'allument pas et dans le lcd affiche des grandes valeurs : c=500°c

    #include<LiquidCrystal.h>
    #include <TimerOne.h>
    LiquidCrystal lcd(7,6,5,4,3,2);
    const int sensor=A5;
    int led1(13);
    int led2(11);
    int led3(9);
    int tempc;
    float vout;
    void setup() {
      // put your setup code here, to run once:
      lcd.begin(20,4);
      pinMode(sensor, INPUT);
      delay(500);
      pinMode(13, OUTPUT);
      pinMode(11, OUTPUT);
      pinMode(9, OUTPUT);
    
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      vout =analogRead(sensor);
      tempc=(vout*500)/1023;
      lcd.setCursor(0,0);
      lcd.print("in degree C=");
      lcd.print(tempc);
      lcd.setCursor(0,1);
      delay(100);
      if (tempc>38){
        digitalWrite(led2,HIGH);
        digitalWrite(led3,LOW);
        digitalWrite(led1,LOW);
      }else if(tempc>37 && tempc<38){
        digitalWrite(led1,HIGH);
        digitalWrite(led3,LOW);
        digitalWrite(led2,LOW);
      }else{
        digitalWrite(led3,HIGH);
        digitalWrite(led1,LOW);
        digitalWrite(led2,LOW);
      }
    }


    -
    Edité par shiro83838 5 février 2021 à 15:23:36

    • Partager sur Facebook
    • Partager sur Twitter
      11 février 2021 à 19:26:31

      Si tu utilises 2 alimentations séparées (une pour le capteur, une autre pour l'arduino), il te faut obligatoirement relier les GND de ces 2 alimentations, ce qui semble ne pas être le cas sur ton schéma.

      Sans cela, tu vas lire n'importe quoi.

      Ensuite, bien que ta formule tempc=(vout*500)/1023; soit juste, on ne comprends pas vraiment d'où proviennent ces chiffres.

      Tu ferais mieux de mettre quelque chose dans ce style :

      float anaRef = 5.0;            // Tension de référence de l'ADC: 5.0V sur arduino UNO
      float anaMax = 1023.0;        // Valeur max de l'ADC: 1023 sur arduino UNO
      float tempCoeff = 0.01;        // Coefficient du capteur : 10mV/°C = 0.01V/°C
      int adc = analogRead(sensor);
      int tempc = ( ( adc * anaRef / anaMax ) / tempCoeff );

      Je te l'accore, 500/1023 revient au même que 5.0/1023.0/0.01, mais au moins, si un jour tu passes sur arduino DUE avec un ADC en 3.3V au lieux de 5.0V ou si tu passes sur un capteur à 20mV/°C, tu saurais comment changer ton code ;)

      • Partager sur Facebook
      • Partager sur Twitter
        11 février 2021 à 21:32:18

        "Ensuite, bien que ta formule tempc=(vout*500)/1023; soit juste"

        Pas tout à fait, il faut diviser par 1024.

        • Partager sur Facebook
        • Partager sur Twitter

        thermomètre proteus + arduino problème led

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown