Vous êtes sur la page 1sur 11

RAPPORT DE L’ACTIVITÉ

PRATIQUE
Etude, Conception et simulation d’un thermomètre numérique à base de
microcontrôleur

Branche : Énergie électrique et industrie


numérique

17 MARS 2023

Année universitaire : 2022/2023 Préparé par : EL FAZ HIBA


 Introduction :
Le thermomètre est un instrument indispensable pour mesurer la température
d'un environnement donné. Dans le cadre de notre activité pratique, nous avons
étudié, conçu et simulé un thermomètre numérique à base de microcontrôleur
pour mesurer la température ambiante d'un local, plus précisément la
température intérieure.

 Objectif :
Notre objectif était de concevoir un montage simple et efficace à base de
microcontrôleur, de capteur de température et d'afficheur 7 segments (AFF).
Nous avons donc étudié différentes solutions techniques pour réaliser notre
thermomètre numérique, en nous basant sur les dernières avancées
technologiques en matière de microcontrôleurs et de capteurs de température.
Nous avons choisi un microcontrôleur programmable pour sa flexibilité et sa
facilité d'utilisation. Le capteur de température que nous avons utilisé est un
capteur numérique de température. Nous avons opté pour un afficheur 7
segments pour afficher la température mesurée en temps réel.
Dans ce rapport, nous allons présenter les différentes étapes de notre activité
pratique, de l'étude et la conception de notre thermomètre numérique à la
simulation de son fonctionnement. Nous allons également discuter des résultats
obtenus et des améliorations possibles pour notre montage.
En somme, notre travail consiste à proposer une solution simple et efficace pour
mesurer la température ambiante d'un local en utilisant les dernières avancées
technologiques en matière de microcontrôleurs et de capteurs de température.
T°C
Capteur µContr

°C
AFF

Bloc diagramme qui donne la composition du système étudié

 Instruments utilisés:
Microcotroleur(PIC16F876A) :

Caractéristiques :
- Consommation : moins de 2mA sous 5V à 4 MHz.
- Architecture RISC : 35 instructions de durée 1 ou 2 cycles.
- Durée du cycle : Période de l'oscillateur quartz divisée par 4 soit 200 ns pour
un quartz de 20 MHz.
- Deux bus distincts pour le code programme et les data.
- Code instruction : mot de 14 bits et compteur programme (PC) sur 13 bits, ce
qui permet d'adresser 8 K mots ( de h'0000' à h'1FFF')
- Bus DATA sur 8 bits.
- 33 Ports Entrée-Sortie bidirectionnels pouvant produire 25 mA par sortie.
PORTA = 6 bits et PORTB PORTC et PORTD = 8bits PORTE = 3 bits pour le
16F877 et 22 I/O seulement pour le 16F876.
- 4 sources d'interruption :
- Externe par la broche partagée avec le Port B : PB0
- Par changement d'état des bits du Port B: PB4 PB5 PB6 ou PB7
- Par un périphérique intégré dans le chip: écriture de Data en EEPROM
terminée, conversion analogique terminée, réception USART ou I2C.
- Par débordement du Timer.
- 2 Compteurs 8 bits et 1 compteur 16 bits avec pré diviseur programmable.
- Convertisseur analogique 10 bits à 8 entrées pour le 16F877 et 4 entrées pour
le 16F876.
- UART pour transmission série synchrone ou asynchrone.
- Interface I2C.
- 2 modules pour PWM avec une résolution de 10 bits.
- Interface avec un autre micro: 8 bits + 3 bits de contrôle pour R/W et CS.
- 368 Octets de RAM
- 256 Octets d'EEPROM Data.
- 8K mots de 14 bits en EEPROM Flash pour le programme (h'000' à h'1FFF').
- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la
RAM ou aux registres internes du PIC. Tous les deux sont des registres 8 bits.

Mémoires du PIC16F876A:
Le PIC 16F876A dispose de plusieurs types de mémoire qui peuvent
être utilisés pour stocker des données et des programmes. Voici une
description de chaque type de mémoire :
 La mémoire programme (Program Memory) : cette mémoire est
