regulation
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 39

regulation



  1. #1
    PAVNA

    regulation


    ------

    j'ai une problème mon code est exécutable sur micro c il n'a pas des erreurs. le code a pour but de lire une valeur de température , afficher cette température sur LCD et comparer la valeur du température avec une valeur désirée si elle est < la diode LED s’allume. mon code lit la valeur de la température, affiche cette valeur sur LCD mais il y a une problème avec la boucle if il l’ignore. SVP aidez moi

    -----

  2. #2
    PAVNA

    Re : regulation

    aidez moi je ne trouve plus une solution

  3. #3
    gabuzo

    Re : regulation

    Code:
    if on avait le code
    then on pourrait regarder
    else on peut rien faire
    end if
    Je suis Charlie

  4. #4
    PAVNA

    Re : regulation

    oui voila le code : 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;
    //VARIABL
    unsigned char msgZ1[20],msgZ2[20],msgZ3[20];
    unsigned char consigneZ1[20],consigneZ2[20],consigneZ3[20];
    unsigned int adc_rdZ1 , adc_rdZ2,adc_rdZ3;
    unsigned int adc_rdconsZ1,adc_rdconsZ2,adc_ rdconsZ3;
    float tZ1,tZ2,tZ3 ,A ;
    float TconsZ1,TconsZ2,TconsZ3;
    void main() {
    TRISA=0XFF;
    TRISB=0X00;
    TRISD=0X00;
    TRISE=0XFF;
    TRISC=0X00;
    adcon0=0b00111001;
    ADCON1=0b00000001;
    PORTD=0X00;
    PORTC=0X00;
    Lcd_Init();
    Lcd_Cmd(_LCD_CURSOR_OFF);
    delay_ms(10);
    // PORTD=0X00;
    while(1)
    {
    //Z1

    adc_rdZ1=ADC_read(0);
    tZ1=(adc_rdZ1*0.004882*1000*12 00)/(71.94244*69.5) ;

    floattostr(tZ1,msgZ1);
    adc_rdconsZ1=ADC_read(1);
    TconsZ1=(adc_rdconsZ1*0.004882 *700)/(5) ;
    floattostr(TconsZ1,consigneZ1) ;
    //Z2
    adc_rdZ2=ADC_read(2);
    tZ2=(adc_rdZ2*0.004882*1000*12 00)/(71.94244*69.5) ;
    floattostr(tZ2,msgZ2);
    adc_rdconsZ2=ADC_read(3);
    TconsZ2=(adc_rdconsZ2*0.004882 *500)/(5) ;
    floattostr(TconsZ2,consigneZ2) ;
    //Z3
    adc_rdZ3=ADC_read(4);
    tZ3=(adc_rdZ3*0.004882*1000*12 00)/(71.94244*69.5) ;
    floattostr(tZ3,msgZ3);
    adc_rdconsZ3=ADC_read(5);
    TconsZ3=(adc_rdconsZ3*0.004882 *400)/(5) ;
    floattostr(TconsZ3,consigneZ3) ;


    //Lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1, 1, "ZX:Tconsi=//Treel=");
    Lcd_Out(2, 1, "Z1:");
    Lcd_Out(2,4, consigneZ1);
    Lcd_Out(2, 11, "//");
    Lcd_Out(2,13, msgZ1);
    Lcd_Out(3, 1, "Z2:");
    Lcd_Out(3,4, consigneZ2);
    Lcd_Out(3, 11, "//");
    Lcd_Out(3,13, msgZ2);
    Lcd_Out(4, 1, "Z3:");
    Lcd_Out(4,4, consigneZ3);
    Lcd_Out(4, 11, "//");
    Lcd_Out(4,13, msgZ3);
    delay_ms(1000);


    if(tZ1<=TconsZ1){ PORTD.RD0=1; } else { PORTD.RD0=0; }
    if(tZ2<=TconsZ2) {PORTD.RD1=1;} else { PORTD.RD1=0; }
    if(tZ3<=TconsZ3){PORTD.RD2=1;} else {PORTD.RD2=1;}

    }
    }

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

    Re : regulation

    l'affichage mrigul mais il y a une problème pour la boucle if la diode LED est toujours éteinte qque soit la condition
    Images attachées Images attachées  

  7. #6
    PAVNA

    Re : regulation


  8. #7
    freepicbasic

    Re : regulation

    Le problème avec les compilateurs c est qu'on ne sait jamais quel code il génère.
    La question que je me pose est comment la lib LCD fonctionne?
    Comme les data et les leds sont sur le même port , il est possible que le LCD met les leds à zéro à chaque passage.

    Il faudrait déplacer la tempo et la mettre après les if .
    Si ça fonctionne alors c est ça le problème

    Personnellement, je ferais les calculs 1 fois au départ et après je comparerais la valeur lu directement par le ADC...
    Mais bon il faut aussi afficher.
    A+, pat

  9. #8
    PAVNA

    Re : regulation

    même si la boucle if avant l’affichage j’ai même problème . Le but de ce code est le suivant:
    lire la valeur de température de la zone 1 a partir d'une jonction (j'utilise AN0
    lire la température consigne pour la zone 1 a l'aide d'un potentiomètre (j'utilise AN1).
    afficher le 2 températures réelle et consigne et les comparer : si la température réelle <= température consigne alors le LED(port RD0 =1).
    Meme travail pour la zone 2 et la zone 2

  10. #9
    freepicbasic

    Re : regulation

    tu nous dis pas si l'affichage au moins est correct ?
    A+, pat

  11. #10
    PAVNA

    Re : regulation

    oui , l'affichage est correcte , pas de problème sauf la boucle if je ne trouve plus la solution

  12. #11
    gabuzo

    Re : regulation

    Pour les trucalacons faut faire des testalacons.

    En remplaçant
    Code:
    if(tZ1<=TconsZ1){ PORTD.RD0=1; } else { PORTD.RD0=0; }
    par
    Code:
    PORTD.RD0=1;
    Ca donne quoi ?
    Je suis Charlie

  13. #12
    PAVNA

    Re : regulation

    r1 PORTD.RD0=0; tjrs la meme rslt

  14. #13
    gabuzo

    Re : regulation

    Ben oui avec PORTD.RD0=0; c'est normal que la led soit éteinte, avec PORTD.RD0=1; ça donne quoi ? Désolé c'est moi qui me suis planté dans mon précédent message.
    Dernière modification par gabuzo ; 09/03/2014 à 15h43.
    Je suis Charlie

  15. #14
    PAVNA

    Re : regulation

    Même si je remplace ( if(tZ1<=TconsZ1){ PORTD.RD0=1; } else { PORTD.RD0=0; }) par PORTD.RD0=1 la led est tjrs eteinte

  16. #15
    gabuzo

    Re : regulation

    Alors faut chercher de ce côté là, soit le portd est mal configuré (entrée ?) soit la syntaxe portb.rd0=1 est mauvaise, soit le programme ne passe jamais sur cette ligne.
    Je suis Charlie

  17. #16
    PAVNA

    Re : regulation

    nn la port est bien configurée PORTD=0X00; mais je ne sais pas pourquoi le programme ne passe plus sur cette ligne je suis bloquée et je ne peu pas avancée aidez moi svp et merci d'avance

  18. #17
    gabuzo

    Re : regulation

    Ou alors il passe trop vite sur cette ligne. peut-être en essayant ça :

    PORTD.RD0=1
    delay_ms(1000)

    mais c'est en faisant ce genre de manip que l'on trouve où ça coince.
    Je suis Charlie

  19. #18
    kevin8z

    Re : regulation

    Essaye en mettant LATD.RD0=1; dis moi si ça fonctionne

  20. #19
    PAVNA

    Re : regulation

    nn avec PORTD.RD0=1 ; delay_ms(1000) la led est tjrs eteinte et avec LATD.RD0=1; il m'affiche le msg suivant " Undeclared identifier 'LATD' in expression BIB.c " dc il ne
    fonctionne pas

  21. #20
    kevin8z

    Re : regulation

    Tu utilise bien MikroC? Si oui qu'elle est ta version?
    Car cher moi la compilation avec cette instruction : LATD.RD0=1; fonctionne

  22. #21
    PAVNA

    Re : regulation

    mikro c pro for pic V.5.6.1

  23. #22
    kevin8z

    Re : regulation

    Bizarre cette instruction fonctionne cher moi, le pic utilisé?

  24. #23
    PAVNA

    Re : regulation

    Pic 16f877

  25. #24
    kevin8z

    Re : regulation

    Petite précision que j'avais oubliée, il est préférable d'utilisé LAT lors de l'écriture sur un port, et d'utilisé PORT pour la lecture.

  26. #25
    kevin8z

    Re : regulation

    Problème surement trouvé, page 35 (de la datasheet) les registres utilisés sont PORTD, TRISD, et TRISE (dans le cas de ton pic j'ai dit une bêtise pour LAT).
    Si on regarde de plus près le bit PSPMODE du registre TRISE (page 37) doit être configurer de telle manière à utiliser le port D en port esclave parallèle, pou l'utiliser en port d'entrées sorties numérique. Ce bit, PSPMODE doit donc être mis à 0, or dans ta config tu la mis à 1.
    Uniquement les 3 premiers bits de se port son à configurer pour utiliser les broche RE0-2 en entrées ou sorties.

  27. #26
    PAVNA

    Re : regulation

    je ne connais pas cette information

  28. #27
    PAVNA

    Re : regulation

    mafhemtech , la probleme est dans la configuration de ADCON1 ????

  29. #28
    PAVNA

    Re : regulation

    je remplace TRISE=0b11111111; par TRISE=0b00000111; ???

  30. #29
    kevin8z

    Re : regulation

    Citation Envoyé par PAVNA Voir le message
    je remplace TRISE=0b11111111; par TRISE=0b00000111; ???
    Tout dépend comment les bits 5,6 et 7 doivent être configurés.
    Je ferais comme cela:

    TRISE &= 0b11101111; // Met à 0 le bit PSPMODE
    TRISE |=0b00000111; //Met à 1 les 3 premiers bit.

  31. #30
    PAVNA

    Re : regulation

    avec TRISE &= 0b11101111; la problème de la boucle if est resolue mais il ya un message un peu bizarre

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Regulation PID
    Par physicien007 dans le forum Électronique
    Réponses: 5
    Dernier message: 08/12/2011, 16h44
  2. Régulation - Concept + Exercice de régulation
    Par invite8c8da6cf dans le forum Électronique
    Réponses: 2
    Dernier message: 20/06/2010, 13h57
  3. [Thermique] Chaudière Viessman avec régulation Trimatik-MC/B : problème régulation !
    Par invite5e29631f dans le forum Dépannage
    Réponses: 2
    Dernier message: 28/09/2009, 17h21
  4. régulation par PID
    Par inviteb935a449 dans le forum Électronique
    Réponses: 7
    Dernier message: 05/06/2009, 10h00
  5. LM 317 régulation
    Par morpheus106 dans le forum Électronique
    Réponses: 9
    Dernier message: 27/05/2009, 08h19
Découvrez nos comparatifs produits sur l'informatique et les technologies.