Vous êtes sur la page 1sur 10

Mini projet Thermomtre base de pic

16F877

Bon ...On va profiter de cette journe de grve pour travailler un peu !


Ce montage a t demand par une petite socit de formation lyonnaise. Le
microcontrleur tait impos. Le capteur,un thermocouple type K, aussi.

Oui, le microcontrleur PIC16F877 est un peu gros pour cette


application simple !

On va tout d'abord amplifier le signal fourni par le thermocouple.


On utilisera un circuit AD595, pour un type K.

Schma :

Il faut amplifier, un thermocouple donne un signal trs faible ;


environ
40 micro Volts par degr C. Le schma est trs simple, mais le circuit
AD595 est assez cher ! Il amplifie mais ralise aussi la compensation de
soudure froide.
( voir les explications dans la doc. de l' AD595.)

On aurait pu utiliser un petit circuit, bien moins cher, le LM35. Il a la


taille d'un
petit transistor, avec 3 pattes, et remplace la fois le thermocouple et l'AD595.
Voyons ensuite la carte d'affichage. Le microcontrleur dispose de
nombreuses.
E/S, aussi nous allons faire une carte trs simple.

Oui, 4 afficheurs et 4 dcodeurs BCD-7 segments. 0n va donc utiliser


16 sorties du microcontrleur.

La carte PIC est aussi ultra simple.( R en K - C en micro Farads ).


Port B et port D sont utiliss pour la gestion des afficheurs.

La sortie de la carte AD595 sera relie l'entre A0 qui


sera configure en entre analogique, par le programme.

Le Convertisseur Analogique Numrique ( CAN ) interne travaille en


10 bits.

Et, pour alimenter tout cela, il faudra une alim 5V - 500 mA


commune aux 3 cartes.
Bon courage ...

Les 3 cartes :

Les 3 cartes et le thermocouple K :

// PROGRAMME en C ( CCS )
// MESURE TEMPERATURE
// 01/2006
// AFFICHAGE LEDS ( 7 - SEGMENTS )
// AFFI : car. c = B0-B3 units = B4--B7
//
dizaines = D0--D3 centaines = D4--D7
#include <16F877.H>
#device ADC=10
#fuses HS,NOPROTECT,NOWDT,NOLVP
#use delay(clock=20000000)
//---------------------------------// Var. glob.
byte m,c,d,u;
//------------------------void conv_bcd(long vv)
begin
m=0;c=0;d=0;u=0;
while (vv>=1000) begin
vv=vv-1000;
m++;
end
while (vv>=100) begin
vv=vv-100;
c++;
end
while (vv>=10) begin
vv=vv-10;
d++;
end
u=vv;
end
//------------------------------void main()
begin
long mesure;
byte aff;
setup_port_a(a_analog); // port a en entree analog.
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);

set_tris_e(0x07); // port e en entree


set_tris_b(0x00); //B en sortie
PORT_B=0x00;
set_tris_d(all_out); // port d en sortie
PORT_D=0x00;
delay_ms(1000);
do begin
mesure=read_adc(); // prise en compte capteur
mesure = mesure/2; // passage en C
conv_bcd(mesure);
aff=u*16+0x0A;
PORT_B=aff; // affiche u et "c"
aff=c*16+d;
PORT_D=aff; // affiche c et d
delay_ms(1000);
end while(1);
end

Carte de programmation : PIC-01


Logiciel : IC-Prog 1.05C

--> Le programme charger dans le PIC. (.hex)

On a aussi ralis une version avec affichage sur cran LCD.

Le programme est diffrent et un peu plus compliqu. Il faut


grer l'cran LCD.
Et le programme va varier selon l'cran utilis.

DOCs en .pdf
- Dcodeur 74LS47.
- Capteur LM35.
- Ampli thermocouple : AD594 et AD595.
Liens
MICROCHIP - ( PIC ).
Compilateur C (CCS).

On a aussi ralis un prototype de rveil matin, avec des lves.

de l' EM LYON ( Ecole de Management ), pour un projet. ( janvier 2006 )

Toujours avec la carte Afficheurs 7-segments et la carte PIC.

Ce rveil avait quelques fonctions un peu spciales que l'on ne peut pas
dvoiler
encore ! C'est TOP SECRET !

3me
anne gnie lectrique

Vous aimerez peut-être aussi