sonde ACS712
Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

sonde ACS712



  1. #1
    azolan23

    sonde ACS712


    ------

    Salut!!

    Je suis en plein projet: je dois faire un chargeur/dechargeur de batteries permettant d'enregistrer sur carte sd un bilan de la batterie testée. Je bloque sur le capteur de courant ACS712: je ne comprend pas pourquoi, mais il m'affiche un courant variable (via le LCD)... Quelqu'un peut m'expliquer mon erreur et comment faire pour bien afficher le bon courant svp?
    Je poste mon code, si quelqu'un peut m'aider?

    Précision: je code sur Mikroeletronika, et mon micro controleur est un PIC18F4520

    Code:
     // LCD module connections
    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;
    
    // End LCD module connections
    
    
    
    
    
    
    
    
    unsigned int ADC_Value;
    unsigned long temp ;
    unsigned long tens;
    unsigned char ch;
    short neg=0;
    
    
    main(){
      ADCON1     = 0b00001010;
      TRISA      = 0xFF;
      TRISB=0b11000000; // PORTB pins are all output
      TRISC=0b10010001;
      RC1_bit=1;
      RC2_bit=0;
    
      Lcd_Init();
      Lcd_Cmd(_LCD_CLEAR);             // CLEAR display
      Lcd_Cmd(_LCD_CURSOR_OFF);        // Cursor off
      Lcd_Out(1,1,message);
    
      do{
        neg=0;
        //Mesure de courant
        ADC_Value = ADC_Read(0);
        Delay_ms(5);
        temp=ADC_Value*5020;
        temp=temp/1023;
        temp=temp*5.4054;
        if (temp<0)
        {
           temp = -temp;
           neg = 1;
        }
    
        Lcd_Out (1,1,"Courant:   ") ;
     
        if (neg ==1) Lcd_Chr(1,9,45);
        else Lcd_Chr(1,9,43);
    
        ch=temp/1000 ; 
        Lcd_Chr(1,11,48+ch); //+48 pour le code ASCII
        Lcd_Chr_CP(',');
        ch    = (temp/ 100) % 10;
        Lcd_Chr_CP(48+ch);
        ch    = (temp / 10) % 10;
        Lcd_Chr_CP(48+ch);
        Lcd_Chr(1,16,'A');
    
         Delay_ms(1000);
    
          
    
      }  while(1);
    }

    -----
    Dernière modification par azolan23 ; 22/07/2014 à 15h15.

  2. #2
    DAUDET78

    Re : sonde ACS712

    Bonjour azolan23 et bienvenue sur FUTURA
    Citation Envoyé par azolan23 Voir le message
    Je bloque sur le capteur de courant ACS712:
    Quand on cause d'un composant ésotérique, par politesse, on met un lien WEB sur la datasheet du composant
    Je poste mon code,
    Il faut aussi donner le schéma du capteur et de son interface avec le µC.
    Savoir quelle gamme de courant tu mesures, c'est un plus
    PS : je suppose que tu rentres ton capteur sur une entrée analogique du µC ? si tu rentres une tension connue avec un potentiomètre de 4,7K alimenté entre Vdd et Vss , le LCD, il fait quoi ?
    Dernière modification par DAUDET78 ; 22/07/2014 à 15h20.
    J'aime pas le Grec

  3. #3
    azolan23

    Re : sonde ACS712

    excusez moi!

    voici le schéma: http://www.google.fr/imgres?imgurl=h...ed=0CDQQrQMwBg

    Mon capteur est celui de 5A max, la datasheet est visible ici: http://www.alldatasheet.fr/datasheet...RO/ACS712.html


    Il est connecté sur la premiere entree analogique du micro.

    Nom : capteur.JPG
Affichages : 167
Taille : 39,3 Ko
    Dernière modification par azolan23 ; 22/07/2014 à 15h25.

  4. #4
    azolan23

    Re : sonde ACS712

    et le microC :
    Nom : microC.JPG
