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