ADC dspic33f
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

ADC dspic33f



  1. #1
    afayee

    ADC dspic33f


    ------

    Bonjour,

    au fait je fais un programme enfin de controler la charge et décharge d'un condensateur. Je dois charger le condensateur jusqu'à atteindre une valeur limite de ma tension ( j'utilise un capteur de tension) et ensuite déclencher le processur de décharge. j'ai un soucis car mon systéme se met toujour à charger même si je dépasse la valeur limite fixée qui est vref
    Code:
     
    if (voltageconverter>=vref)                          // if the voltage is equal to 50V
        {
            LATAbits.LATA0=0;                                // stop to charge the capacitor
            LATFbits.LATF0=0;
    
            LATAbits.LATA2=1;                                 //start to discharge the capacitor
            LATFbits.LATF1=1;
            flag_dech=1;
    
        }
         if ((voltageconverter<=vref) && (flag_dech==0) && (flag_finie==0))      // the voltage is under 50V and there is no discharge of the capacitor
        {
             LATAbits.LATA0=~LATAbits.LATA0;            // start to charge the capacitor
             LATFbits.LATF0=~LATFbits.LATF0;
             
             LATAbits.LATA2=0;
             LATFbits.LATF1=0;
        }
    
        if ((flag_finie==1) && (flag_dech==1) )     // if the discharge has just finished
        {
    
               LATAbits.LATA2=0;                     // stop to discharge the capacitor
               LATFbits.LATF1=0;
               //  flag_finie=1;
                flag_dech=0;
        }
    le code suivant me permet de récuperer la valeur de mon ADC à chaque interruption et de faire la conververtion en tension
    Code:
    void __attribute__((__interrupt__,__auto_psv__)) _ADC2Interrupt(void)
        {
    
        ADC2_value = ADC2BUF0;      /* Copy value from ADC buffer  */
    
        voltageconverter= ((ADC2_value/1023)*(3.3)*G_sensor);        // valeur de la tension convertie en V
                                                                   // multiplication avec le gain du capteur de tension
    
        flag_ADC2 = 1 ;
        _LATA6=~_LATA6;
        _AD2IF = 0;
        AD2CON1 = 0x0044;                      /* Must cancel current sampling */
        AD2CON1 = 0x8044;                    /* Re-set ADC configuration for triggered sampling */
    
        }
    merci de votre aide

    -----

  2. #2
    remy01

    Re : ADC dspic33f

    Bonjour,
    il ne manque pas un : flag_finie=1; dans le premier if ?
    A+ ....Rémy.

  3. #3
    afayee

    Re : ADC dspic33f

    bonjour rémy

    je vais tester mais à priori je devrait y mettre un flag_finie=1

  4. #4
    fdamien12

    Re : ADC dspic33f

    As tu bien déclaré ta variable voltageconverter "volatile" ?

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

    Re : ADC dspic33f

    la variable convertervoltage je l'ai déclaré juste en float

  7. #6
    afayee

    Re : ADC dspic33f

    j'utilise deux timer 3 et 5. lorsque mes deux timers sont à 10Khz le programme ne détecte pas la phase de charge il se met automatiquement en mode décharge jai ce probléme lorsque voltageconverter= ((ADC2_value*3.3)/1023)*G_sensor mais dès que je change ma formule de calcul par voltageconverter= (ADC2_value/1023)*3.3*G_sensor le programme est en mode charge mais ne se met jamais en mode décharge si ta tension convertie est supérieure à ma vref.

    Par contre si je mets le timer3 à 1Khz tout marche avec la formule voltageconverter= ((ADC2_value*3.3)/1023)*G_sensor: il se met en mode charge et dès que vref est atteinte il se met en mode décharge


    merci de votre car je ne comprends pas le probléme

  8. #7
    afayee

    Re : ADC dspic33f

    bonjour Rémy

    c'est bon il ne faut pas y mettre flag_finie=1 sinon il ne se met pas à décharger

  9. #8
    fdamien12

    Re : ADC dspic33f

    Citation Envoyé par afayee Voir le message
    la variable convertervoltage je l'ai déclaré juste en float
    Erreur ! c'est indispensable qu'elle soit déclarée volatile ici : http://www.developpez.net/forums/d13...vant-variable/

    Moi j'aurais évité le float pour ça, mais bon...

Discussions similaires

  1. PWM dspic33f
    Par marc64ab dans le forum Électronique
    Réponses: 9
    Dernier message: 07/05/2015, 13h07
  2. Programmation Dspic33f
    Par didou1982 dans le forum Électronique
    Réponses: 4
    Dernier message: 08/02/2011, 16h44
  3. Pic 24f ou DsPic33f ?
    Par invite624dc4b7 dans le forum Électronique
    Réponses: 15
    Dernier message: 13/01/2011, 15h10
  4. dsPic33F et bus CAN
    Par invitebd0c1fdf dans le forum Électronique
    Réponses: 1
    Dernier message: 10/06/2010, 23h58
  5. Programmateur DSPIC33F
    Par didou1982 dans le forum Électronique
    Réponses: 4
    Dernier message: 10/12/2009, 12h07
Découvrez nos comparatifs produits sur l'informatique et les technologies.