Affichages : 129
Taille : 51,1 Ko

  5. A voir en vidéo sur Futura
  6. #5
    DAUDET78

    Re : sonde ACS712

    Tu n'as pas un schéma complet du câblage de ton µP ?
    les boutons sont câblés au Vss ou au Vdd ?
    La tension à mesurée ( pin 7) est de 0 à combien de volt ?
    Ton excursion de tension en sortie du ASC712 est de 1,5V à 3,5V pour un courant de -5A à +5A . Tu n'utilises que 40% de la pleine échelle du convertisseur; C'est dommage
    J'aime pas le Grec

  7. #6
    nornand

    Re : sonde ACS712

    Citation Envoyé par azolan23 Voir le message
    excusez moi!

    voici le schéma: http://www.google.fr/imgres?imgurl=h...ed=0CDQQrQMwBg

    Mon capteur est celui de 5A max, la datasheet est visible ici: http://www.alldatasheet.fr/datasheet...RO/ACS712.html


    Il est connecté sur la premiere entree analogique du micro.

    Pièce jointe 253905

    si je comprend le schéma comme tu le présentes tu court circuite le circuit de mesure 1.2 / 3.4 tu dois avoir ca comme schéma

    https://docs.google.com/document/d/1...it?usp=sharing

  8. #7
    paulfjujo

    Re : sonde ACS712

    bonjour,

    La sortie de L'ACS712 ne change pas de sens en fonction du sens du courant le traversant !
    il sort VCC/2 pour I=0
    soit 2?5V si alimenté en +5V
    tu as donc la relation +2,5 à 5V pour 0 a +5A
    et 2,5V à 0 pour 0 à-5A
    Temp n'est donc jamais negatif.. et avec I=0 tu as bien une mesure..
    voir specsheet !
    on suppose que tu as le shunt calibré entre les entrees de l'ADC712..
    puisque tu specifies une gamme de 5A
    Dernière modification par paulfjujo ; 22/07/2014 à 16h43.

  9. #8
    DAUDET78

    Re : sonde ACS712

    Non ...non
    Citation Envoyé par paulfjujo Voir le message
    tu as donc la relation +2,5 à 5V pour 0 a +5A
    +2,5 à 3,5V
    et 2,5V à 0 pour 0 à -5A
    2,5V à 1,5V
    J'aime pas le Grec

  10. #9
    paulfjujo

    Re : sonde ACS712

    Citation Envoyé par DAUDET78 Voir le message
    Non ...non+2,5 à 3,5V
    2,5V à 1,5V
    exact, je l'avais testé en rajoutant un ampli TLC271 rail to rail pour avoir (presque !) cette mise à l'echelle..
    au residuel des tensions de dechets rails pret..

  11. #10
    azolan23

    Re : sonde ACS712

    Bonjour, merci pour vos réponses!

    Non il n'est pas court circuité! Voir photo ci joint.

    DAUDET78, oui c'est dommage pour la pleine echelle mais c'etait le plus petit capteur de la catégorie! Effectivement, ma variable ne pouvait être négative.
    Cela dit que je ne comprend toujours pas ces oscillations que j'affiche: ca oscille sur 30mA, que la valeur du courant a mesuree soit de 0.15A ou 1.5A par exemple...

    Nom : aaaaaaaaaaaaa.JPG
