
Arduino thermometre
#1
Posté 06 février 2013 - 09:22
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.
Cordialement Dylan.
#2
Posté 07 février 2013 - 12:21
J'ai un petit montage (juste 3 fils ) avec un capteur comme ça (dth 11) + le code Arduino

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).
#3
Posté 07 février 2013 - 12:23
et puis je dirais une résistance du fil une alimentation et un programme

ah si il te faudra un thermomètre étalon

(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

Si mon commentaire vous a plus laissez nous un avis !
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!
#4
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
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

Une simple thermistance pour le capteur de température.
et puis je dirais une résistance du fil une alimentation et un programme/> et là je pense que tu auras tout! =)
ah si il te faudra un thermomètre étalon/>
(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/> )
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 !
Cordialement Dylan.
#6
Posté 07 février 2013 - 09:28
http://hmnrobots.blogspot.fr/
#8
Posté 07 février 2013 - 03:32
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é.Ok . Donc que me conseiller vous ?
j'ai trouver sur internet differents capteurs comme le DS18B20 ou le TMP36. Qu'en pensez vous ?
TMP35 est sensiblement la même chose que LM35
(qui est peut être encore plus facile à trouver):The TMP35 is functionally compatible with the LM35/LM45
lecture directe de la tension linéarisée et convertible en température. C'est donc plus simple
http://hmnrobots.blogspot.fr/
#9
Posté 07 février 2013 - 07:25
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

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/
#12
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




( Surtout qu'il me grille aussi dans beaucoup d'autres discussions x) Chapeau bas

Si mon commentaire vous a plus laissez nous un avis !
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!
#13
Posté 07 février 2013 - 10:08
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!
Cordialement Dylan.
#14
Posté 07 février 2013 - 10:29
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 !
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!
#15
Posté 08 février 2013 - 08:07
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 }
Cordialement Dylan.
Répondre à ce sujet

1 utilisateur(s) li(sen)t ce sujet
0 members, 1 guests, 0 anonymous users