Conception, simulation et réalisation d’un thermomètre numérique الجـمــهــوريـــة الجـــزائــريـــة الديمـــقــراطــيــة الـــشــعــبــيـــة République Algérienne Démocratique et Populaire وزارة التــــعــــليـــــم العـــــــالي و البـــــحث العـــلـــمــي Ministère de l’Enseignement Supérieur et de la Recherche Scientifique ﺍﻠﻤﺪﺭﺳﺔ ﺍﻠﻌﻠﻴﺎ ﻟﻟﻌﻟﻮﻢ ﺍﻠﺘﻃﺑﻳﻗﻳﺔ - ﺗﻠﻤﺳﺎﻥ Ecole Supérieure en Sciences Appliquées-Tlemcen Journée du Savoir 16 Avril 2017 Conception, simulation et réalisation d’un thermomètre numérique Spécialité : GENIE ELECTRIQUE Option : ENERGIE RENOUVELABLE Modules : ELECTRONIQUE ANALOGIQUE et ELECRONIQUE NUMERIQUE, 3 année Ingénieur Présenté par : KHECHAFI SOFIANE et ZEMIRLINE NASSIM RESUME: Dans ce travail, la simulation sous ISIS et la réalisation pratique d’un thermomètre numérique à base du capteur de température le LM335 sont montrées. Le circuit réalisé est piloté par la carte Arduino Uno R3 qui permet d’afficher la valeur de la température sur deux afficheurs sept segments à anodes communes. SCHEMA DU CIRCUIT ELECTRIQUE ET FONCTIONNEMENT: Le LM335 est un capteur de température précis est facilement calibré. Il fonctionne comme une diode Zener dont la tension de claquage est directement proportionnelle à la température absolue avec un facteur proportionnel de +10mV/K et une impédance dynamique inferieur à 1Ω. Le LM335 peut fonctionner de -40°C à 100°C sous un courant constant pouvant varier de 400μA à 5mA. La tension à ces bornes est de 2,98V à 25°C, le montage le plus utilisé pour ce composant est donnée dans la figure 1. La tension continue (Out1) détectée par le LM335 est appliquée à l’entrée analogique de la carte Arduino Uno R3 pour le calcul de la température en utilisant notre code fait sous l’environnement IDE. L’affichage de la température (valeur ou donnée numérique) sur les deux afficheurs 7 segments à anode commune et réalisé en utilisant un seul décodeur BCD-to-7 segments (74LS47) et deux transistors (BC550) montés en commutation. CODE ADUINO: Le code que nous avons réalisé sous IDE pour notre thermomètre numérique est le suivant: /* Programme permettant d'afficher la valeur de la température en utilisant le capteur LM335 */ int outputPin= 0; // A0 entrée analogique de arduino // définition des broches du décodeur 7 segments // (vous pouvez changer les numéros si vous voulez) const int bit_A = 2; const int bit_B = 3; const int bit_C = 4; const int bit_D = 5; // définitions des broches des transistors pour chaque afficheur const int alim_dizaine = 6; // les dizaines const int alim_unite = 7; // les unites void setup() { // Les broches sont toutes des sorties pinMode(bit_A, OUTPUT); pinMode(bit_B, OUTPUT); pinMode(bit_C, OUTPUT); pinMode(bit_D, OUTPUT); pinMode(alim_dizaine, OUTPUT); pinMode(alim_unite, OUTPUT); // Les broches sont toutes mises à l'état bas digitalWrite(bit_A, LOW); digitalWrite(bit_B, LOW); digitalWrite(bit_C, LOW); digitalWrite(bit_D, LOW); digitalWrite(alim_dizaine, LOW); digitalWrite(alim_unite, LOW); } void loop() // fonction principale int valeur= analogRead(outputPin); float valeurVolt= ((valeur*5)/1024.0); float valeurTempraturekelvin= valeurVolt*100; int valeurTempraturecelsius= valeurTempraturekelvin-273; float valeurTempraturefahrenheit= ((valeurTempraturecelsius*9)/5+32); afficher_nombre(valeurTempraturecelsius); // fonction permettant d'afficher un nombre sur deux afficheurs void afficher_nombre(char nombre) long temps; // variable utilisée pour savoir le temps écoulé... char unite = 0, dizaine = 0; // variable pour chaque afficheur if(nombre > 9) // si le nombre reçu dépasse 9 dizaine = nombre / 10; // on récupère les dizaines unite = nombre - (dizaine*10); // on récupère les unités temps = millis(); // on récupère le temps courant // tant qu'on a pas affiché ce chiffre pendant au moins 500 millisecondes // permet donc de pouvoir lire le nombre affiché while((millis()-temps) < 500) { // on affiche le nombre // d'abord les dizaines pendant 10 ms // le transistor de l'afficheur des dizaines est saturé, // donc l'afficheur est allumé digitalWrite(alim_dizaine, HIGH); // on appel la fonction qui permet d'afficher le chiffre dizaine afficher(dizaine); // l'autre transistor est bloqué et l'afficheur éteint digitalWrite(alim_unite, LOW); delay(10); // puis les unités pendant 10 ms // on éteint le transistor allumé digitalWrite(alim_dizaine, LOW); // on appel la fonction qui permet d'afficher le chiffre unité afficher(unite); // et on allume l'autre digitalWrite(alim_unite, HIGH); } // fonction écrivant sur un seul afficheur // on utilise le même principe que vu plus haut void afficher(char chiffre) digitalWrite(bit_A, LOW); digitalWrite(bit_B, LOW); digitalWrite(bit_C, LOW); digitalWrite(bit_D, LOW); if(chiffre >= 8) digitalWrite(bit_D, HIGH); chiffre = chiffre - 8; if(chiffre >= 4) digitalWrite(bit_C, HIGH); chiffre = chiffre - 4; if(chiffre >= 2) digitalWrite(bit_B, HIGH); chiffre = chiffre - 2; if(chiffre >= 1) digitalWrite(bit_A, HIGH); chiffre = chiffre - 1; SCHEMA DU CIRCUIT IMPRIME: Après avoir s’assurer du fonctionnement du circuit sous l’environnement ISIS, nous sommes passés au dessin du schéma du circuit imprimé sous l’environnement ARES (Figure 2). CONCLUSION: Notre produit final du thermomètre numérique que nous avons conçu, simulé, réalisé et testé est présenté sur la figure 4. VUE 3D: Une vue en 3D de notre thermomètre numérique est montrée dans la figure 3. Remerciements: Nous remercions vivement les responsables de notre école pour le temps et l’espace qu’ils nous ont alloués pour réaliser notre modeste travail.