• 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

    images/ACS712_5A_Capteur_de_courant.jpg images/ACS712_5A_Capteur_de_courant_b.jpg
    Miniinthebox or others.. 7.35€ Back side


    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:

    images/Test_ACS712_5A_Schem.jpg
    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

    images/ACS712_TLC271_Coeff_MAE.jpg images/Test_ACS712_5A_TLC271_Schem.jpg
    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


    images/ACS712_mesures_1A_0-5A.jpg
    images/t_Proto_test_ACS712_0-5A-140317a.jpg


    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é !





    paulfjujo@free.fr


    Retour à l'index general