vendredi 24 décembre 2010

Mesure de température avec une sonde thermique et affichage lcd

Salut tout le monde,
Dans ce petit Tutorial je veux faire la mesure de température et l'affichage de la valeur mesuré en temps réel.
Pour la sonde thermique je vais la modéliser par un potentiomètre interactive dont la valeur de résistance est variable durant l’exécution du programme.
Le circuit électronique est ci dissous.

  • La liste de composants:

    un pic 16F877
    afficheur LCD alphanumérique LM016L 
    potentiomètre interactive avec Rm=1Kohm
  • Code avec Mikroc pro
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;
//initialisation de module de connection du LCD
double temp=0;
char *val="1";
void initialisation(){
     lcd_init();
     adc_init();
     lcd_cmd(_lcd_cursor_off);
     lcd_cmd(_lcd_clear);
     lcd_out(1,5,"Mesure");
     lcd_out(2,1, "Temperature");
     delay_ms(500);
     lcd_cmd(_lcd_clear);
}
void main() {
     initialisation();

     while(1){
     lcd_out(1,1,"La température =");
     temp=adc_read(1) ;
     temp*=0.48;
     floattostr(temp,val);
     lcd_out(2,1,val);
     }

}







9 commentaires:

  1. bonjour
    pour quoi vous avez multiplier la valeur temp par 0.48?

    RépondreSupprimer
  2. Bonjour,
    Désolé pour cette réponse tardif.
    La valeur lue (la valeur d'entrée) par le module ADC est en fait une tension image de la température et puis la valeur de sorti est un nombre image de la tension analogique à l'entrée qui varie entre 0 et 1023 donc on doit trouver le rapport entre la température et la valeur de sortie du module ADC. Supposons que pour 100°C on a 5v donc 1023 au niveau ADC pour trouver la valeur de la température il faut diviser sur 102.3 donc le rapport est 0.0097.

    RépondreSupprimer
  3. bonjour,
    comment je peut recevoir ces lectures sur un telephone sous forme d'sms????et merci d'avance :))

    RépondreSupprimer
  4. bon t'as la possibilité d'utiliser un module GPRS qui communique en uart avec le microcontrolleur.
    Ou peut être utiliser un Nokia 9dim et envoyer des sms avec des commandes AT

    RépondreSupprimer
  5. Merci beaucoup pour la réponse, j'ai bien compris le principe mais d’autre coté programmation j n’arrive pas encore à réaliser,si t'as une idée pour m'aider je vous remercie énormément je suis entrain de réaliser mon pfe :))

    RépondreSupprimer
  6. Qu'est ce qu'il n'est pas clair?
    Je suis en train de passe mon pfe aussi :D

    RépondreSupprimer
  7. "voila mon code, je reçoit les sms sur un tel relié au pc mais j'ai reçu "0" j'arrive pas a trouver les erreurs et je suis pas assez connaissant en programmation !!!

    int i;
    char uart_rd[7];

    void main(){
    trisa=0xff;
    ADC_Init;
    i = ADC_Read(1);
    i*=0.293;
    IntToStr(i,uart_rd);
    UART1_Init(9600); // Initialize UART module at 9600 bps
    delay_ms(100);
    UART1_Write_Text("AT+CMGS=");
    delay_ms(1000);
    UART1_Write(0x22); // Code ASCII equivalent pour "
    delay_ms(2000);
    UART1_Write_Text("00216xxxxxxx");
    delay_ms(2000);
    UART1_Write(0x22);
    UART1_Write(0x0D); //Code ASCII equivalent pour Entrer
    delay_ms(2000);
    UART1_Write_text(uart_rd);
    UART1_Write(0x0D);
    delay_ms(2000);
    UART1_Write(26); //Code ASCII equivalent pour ctrl+z
    delay_ms(2000);
    UART1_Write(0x0D);
    delay_ms(2000);
    }

    RépondreSupprimer
  8. le lcd toujours affiche la temperature=0?? pourquoi??

    RépondreSupprimer
  9. Salut g arrivé a faire le bon code et ça a marché avec un tel ancien (merci pour l'idée),le problème que je voulais envoyer ces lectures chaque deux heures est ce que t'a une solution pour le moment le message transmit que lorsque je mis la carte en marche sur isis ??

    RépondreSupprimer