đo mực nước dùng vi xử lý 8051
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIÊP HÀ NỘI
BÀI TẬP LỚN
Môn: Vi Xử Lý Trong Đo Lường Và Điều Khiển
Nhóm 3: Đo mức nước dùng Encoder/Cảm biến
đo mức dạng Analog
Họ và tên:
MSV:
Lớp:
Trang 2MỤC LỤC
MỤC LỤC 2
I Đặt vấn đề 3
II Một số thiết bị đo mức nước 3
II.1 Thiết bị đo mức kiểu điện dung 3
II.2 Thiết bị đo mức nước thủy tĩnh 4
II.3 thiệu về thiết bị đo mức nước bằng siêu âm ECH306L, ECH310L, ECH318L, ECH324L: 5
III Phương án thiết kế 5
III.1 Lựa chọn thiết bị cần thiết 6
IV Thiết kế sơ đồ nguyên lý và lưu đồ thuật toán nạp chương trình cho vi điều khiển 7
IV.1 sơ đồ nguyên lí 7
IV.2 Lưu đồ thuật toán 8
Trang 3I ĐẶT VẤN ĐỀ
Ngành công nghiệp nước ta đang rất phát triển trên hầu hết tất cả các lĩnh vực Có thể kể đến như công nghiệp chế tạo, công nghiệp sản xuất, công nghiệp chế biến,… Và không mấy xa lạ đối với các ngành công nghiệp liên quan đến các loại chất lỏng như nước thải, nhiên liệu, xăng dầu,…đó là các thiết bị chứa mà chúng ta thường gọi là tank chứa hay silo chứa Đây là một trong những cách thức để chứa đựng và lưu trữ khá phổ biến hiện nay vì chúng khá tiện dụng trong việc cất trữ hay vận chuyển
Chính vì các tank chứa hay silo chứa khá quan trọng trong các ngành công nghiệp
nhiên liệu, chất lỏng hay nước các loại,… Nên nhu cầu đo lường trong các thiết bị chứa này cũng tăng cao Đó cũng chính là lý do mà mình muốn nói đến trong bài viết này,
mình muốn chia sẻ đến mọi người hệ thống đo lường trong các tank chứa, bể chứa
hay silo chứa kết hợp điều khiển động cơ
II MỘT SỐ THIẾT BỊ ĐO MỨC NƯỚC
II.1 Thiết bị đo mức kiểu điện dung
Đối với cảm biến báo mức liên tục thì điện dung; là một trong các phương pháp khá tiết kiệm có giá thành khá cạnh tranh với độ chính xác cao
Nhược điểm của cảm biến đo mức nước liên tục bằng điện dung Là khoảng cách
đo ngắn và độ dài của thanh cảm biến cố định; khi chúng ta chọn ngay lúc ban đầu Một
Trang 4II.2 Thiết bị đo mức nước thủy tĩnh
Đầu cảm biến sẽ được thả chìm xuống đấy Tank Hoặc bồn chứa chất lỏng hay nước Dựa vào cột nước đè lên màng cảm biến sẽ xuất ra tín hiệu analog 4-20mA
Với 1 bar áp suất tương ứng với 10 mH20 vì thế chúng ta phải lưu ý chọn cable cho cảm biến phải bằng hoặc lớn hơn giá trị áp suất của cảm biến
Ưu điểm cảm biến đo mức thủy tĩnh : Lắp đặt dễ dàng chỉ cần thả cảm biến xuống
bể cần đo mức thôi là xong Độ chính xác cao Khoảng cách đo mức nước tối đa 200m Không phụ thuộc vào kích thước bồn chứa
Nhược điểm : Đo chính xác nhất áp dụng cho nước Không dùng cho bồn chứa có
áp suất Nhiệt độ cao
Thiết bị được mức nước khoảng cách rộng đến hàng trăm mét Thì chắc hẳn bạn đang nghĩ đến đo mức nước giếng rồi đúng không nào? Để đo mức nước tực tế trong giếng, bạn không còn phương án lựa chọn cảm biến siêu âm hay điện dung được Vì giếng khoan lỗ tương đối nhỏ, phạm vi lắp đặt rất hẹp, chiều sâu vài chụ đến vài trăm mét Trường hợp này dùng loại cảm biến thủy tĩnh là tối ưu nhất
Ứng dụng đo mức nước các sông, rạch, hồ chứa nước ở các đập thủy điện Khoảng cách đo rộng, độ chính xác tương đối cao Chịu được ô nhiễm nhẹ từ bùn,…
Trang 5II.3 thiệu về thiết bị đo mức nước bằng siêu âm ECH306L, ECH310L,
ECH318L, ECH324L:
Dòng thiết bị này có nguyên lý hoạt động tương tự như các dòng đo mức radar, tuy nhiên thì giá thành khá dễ tiếp cận hơn và tối ưu hơn khi dùng cho mực nước hay chất lỏng Cụ thể thì dòng này có thể đo lường cho toàn bộ các loại chất lỏng khác nhau trong các thang đo 0-3m, 0-6m, 0-10m, 0-12m, 0-18m, 0-24m,…Tín hiệu ngõ ra cũng
sẽ có đầy đủ như 4-20mA, 2 ngõ ra relay và RS485 nữa đấy
Nếu như các bạn chỉ đo mức nước và báo mức nước thì mình khuyên nên dùng dòng cảm biến này Dĩ nhiên thì dòng này cũng có thể đo được thể tích nữa Có thể hoạt động tốt trong các loại tăng chứa có đường kính từ 1m trở lên
III PHƯƠNG ÁN THIẾT KẾ.
Thiết kế thiết bị đo mức nước sử dụng vi điều khiển 8051:
+ Sử dụng cảm biến có tín hiệu đâu ra dạng analog dải từ 0 – 5V.
+ Có thể điều khiển động cơ khi cạn hoặc qua mức nước đã set cài đặt trước đó + Hiển thị được mức nước trong tank lên màn hình LCD.
+Cho phép thiết lập, điều chỉnh mức lập mức nước cần bơm.
+Hệ thống led báo hiệu chiều cao nước.
Trang 6VI ĐIỀU KHIỂN 8051
CẢM BIẾN
HIỂN THỊ LCD NGUỒN 5V
ADC
ĐIỀU KHIỂN ĐỘNG CƠ
ĐỘNG CƠ DC 12V
NÚT ẤN SET MỨC NƯỚC
LED BÁO MỨC NƯỚC
NGUỒN 12V
Cảm biến: Có chức năng nhận biết sự thay đổi mức nước trong tank từ đó xuất tín
hiệu analog tương ứng với khoảng cách từ cảm biến đến mặt nước.
ADC: Chuyển đổi tín hiệu tương tự(Analog) sang tín hiệu số( Digital) giúp vi điều
khiển có đọc tín hiệu và có thể xử lý được.
Màn hình LCD: Hiển thị được mức nước trong tank thông qua vi điều khiển
8051.
Điều khiển động cơ: Bật/tắt động cơ điều khiển được mức nước trong tank thông
qua vi điều khiển 8051.
Nguồn: Cung cấp năng lượng cho vi điều khiển 8051 và LCD.
Mức nước theo LED: Báo mức nước nước theo cấp độ LED.
Vi điều khiển 8051: Nhận tín hiệu từ cảm biến thông qua bộ đọc ADC và điều
khiển các khối chức năng nêu trên
III.1 Lựa chọn thiết bị cần thiết.
Do không có cảm biến thực tế vậy nên sẽ giả lập tín hiệu từ cảm biến ra bằng biết trở POT-HG với mức điện áp 0- 5V;
Lựa chọn các thiết bị như sau:
Trang 7+ ADC: ADC 0804.
+ LCD: LCD 16x02.
+ Vi điều khiển: AT89S52.
+ Mức nước theo LED: LED.
+ Nguồn: 5v, 12v.
IV THIẾT KẾ SƠ ĐỒ NGUYÊN LÝ VÀ LƯU ĐỒ THUẬT TOÁN NẠP CHƯƠNG TRÌNH CHO VI ĐIỀU KHIỂN.
IV.1 sơ đồ nguyên lí
Trang 8IV.2 Lưu đồ thuật toán
Bắt đầu
Bật LCD Clean LCD Ngatngoai();
Khởi tạo các khối chức năng
LCD Khai báo các biến chức năng
Định nghĩa chân Tạo biến set = 5( mặc đinh bơm vào tank mức nước 5 m) set không lớn hơn 9 và nhỏ hơn 1
Xây dựng các hàm con
Hiển thị LCD: set và mức nước trong tank
Xuly_ADC();
LED_Bao_muc_nuoc();
DK_DongCo();
Trang 9ADC_IN = Read_ADC()
Tìm mỗi quan hệ giữa điện
áp với ADC
V: [0 ÷ 5V]
ADC_IN: [0 ÷ 255]
-> V = ADC_IN*5/255
Tìm mỗi quan hệ giữa mức
nước với điện áp
[0 ÷ 10m]
LED_Bao_muc_nuoc();
D>=1
LED1 tắt
LED1 bật
D>=2
LED2 tắt
LED2 bật
D>=4
LED3 tắt
LED3 bật
sai
đúng
sai
đúng
đúng
sai
D>=6
LED4 tắt
LED4 bật
đúng
sai
D>=8
LED5 tắt
LED5 bật
đúng
sai
D>=9 đúng LED6 bật
Trang 10D<=1
Bật máy bơm
D>=set
tắt máy bơm
đúng
đúng
sai
sai
Ngatngoai_0();
Set<9
Set++
đúng
sai
Ngatngoai_1();
Set>2
Set đúng
sai