Affichages : 120
Taille : 143,4 Ko

  12. #11
    DAUDET78

    Re : sonde ACS712

    Citation Envoyé par azolan23 Voir le message
    oui c'est dommage pour la pleine echelle mais c'etait le plus petit capteur de la catégorie!
    Et un p'tit ampliOP ?
    Cela dit que je ne comprend toujours pas ces oscillations que j'affiche: ca oscille sur 30mA, que la valeur du courant a mesuree soit de 0.15A ou 1.5A par exemple...
    Et dans la réalité, le courant est stable? Un oscillo sur la sortie du capteur donne quoi ?

    PS : L'utilisation des PMOS est fort limite .
    - Tension grille/source de 15V ...... 5V de plus, et ça pète !
    - Le circuit de commande de la tension de grille ... faut pas un PWM trop rapide.
    J'aime pas le Grec

  13. #12
    azolan23

    Re : sonde ACS712

    Oui le courant est stable.

    Je crois qu'en fait les valeurs relevées sont vraiment indépendantes du circuit parce que le fait de brancher une ampoule (qui fait passer le courant de 0.1 à 1.3) ne change rien aux valeurs affichées

  14. #13
    DAUDET78

    Re : sonde ACS712

    Citation Envoyé par azolan23 Voir le message
    Je crois qu'en fait les valeurs relevées sont vraiment indépendantes du circuit parce que le fait de brancher une ampoule (qui fait passer le courant de 0.1 à 1.3) ne change rien aux valeurs affichées
    Tu n'es vraiment pas clair ....

    Donc tu mesures rien et ton afficheur oscille de +-30mA ?

    Donc tu vires ton capteur et tu testes avec une source de tension connue
    Citation Envoyé par DAUDET78 Voir le message
    PS : je suppose que tu rentres ton capteur sur une entrée analogique du µC ? si tu rentres une tension connue avec un potentiomètre de 4,7K alimenté entre Vdd et Vss , le LCD, il fait quoi ?
    J'aime pas le Grec

  15. #14
    azolan23

    Re : sonde ACS712

    Oui voila! Mon afficheur (qui recupere normalement la mesure du capteur) oscille de 0.3A sur les MEMES valeurs, peut importe le courant injecté

  16. #15
    DAUDET78

    Re : sonde ACS712

    Donc tu remplaces ton capteur par un potentiomètre .... et tu debugs ton soft. Ca, ce n'est plus mon domaine.
    J'aime pas le Grec

  17. #16
    azolan23

    Re : sonde ACS712

    C'était bien là le problème, le code! Si quelqu’un voit l'erreur dans le code, ça m'aiderait!
    Parce que je ne vois pas pourquoi le micro ne reçoit pas les bonnes valeurs

  18. #17
    paulfjujo

    Re : sonde ACS712

    bonjour,

    Attention à la manipulation des variables qui ne sont pas de meme nature...

    test fait avec un 18F252...
    il manque l'init ADC..
    et peut etre CMCON=7 ; pour ce PIC
    Code:
    Test1 :
    
       CMCON=7; //   Configure comparators      <- à verifier
       ADC_Init();
    
      do{
        //Mesure de courant
        ADC_Value = ADC_Read(0);
        Delay_ms(5);
        temp= ADC_Value * 5020;
        temp= temp / 1023;
        f1=(float)temp * 5.4054;         <- usage de flottant 
        LCD_putcmd(LCD_LINE3,1);
        PrintOut(LCDHandler, "ADC value = % 5d  ",ADC_Value);
        f= (float)ADC_Value * 0.004883;
        PrintOut(PrintHandler, "ADC_Value=% 5d  volt= %5.3f   temp=% 9.2f\r\n",ADC_Value,f,f1);
        Delay_ms(1000);
        }
        while(1);
          
        
    /*
    ce qui donne .. n'importe quoi !
    
    ADC_Value=  261  volt= 1.274   temp=   340.54
    ADC_Value=    0  volt= 0.000   temp=     0.00
    ADC_Value=    0  volt= 0.000   temp=     0.00
    ADC_Value=  149  volt= 0.728   temp=   140.54
    ADC_Value=  147  volt= 0.718   temp=    86.49
    ADC_Value=  148  volt= 0.723   temp=   113.51
    ADC_Value=  368  volt= 1.797   temp=    64.86
    ADC_Value=  368  volt= 1.797   temp=    64.86
    ADC_Value=  368  volt= 1.797   temp=    64.86
    ADC_Value=  368  volt= 1.797   temp=    64.86
    ADC_Value=  439  volt= 2.144   temp=   216.22
    ADC_Value=  605  volt= 2.954   temp=   113.51
    ADC_Value=  606  volt= 2.959   temp=   140.54
    ADC_Value=  605  volt= 2.954   temp=   113.51
    ADC_Value=  796  volt= 3.887   temp=   335.13
    ADC_Value=  887  volt= 4.331   temp=   324.32
    ADC_Value=  889  volt= 4.341   temp=    32.43
    ADC_Value= 1021  volt= 4.986   temp=    70.27
    l'ADC mesure bien, c'est le calcul qui est batard..
    il faut mettre un cast devant temp
    temp= (unsigned long) ADC_Value * 5020;

    mais pourquoi se compliquer ...

    Code:
      Test2 :
       
          //CMCON=7; //   Configure comparators
       ADC_Init();
       do{
        //Mesure de courant
        ADC_Value = ADC_Read(0);
        Delay_ms(5);
        f= (float)ADC_Value * 0.004883;  // <- modifier ICI le coeff de mise à l'echelle pour Ampere
        PrintOut(PrintHandler, "ADC_Value=% 5d  Amperes= %5.3f \r\n",ADC_Value,f);
        Delay_ms(1000);
        }
        while(1);
    
    
    ADC_Value=    0  Amperes= 0.000 
    ADC_Value=    0  Amperes= 0.000 
    ADC_Value=    0  Amperes= 0.000 
    ADC_Value=   43  Amperes= 0.210 
    ADC_Value=  169  Amperes= 0.825 
    ADC_Value=  281  Amperes= 1.372 
    ADC_Value=  384  Amperes= 1.875 
    ADC_Value=  519  Amperes= 2.534 
    ADC_Value=  654  Amperes= 3.193 
    ADC_Value=  823  Amperes= 4.019 
    ADC_Value= 1022  Amperes= 4.990 
    ADC_Value= 1022  Amperes= 4.990 
    

  19. #18
    inoxxam

    Re : sonde ACS712

    Aye aye aye, des flottants...
    Pour ce genre d'application ou des entiers suffisent plus que largement, mieux faut éviter les flottants.

  20. #19
    azolan23

    Re : sonde ACS712

    C'est bon , j'ai fini par résoudre le problème! En fait le problème était surtout que j'injectais pas assez de tension dans mon circuit, la sonde ne pouvait donc pas fonctionner correctement.

    Si quelqu'un a des problèmes comme j'en ai eu, je peux poster mon code!

    Merci à vous en tout cas!

Discussions similaires

  1. Atmega328 + ACS712
    Par comode dans le forum Électronique
    Réponses: 4
    Dernier message: 31/10/2013, 15h48
  2. [Biologie Moléculaire] Design de sonde Taqman à partir d'une sonde FISH
    Par invite083550fc dans le forum Biologie
    Réponses: 3
    Dernier message: 10/06/2013, 15h51
  3. Différence entre une sonde différentielle et une sonde d'oscilloscope
    Par invited5d7ec92 dans le forum Électronique
    Réponses: 2
    Dernier message: 18/09/2009, 20h47
  4. sonde CTN
    Par mortaurat dans le forum Électronique
    Réponses: 12
    Dernier message: 13/09/2009, 19h08
  5. [Thermique] Sonde ECS
    Par isangrin2005 dans le forum Dépannage
    Réponses: 0
    Dernier message: 17/12/2007, 10h42
Découvrez nos comparatifs produits sur l'informatique et les technologies.