Aller au contenu


Photo
- - - - -

Arduino thermometre


14 réponses à ce sujet

#1 dydyouaki

dydyouaki

    Membre passionné

  • Membres
  • PipPipPip
  • 792 messages
  • Gender:Male

Posté 06 février 2013 - 09:22

Salut ,

J'aimerais créer un thermomètre avec ma Arduino et qui s'affiche sur mon afficheur 7 segments.

Le problème c'est que j'ai chercher sur mon ami google et youtube des circuits/schémas , mais je n'ai rien trouver.

Donc je m'adresse a vous aujourd'hui , comment réaliser ceci ?
je veux que mon capteur de temperature actualise tout les seconde la temperature dans laquelle il se trouve et qui me l'affiche sur mon afficheur.
Je crois avoir besoin de :

2 X afficheurs 7 segments( pour deux chiffre)
1 X capteur de température ( lequel ? )
ma carte arduino

Et manque t-il quelque chose ??

Merci d'avance.
Merci a tous
Cordialement Dylan.

#2 ChristianR

ChristianR

    Habitué

  • Membres
  • PipPip
  • 474 messages
  • Gender:Male
  • Location:Isère (38)
  • Interests:Arduino, programmation, électronique...

Posté 07 février 2013 - 12:21

Tu as besoin de quelle précision ?

J'ai un petit montage (juste 3 fils ) avec un capteur comme ça (dth 11) + le code Arduino
Image IPB
qui permet d'afficher la température (et l'humidité de l'air dans la foulée) chaque seconde.
Humidité à ± 5%, et température à ± 2°C.

Il existe aussi des capteurs plus précis (0.5°C).
Christian

#3 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 10 212 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 07 février 2013 - 12:23

Une simple thermistance pour le capteur de température.

et puis je dirais une résistance du fil une alimentation et un programme :P et là je pense que tu auras tout! =)

ah si il te faudra un thermomètre étalon :P

(On peut même préciser une résistance ajustable pour la résistance mais bon c'est pas absolument nécessaire car une simple résistance de la bonne valeur suffit :P )

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#4 dydyouaki

dydyouaki

    Membre passionné

  • Membres
  • PipPipPip
  • 792 messages
  • Gender:Male

Posté 07 février 2013 - 05:51

Tu as besoin de quelle précision ?

J'ai un petit montage (juste 3 fils ) avec un capteur comme ça (dth 11) + le code Arduino
Image IPB
qui permet d'afficher la température (et l'humidité de l'air dans la foulée) chaque seconde.
Humidité à ± 5%, et température à ± 2°C.

Il existe aussi des capteurs plus précis (0.5°C).


Je veux bien le montage avec le code :D

Une simple thermistance pour le capteur de température.

et puis je dirais une résistance du fil une alimentation et un programme :P/> et là je pense que tu auras tout! =)

ah si il te faudra un thermomètre étalon :P/>

