PIC: MAX6675
O CI MAX6675 é um conversor analógico-digital para termopares tipo K. A vantagem de se utilizar um termopar, é que permite medir temperaturas altas, por exemplo, até 1200°C.
CARACTERÍSTICAS
- interface SPI suporta somente leitura.
- Resolução de 12 bits, 0.25°C.
- Medição até 1024°C.
- Alimentação de 3,3 a 5 volts.
- Tempo de conversão 0.17s.
- Consumo máximo de 1,5 mA.
FORMATO DE SAÍDA
CÓDIGO DA BIBLIOTECA
MikroC PRO PIC
sbit MAX6675_CS at RC2_Bit;
sbit MAX6675_CS_Direction at TRISC2_Bit;
union
{
char state:1;
char deviceID:1;
char open:1;
char temperature:12;
char sign:1;
unsigned output;
}Max6675Data;
void MAX6675_Init()
{
MAX6675_CS_Direction = 0;
MAX6675_CS = 1;
}
unsigned Max6675_Read()
{
unsigned tmp;
MAX6675_CS = 0;
Hi(tmp) = SPI1_Read(0);
Lo(tmp) = SPI1_Read(0);
MAX6675_CS = 1;
return(tmp);
}
EXEMPLO
MikroC PRO PIC
//Habilitar as seguintes bibliotecas:
// - Lcd
// - SPI
// - Conversions e C_String
#include <built_in.h>
sbit LCD_RS at RB5_bit;
sbit LCD_EN at RB4_bit;
sbit LCD_D4 at RB3_bit;
sbit LCD_D5 at RB2_bit;
sbit LCD_D6 at RB1_bit;
sbit LCD_D7 at RB0_bit;
sbit LCD_RS_Direction at TRISB5_bit;
sbit LCD_EN_Direction at TRISB4_bit;
sbit LCD_D4_Direction at TRISB3_bit;
sbit LCD_D5_Direction at TRISB2_bit;
sbit LCD_D6_Direction at TRISB1_bit;
sbit LCD_D7_Direction at TRISB0_bit;
//Copie e cole o código da bilioteca aqui!!!
void main()
{
char texto[8];
SPI1_Init();
MAX6675_Init();
Lcd_Init();
Lcd_Cmd( _LCD_CURSOR_OFF );
Lcd_Cmd( _LCD_CLEAR );
Lcd_Out( 1, 6, "MAX6675" );
while(1)
{
*(unsigned*)&Max6675Data = MAX6675_Read();
WordToStr( Max6675Data.temperature >> 1, texto );
Lcd_Out( 2, 1, "Temp: " );
Lcd_Out_CP( texto+2 );
Lcd_Chr_CP( 223 );
Lcd_Chr_CP( 'C' );
Delay_ms( 1000 );
}
}
DOWNLOAD
Arquivo do Proteus 8 : MAX6675.pdsprj



Parabéns! ótimo tutorial!
ResponderExcluirMuito bom
ResponderExcluirNão entendo muito bem a linha 37 do codigo, poderia me explicar???
ResponderExcluirleu temperatura , so que ta com valor errado.
ResponderExcluirMuito bom continuem assim, parabéns !
ResponderExcluirBoa tarde.
ResponderExcluirEstou testando esse programa acima mostrado, mas esta dando erro nas linhas mostrado a baixo. Alguém poderia me ajudar?
Hi(tmp) = SPI1_Read(0);
Lo(tmp) = SPI1_Read(0);
Hola, me pudieras enviar el código
ResponderExcluir