version 0.0
17 Mars 2014
rev .........
PIC
18F26K22 , Mesure de Courant DC
Module ACS712-504 avec capteur Effet hall incorporé
usage d'un PIC18F26K22 en DIP28 et du Pickit2 Microchip
pour charger l'executable
Environnemen t: MPLAB IDE V8.92 et C18
v3.45.00
Testé avec oscillateur interne
Fosc=16Mhz
datasheet ACS712
Liaisons PIC <-> Module ACS712-5
Un premier test avec mesure directe sur la sortie ACS712
qui delivre Vcc/2 à Zero Amperes et 185mV / Ampere pour ce modele -5A.
Sur ce PIC18F26K22, l'entrée RA0 est utilisée comme mesure de temperature ambiante via un LM35DZ (10mV/°C)
le calibre utilisé est de 1024mV via +Vref =1.024V -Vref=0V
ce qui donne une conversion directe 1024 points pour 102,4°C.
L'entree RA1 est utilisée pour la mesure de courant , avec calibre sur +Vref=+Vcc , car comme c'est une mesure ratiometrique,
il vaut mieux englober la tension d'alim du module, vu que l'ADC s'y referre aussi..
les ecarts absolus de tension d'alim Vcc devraient se compenser.
Au depart du programme, 30 mesures sont realisées pour filtrer le Zero (theorique de 512 points)
Un test de verification est fait , au cas ou on ferait le zero avec un courant NON null...
RB0 est definie comme entrée, permettant de refaire un zero par la suite, en mettant RB0 au 0V (tiree au +5V via 4,7K)
La mesure est assez bruitée..(.le cablage planche à pain y participe, je sais !)
Pour ameliorer la stabilité de mesure, un filtrage exponentionnel energique est appliqué à la mesure brute en points (1024 points pour 5000mV)
avec k=0,2.... ce qui signifie qu'à chaque mesure on prend 20% de la nouvelle mesure + 80% de l'ancienne mesure (filtree).
Chaque mesure s'effectue toutes les 250mS (orchestree via le timer 3)
avec une d'execution toutes les 0.25 seconde et k=0,2 , la constante de temps equivaut à
teta = - ( Temp_exec(s) / Ln (1 - kFilter)) soit 1.12 sec.
Attention,au depart du programme , avec l'usage d'un filtre exponentiel, bien veiller à initialiser les variables du filtre !!
La resolution n'est que de +-25mA, un ADC 12bits serait mieux ! avec autre version de PIC
La sortie UART delivre les infos temperature amb, mesure brute du courant en points, mesure brute filtee,mesure en Amperes filtree
Ce qui donne comme element de calibration en Amperes:
Mesure directe
Un deuxieme test , avec un AOP TLC271 sur la sortie ACS712 pour augmenter la resolution
La mesure ACS712 rentre sur l'entree + de l'AOP
L'entree - de l'AOP recoit la valeur VCC/2 et fixe le gain via R=6.8K/R=2.7K
on obtient ~500mV par Ampere
Coeff cal = 0.01 Mesure Amplifié via AOP rail to rail TLC271 Resultats :
Mesures :
avec ampoule 4,8V 0,5A et avec ampoule 12V 21W sous 4,8V DC
On remarque le fort courant d'appel de l'ampoule 12V 21W .....alimentée seulement en 4,8V
Le filtrage exponentiel est bien remarquable ici.
fichier de resultats xls
RB7 et RB6 reste libres pour l' ICSP
Usage du Pickit2 (mon Pickit3 utilisé par ailleurs!)
RC6 utilisé comme sortie Tx UART 19200,8,N,1-> module MAX3222 , alimenté en 3,3V!!-> PC COM2
Affichage sur terminal RS232 :
Projet complet en MPLAB IDE V8.92 et C18 v 3.45
Liste des fichiers : 18F26K22_ACS712_140317.htm
Zip du projet :_18F26K22_ACS712_140317.zip
Avec source documenté !