1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án vi xử lý điều khiển nhiệt độ độ ẩm

42 3,4K 25

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 42
Dung lượng 897 KB

Nội dung

Vì không có chức năng khác ngoài xuất/nhập nên nó chỉ được dùng giao tiếp với các thiết bị bên ngoài... Trong trường hợp không config thì nó tự động ở chế độ 12 bit.. + Có ch

Trang 1

II phần cứng

1. Mạch nguyên ly

2. Các khối trong mạch

Khối xử lý trung tâm

Trang 2

Khối nguồn

Tạo điện áp chuẩn 5V cho vi điều khiển D1 tạo điện áp 1 chiều, các bộ tụ C1, C2 để san phẳng và làm ổn định điện áp ra cho vi điều khiển

Trang 3

Khối đo độ ẩm

HS1101 là cảm biến điện dung Khi độ ẩm thay đổi, điện dung của HS1101 thay đổi Do vậy, để đo được độ ẩm người ta thiết kế mạch đo điện dung của HS1101

Trong thực tế, người ta thường ghép nối HS1101 và IC NE555 Khi đó giá trị điện dung của HS1101 thay đổi thì làm thay đổi tần số đầu ra của IC555 Như vậy chỉ cần đo tần số đầu ra là có thể đo được điện dung của HS1101

• Khối đo nhiệt độ

Trang 4

Khối role

Khi t mở Chân tiếp điểm kéo xuống đất Vcc mức 1, tạo ra sự chênh áp

Khối hiển thị LCD

Trang 5

Khối reset

Trang 6

Khối dao động

Khối nút nhấn

Trang 7

III.tìm hiểu về các linh kiện được sử dụng

Trong mạch đo nhiệt độ và độ ẩm dùng cảm biến nhiệt độ DS18B20 và cảm biến điện dung HS1101 hiển thị ra màn hình LCD ta cần sử dụng các linh kiện sau:

…………

1. Vi điều khiển 89S52

a. Hình ảnh

Trang 8

a. Cấu tạo và chức năng các chân trên 89s52

AT89S52 có tất cả 40 chân có chức năng như các đường xuất nhập Trong

đó có 24 chân có tác dụng kép (có nghĩa là 1 chân có 2 chức năng), mỗi đường

có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữ liệu và bus địa chỉ

* PORT

Port 0: là port có 2 chức năng ở các chân từ 32- 39 Trong các thiết kế cỡ nhỏ

không dùng đến bộ nhớ mở rộng thì port 0 có chức năng là xuất/nhập dữ liệu Nếu trong các thiết kế cỡ lớn phải dùng đến bộ nhớ mở rộng thì port 0 được kết hợp giữa bus địa chỉ và bus dữ liệu

Port 1: là port có 1 chức năng từ chân 1- 8 Có thể dùng cho giao tiếp với thiết

bị ngoài nếu cần Vì không có chức năng khác ngoài xuất/nhập nên nó chỉ được dùng giao tiếp với các thiết bị bên ngoài

Port 2: là 1 port có tác dụng kép trên các chân 21- 28 được dùng như các

đường xuất nhập hoặc là byte cao của các bus địa chỉ đối với thiết bị dùng bộ nhớ mở rộng

Port3: là port có tác dụng kép trên các chân 10- 17, port này có nhiều chức

năng cụ thể như sau:

Trang 9

P3.0 RXT Ngõ vào đữ liệu nối tiếp

P3.6 WR Tín hiệu ghi dữ liệu lên bộ nhớ ngoàiP3.7 RD Tín hiệu đọc dữ liệu bộ nhớ ngoài

* các ngõ tín hiệu điều khiển

PSEN

PSEN là tín hiệu ngõ ra ở chân 29 có ứng dụng cho phép đọc bộ nhớ