utilisée pour stocker le code exécutable du programme. Le PIC 16F876A
dispose de 14 336 octets de mémoire programme, ce qui est suffisant
pour la plupart des applications.
 La mémoire données (Data Memory) : cette mémoire est utilisée pour
stocker les variables et les données temporaires utilisées par le
programme. Le PIC 16F876A dispose de 368 octets de mémoire
données.
 La mémoire EEPROM (Electrically Erasable Programmable Read-Only
Memory) : cette mémoire est utilisée pour stocker des données non
volatiles, qui sont conservées même après que le microcontrôleur a été
éteint. Le PIC 16F876A dispose de 256 octets de mémoire EEPROM.
 La mémoire RAM (Random Access Memory) : cette mémoire est
utilisée pour stocker des données temporaires utilisées par le
programme. La mémoire RAM est volatile, ce qui signifie qu'elle est
effacée lorsque le microcontrôleur est éteint. Le PIC 16F876A dispose
de 368 octets de mémoire RAM.

Modélisation du capteur C (LM35) :

Le LM35 est un capteur de température de précision qui peut être utilisé pour mesurer la
température dans les applications électroniques. Il convertit la température en une tension de
sortie proportionnelle à la température en degrés Celsius (°C). Le LM35 est un capteur
analogique et peut être utilisé avec un microcontrôleur pour mesurer la température dans les
applications électroniques. Il est alimenté en tension continue de 4V à 30V et a une plage de
mesure de -55°C à 150°C avec une précision de ±0,5°C à 25°C. Le facteur d’échelle de sortie
du LM35 est de 10 mV/°C et il fournit une tension de sortie de 250 mV à 25°C.
Spécifications du capteur de température analogique LM35 :

Pour utiliser le LM35 avec un microcontrôleur, il est nécessaire de mesurer la tension de


sortie du capteur à l'aide d'un convertisseur analogique-numérique (CAN) intégré dans le
microcontrôleur. La tension de sortie du LM35 est proportionnelle à la température en degrés
Celsius, et peut être convertie en une valeur numérique utilisable par le microcontrôleur en
utilisant la formule suivante : Température (°C) = (Tension de sortie en volts) x 100 Par
exemple, si la tension de sortie du LM35 est de 0,5 V, la température mesurée sera de 50°C. Il
est important de noter que le LM35 doit être connecté à une source d'alimentation régulée et
stable pour garantir une mesure précise de la température. Il doit également être protégé
contre les interférences électromagnétiques et les variations de tension pour éviter des
mesures de température erronées. Le LM35 est un capteur de température de précision qui
peut être utilisé avec un microcontrôleur pour mesurer la température dans les applications
électroniques. Il est facile à utiliser et offre une précision élevée pour une gamme de
températures étendue. 

 Le code en language C sur MATLAB :


/*
* File: tempera.c
* Author: Electronic Store
*
* Created on 1 avril 2023, 04:52
*/

#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code
protection off)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>

// Inclure la bibliothèque standard C pour les types entiers


#include <stdint.h>

// Tableau de correspondance des chiffres pour l'affichage sur le 7 segments