(On peut même préciser une résistance ajustable pour la résistance mais bon c'est pas absolument nécessaire car une simple résistance de la bonne valeur suffit :P/> )



J'avais pensais a une thermistance , mais est elle aussi précis qu'un capteur de température ?

Je ne demande pas a avoir la température exacte au millièmes de degrés prés , mais qu'il soit precis. C'est pour un projet d'électronique a l'école (système de température pour serre ).

En tout cas merci beaucoup !
Merci a tous
Cordialement Dylan.

#5 ChristianR

ChristianR

    Habitué

  • Membres
  • PipPip
  • 474 messages
  • Gender:Male
  • Location:Isère (38)
  • Interests:Arduino, programmation, électronique...

Posté 07 février 2013 - 09:08

Une thermistance peut être précise, mais la réponse en température n'est pas linéaire (exponentielle négative), et propre à chaque capteur
Il faut l'étalonner individuellement.
Image IPB
http://www.ni.com/white-paper/3643/fr
Christian

#6 hmnrobots

hmnrobots

    Habitué

  • Membres
  • PipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 07 février 2013 - 09:28

le LM35 est pré-calibré, lecture directe 10mv/°C
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#7 dydyouaki

dydyouaki

    Membre passionné

  • Membres
  • PipPipPip
  • 792 messages
  • Gender:Male

Posté 07 février 2013 - 02:00

Ok . Donc que me conseiller vous ?

j'ai trouver sur internet differents capteurs comme le DS18B20 ou le TMP36. Qu'en pensez vous ?
Merci a tous
Cordialement Dylan.

#8 hmnrobots

hmnrobots

    Habitué

  • Membres
  • PipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 07 février 2013 - 03:32

Ok . Donc que me conseiller vous ?

j'ai trouver sur internet differents capteurs comme le DS18B20 ou le TMP36. Qu'en pensez vous ?

le ds18 c'est du OneWire : intérêt tout se fait sur un fil (One Wire) inconvénient : tout se fait sur un fil (One wire) c'est donc un peu plus compliqué.
TMP35 est sensiblement la même chose que LM35

The TMP35 is functionally compatible with the LM35/LM45

(qui est peut être encore plus facile à trouver):
lecture directe de la tension linéarisée et convertible en température. C'est donc plus simple
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#9 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 07 février 2013 - 07:25

Justement, j'ai commandé des capteurs de températures.
J'ai fais des tests avec en les connectant sur une Arduino qui balance lui-même les infos à un serveur js (afin d'avoir accès aux données dans une jolie interface web :P).

Le capteur en question est le MCP9701 : http://ww1.microchip.com/downloads/en/devicedoc/21942a.pdf
Il est plutôt précis et la réponse à l'air d'être linéaire (même si je ne l'ai pas testé sur tout le domaine de fonctionnement)
Le tout, c'est de l'étalonner une première fois (j'ai un écart maximum de 2°C sur les 6 capteurs que j'ai testé).

Le capteur fait 20cts (sur farnell)

Mon site internet : http://ferdinandpiette.com/


#10 dydyouaki

dydyouaki

    Membre passionné

  • Membres
  • PipPipPip
  • 792 messages
  • Gender:Male

Posté 07 février 2013 - 08:03

Je viens de commander le capteur TMP36. (Datasheet joint ci dessous)


Que veux dire étalonner ?

Fichier(s) joint(s)

  • Fichier joint  TMP36.pdf   334,54 Ko   202 téléchargement(s)

Merci a tous
Cordialement Dylan.

#11 ChristianR

ChristianR

    Habitué

  • Membres
  • PipPip
  • 474 messages
  • Gender:Male
  • Location:Isère (38)
  • Interests:Arduino, programmation, électronique...

Posté 07 février 2013 - 08:34

Etalonner, c'est comparer ton capteur avec un bon thermomètre de référence.
Ca permet de disposer de valeurs qui serviront de correctif aux mesures brutes dans ton programme, sous forme d'une petite formule qui modélise les écarts.
Christian

#12 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 10 212 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 07 février 2013 - 08:43

Je viens de commander le capteur TMP36. (Datasheet joint ci dessous)


Que veux dire étalonner ?


C'est à dire qu'il faut que tu prennes un thermo-mètre et que tu mesure la température via ce termemoètre en regardant ce que t'affiche ton capteur.

Exemple simple : tu branche ton capteur, il te sort un signal Us = 3V. Tant que tu ne l'as pas étaloner tu ne sais pas quel température il fait ! Alors que si tu sais par exemple que à 10°C tu as Us = 1V et à 20°C tu as 2V tu sais qu'avec 3V tu seras pas trop loin de 30°C par exemple si le capteur est linéaire.

Quand on t'affirme que le capteur est linéaire et qu'on te donne le coefficient directeur de la pente de ta courbe Us = f(t) il te suffit de connaitre un seul point de la courbe. Un couple : tension Us/ température . C'est l'étalonnage le plus simple .

Quand les courbes tension de sortie de capteur en fonction de la donnée mesurée ne sont pas linéaire ( car tu peux avoir des allures exponentiel etc... exemple des télémètre sharp ) Il est nécessaire de prendre plein de points de mesure, et de faire une approximation de la loi entrée sortie de ton capteur. Dans ce cas là plus tu prendras de points plus tu auras de chance d'être précis. ( même si la précision dépend aussi grandement de la répétabilité des mesures de ton capteur ... )

Voilà j'espère t'avoir aidé !



EDIT : ça fait deux fois que je me fais griller par ChristianR dans la même conversation :ph34r: :kez_12: :lol: Il est trop fort ce ChristianR ! :P
( Surtout qu'il me grille aussi dans beaucoup d'autres discussions x) Chapeau bas ;)

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#13 dydyouaki

