TEMPERATURA TERMOCOPPIA CON MAX6675 ED LCD

Schema e Codice per Realizzare un Termometro con Microcontrollore, Display LCD, Integrato MAX6675 e Termocoppia per Misurare Temperature da 0 a 1000°C…

 

 

 
 



 

INTRO

Il seguente schema permette di realizzare un termometro che utilizza un display LCD per mostrare il valore di temperatura e utilizza un integrato MAX6675 per acquisire il valore di tensione generata da una termocoppia. L’integrato dispone di due pinT+ e T- a cui collegare la termocoppia e si riesce a misurare temperature tra 0°C e 1023°C sempre se la termocoppia riesce a resistere a questo range di temperature.

L’integrato MAX6675 usa un protocollo SPI per comunicare, quindi il valore di temperatura viene elaborato all’interno del CHIP e giunge al microcontrollore senza essere disturbato da rumore.

Si è usato un display LCD ma potrebbe essere usato un sette segmenti o qualsiasi altro supporto visivo.

 




 
CODICE

Il codice è il seguente:

#define CS portc.f0                                  //Definisci CS PORTC.F0

sbit SoftSpi_SDI at RC4_bit;                         //Definisci connessione SPI
sbit SoftSpi_SDO at RC5_bit;
sbit SoftSpi_CLK at RC3_bit;

sbit SoftSpi_SDI_Direction at TRISC4_bit;
sbit SoftSpi_SDO_Direction at TRISC5_bit;
sbit SoftSpi_CLK_Direction at TRISC3_bit;            //Fine connessione SPI

sbit LCD_RS at RB0_bit;                              //Definisci connessione LCD
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB2_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D7 at RB5_bit;

sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D7_Direction at TRISB5_bit;                 //Fine connessione LCD

char  temp_lsb, temp_msb;                            //Variabili temp provvisore
unsigned int temp, temperatura;                      //Variabili temp
char text[5];                                        //Variabile testo

void main(){                                         //Programma principale
  TRISC.F0 = 0;                                      //CS chip select uscita
  Lcd_Init();                                        //Inizializza LCD
  Lcd_Cmd(_LCD_CLEAR);                               //Pulisci LCD
  Lcd_Cmd(_LCD_CURSOR_OFF);                          //Spegni cursore
  Soft_SPI_Init();                                   //Inizializza SPI
  
  while (1)   {                                             //Ciclo infinito
    CS=0;                                                   //CS=0 avvia lettura
    temp_msb = Soft_SPI_Read(170);                          //Leggi MSB temperatura
    temp_lsb = Soft_SPI_Read(170);                          //Leggi LSB temperatura
    temp =((unsigned int )temp_msb <<5) | (temp_lsb>>3 );   //Unisci LSB e MSB
    CS=1;
    temperatura = temp >> 2;
    Lcd_Cmd(_LCD_CLEAR);                                    //Pulisci display
    IntToStr(temperatura, text);                            //Converti in testo
    Lcd_Out(1, 1, " Temperatura:   ");                      //Prima riga mostra "Temperatura:"
    Lcd_Out(2,1,text);                                      //Scrivi temperatura sulla 2° riga
    Lcd_Chr(2,9,223);                                       //Mostra simbolo grado
    Lcd_Chr(2,10,'C');                                      //Mostra C di centrigrado
    Delay_ms(1000);                                         //Aspetta 1 secondo
  }
}

Prima di tutto si va a definire CS ovvero Chip Select ovvero il pin PORTC.F0, poi si definisce la connessione SPI fatta in software in modo tale che sia possibile usare qualsiasi microcontrollore e si definisce anche la connessione tra il microcontrollore e il display LCD.

Nel programma principale si va ad inizializzare il display LCD e il protocollo software SPI.

Nel ciclo infinito si pone CS a livello basso per far partire la lettura della temperatura, poi si legge prima la parte alta della temperatura e poi la parte LSB, queste due parti si vanno poi ad unire utilizzando le indicazioni sulla rappresentazione dei dati dell’integrato MAX6675.

Una volta letta la temperatura si va a convertire in testo, si stampa sulla prima riga del display “Temperatura:” e sulla seconda riga si stampa la temperatura con il simbolo di grado centigrado.

Ogni secondo si ripete la lettura e scrittura su LCD.
 

SCHEMA

Lo schema è il seguente:

La tensione di alimentazione è pari a 5V e questa tensione alimenta il microcontrollore con il positivo al pin 20 e GND ai pin 8 e 19, alimenta il display LCD e la sua retroilluminazione e alimenta anche l’integrato o il modulo MAX6675.

Il display LCD è connesso alle PORTB del microcontrollore come indicato nel codice mentre i pin del modulo MAX6675 sono connessi a 3 delle PORTC come indicato sempre nel codice.

R1, R2 ed R3 sono resistori di pull-up per i pin di comunicazione SPI, R4 mantiene in funzione e non in reset il microcontrollore, RV1 controlla il contrasto dell’LCD mentre C3 è un condensatore di filtraggio. Il quarzo da 4MHz e i due condensatori da 22pF formano il circuito di oscillazione.

La termocoppia deve essere connessa correttamente come indicato nel modulo o nel datasheet del MAX6675.

 

DOWNLOAD

Potete scaricare la simulazione del circuito con PROTEUS e il codice compilato con MIKROC al seguente LINK!!!



 

[Voti Totali: 0 Media Voti: 0]
Segui la Nostra Pagina Facebook: Facebook

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *