GHÉP NỐI CẢM BIẾN ĐO NHIỆT ĐỘ LM35 VỚI AVR

Một phần của tài liệu Điều khiển giám sát tòa nhà dùng vi điều khiển 18f452 qua mạng RS-485 (Trang 45 - 49)

II. Chuẩn truyền dẫn RS

2. Cấu trúc tổng quát PIC18F

GHÉP NỐI CẢM BIẾN ĐO NHIỆT ĐỘ LM35 VỚI AVR

Đây là bải ứng dụng bộ ADC trong AVR (sử dụng atmega16) tức là đưa chân tín hiệu output của LM35 vào chân nào đĩ của bộ ADC (ở đây sử dụng kênh 0)để chuyển từ tín hiệu điệp áp tương tự sang tín hiệu số, sau đĩ vi điều khiển sẽ đưa ra ngồi hiển thị hoặc điều khiển một chức năng nào đĩ.

Kiến thức cần cĩ : chuyển đổi ADC, hiển thị LCD

Dùng ADC 10 bít, điện áp lấy mẫu Vdd = 5V, sensor LM35 (10 mV / 1 độ C) Xác định nhiệt độ đo được qua số đo trên chân ADC:

Ta cĩ: 5000 mV --- ứng với --- 1023 (thang đo ADC 10 bít) Vậy: 10 mV --- ứng với --- 10 x 1023/5000 = 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.

Dùng ADC 10 bít, điện áp lấy mẫu Vdd = 5V, sensor LM35 (10 mV / 1 độ C) Xác định nhiệt độ đo được qua số đo trên chân ADC:

Ta cĩ: 5000 mV --- ứng với --- 1023 (thang đo ADC 10 bít) Vậy: 10 mV --- ứng với --- 10 x 1023/5000 = 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.

chương trình hiển thị nhiệt độ #include

#include "myLCD.h"

#define AREF_MODE 0 //dien ap tham chieu ngoai, dien ap tren chan Vref #define AVCC_MODE (1<

#define INT_MODE (1<<

#define ADC_VREF_TYPE AREF_MODE //dinh nghia dien ap tham chieu

uint16_t ADC_val; unsigned int val;

uint16_t read_adc(unsigned char adc_channel){//chuong trinh con doc ADC theo tung channel

ADMUX|=adc_channel; ADCSRA|=(1<

loop_until_bit_is_set(ADCSRA,ADIF); //cho den khi nao bit ADIF==1 return ADCW;

int main(void) {

ADCSRA=(1<<<

ADMUX=ADC_VREF_TYPE; //chon kieu dien ap tham chieu init_LCD(); while (1) { ADC_val=read_adc(0); val= ADC_val*4.88/10; clr_LCD(); uint8_t dis[5]; sprintf(dis,"%i",val); move_LCD(1,1);

print_LCD(dis); //hien thi LCD _delay_ms(1000);

} }

2. Mạch đếm số người ra vào . 3. 4. 5. 6. 7. 8. 9. 10.

Thơng thường để phát hiện người đi ra đi vào ta dùng một cảm biến quang. Cách này thơng dụng dễ lắp đặt nhưng nĩ khơng phân biệt được người vào hay người ra. Nĩ chỉ cĩ thể nhận biết cĩ người thơng qua sự thay đổi trạng thái đầu vào là mức cao hay mức thấp. Bên cạnh đĩ cịn cĩ một nhược điểm nữa là sẽ gây ra cho chương trình chạy sai khi cĩ người vơ tình đứng chắn ngang cảm biến quang trong thời gian tương đối lâu. Lúc đĩ vi điều khiển sẽ hiểu rằng cĩ rất nhiều người ra vào và nĩ sẽ bị đếm nhầm. Để khắc phục tình trạng này, chúng em dùng cùng một lúc hai cảm biến quang đặt cách nhau ở một khoảng nhất định. Dựa vào sự thay đổi trạng thái của cảm biến nào trước, cảm biến nào sau ta sẽ nhận biết được là người đi vào hay đi ra phịng. Phương pháp này rất hiệu quả, nhưng cũng cĩ thể khơng nhận ra số người một cách chính xác như ta mong muốn. Giả sử cùng một lúc cĩ một người vào và 1 người ra cùng một lúc tác động đồng thời 2 cảm biến, lúc này cảm biến chỉ đếm được một người, ta cĩ thể khắc phục tình trạng này bằng cách thiết kế cửa sao cho chỉ cho một người qua lọt mà thơi.

Chức năng mạch đếm người được em thiết kế như sau: khi cĩ một cảm biến quang tác động sẽ làm cho áp trên chân INT1 chuyển từ 1 sang 0. Vi xử lý sẽ nhảy đến chương trình ngắt kiểm tra giữa hai chân P1.0 và P1.1 xem chân nào xuống mức 0 trước: Nếu P 1.0 tác động trước, P1.1 tác động sau thì ta sẽ nhận biết cĩ người vào. Nếu P1.1 tác động trước thì ta nhận biết cĩ người ra.

Một phần của tài liệu Điều khiển giám sát tòa nhà dùng vi điều khiển 18f452 qua mạng RS-485 (Trang 45 - 49)

Tải bản đầy đủ (PDF)

(60 trang)