chương trình mở rộng thường được nối với chân 0E( output ennable) của EPROM cho phép đọc các byte mã lệnh PSEN ở mức 0 khi 89s52 lấy lệnh, các mã lệnh của chương trình đọc từ EPROM qua bus dữ liệu và được chốt vàothanh ghi lệnh để giải lệnh PSEN ở mức 1 khi 89s52 thi hành chhuowng trìnhtrong ROM nội

ALE

ALE ở chân số 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt Vì khi 89s52 truy xuất bộ nhớ bên ngoài port 0 có chức năng là đường địa chỉ và dữ liệu nên phải tách riêng ra

Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vaitrò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động

Vcc là chân số 40, thường được nối lên nguồn 5V

2. Cảm biến nhiệt độ DS18B20

Trang 10

a. Hình ảnh

DS18B20 là IC cảm biến nhiệt độ chỉ bao gồm 3 chân, đóng gói dạng TO-92

b. Cấu tạo

Trang 11

DS18B20 gồm 3 chân Vcc, GND, DATA.

Sơ đồ kết nối:

c. Đặc tính kỹ thuật

+ Lấy nhiệt độ theo giao thức 1 dây (1wire)

+ Cung cấp nhiệt độ với độ phân giải config 9,10,11,12 bit, tùy theo sử dụng Trong trường hợp không config thì nó tự động ở chế độ 12 bit

Thời gian chuyển đổi nhiệt độ tối đa là 750ms cho mã hóa 12 bit

+Có thể đo nhiệt độ trong khoảng -55 -> +125°C Với khoảng nhiệt độ là -10°C to +85°C thì độ chính xác ±0.5°C,±0.25°C ,±0.125°C,±0.0625°C theo số bít config

Trang 12

+ Có chức năng cảnh báo nhiệt khi nhiệt độ vượt ngưỡng cho phép Người dùng có thể lập trình chức năng này cho DS18B20 Bộ nhớ nhiệt độ cảnh báo không bị mất khi mất nguồn vì nó có một mã định danh duy nhất 64 bit chứa trong bộ nhớ ROM trên chip (on chip), giá trị nhị phân được khắc bằng tia laze.

+ Cam bien nhiet do DS18B20 có mã nhận diện lên đến 64-bit, vì vậy bạn có thể kiểm tra nhiệt độ với nhiều IC DS18B20 mà chỉ dùng 1 dây dẫn duy nhất để giao tiếp với các IC này

Với DS18B20 bạn hoàn toàn có thể tạo cho mình mạch cảm biến nhiệt độ theo y muốn

+ Điện áp sử dụng : 3 – 5.5 V

+ Dòng tiêu thụ tại chế độ nghỉ rất nhỏ

d. Lập trình đo nhiệt độ với vi điều khiển 89s52

Khi xử ly DS18b20 chúng ta cần quan tâm đến 2 nhóm lệnh sau:

+ nhóm lệnh truy cập ROM

+ nhóm lệnh chức năng bộ nhớ

Nhóm lệnh truy cập ROM

- READ ROM (33h)

Cho phép đọc ra 8 byte mã đã khắc bằng laser trên ROM, bao gồm: 8 bit mã định tên linh kiện (10h), 48 bit số xuất xưởng, 8 bit kiểm tra CRC Lệnh này chỉ dùng khi trên bus có 1 cảm biến DS1820, nếu khôngsẽ xảy ra xung đột trên bus do tất cả các thiết bị tớ cùng đáp ứng

- MATCH ROM (55h)

Lệnh này được gửi đi cùng với 64 bit ROM tiếp theo, cho phép bộ điều khiển bus chọn ra chỉ một cảm biến DS1820 cụ thể khi trên bus có nhiều cảm biến DS1820 cùng nối vào Chỉ có DS1820 nào có 64 bit trênROM trung khớp với chuỗi 64 bit vừa được gửi tới mới đáp ứng lại các lệnh về bộ nhớ tiếp theo Còn các cảm biến DS1820 có 64 bit ROM không trùng khớp sẽ tiếp tục chờ một xung reset Lệnh này được sử dụng cả trong trường hợp có một cảm biến một dây, cả trong trường hợp

