Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
microcontrôleur PIC16F877A
Les potentiomètres
Les diodes
Circuits à diodes
Méthode ampèremètre-voltmètre :
Le principe de la méthode consiste d’imposer une tension sinusoïdal à une fréquence fixe àla
borne du condensateur puis mesurer le courant efficace. L’impédance égale à 1/(cw) en
module égale le rapport entre la tension et le courant en valeurs efficaces.
Pour plus des renseignements sur les autres méthodes, pour pouvez télécharger le fichier
PDF suivant : Cours Mesure Capacité
Avec C_REF la capacité de référence connue est fixe avec une grande précision. C_MES : la
capacité à mesurée. La tension Vin est un tension sinusoïdal à fréquence fixe, la précision de
fréquence n’a pas trop d’importance. La tension d’entrée doit être inférieur à 5V (valeur
maximale). Pour simplifié les calculs, on prend C_REF =C1, C_MES=C2.
On constate dans l’équation (1) que la capacité C2 (C_MES) ne dépend que de la tension
d’entrée, la tension de sortie et la capacité de référence C1. La formule montre que la
capacité C2 est indépendante de la fréquence ! C’est cette équation qu’on
va implémenter dans le microcontrôleur.
Le microcontrôleur PIC16F877A fait l’acquisition des des tensions Vin (AN0) et Vout (AN1),
puis il calcul la valeur maximale des deux signaux ensuite déduire la capacité C2 en
utilisant l’équation (2).
Remarque :
Le circuit de mesure n’est pas protéger contre les surtensions ainsi
que l’alternance négative de la sinusoïde peut détruire le port du
microcontrôleur . Voila un petit montage qui permet d’écrêter la
tension à +/-5V puis supprimer l’alternance négative.
On constate que le micro est bien protégé contre la surtension, par contre l’alternance
négative est encore présente !
Programme MikroC :
#define C2 1e-6
#define Ref_ADC 5.0
#define Max_ADC 1023.0
#define Init_Vlaue 0.0
#define Count_Max 256
// Pin direction
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D7_Direction at TRISB5_bit;
double Capa_uF=0.0;
double Max_Vin=0.0;
double Max_Vout=0.0;
double ADC_Volt=0.0;
long i=0;
char Capa_F_Char[16];
char Max_Vin_Char[16];
char Max_Vout_Char[16];
void main()
{
// Initialisation LCD, ADC
Lcd_Init();
ADC_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1, 5, "Capacitence");
Lcd_Out(2, 16, "uF");
TRISA = 0xFF;
TRISB = 0x00;
PORTB=0x00;
PORTB=0x00;
ADCON1=0x00;
while(1)
{
// Mesure de la valeur maximale de la tension d'entrée (Vin)
Data_ADC= ADC_Read(0);
ADC_Volt =(double)Data_ADC * Ref_ADC/Max_ADC;
if( ADC_Volt>= Max_Vin) Max_Vin= ADC_Volt;
FloatToStr(Max_Vin, Max_Vin_Char);
// Affichage
Lcd_Out(2,3,Capa_F_Char);
Lcd_Out(2, 16, "uF");
Lcd_Out(2,12," ");