Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mesure de température via LM35 sur Arduino

Mesure pas stable

    28 février 2016 à 16:10:55

    Bonjour,

    Je viens vers vous car j'ai du mal à utiliser mes "thermomètre" LM35 fraichement reçues.

    J'ai fais un montage très simple pour commencer en alimentant la LM35 avec l'Arduino, lui même branché en USB, et la sortie du LM35 au pin Analog1.

    Le code est très simple :

    int val;
    int tempPin = 1;
    
    void setup()
    {
    Serial.begin(9600);
    }
    void loop()
    {
    val = analogRead(tempPin);
    float cel = 0.48828125*val;
    
    Serial.print("TEMPRATURE = ");
    Serial.print(cel);
    Serial.print("*C");
    Serial.println();
    delay(2000);
    }

    Mais j'obtiens une mesure pas stable du tout qui peut aller de 0 à 40°C

    J'ai ensuite essayé une alimentation de 5V extérieure mais la c'est presque pire

    Enfin, en enlevant la LM35 et en laissant juste un cable j'arrive à avoir des valeurs qui vont du simple au double...

    Est-ce que vous sauriez me dire si j'ai raté quelque chose? S'il faut faire un filtre pour la mesure?

    Merci d'avance et bon dimanche

    -
    Edité par Supernik 28 février 2016 à 16:13:08

    • Partager sur Facebook
    • Partager sur Twitter
      28 février 2016 à 21:06:56

      bonsoir, à la page 13 tu as un schema, il fait un exemple 10mv/degré

      http://www.ti.com/lit/ds/symlink/lm35.pdf

      avec ton arduino, peut tu mesurer directement cette petite tension décade de 10 mv ?,

      si son entrée analogique CAN n'est pas possible, il faudrait adapter la tension avec des AOP (ampli opérationnel), pour le savoir il faut regarder les caractéristiques du CAN d'entrée de l'arduino.

      -
      Edité par keo 28 février 2016 à 21:09:09

      • Partager sur Facebook
      • Partager sur Twitter
      projet de création domotique avec beaglebone avec nodejs
        29 février 2016 à 13:17:26

        L'ADC de l'arduino est en 10 bits sur du 5V soit 4.88mV par unité de conversion.

        Donc théoriquement, ça permet de mesurer la sortie du LM35 à 0.5°C prêt.

        En pratique, compte tenu du bruit et de la précision des composants, ce sera plutôt à 1 ou 2°C prêt voir pire.

        Mais de là à dire que cela varie de 0 à 40°C, ce n'est pas normal.

        Comment as tu câblé le LM35 ? (une petite photo si possible, ça pourrait être utile).

        • Partager sur Facebook
        • Partager sur Twitter
          29 février 2016 à 22:34:38

          Bonsoir,

          @keo j'ai ouvert la doc technique à la page 13, mais je comprends pas où tu veux que je mesure cette tension de 10mV, j'ai du mal comprendre ce que tu voulais que je regarde.

          @lorrio

          voilà une photo du montage :

          J'ai repris le montage exact d'ici (voir aux 4/5 de la page) :

          https://zestedesavoir.com/tutoriels/686/arduino-premiers-pas-en-informatique-embarquee/746_les-capteurs-et-lenvironnement-autour-darduino/3435_differents-types-de-mesures/

          Et pour illustrer ce que je disais, les 10 dernières valeurs relevées via la voie série :

          TEMPRATURE = 21.97*C
          TEMPRATURE = 23.93*C
          TEMPRATURE = 0.00*C
          TEMPRATURE = 0.00*C
          TEMPRATURE = 20.02*C
          TEMPRATURE = 24.41*C
          TEMPRATURE = 2.44*C
          TEMPRATURE = 0.00*C
          TEMPRATURE = 17.09*C
          TEMPRATURE = 25.39*C
          TEMPRATURE = 6.35*C

          Pour info, j'ai essayé avec le 2ème LM35 que j'ai reçu, les résultats sont du même ordre. Ensuite j'ai essayé sur un deuxième Arduino (un "vrai" made in italy) et les résultats sont du même monde, idem en changeant de port USB.

          Si vous avez des pistes donc, je suis preneur!

          Merci d'avance

          • Partager sur Facebook
          • Partager sur Twitter
            1 mars 2016 à 14:16:01

            Ce que te disais keo était juste un avertissement.

            Ton capteur te donne 10mV par degré celcus, ce qui fait à peine 200mV pour une température de 20°C, ce qui est assez faible.

            Pour mesurer cette tension avec un arduino, il faudrait éventuellement ajouter un AOP qui fait un gain de x10 pour transformer ces 200mV en 2.0V.

            Mais avant de faire ça, tu devrais essayer d'ajouter un petit filtre passe base.

            Le montage est alors le suivant :

            VCC Capteur ============================================== 5V arduino
            
            Output Capteur ======== Résistance (1k) ========++======== AnalogIn Arduino
                                                            ||
                                                            ||
                                                     Condensateur (100nF)
                                                            ||
                                                            ||
            0V Capteur =====================================++======== GND Arduino

            Sinon, pourquoi ne pas utiliser un capteur de température numérique en I2C ?

            Tu auras de bien meilleurs résultat avec un capteur numérique ;)

            -
            Edité par lorrio 1 mars 2016 à 14:16:46

            • Partager sur Facebook
            • Partager sur Twitter
              1 mars 2016 à 22:28:50

              Bonsoir!

              Je viens effectivement de comprendre l'avertissement de keo, pas sur qu'on soit à 10mV de précision sur un Arduino c'est sûr et du coup 200mV ca fait effectivement peu. Je vois l'intérêt de l'ampli-op maintenant.

              J'ai testé ton montage, effectivement le filtre fait bien son boulot!! La mesure est très stable! Mais met longtemps à varier, du coup j'ai modifié le montage en mettant un condo 10nF et je trouve encore ça plus satisfaisant :) Merci bien pour l'idée du filtre.

              Sinon si j'ai choisi ce composant c'était parce que j'en avais vu parler sur bon nombre de tuto, et qu'il paraissait très simple d'utilisation, dommage que dans mon cas ça ne marche pas aussi bien... D'ailleurs vous pensez que ça viens du composant? Ou d'autres chose?

              Je vais regarder côté capteur numérique mais j'ai l'impression que ce n'est pas le même coût, aussi j'avais prévu de miniaturiser le montage avec un ATTiny par exemple, et peut-être même le mettre sur batterie (même conso électrique?). mais merci pour la piste!

              PS : je laisse la mesure tourner toutes la nuit, je verrais demain si on voit bien la coupure du chauffage à minuit et la reprise tôt le matin.

              • Partager sur Facebook
              • Partager sur Twitter
                1 mars 2016 à 23:09:58

                L'ADC de l'arduino est un ADC 10 bits sur du 5V donc une unité d'ADC correspond à 4.88mV.

                Pour chaque degré, l'ADC de l'arduino va donc bougé d'environ 2 unités soit une précision de 0.5°C.

                Mais ça, c'est dans la théorie la plus parfaite...

                L'arduino ne dispose pas d'alimentation analogique dédiée ni de référence de tension précise, ce qui n'est clairement pas optimal pour une mesure précise.

                Toute la partie analogique de l'arduino est alimenté par la même alimentation qui sert à la partie du coeur numérique donc c'est assez bruité.

                De plus, le régulateur de tension de l'arduino donne un 5V précis à 5% prêt donc ça ne vient pas arranger la chose...

                Du coup, mieux vaut faire un filtrage (pour avoir une mesure plus stable) ainsi qu'un étalonnage de la valeur( pour avoir une mesure plus proche de la réalité).

                -
                Edité par lorrio 1 mars 2016 à 23:11:44

                • Partager sur Facebook
                • Partager sur Twitter
                  2 mars 2016 à 13:37:15

                  Avec un ampli c'est beaucoup mieux en plus tu auras une adaptation d'impédance et avoir la possiblité d'un filtre actif .

                  Si tu as un mac hs chez toi tu trouveras des capteur collé sur des disques dur.

                  -
                  Edité par keo 2 mars 2016 à 13:38:50

                  • Partager sur Facebook
                  • Partager sur Twitter
                  projet de création domotique avec beaglebone avec nodejs
                    29 mars 2016 à 13:38:12

                    Bonjour,

                    Désolé je n’ai pas pu venir plus tôt vous tenir au courant du résultats de mes essais…

                    Malheureusement ca ne s’est pas  bien passé ^^ ce qui n’est pas déconnant face à la précision que vous m’aviez calculé. La courbe de température n’a pas bougé de la nuit (je pense que je perds grand maximum 2°C et c’est surement moins). Il va donc falloir que je me décide effectivement à passer sur un ampliop ou changer de type de capteur. Quelle piste est la meilleure d’après vous ? J’essaye de garder un montage compact, et idéalement peu énergivore ^^

                    Je vais aussi voir pour utiliser une alimentation 5V plus stable et transférer le résultat à un second arduino via RF qui lui seul sera sur l’USB, ca supprimera une partie du bruit je l’espère et c’est la configuration finale que je comptais adopter.

                    Merci en tout cas pour votre soutien J

                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 mars 2016 à 13:59:21

                      Il y a des capteurs sympa en i2c qui mesurent la température : BPM180 qui fait aussi la pression atmosphérique, HTU21D qui mesure aussi l'humidité relative. Niveau conso ça se mesure en µA.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        29 mars 2016 à 14:01:24

                        Edit: arf, grilléà 2 min prêt... :-°

                        Plutôt que de passer par de l'analogique qui n'est pas très précis sur l'arduino, tu devrais envisager d'utiliser un capteur numérique ;)

                        Exemple : https://www.sparkfun.com/products/245

                        Tu trouveras des exemples et des tutoriels à propos de ce capteur DS18B20 sur Google.

                        Mais il en existe pleins d'autres (le BMP180 par exemple).

                        -
                        Edité par lorrio 29 mars 2016 à 14:02:12

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          29 mars 2016 à 15:20:56

                          histoire de savoir de quoi tu parles, t'as un schéma ?
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Mesure de température via LM35 sur Arduino

                          × 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