dydyouaki

    Membre passionné

  • Membres
  • PipPipPip
  • 792 messages
  • Gender:Male

Posté 07 février 2013 - 10:08

D'accord j'ai compris !!

Merci pour vos explications !! Donc il faudra que j'étalonne mon capteur avec un thermomètre , pour savoir combien de degrés m'affiche mon capteur.


Bon , sinon je branche mon capteur sur :

5V de ma Arduino
Pin analogique
GND de ma Arduino

exacte ?!

Sinon je vais attendre de recevoir mon capteur pour le programme.

Merci a tous!
Merci a tous
Cordialement Dylan.

#14 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 10 212 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 07 février 2013 - 10:29

Exacte.

C'est un peu comme si tu branchais un potentiomètre sur ta arduino sauf que c'est la température qui joue avec le bouton ;)

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#15 dydyouaki

dydyouaki

    Membre passionné

  • Membres
  • PipPipPip
  • 792 messages
  • Gender:Male

Posté 08 février 2013 - 08:07

Je ne devrais pas mettre une résistance entre le 5V et le capteur au cas ou ? (entre 4K et 5K)

Sinon j'ai trouver sur le web un code , je l'ai verifier avec l'interface Arduino et il est bon. Qu'en pensez vous ?

// pins that 7 segment is connect to
int ledSegment[] = {
  2,3,4,5,6,7,8,9};
  
// Analog pin that TMP36 is connect to
int tempMonitor =0;


// encode the on/off state of the LED segments for the characters 
// '0' to '9' and 'DP' into the bits of the bytes
const byte numDef[11] = { 
  63, 6, 91, 79, 102, 109, 124, 7, 127, 103,128 };

void setup()
{
  Serial.begin (9600);

  // Sets the pinMode for all LEDs
  for (int x = 0; x<=7; x++)
  {
    pinMode (ledSegment[x],OUTPUT);
  }

  // enable on by one each LED to test them.
  for (int x =0;x<=7;x++){
    digitalWrite (ledSegment[x],HIGH);
    delay (50);

  }
  // disable one by one to finish test of each LED
  for (int x =0;x<=7;x++){

    digitalWrite (ledSegment[x],LOW);
    delay (50);
  }
}

void loop(){

  float temperature = getVoltage(tempMonitor);  //getting the voltage reading from the temperature sensor
  temperature = (temperature - .5) * 100;          //converting from 10 mv per degree wit 500 mV offset

  // Print temperature to serial for use in processing
 Serial.println (temperature);
  /*
 * getVoltage() - returns the voltage on the analog input defined by
   * pin
   */
  // Check Temperature is over 30
int digit1 = temperature / 10;
int digit2 = int(temperature) % 10; 
  
    setSegments( numDef[digit1] );

// Delay to display the 10's digit of the temperature
  delay (1000);

  // now display unit of the temperature
      setSegments( numDef[digit2] +  numDef[10] );

  // Delay to display the unit digit of the temperature
  delay (2000);
}

void setSegments(byte segments)
{
  // for each of the segments of the LED
  for (int s = 0; s < 8; s++)
  {
    int bitVal = bitRead( segments, s ); // grab the bit 
    digitalWrite(s+2, bitVal); // set the segment
  }
}

float getVoltage(int pin){
  return (analogRead(pin) * .004882814); //converting from a 0 to 1024 digital range
  // to 0 to 5 volts (each 1 reading equals ~ 5 millivolts
}

Merci a tous
Cordialement Dylan.



Répondre à ce sujet



  


1 utilisateur(s) li(sen)t ce sujet

0 members, 1 guests, 0 anonymous users