Vous êtes sur la page 1sur 10

compte rendu du TP :Réalisation

d’un ohmmètre numérique


Introduction
On désire réalisé un ohmmètre numérique, pour cela on considère le montage ci-dessous constitué de la partie de
mesure analogique constitué d’un pont diviseur, de la partie calcul et traitement a base du microcontrôleur
PIC16F877A et de la partie affichage de la mesure utilisant un afficheur LCD.
La partie circuit de mesure est basé sur un pont diviseur de tension R1 et
R2, la résistance RM est la résistance qu’on souhaite mesurer. le choix
des résistances R1 et R2 dépend de la plage de variation de la résistance
à mesurer.
Si la tension de référence des CAN est choisi égal à 5 V et afin de
gagner en précision de la mesure de RM on a intérêt d'avoir une tension
Vs min proche à zéro volt et une tension Vs max proche à 5 volts quelle
que soit la résistance RM le choix des résistances R1 R2 dépend de la
valeur de la résistance construite mesurer et de la dynamique de la
tension de sortie.
Selon la valeur du tension au borne du R1 (Vs) on va déduire la valeur de la résistance RM

 
RM=

Cette relation est vrai si et seulement si la variation est linéaire entre Vs et RM


On va tracer la variation de Vs en fonction de RM Sous Matlab on
fixent R2=1K Ω et variant R1.

Cas 1: R1=1MΩ et R2=1KΩ

Cas 2: R1=100KΩ et R2=1KΩ


Cas 3: R1=10KΩ et R2=1KΩ
R1=1M

R1=100K

R1=10K
Interprétation du graphes:

Pour mesurer des résistances RM<0.25 M =====> R1=10K

Pour mesurer des résistances RM<1 M =====> R1=100K

Pour mesurer des résistances RM>1 M =====> R1=1M

On va travailler sur le deuxième cas R1=100K


Code sous MikroC
//Configuration de l’afficheur LCD
Sbit LCD_RS at RB4_bit;
Sbit LCD_EN at RB5_bit;
Sbit LCD_D4 at RB0_bit;
Sbit LCD_D5 at RB1_bit;
Sbit LCD_D6 at RB2_bit;
Sbit LCD_D7 at RB3_bit;
Sbit LCD_RS_Direction at TRISB4_bit;
Sbit LCD_EN_Direction at TRISB5_bit;
Sbit LCD_D4_Direction at TRISB0_bit;
Sbit LCD_D5_Direction at TRISB1_bit;
Sbit LCD_D6_Direction at TRISB2_bit;
Sbit LCD_D7_Direction at TRISB3_bit;
int vin ; Rm_ohm=(50000/vs)-11000;
float vs; floatToStr(Rm_ohm,Text2);
float Rm_ohm;
char Text1[]="Resistance RM :"; Lcd_Cmd(_LCD_CLEAR);
char Text2[6]; //
char Text3 []=”ohms."; Lcd_Cmd(_LCD_CURSOR_O
void main() { FF);
ADCON1=0x00; Lcd_Out(1,1,Text1);
Void ADC_Init(); Lcd_Out(2,1,Text2);
Lcd_Init(); Lcd_Out(2,7,Text3);
While(1) Lcd_Out(2,7," ");
{ delay_ms(1000);
vin=ADC_Read(1); }
vs=(5*(float)vin)/1023; }