aide programmation C
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

aide programmation C



  1. #1
    invite5a82603b

    aide programmation C


    ------

    Bonjour à tous,
    je dois créer un programme en C pour un projet scolaire.Hors nous sommes completement autonome et le prof n'est pas d'un grand aide.
    Je travaille sur une station météo et je m'occupe de la partie hygrométrie.J'ai dèja effectuer un tableaux pour calculer l'hygrometrie en % pour rapport a une tension avec le formule
    Vout= 0.00003(sensor rh)²+0.0281(sensor rh)+0.820
    j'ai alors des valeur en pourcentage que j'ai rentré dans un tableau sur le programme.
    Je dois effectuer une conversion analogique numérique(8bits) d'une valeur que va relever le capteur d'hygrometrie.Sachant que les valeurs de tension que j'ai obtenue(par simulation, en simuler avec le calcule pour un sensor rh de 1 a 100), j'obtient donc Vout que je convertie en numerique.Pour une hygrometrie de 1% j'ai une valeur numérique de 43...etc.Je dois alors en sortie du convertisseur aller cherche la bonne valeur dans le tableau en fonction de la valeur relever par le capteur hygrometrique sachant que la valeur de base est de 43.Je vous presente le programme que j'ai deja commencé c'est q'un programme dérivée du grand programme qui a été deja réaliser tel que l'initialisation par exemple ( ADCON etc...)

    Code:
    #include <pic.h>
    
    // Fonction
    int f_get_hygrometrie(void); 
                 
    
    // Table de conversion
    
    const unsigned char convert[] ={1,1,2,3,3,4,5,6,6,7,8,8,9,10,10,11,12,12,13,14,14,15,16,16,17,18,18,19,20,20,21,22,22,23,24,24,25,26,26,27
    ,28,28,29,30,30,31,32,32,33,34,34,35,36,36,37,37,38,39,39,40,41,41,42,43,43,44,44,45,46,46,47,48,48,49,50,50,51,51,52,53,53,54,55,55,56,56,
    57,58,58,59,59,60,61,61,62,63,63,64,64,65,66,66,67,67,68,69,69,70,70,71,72,72,73,73,74,75,75,76,76,77,78,78,79,79,80,81,81,82,82,83,84,84,85,85,86,87,87,88,88,89,89,90,91,91,92,92,93,94,94,95,95,96,96,97,98,98,99,99,100,100	
    								};
    
    
    // Variables
    unsigned int i_hygrometrie, i_hygrometrie_m1;
    unsigned char debut;
    unsigned char conv;
    unsigned char resu;
    	 
    	 
    int f_get_hygrometrie(void)
    {
    	ADON = 1;
    	GODONE = 1;
    	while(GODONE);
    	conv = ADRESH;
    	ADON = 0;
    	resu = conv + debut;
    	
    	
    	
    	
    	
    
    	debut = 43;
    	return(convert[1]);
    
    
    }
    merci de vos aides

    -----
    Dernière modification par gienas ; 02/04/2009 à 16h16. Motif: Ajouté les balises code

  2. #2
    Seb.26

    Re : aide programmation C

    salut,

    Ton tableau convert[] contient bien les 256 valeurs de % d'hum. en fonction de la valeur lue par le CAN ? ...

    Dans ce cas, un simple "convert[conv]" devrait te retourner la bonne valeur, non ?

    C'est un peu flou le truc sur "la valeur de départ 43" ... tu peux développer un peu stp

    PS: "int f_get_hygrometrie(void)" renvoie un "int" et toi, tu return() un "unsigned char" ... c'est normal ?
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  3. #3
    invite89303051

    Re : aide programmation C

    Bonjour, si j'ai bien tout compris, ce serait plus tôt :
    Code:
    int f_get_hygrometrie(void)
    {
    ADON = 1;
    GODONE = 1;
    while(GODONE);
    conv = ADRESH;
    ADON = 0;
    debut = 43;
    //Retrait de l'offset
    resu = conv - debut;
    //Récup de la valeur en position resu
    return(convert[resu]);
    }
    
    }
    Dernière modification par gienas ; 02/04/2009 à 16h17. Motif: Ajouté balises code

  4. #4
    invite5a82603b

    Re : aide programmation C

    le tableau contient 202 valeur de 1 à 100 car des valeurs se répetent plusieur fois ex ( 1;1;2;3;3) pour ne pas mettre de virgule le tableau choisi la valeur la plus proche.

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

    Re : aide programmation C

    Bonjour,
    Alors pour la valeur 43, je vais essayé de développer un peu.La valeur 1% d'hygrométrie correspond a la valeur 43. 43 a été convertie pour qu'il soi une valeur que l'on peu utilisé dans MPLAB sinon il correspond exatement à 0.84V. (0.84*256)/5 ( formule utilisé) voilà j'espère vous avoir eclairé.


    Bonne journée

  7. #6
    Seb.26

    Re : aide programmation C

    OK, alors pour moi :
    Code:
    int f_get_hygrometrie(void)
    {
      ADON = 1;
      GODONE = 1;
      while(GODONE);
      conv = ADRESH;
      ADON = 0;
      if( conv<=43 )
      {
        return( 1 );
      }
      else if(conv>=245) // 43+202=245
      {
        return(100);
      }
      else
      {
        return(convert[conv -43]);
      }
    }
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  8. #7
    invite5a82603b

    Re : aide programmation C

    Bonjour à tous,

    J'ai enfin fini mon programme en C.Je voulais remercie tout le monde pour votre aide précieuse.Mon programme est le suivant
    #include <pic.h>

    // Fonction
    int f_get_hygrometrie(void);


    // Table de conversion

    const unsigned char convert[] ={1,1,2,3,3,4,5,6,6,7,8,8,9,10 ,10,11,12,12,13,14,14,15,16,16 ,17,18,18,19,20,20,21,22,22,23 ,24,24,25,26,26,27
    ,28,28,29,30,30,31,32,32,33,34 ,34,35,36,36,37,37,38,39,39,40 ,41,41,42,43,43,44,44,45,46,46 ,47,48,48,49,50,50,51,51,52,53 ,53,54,55,55,56,
    56,57,58,58,59,59,60,61,61,62, 63,63,64,64,65,66,66,67,67,68, 69,69,70,70,71,72,72,73,73,74, 75,75,76,76,77,78,78,79,79,80, 81,81,82,82,83,
    85,85,86,87,87,88,88,89,89,90, 91,91,92,92,93,94,94,95,95,96, 96,97,98,98,99,99,100,100
    };


    // Variables
    unsigned int i_hygrometrie, i_hygrometrie_m1;
    void f_temporiser(unsigned char temps);
    unsigned char debut;
    unsigned char conv;
    unsigned char resu;

    int f_get_hygrometrie(void)
    {
    ADON = 1;
    GODONE = 1;
    while(GODONE);
    return ADRESH;
    conv = ADRESH;
    ADON = 0;
    if(conv < 43)
    conv = 43;
    if(conv > 202)
    conv = 202;
    debut = 43;
    //Retrait de l'offset
    resu = conv - debut;
    //Récupération de la valeur en position resu
    return (convert[resu]*10);
    }

    Voilà e simulation il marche parfaitement je simule des valeur en entré avec stimulus et je l'ai recupére bien mais j'ai un problème la conversion sur l'afficheur ne se fait pas elle n'evolue pas et ne change pas pourtant la tension elle varie bien en présente de différente hygrométrie ( surment problème du convertisseur ) mais j'ai pas encore trouver cela si quelq'un peut m'aider je lui serai très reconnaissant.

    Bonne journée à tous.
    Térry

  9. #8
    Seb.26

    Re : aide programmation C

    La balise CODE !!!

    Sinon, c'est pas lisible ...

    NB: c'est le bouton #
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  10. #9
    Seb.26

    Re : aide programmation C

    Tu as éssayé d'afficher directement la valeur qui sort du CAN, histoire de voir si ça c'est OK ?

    C'est normal ça :

    int f_get_hygrometrie(void)
    {
    ADON = 1;
    GODONE = 1;
    while(GODONE);
    return ADRESH;

    ???
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  11. #10
    invite5a82603b

    Re : aide programmation C

    le return ADRESH c'est un plus il sert " a rien" je peux l'enlever je recupére bien la meme valeur que j'envoie en simulation à la sortie de CAN.

  12. #11
    Seb.26

    Re : aide programmation C

    Citation Envoyé par terry95540 Voir le message
    le return ADRESH c'est un plus il sert " a rien" je peux l'enlever je recupére bien la meme valeur que j'envoie en simulation à la sortie de CAN.
    Heu ... "return", ça fait sortir de la fonction quand même ... donc s'il est là, c'est le reste qui ne sert à rien ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  13. #12
    invite5a82603b

    Re : aide programmation C

    Voilà bon ça à l'air de fonctionné maintenant il faut juste que je rescan l'afficheur à chaque fois il me fait pas apaitre le changement instantanément.Merci beaucoup pour ton aide seb.

    Bonne journée

Discussions similaires

  1. aide programmation C
    Par invite74119562 dans le forum Électronique
    Réponses: 15
    Dernier message: 21/01/2009, 16h42
  2. aide programmation
    Par invite28559ad9 dans le forum Électronique
    Réponses: 1
    Dernier message: 01/12/2008, 22h11
  3. Aide pour programmation en C
    Par inviteb8458fe3 dans le forum Électronique
    Réponses: 4
    Dernier message: 16/11/2008, 11h14
  4. AIDE pic18f452 Programmation en C
    Par invite8916ae1c dans le forum Électronique
    Réponses: 6
    Dernier message: 15/05/2008, 20h29
  5. aide en programmation en c
    Par invite7670cc44 dans le forum Électronique
    Réponses: 0
    Dernier message: 12/06/2007, 17h45
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...