Điện áp tham chiếu (reference voltage): Cùng một bộ chuyển đổi ADC nhưng có người muốn dùng cho các mức điện áp khác nhau, ví dụ người A muốn chuyển đổi điện áp trong khoảng 0-1V trong khi người B muốn dùng cho điện áp từ 0V đến 5V. Rõ ràng nếu hai người này dùng 2 bộ chuyển đổi ADC đều có khả năng chuyển đổi đến điện áp 5V thì người A đang “phí phạm” tính chính xác của thiết bị. Vấn đề sẽ 13
được giải quyết bằng một đại lượng gọi là điện áp tham chiếu - Vref (reference voltage). Điện áp tham chiếu thường là giá trị điện áp lớn nhất mà bộ ADC có thể chuyển đổi. Trong các bộ ADC, Vref thường là thông số được đặt bởi người dùng, nó là điện áp lớn nhất mà thiết bị có thể chuyển đổi. Ví dụ, một bộ ADC 10 bit (độ phân giải) có Vref=3V, nếu điện áp ở ngõ vào là 1V thì giá trị số thu được sau khi chuyển đổi sẽ là: 1023x(1/3)=314. Trong đó 1023 là giá trị lớn nhất mà một bộ ADC 10 bit có thể tạo ra (1023=210-1). Vì điện áp tham chiếu ảnh hưởng đến độ chính xác của quá trình chuyển đổi, chúng ta cần tính toán để chọn 1 điện áp tham chiếu phù hợp, không được nhỏ hơn giá trị lớn nhất của input nhưng cũng đừng quá lớn.
PHỤ LỤC Phụ lục 1. Chương trình chính: #include <avr\io.h> #define FRE 8 #include "hunget_adc.h" #include "hunget_lcd.h" #include "thu_vien_rieng.h" int main() { INIT(); DO_NHIET_DO(); return 0; }Phụ lục 2. Chương trình con: void DO_NHIET_DO() {
//Khoi tao man hinh LCD
DDRD |= (1<<PD5); //chan dieu khien RW = 0 write/ = 1 read PORTD &= ~(1<<PD5);// RW = 0 thuc hien write ra lcd
PORTC |= 0x0F; // khoi tao con tro nhap nhay
LCD4_INIT(0,0); //Hien thi dong 1 LCD LCD4_CUR_GOTO(1,0); LCD4_OUT_STR("Tempature:"); LCD4_CUR_GOTO(2,0); LCD4_OUT_STR("00.00 C"); LCD4_CUR_GOTO(2,6); LCD4_OUT_DATA(223);
unsigned long int nhietdo; unsigned long int nguyen; unsigned long int thapphan; for(;;)
{ ADC_STA_CONVERT(); LCD4_DELAY(100);
nhietdo = ADC*25; thapphan = nhietdo%100;
LCD4_CUR_GOTO(2,0); LCD4_OUT_DEC(nguyen, 2); LCD4_CUR_GOTO(2,3); LCD4_OUT_DEC(thapphan, 2); DELAY_MS(200); } }