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