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. Publicité
  3. #2
    remy01

    Re : ADC dspic33f

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

  4. #3
    afayee

    Re : ADC dspic33f

    bonjour rémy

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

  5. #4
    Blue Sn4ke

    Re : ADC dspic33f

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

  6. #5
    afayee

    Re : ADC dspic33f

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

  7. A voir en vidéo sur Futura
  8. #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

  9. Publicité
  10. #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

  11. #8
    Blue Sn4ke

    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...

Sur le même thème :

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 tim_world dans le forum Électronique
    Réponses: 15
    Dernier message: 13/01/2011, 15h10
  4. dsPic33F et bus CAN
    Par frouby13 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