Régulateur de température avec mincrocontroleur (capteur LM335)
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Régulateur de température avec mincrocontroleur (capteur LM335)



  1. #1
    invite4e57ea5b

    Régulateur de température avec mincrocontroleur (capteur LM335)


    ------

    Salutations,
    Je suis étudient en informatique industrielle et je dois réaliser un régulateur de température à base pic pour mon PFE, j'ai choisit le 16F877A et pour le capteur on m'a conseillé le LM335, on m'a aidé pour la programmation avec microC, seulement j'ai encore pas mal de trucs à régler et j'ai bien peur que ne j'y arriverai pas tout seul...
    bon l'encadreur m'a épargné la réalisation du circuit de puissance (résistances chauffantes) ainsi que le ventilateur (j'ai mis 2 LEDS à la place de chacune en sortie)
    j'ai mis 3 boutons poussoirs, pour incrémenter, décrémenter et valider la consigne de température.
    je vous montre le programme ainsi que le schémas fait avec ISIS, puis je vous expliquerai le problème:

    programme:
    float temp_kelvin;
    int temp_celcus;
    char txt1[16],txt,cons[40];
    int consigne=25;

    void main() {
    TRISB = 0;
    Lcd_Init(&PORTB);
    Lcd_Cmd(Lcd_CLEAR);
    Lcd_Cmd(Lcd_CURSOR_OFF);
    ADCON1 = 0x0;
    TRISD.F5=1; // incrémenter
    TRISD.F6=1; // décrémenter
    TRISD.F7=1; // valider


    TRISD.F0=0; // décrémenter
    TRISD.F1=0; // valider
    PORTD.F0=0;
    PORTD.F1=0;
    //Soft_Uart_Init(PORTC, 7, 6, 2400, 0);

    while(PORTD.F7==0)
    {
    if(PORTD.F5==1) consigne++;
    if(PORTD.F6==1) consigne--;
    IntToStr(consigne,cons);

    Lcd_Out(1,1,"Consigne =");
    Lcd_Out(2,1,cons);
    delay_ms(250);
    }

    while (1) {
    /*********************** CAPTEUR ****************************** ******/
    temp_kelvin = Adc_Read(0); // acquérir les résultats de conversion AN

    temp_kelvin=temp_kelvin*273/559;
    temp_celcus=temp_kelvin-273+1;
    if(temp_celcus<=0) temp_celcus=temp_kelvin-273-1;

    if(temp_celcus >= 11 && temp_celcus <= 21 )
    {temp_celcus =temp_celcus-1; }

    IntToStr(temp_celcus,txt1);



    Lcd_Out(1,1,"Temperature=");
    Lcd_Out(2,9,"C");
    Lcd_Out(2,2,txt1);

    if(temp_celcus == consigne)
    { PORTD.F0=0;
    PORTD.F1=0;
    }

    if(temp_celcus > consigne)
    { PORTD.F0=0;
    PORTD.F1=1;
    }

    if(temp_celcus < consigne)
    { PORTD.F0=1;
    PORTD.F1=0;
    }
    // Lcd_Chr_Cp(176);
    //Lcd_Chr_Cp('C');
    //Soft_Uart_Write(temp_celcus);

    delay_ms(100);


    }

    }

    ------------------------------------------

    le schéma
    Nom : Sans titre.png
Affichages : 315
Taille : 38,0 Ko

    ---------------------------------------------
    j'explique mon problème:
    1- pratiquement, quand j'appuie sur le bouton poussoir il risque d'incrémenter plusieurs degré en un seul clique (c'est l'hypothèse de mon encadreur)
    2- le bouton poussoir qui valide la valeur de la consigne, j'aimerai le retirer, et mettre à la place un bouton qui swich entre le réglage de consigne et l'affichage de température ambiante.
    3- pour la LED qui représente le circuit de puissante, l'encadreur m'a demandé de faire en sorte qu'on peut brancher à la place le circuit de puissante à tout moment, sachant que le pin du pic génère 5V et que le circuit de puissance à besoin de 220V, on a besoin donc d'un relai, et je ne sais pas comment faire.
    4- il m'a dit aussi que la carte peut avoir d'erreurs qu'on peut pas voir dans la simulations, j'aimerai bien éviter ces érreurs avant que je passe au pratique.
    Merci beaucoup de jeter un oeil à mon problème

    -----

  2. #2
    luc_1049

    Re : Régulateur de température avec mincrocontroleur (capteur LM335)

    Bonjour

    Pour mettre en evidence les affirmations de votre "encadreur" le point 1 dans votre simulation considérer des oscillations transitoires de vos boutons poussoirs, j'ai nommé les rebonds !

    Dans votre test if (port.f5 == 1) consigne++ qui est inclus dans le while (port.d7 == 0) il y a théoriquement un risque en supposant d7 établi à 0 (long appui) et f5 qui oscille avec les rebonds. Il est vrai que delay(250) devrait les filtrer.

    Il est préférable de filtrer les rebonds en lisant plusieurs fois l'état du BP tant que l'état lu N n'est pas égal à l'état lu N-1 du port pendant X lecture, chaque lecture étant séparée d'un délai. Bien entendu si X est trop grand => si appui long et stable du BP.
    Je vous laisse coder!

    Pour le point 2 c'est du soft à coder OK.

    Pour le point 3 je ne connais pas votre charge mais vous pourriez mettre un triac et un optocoupleur, tout simplement.

    Pour le point 4 si vous passer bcp de temps en simulation en tenant compte des réalités physiques vous devriez voir des bug, mais cela dépend de votre planning !


    Comment sortez vous du while(1) actuel il manque un if (xxx) break, afin de pouvoir changer la consigne.

    Pour votre main il vous faut inclure tout son soft actuel dans une autre boucle do.. while(YY == false) par exemple. Avec YY tjs false .

    cdlt

  3. #3
    luc_1049

    Re : Régulateur de température avec mincrocontroleur (capteur LM335)

    Bonsoir

    Sur schéma :
    -manque le connecteur de debug pour y connecteur le pickit 3,
    -des capacité de découplage,
    -un reset propre du up à la mise sous tension,
    -résistance de led, il me semble qu'une bleue exige un courant plus élevé,
    cdlt

  4. #4
    invite4e57ea5b

    Re : Régulateur de température avec mincrocontroleur (capteur LM335)

    merci pour vos réponses,
    Citation Envoyé par luc_1049 Voir le message
    Bonjour


    Comment sortez vous du while(1) actuel il manque un if (xxx) break, afin de pouvoir changer la consigne.

    Pour votre main il vous faut inclure tout son soft actuel dans une autre boucle do.. while(YY == false) par exemple. Avec YY tjs false .

    cdlt
    j'ai essayé de faire pareil pour pouvoir retourner à la consigne mais ça n'a pas marché, la simulation reste toujours dans l'état de l'affichage de température, je me suis peut être trompé j'ai mal appris la fonction break, voulez vous bien me réecrire la 2eme boucle avec if ... break ?

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

    Re : Régulateur de température avec mincrocontroleur (capteur LM335)

    Bonsoir

    Un break permet de sortir de la boucle, en cas de boucle imbriqué, il en faut plusieurs.

    cdlt

  7. #6
    invite3026ff02

    Re : Régulateur de température avec mincrocontroleur (capteur LM335)

    Moi pour évité les rebond j'ai recours à deux détection, détection quand le bouton est appuyer, si oui alors détecter si le bouton est relâcher. Cela évite généralement le problème... Parfois avec un bouton usé ça ne fonctionne pas à tout coup. alors dans ce cas, rajouté un petit délais entre les deux détection ne cause pas de torrs...

Discussions similaires

  1. capteur température LM335
    Par invite133d9a47 dans le forum Électronique
    Réponses: 10
    Dernier message: 01/03/2013, 17h40
  2. capteur LM335
    Par invite8e75b8fb dans le forum Électronique
    Réponses: 26
    Dernier message: 13/10/2012, 23h45
  3. Mesure température avec LM335
    Par invite3c35244f dans le forum Électronique
    Réponses: 7
    Dernier message: 09/05/2012, 10h16
  4. capteur de temperature LM335 et ampli op LM324
    Par inviteac751535 dans le forum Électronique
    Réponses: 9
    Dernier message: 23/04/2010, 10h47
  5. sonde de temperature lm335
    Par invitef6a36d9f dans le forum Électronique
    Réponses: 9
    Dernier message: 06/09/2009, 12h50
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...