có nhiều cảm biến một dây

- SKIP ROM (CCh)

Lệnh này cho phép thiết bị điều khiển truy nhập thẳng đến các lệnh bộ nhớ của DS1820 mà không cần gửi chuỗi mã 64 bit ROM Như vậy sẽ tiết kiệm được thời gian chờ đợi nhưng chỉ mang hiệu quả khi trên bú chỉ có một cảm biến

- SEARCH ROM (F0h)

Lệnh này cho phép bộ điều khiển bus có thể dò tìm được số lượng thànhviên tớ đang được đấu vào bus và các giá trị cụ thể trong 64 bit ROM của chúng bằng một chu trình dò tìm

- ALARM SEARCH (ECh)

Trang 13

Tiến trình của lệnh này giống hệt như lệnh Search ROM, nhưng cảm biến DS1820 chỉ đáp ứng lệnh này khi xuất hiện điều kiện cảnh báo trong phép đo nhiệt độ cuối cùng Điều kiện cảnh báo ở đây được định nghĩa là giá trị nhiệt độ đo được lớn hơn giá trị TH và nhỏ hơn giá trị

TL là hai giá trị nhiệt độ cao nhất và nhiệt độ thấp nhất đã được đặt trên thanh ghi trong bộ nhớ của cảm biến

Sau khi thiết bị chủ (thường là một vi điều khiển) sử dụng các lệnh ROM để định địa chỉ cho các cảm biến một dây đang được đấu vào bus,thiết bị chủ sẽ đưa ra các lệnh chức năng DS1820 Bằng các lệnh chức năng thiết bị chủ có thể đọc ra và ghi vào bộ nhớ nháp (scratchpath) củacảm biến DS1820 khởi tạo quá trình chuyển đổi giá trị nhiệt độ đo đượcvà xác định chế độ cung cấp điện áp nguồn Các lệnh chức năng có thể được mô tả ngắn gọn như sau:

- WRITE SCRATCHPAD (4Eh)

Lệnh này cho phép ghi 2 byte dữ liệu vào bộ nhớ nháp của DS1820 Byte đầu tiên được ghi vào thanh ghi TH (byte 2 của bộ nhớ nháp) còn byte thứ hai được ghi vào thanh ghi TL (byte 3 của bộ nhớ nháp) Dữ liệu truyền theo trình tự đầu tiên là bit có y nghĩa nhất và kế tiếp là những bit có y nghĩa giảm dần Cả hai byte này phải được ghi trước khi thiết bị chủ xuất ra một xung reset hoặc khi có dữ liệu khác xuất hiện

- READ SCRATCHPAD (BEh)

Lệnh này cho phép thiết bị chủ đọc nội dung bộ nhớ nháp Quá trình đọc bắt đầu từ bit có y nghĩa nhấy của byte 0 và tiếp tục cho đến byte rhứ 9 (byte 8 – CRC) Thiết bị chủ có thể xuất ra một xung reset để làm dừng quá trình đọc bất kỳ lúc nào nếu như chỉ có một phần của dữ liệu trên bộ nhớ nháp cần được đọc

- COPYSCRATCHPAD (48h)

Lệnh này copy nội dung của hai thanh ghi TH và TL (byte 2 và byte 3) vào bộ nhớ EEPROM Nếu cảm biến được sử dụng trong chế dộ cấp nguồn l bắt đầu việc đo

- CONVERT T (44h)

Lệnh này khởi động một quá trình đo và chuyển đổi giá trị nhiệt độ thành số (nhị phân) Sau khi chuyển đổi giá trị kết quả đo nhiệt độ được lưu trữ trên thanh ghi nhiệt độ 2 byte trong bộ nhớ nháp Thời gian chuyển đổi không quá 200 ms, trong thời gian đang chuyển đổi nếu thựchiện lệnh đọc thì các giá trị đọc ra đều bằng 0

