[VI ĐIỀU KHIỂN PIC] - BÀI 8: GIAO TIẾP LM35 PIC16F877A TRONG CCS - BeeLab

Monday, June 5, 2017

[VI ĐIỀU KHIỂN PIC] - BÀI 8: GIAO TIẾP LM35 PIC16F877A TRONG CCS


Đặc đim chính ca cm biến LM35
+ Đin áp đầu vào: 4V - 30V
+ Độ phân gii đin áp đầu ra: 10mV/oC
+ Độ chính xác cao 25 C là 0.5 C
+ Tr kháng đầu ra thp 0.1 cho 1mA ti

Di nhit độ đo được ca LM35 là t -55 C - 150 C vi các mc đin áp ra khác nhau. Xét mt s mc đin áp sau :

- Nhit độ -55 C đin áp đầu ra -550mV

- Nhit độ 25 C đin áp đầu ra 250mV
- Nhit độ 150 C đin áp đầu ra 1500mV
Tùy theo cách mc ca LM35 để ta đo các gii nhit độ phù hp. Đối vi h thng này thì đo t 0 đến 150. Chi tiết các bn có th xem trong datasheet ca nó
Tính toán nhit độ đầu ra ca LM35.

? ADC
1023 ADC (10bit)
10 mV
5000mV (Vref = Vdd = 5V)

Suy ra 1 độ C (10mV) = 10*1023/5000 = 2.046 ADC
Nhietdo = read_ADC()/2.046;
Con số 2,046 tính được đó chính là lượng thay đổi trên chân ADC ứng với thay đổi 10mV ở đầu ra LM35 hay ứng với thay đổi 1 độ C trên LM35.

Sai số của LM35
+ Tại 0 độ C thì điện áp của LM35 là 10mV

+ Tại 150 độ C thì điện áp của LM35 là 1.5V = 1500mV

==> Giải điện áp ADC biến đổi là 1500 - 10 = 1490 (mV)

+ ADC 10 bit nên bước thay đổi của ADC là : 2.046mV

Vậy sai số của hệ thống đo là : Y = 2.046/1490 = 0.0014 = 0.14% 
float nhietdo;
int x,dat=0;
unsigned char ma7doan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void hienthi(int num)
{
 output_c(ma7doan[num/10]);output_high(pin_d3);delay_ms(1);output_low(pin_d3);
 output_c(ma7doan[num%10]);output_high(pin_d2);delay_ms(1);output_low(pin_d2);
}
void khoitao_ADC0()
{
   setup_adc_ports(AN0);//thiet lap
   setup_adc(ADC_CLOCK_DIV_2);
   set_adc_channel(0); //chon kenh 0 
   delay_us(100);//on dinh
}
void main()
{
   lcd_init();
   while(TRUE)
   {
      //TODO: User Code
      khoitao_ADC0();
      nut_nhan();
      nhietdo = read_adc()/2.046;
      x = nhietdo;
      hienthi(x);
      lcd_gotoxy(1,2);
    printf(lcd_putc,"LM35: %f",nhietdo);
   }
}