No projeto abaixo iremos desenvolver um termômetro digital utilizando o PIC18F e o sensor de temperatura LM35.
Projeto: Medir a temperatura ambiente e mostrá-la no display LCD.
Descrição: O projeto mede a temperatura ambiente através do sensor de temperatura LM35 e a apresenta no display de LCD.
Vantagem: O sensor de temperatura LM35 tem uma precisão de 0.5 grau celsius e em algumas faixas ele é linear.
Resumo de funcionamento do sensor LM35.
Data Sheet
O sensor de temperatura LM35 é um dispositivo que varia a sua tensão de saída conforme a variação da temperatura ambiente, sua faixa de variação é de 10mV por grau Celsius sendo assim podemos utilizar uma regra de 3 para descobrirmos a temperatura atual.
O circuito abaixo ilustra o diagrama elétrico do Kit Easy 18F com o sensor LM35.
Para que o PIC leia o sinal analógico da temperatura é necessário passá-lo pelo conversor analógico/digital, o conversor A/D deste microcontrolador tem uma resolução de 10 bits, sendo assim podemos medir um valor que tenha uma correspondência binária de até 1023.
Ex: tensão de alimentação é de 5V, então o valor máximo de medida é de 1023, e o valor minimo é 0.
Utilizando a regra de 3 para calcular a variação de temperatura na sua correspondência binária.
Sendo assim temos que escolher um canal para efetuar a medida, pois o conversor A/D deste PIC possui 13 canais para mediadas analógicas, iremos escolher somente um canal, pois estaremos medindo somente uma grandeza analógica.
A escolha do canal é feita através da biblioteca do PIC.
Código Fonte: O código fonte foi escrito na linguagem C, para o compilador C18 da microchip.
Segue o código.
/* Termômetro Digital */
/* Rodrigo Mira de Oliveira */
/* www.hizvale.com.br */
/* HI-Z Vale */
#include<P18F4520.h>
#include<adc.h>
// *** Bits de Configuração
#pragma config OSC = HS // (8 MHz crystal)
#pragma config FCMEN = OFF
#pragma config IESO = OFF
#pragma config PWRT = OFF
#pragma config BORV = 3
#pragma config WDT = OFF
#pragma config WDTPS = 32768
#pragma config MCLRE = ON
#pragma config LPT1OSC = OFF
#pragma config PBADEN = OFF
#pragma config STVREN = ON
#pragma config LVP = OFF
#pragma config XINST = OFF // Extended Instruction Set
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CPB = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRTB = ON // Boot Block Write Protection
#pragma config WRTC = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTRB = OFF
#include "LCD8.h"
const char MSG1[] = "Temperatura";
void PrintLCD4(unsigned int data){
/*************************************************************************
Quebra numero de quatro digitos para imprimir no LCD
EX: 1024
1024/1000 = '1'
1024%1000 = 024
024/100 = '0'
024%100 = 24
24/10 = '2'
24%10 = '4'
*************************************************************************/
/*PutLCD(' ');
PutLCD((data / 1000) + 0x30);
data = data % 1000;
PutLCD((data / 100) + 0x30);*/
data = data % 100;
PutLCD((data / 10) + 0x30);
PutLCD((data % 10) + 0x30);
PutLCD(0xDF);
PutLCD('C');
}
void main (void)
{
unsigned int valor,temp;
TRISD = 0;
TRISC = 0;
// *** Configuração do conversor A/D
OpenADC ( ADC_FOSC_16 & // FOSC = 8MHz. Tad = 16/10M = 2.0 µS
ADC_RIGHT_JUST & // Resultado Justificado para direita
ADC_2_TAD, // Configuração do tempo de aquisição automático.
ADC_CH0 & // Seleciona o canal 0 (AN0)
ADC_INT_OFF & // Desabilita Interrupção
ADC_VREFPLUS_VDD & // Vref+ = VCC
ADC_VREFMINUS_VSS, // Vref- = GND
14); // Habilita somente o canal AN0 como entrada analógica
OpenLCD(); // inicializa LCD
for(;;){
ConvertADC(); // inicia conversão
while(BusyADC()); // espera conversão terminar
valor = ReadADC(); // lê resultado
valor = valor * 500; // converte para temperatura.
temp = valor/1023;
GotoXYLCD(2,1); // apresenta no display
PrintLCD(MSG1);
GotoXYLCD(6,2);
PrintLCD4(temp);
}
}
Circuito no Proteus.
Este projeto foi desenvolvido no Kit Easy 18F da Hi-Z Vale, assista o vídeo
Adquira o módulo de expansão sensores analógicos!
Aonde eu posso encontrar essa biblioteca LCD8 ?
ResponderExcluirGostei muito do projeto e gostaria de tentar executá-lo
Parabéns
ola guilherme vium post seu em um projeto de termometro , vc tem o programador de pic ICD HI-VALE , se tiver vc pode me ajudar , pois tenho este gravador mas perdi o cd de instalação dele , se puder me ajudar fico-lhe grato , obrigado , meu email marvann@uol.com.br
ResponderExcluircomo faço para passar programação do c18 microchip para o mikroC?
ResponderExcluirHow to Play the Mega Drive Mini Arcade Game - Mapyro
ResponderExcluirMega Drive 춘천 출장마사지 Mini 양산 출장안마 Arcade Game – Complete 안동 출장안마 Complete Guide. If you want to learn how 경상북도 출장안마 to play Mega Drive Mini Arcade Game 삼척 출장안마 - The Sega Mega Drive Mini is