Les capteurs de temperature

Accueil/Les capteurs de temperature
Les capteurs de temperature 2016-12-20T11:38:34+00:00

Project Description

Niveau: Intermédiaire

 

Matériel requis

 

Préparer liaison série

L’interface PC (plus connue sous le nom de liaison série) Cliquez sur l’espèce de loupe (?) en haut a droite normalement « moniteur série » s’affiche quand vous le survoler . Voila vous avez devant vos yeux l’interface série . Maintenant il faut l’utiliser !

//
void setup()
{
 Serial.begin(9600); // on initialise la liaison serie a 9600 bauds!
 Serial.println("Bonjour!"); // on écrit bonjour
}
void loop()
{

}

envoyer ce programme dans votre arduino et ouvrer le moniteur série : normalement bonjour s’affiche.

Branchements

On branche tout simplement le +5v du capteur au 5v de l’Arduino, le GND au GND et le signal à une entrée analogique, dans l’exemple la 0.

Le code

Le TMP36 ne vas pas nous envoyer la température (faut pas rêver) il nous envoie un signal analogique , il faut le convertir :

//
int sensorPin = 0;
    void setup()
    {
    Serial.begin(9600); /

    }
    void loop()
    {
    int reading = analogRead(sensorPin);
    float voltage = reading * 5.0;
    voltage /= 1024.0;
    Serial.print(voltage); Serial.println(" volts"); //On écrit le voltage
    float temperatureC = (voltage - 0.5) * 100 ; //conversion en degrés
    Serial.print(temperatureC); Serial.println(" degrees C");
    delay(1000);     }

Voila vous savez vous servir de la liaison série et du TMP36! (même si on a pas tout dit sur la liaison série!)

Share This Story, Choose Your Platform!

8 Commentaires

  1. Bipattes 25 décembre 2014 à 12 h 02 min␣- Répondre

    Bonjour, j’ai réalisé ce projet mais la température affichée varie tout le temps entre 13 et 25 °C, ce qui n’est pas précis du tout. Est-ce normal ?

    • arnaud39 27 janvier 2015 à 9 h 22 min␣- Répondre

      Les capteurs sont rarement précis cependant votre cas semble être un peu plus particulier : en tempts normal la température indiquée par me capteur prend du temps à s’ajuster lorsque celle-ci varie rapidement, vous avez tout le contraire ! Dans l’absolu ce n’est pas normal, le problème doit sûrement venir de votre capteur

  2. Paul 21 janvier 2015 à 23 h 10 min␣- Répondre

    Lorsque l’on utilise ce type de capteur dans la « vraie vie », il arrive que ton capteur se retrouve éloigné de quelques dizaines de centimètres de ton microcontroleur et ainsi la ligne est soumise à des perturbations electro-magnétique …
    Si tu jettes un oeil dans la datasheet, le constructeur peux te proposer un montage électronique pour filtrer le signal et conseille aussi d’utiliser du cable coaxial afin de se prémunir des parasites dans la ligne …
    Cela pourrait expliquer tes varaitions de températures observées.

  3. byhenmxb87 2 mars 2015 à 6 h 04 min␣- Répondre

    Works fine, thanks

  4. FIDELE NEYA 8 mai 2016 à 2 h 03 min␣- Répondre

    Bonjour pouvez vous expliquer la partie de la conversion en température
    je comprend pas vos operation.

  5. Yves 18 mai 2016 à 18 h 41 min␣- Répondre

    Bonjour j’ai un PFE sur le thermocouple j’ai fais la meme conversion ci dessus mais le résultat dans la simulation avec isis sur LCD est totalement different à la valeur que j’attribue en temperature au thermocouple

    je voudrai savoir à quoi est dù ce probleme ?

    je vous rappel que j’ai procedé avec deux methode : le « if » et le « switch  »

    dont voici:

    #include
    LiquidCrystal lcd(12,11,10,9,8,7);
    int capteur=A0;
    int valcapt;
    float voltage;

    void setup() {
    pinMode(0,INPUT);
    lcd.begin(16,2);

    lcd.setCursor(0,0);
    lcd.print(« Initialisation.. »);
    delay(500);

    }

    void loop() {
    valcapt= analogRead(capteur);

    float temperature =(voltage-0.5)*100; // conversion de voltage en temperature(degree)
    voltage= valcapt*5.0/1024.0;

    if (valcapt==30)
    {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(« Temp mini »);
    delay(100);
    }
    if (valcapt==35)
    {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(« Temp=35° »);
    delay(200);
    }#include
    LiquidCrystal lcd(12,11,10,9,8,7);
    int capteur=A0;
    int valcapt;
    float voltage;

    void setup() {
    pinMode(0,INPUT);
    lcd.begin(16,2);

    lcd.setCursor(0,0);
    lcd.print(« Initialisation.. »);
    delay(500);

    }

    void loop() {
    valcapt= analogRead(capteur);

    float temperature =(voltage-0.5)*100; // conversion de voltage en temperature(degree)
    voltage= valcapt*5.0/1024.0;

    if (valcapt==30)
    {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(« Temp mini »);
    delay(100);
    }
    if (valcapt==35)
    {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(« Temp=35° »);
    delay(200);
    }

    et le

    switch (valcapt)
    {
    case ‘0’:
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print( » Temp mini « );
    delay(300);

    break;
    case ‘1’:
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print( » Temp=35° « );
    delay(300);
    break;

  6. Flo 26 mai 2016 à 20 h 23 min␣- Répondre

    Bonsoir et merci.
    Lors de la vérification, le « / » sur la ligne « Serial.begin(9600); /  » m’a été signalé comme une erreur.

    Ma température affichée me semble faible « -29°c » (je vous écris de France au mois de mai). Pourquoi pas 29°c même si je pense plutôt tourner autour des 23°C. Une suggestion?

  7. Loick 28 janvier 2017 à 19 h 00 min␣- Répondre

    Bonjour, j’ai appliqué votre programme et me suis rendue compte que lorsque je regardais les températures elles étaient négatives(-30°c). J’ai donc placé un signe moins devant la conversion en degré.
    la ligne de code changée : float temperatureC =-(voltage – 0.5) * 100 ; //conversion en degrés
    Cela m’affiche maintenant une température de 30°c.

Laisser un commentaire