Thermocouple avec Arduino Nano v3.0

Bonjour,

J'ai un Arduino Nano v3.0. J'ai un thermocouple 4 fils (2 fils + 1 fil masse + 1 fil pour le +V).
J'ai besoin de récupéré la température. J'ai mis mon fil de masse sur le pin GND et la le fil pour le +V sur 3v3.
Les deux autres fils sur pin 11 et 12 (D8 et D9).

Je suis une bille en programmation, je ne sais pas du tout comment récupérer la valeur de la température.

int thermo = 11;
int thermo1 = 12;

void setup()
{

Serial.begin(9600); //on démarre la voie série
}

void loop()
{
Serial.read(thermo);
Serial.read(thermo1);
delay(10); //fait une petite pause
}

Voila ce que j'ai fait. C'est un thermocouple type K.

Merci beaucoup

Bonjour,

Un thermocouple ça a deux fils, donc je suppose que ce dont tu parles il s'agit d'un thermocouple plus un amplificateur ou conditionneur de signal.
Il faudrait en savoir plus sur ton appareil.

Salut,

C'est un thermocouple que j'ai recup dans mon labo. Avant l'Arduino me donnait une valeur de température et d'humidité relative toutes les 10 secondes.

Le code n'a pas été fait par moi du coup je n'ai pas l'ancien code.

Je souhaite juste récupérer la valeur de température.

La réponse de Kamill est pertinente.
Un thermo couple c'est deux fils constitués chacun d'un métal particulier et soudés ensembles.
Selon la valeur de la température la réaction entre les deux métaux génèrera une tension thermo-électrique variable.

Ces engins ne s'utilisent pas brutalement sur une entrée Volt d'un voltmètre : il y a toujours une interface.

Une photo de la bestiole ?

Voici une photo de la bête

Qu'est ce que vous en pensez ?
Avant j'obtenais une valeur de température et d'humidité relative avec ça. Mais maintenant j'ai plus rien. C'est un montage 4 fils. C'est peut etre une PT100 ?

Avant j'obtenais une valeur de température et d'humidité relative avec ça.
Mais maintenant j'ai plus rien.

En PT100 4 fils, on fais passer un courant constant via les bornes 1 et 4 eton récupères la valeur de U aux bornes 2 et 3?

Je pense que c'est ce que j'ai mais comment integrer ça à l'arduino.

A ma connaissance on ne fait pas de mesure d'humidité avec une PT100.
La PT100 est surement sensible à l'humidité mais je ne pense pas que ce soit son utilisation première.
Il devait y avoir un autre capteur associé avec.

Branchement pour la température :
Je prend mon moteur de recherche favori www.qwant.fr dans le cadre de recherche j'écris PT100 et le premier lien me renvoi vers des schémas.
Tu n'as pas fais un gros effort donc je n'en ferai pas davantage, normal non ?

Aller, je n'arrive pas être méchant : une PT100 s'utilise en pont en association avec une autre résistance qui doit être peu sensible à la température donc prendre au minimum une de puissance 500 mW.
Pour faire une 500 mW avec des 125 mW il suffit juste d'en mettre 4 en parrallèle et de multiplier la valeur de la résistance par 4.

J'arrète là, je te laisse avec le moteur de recherche.
Par contre si tu as des questions précises n'hésite pas à les poser ici en expliquant ce que tu as fait.

PS : sur ce forum il y a aussi un moteur de recherche, comme le sujet a été abordé des dizaines de fois tu devrai trouver des renseignements et en français s'il vous plait.

Merci de ta réponse. Mais je ne comprends pas pourquoi ajouter une resistance alors que juste avant qu'on reset le programme, ça nous donnait une valeur de température.

J'ai trouvé de quoi il s'agit en enlevant les scotchs.
C'est ça Smart sensor solutions

Cela a commencé par être un thermo couple de type K, puis une PT100 et maintenant c'est un SFXX.
Demain ce sera quoi ?

Si tu ne commence pas à être clair rien ne sera possible.
Ici il n'y a que des bénévoles, personne n'est payé par arduino.

Voir : Les bénévoles qui répondent - Français - Arduino Forum

Je recommence : en haut à gauche : Search the arduino Forum : SHT71

et plein de réponses, peu en français sur le sujet il est vrai.

Donc commences a bosser le sujet, je ne connais le SFTXX pas plus que toi.