- READ POWER SUPPLY (B4h)

Một lệnh đọc tiếp sau lệnh này sẽ cho biết DS1820 đang sử dụng chế độcấp nguồn như thế nào, giá trị đọc được bằng 0 nếu cấp nguồn bằng

Trang 14

chính đường dẫn dữ liệu và bằng 1 nếu cấp nguồn qua một đường dẫn riêng.

Nhóm lệnh chức năng bộ nhơ

Để xử ly được nhiệt độ được từ DS18B20 chúng ta cần quan tâm đến hàm :

-float ds18b20_readtemp(void): Đây là hàm giúp các bạn tính toán và

trả về giá trị nhiệt độ mà DS18b20 đo đượcChúng ta có hàm đọc nhiệt độ

float ds18b20_readtemp(void)

{

float temp;

unsigned char a,b;

DS18B20_Init(); // Khoi tao DS18b20

ds18b20_writebyte(0xCC) ; // Cho phep VDK truy cap thang den cac

lenh bo nho cua DS18b20 ds18b20_writebyte(0x44) ; // Khoi dong qua trinh do va chuyen doi nhiet

do ra so nhi phan DS18B20_Init() ;

Trang 15

b. Nguyên ly làm việc

Trang 16

Cảm biến HS1101 là cảm biến điện dung Khi độ ẩm thay đổi, điện dung của HS1101 thay đổi Do vậy, để đo được độ ẩm người ta thiết kế mạch đo điện dung của HS1101.

Trong thực tế, người ta thường ghép nối HS1101 và IC NE555 Khi đó giá trị điện dung của HS1101 thay đổi thì làm thay đổi tần số đầu ra của IC555 Như vậy chỉ cần đo tần số đầu ra là có thể đo được điện dung của HS1101

Sơ đồ ghép nối HS1101 với NE555

c. Cách thức đo độ ẩm

Ta có công thức tính tần số như sau :

Trong đó:

oF là tần số

oC@%RH: độ ẩm

oR2 = 576K, R4 = 49.9k

Ta có công thức liên hệ giữa độ ẩm và điện dung:

(2)Trong đó:

oC@55% = 180pF ( tài liệu của hãng )

oC(pf) chính là điện dung đo được

Trang 17

Từ (1) và (2) ta có mỗi liên hệ giữa tần số và độ ẩm

Giải pháp tính toán:

Ta thấy hàm độ ẩm là hàm mũ 3, nên rất khó tính toán mối liên hệ F và RH

Ta thấy hàm C(pf) là hàm đồng biến với RH Do vậy ta F sẽ nghịch biến với

RH Từ đó ta có phương pháp tính độ ẩm bằng phương pháp tra bảng

Ta dùng bảng Excel như bảng 1, tạo mối quan hệ RH và F, ta thu được bảng.

F[100] = {7410;7392;….;6019} Mảng này có 100 phần tử tương đương với độẩm từ 0-100%

Như vậy, khi ta đo được tần số F, ta chọn F>=F và sát nhất với F.

Khi đó Độ ẩm RH =i%.

Bảng 1: Bảng tính giá trị độ ẩm qua tần số.

4. Hiển thị LCD

a. Hình ảnh

Trang 18

b. Cấu tạo và các chức năng

-Chân vcc, Vss,VEE: Cấp dương nguồn - 5v và đất tương ứng thì VEE được dùng đểđiều khiển độ tương phản của LCD

Trang 19

-Chân chọn thanh ghi RS: Có hai thanh ghi rất quan trọng bên trong LCD, chân RSđược dùng để chọn các thanh ghi này như sau: Nếu RS = 0 thì thanh ghi mà lệnh đượcchọn để cho phép người dùng gửi một lệnh chẳng hạn như xoá màn hình, đưa con trỏ vềđầu dòng v.v Nếu RS = 1 thì thanh ghi dữ liệu được chọn cho phép người dùng gửi dữliệu cần hiển thị trên LCD.

-Chân W/R: Đầu vào đọc/ ghi cho phép người dùng ghi thông tin lên LCD khi R/W =

0 hoặc đọc thông tin từ nó khi R/W = 1

- Chân cho phép E: Chân cho phép E được sử dụng bởi LCD để chốt thông tin hiệnhữu trên chân dữ liệu của nó Khi dữ liệu được cấp đến chân dữ liệu thì một xung mứccao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu trên các chân dữ liêu.Xung này phải rộng tối thiểu là 450ns

- Chân D0-D7: Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD hoặcđọc nội dung của các thanh ghi trong LCD

Để hiển thị các chữ cái và các con số, chúng ta gửi các mã ASCII của các chữ cáitừ A đến z, a đến f và các con số từ 0 - 9 đến các chân này khi bật RS = 1

Cũng có các mã lệnh mà có thể được gửi đến LCD để xoá màn hình hoặc đưa contrỏ về đầu dòng hoặc nhấp nháy con trỏ Bảng h1sau liệt kê các mã lênh

Chúng ta cũng sử dụng RS = 0 để kiểm tra bít cờ bận để xem LCD có sẵn sànenhân thông tin Cờ bận là D7 và có thể được đọc khi R/W = 1 và RS = 0 như sau:

Nếu R/W = 1, RS = 0 khi D7 = 1 (cờ bận 1) thì LCD bận bởi các công việc bêntrong và sẽ không nhận bất kỳ thông tin mới nào Khi D7 = 0 thì LCD sẵn sàng nhậnthông tin mới Lưu y chúng ta nên kiểm tra cờ bận trước khi ghi bất kỳ dữ liệu nào lênLCD

5. Role

III- phần mềm

1. Code lập trình cho mạch

* Ten Tep : Code.c

Trang 20

* Tac Gia : tran van nam

Trang 21

//Ham tre thoi gian

void delay_ms(unsigned int Time)

{

Trang 22

unsigned int i,j,t;

Trang 23

-// Ham Gui 4 Bit Du Lieu Ra LCD

void lcd1602_send_4bit_data ( unsigned char cX )

{

LCD_D4 = cX & 0x01;

LCD_D5 = (cX>>1)&1;

Trang 24

LCD_D6 = (cX>>2)&1;

LCD_D7 = (cX>>3)&1;

}

//

-// Ham Gui 1 Lenh Cho LCD

void lcd1602_send_command (unsigned char cX )

Trang 25

-// Ham Khoi Tao LCD

void lcd1602_init ( void )

// che do gui lenh

lcd1602_send_4bit_data ( 0x03 ); // ket noi 8 bit

Trang 26

phep hien thi man hinh

lcd1602_send_command( 0x06 ); // tang ID, khongdich khung hinh

lcd1602_send_command( CLEAR_LCD ); // xoa toan bo khung hinh

}

//

-// Ham Thiet Lap Vi Tri Con Tro

void lcd1602_gotoxy(unsigned char x, unsigned char y)

{

unsigned char address;

Trang 28

//

-// Ham Gui 1 Ky Tu Len LCD

void lcd1602_putchar ( unsigned int cX )

Trang 31

*********//

unsigned char ReadOneChar(void)

{

unsigned char i=0;

unsigned char dat = 0;

Trang 32

unsigned char i=0;

for (i=8; i>0; i )

Trang 35

Noi Dung : Doc gia tri do am.

Tham Bien : frequency: tan so do duoc tu bo dao dong NE555 ket hop HS1101

Tra Ve : Gia tri do am do duoc tu HS1101

Trang 40

delay_ms(100);

}

}

2. Mô phỏng bằng phần mềm Proteus

Khi T < Tkc thì rorowle (D1) chưa hoạt động( D1 tắt)

Trang 41

Khi T > Tkc thì rơle hoạt động

Ngày đăng: 17/10/2015, 10:24

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w