const int CODE7SEG[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned short a, b,m,temp =0,p; // Variables globales
void INIT_PORT(); // Fonction d'initialisation des ports B et C
void INIT_CAN(void);
int LECT_CAN();
void CONV_T(unsigned short x);// Fonction de conversion d'un nombre en BCD pour
l'affichage sur deux 7 segments
void AFF_T(unsigned short d1, unsigned short d2); // Fonction d'affichage des chiffres sur les
7 segments

// Fonction principale
void main(void) {

INIT_PORT(); // Initialisation des ports


INIT_CAN(); // Initialiser le convertisseur A/N pour la lecture de la température
while (1)
{
LECT_CAN();// Lecture de la température à partir du capteur LM35

// Affichage de la température sur les afficheurs 7 segments


if (temp > 60) // Si la température est supérieure à 60, afficher juste 99
{
CONV_T(60);
AFF_T(a,b); // Afficher "99" sur les afficheurs 7 segments
}
else
{
CONV_T(temp);

AFF_T(a,b); // Afficher les dizaines et les unités de la température sur les afficheurs 7
segments
}
}
}

void INIT_PORT() {
TRISC = 0x00;
PORTC = 0x00;
TRISA = 0x01; // Broche RA0 (AN0) configurée comme entrée
PORTA = 0x00;
}

void INIT_CAN(void)
{

// Configuration du registre ADCON0 pour l'entrée analogique et les paramètres de


conversion
ADCON0 = 0b01000001;

// Configuration du registre ADFM pour sélectionner l'alignement des bits


ADCON1 = 0b10000000;// Alignement à droite, les 8 bits les plus significatifs sont stockés
dans ADRESH, les 2 bits les moins significatifs dans ADRESL

// Configuration du registre CMCON pour désactiver les comparateurs analogiques


CMCON = 0b00000111; // Désactiver les comparateurs

int LECT_CAN()
{
GO = 1; // Lancer la conversion A/N
while (GO); // Attendre que la conversion soit terminée
temp = (unsigned int)(ADRESH << 8) + ADRESL; // Stocker la valeur de la
conversion dans temp
temp = (temp * 500) / 1023; // Convertir la valeur en degrés Celsius
return temp;
}

void CONV_T(unsigned short x)


{
a = x / 10;
b = x - a * 10;
}
// Fonction d'affichage des chiffres sur les 7 segments
void AFF_T(unsigned short d1, unsigned short d2)
{

PORTC = CODE7SEG[d2]; // Envoi du code pour afficher le chiffre correspondant

m=0x80+CODE7SEG[d1] ;
PORTC = m; // Envoi du code pour afficher le chiffre correspondant

 Simulation sur ISIS:

Les données de datasheet et cahier de charge :


- 0 V ≤Ve≤ 5 V (mode unipolaire) ;
- FQ = 1MHz ;
- T AD = 1.6 µS ;
- RA0 comme entré analogique (NA0) ;
Configuration de ADCON0 :
 ADON = 0 ; c’est à dire le CA/N sous tension.
 GO_nDONE = 0 ;
 RA0 entré analogique (NA0) : CH2:CH0=000 ;
 On calcule tout d’abord Tcy à condition T AD = 1.6 µS < Tcy ;
On sait que : FQ = 1MHz
Donc : (Fosc/2) = 0.5 MHz ;
Alors :Tcy=(1/0.5*106 )= 2µs => T AD = 1.6 µs < Tcy=2 µs
En constate que :
ADCS1= 0 ;
ADCS0= 0 ;
ADCON0 = 0x01 ;
Configuration de ADCON0 :
 PCFG3 : PCFG0=1110 ; car RA0 est une entré analogique.
 ADCS2= 0 ; d’après le calcule Tcy.
 ADFM =1 ; En choisie une justification vers la droite.
ADCON1 = 0x8E ;

 Conclusion:

L'étude, la conception et la simulation d'un thermomètre numérique à base de microcontrôleur


pour mesurer la température ambiante dans un local est une activité pratique très intéressante.
Le rapport montre que le projet a été mené avec succès en utilisant un microcontrôleur, un
capteur de température et un afficheur 7 segments programmé en langage C, simulé sur ISIS.
En conclusion, l'étude, la conception et la simulation d'un thermomètre numérique à base de
microcontrôleur pour mesurer la température ambiante dans un local sont une expérience
pratique intéressante et instructive. Le rapport montre que le projet a été mené avec succès, ce
qui prouve la faisabilité de l'utilisation de microcontrôleurs pour des applications de mesure
de température. Le projet peut être utilisé comme base pour d'autres projets similaires et
pourrait être amélioré pour des applications plus complexes.

Vous aimerez peut-être aussi