pepe:
D8 et D9 sont des entrées/sorties numériques exclusivement (D=Digital). Tu n'obtiendras rien en y branchant un capteur analogique (s'il s'agit bien de cela). Pour lire des tensions, il faut utiliser des entrées analogiques, comme A0 et A1 (A=Analog) qu'on trouve respectivement sur les pins DIP 19 et 20 de l'Arduino Nano. (Par convention, les pins des circuits DIP sont numérotées dans le sens antihoraire quand on regarde le circuit du dessus.)

Euh ... non le SHT71 est bien un capteur digital comme le DHT 22
il y a même une lib pour l'arduino

Bonjour,

J'ai reussi à codé le capteur. Je reçois bien une valeur de température et d'humidité relative correcte. Le seule problème c'est que j'ai une mesure toutes les 5 secondes environs. Ce que je souhaiterai ce sont des mesures instantanées (une toutes les 3 ms par exemple). J'ai essayé de modifier sensor query period mais ça ne fait rien. Voici mon code

#include <Sensirion.h>

const uint8_t dataPin =  9;              // SHT serial data
const uint8_t sclkPin =  8;              // SHT serial clock
const uint8_t ledPin  = 13;              // Arduino built-in LED
const uint32_t TRHSTEP   = 5000UL;       // Sensor query period
const uint32_t BLINKSTEP =  250UL;       // LED blink period

Sensirion sht = Sensirion(dataPin, sclkPin);

uint16_t rawData;
float temperature;
float humidity;
float dewpoint;

byte ledState = 0;
byte measActive = false;
byte measType = TEMP;

unsigned long trhMillis = 0;             // Time interval tracking
unsigned long blinkMillis = 0;

void setup() {
    Serial.begin(9600);
    pinMode(ledPin, OUTPUT);
    delay(15);                           // Wait >= 11 ms before first cmd
    // Demonstrate blocking calls
    sht.measTemp(&rawData);              // sht.meas(TEMP, &rawData, BLOCK)
    temperature = sht.calcTemp(rawData);
    sht.measHumi(&rawData);              // sht.meas(HUMI, &rawData, BLOCK)
    humidity = sht.calcHumi(rawData, temperature);
    dewpoint = sht.calcDewpoint(humidity, temperature);
    logData();
}

void loop() {
    unsigned long curMillis = millis();          // Get current time

    // Rapidly blink LED.  Blocking calls take too long to allow this.
    if (curMillis - blinkMillis >= BLINKSTEP) {  // Time to toggle the LED state?
        ledState ^= 1;
        digitalWrite(ledPin, ledState);
        blinkMillis = curMillis;
    }

    // Demonstrate non-blocking calls
    if (curMillis - trhMillis >= TRHSTEP) {      // Time for new measurements?
        measActive = true;
        measType = TEMP;
        sht.meas(TEMP, &rawData, NONBLOCK);      // Start temp measurement
        trhMillis = curMillis;
    }
    if (measActive && sht.measRdy()) {           // Note: no error checking
        if (measType == TEMP) {                  // Process temp or humi?
            measType = HUMI;
            temperature = sht.calcTemp(rawData); // Convert raw sensor data
            sht.meas(HUMI, &rawData, NONBLOCK);  // Start humidity measurement
        }
        else {
            measActive = false;
            humidity = sht.calcHumi(rawData, temperature); // Convert raw sensor data
            dewpoint = sht.calcDewpoint(humidity, temperature);
            logData();
        }
    }
}

void logData() {
 Serial.print("Temperature = ");
Serial.print(temperature);
 Serial.print(" C, Humidity = ");
Serial.print(humidity);

Serial.print(" %, Dewpoint = ");
Serial.print(dewpoint);
Serial.println(" C");
}
[\code]

Bonjour,

Quelle est l'utilité de faire une mesure de température et d'humidité toutes les 3ms? Tu penses vraiment que tu vas avoir une variation significative en 3ms
De plus le capteur ne le permet pas, sur le chronogramme de la datasheet il est fait mention d'un temps de mesure de 80 ms auquel il faut ajouter les temps d'envoi de commande et de réception de mesure.

Pour répondre quand même à ta question, dans ton programme tu as une tempo de 5000 ms entre chaque mesure.const uint32_t TRHSTEP   = 5000UL;       // Sensor query periodTu peux sans doute la réduire.