Dựa trên yêu cầu thực tế là hệ thống tưới nước cho cây còn sử dụng thủ công nên có nhiều hạn chế và bất tiện, chính vì lý do đó, em xin đưa ra thiết kế về mô hình tưới cây tự động cho những người làm vườn và đây cũng chính là đề tài cho bài tiểu luận của em.
Trang 1ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC
KHOA ĐIỆN TỬ - VIỄN THÔNG
-BÁO CÁO TIỂU LUẬN
Vi xữ lý và điều khiển trong đo lường
tự động
SINH VIÊN THỰC HIỆN:
Mai Văn Rôn
MSV: 14T1051058
Ngành: Công nghệ Kỹ thuật Điện tử, Truyền thông
Giảng viên: TS Đặng Xuân Vinh
Huế - 2017
Trang 2
LỜI CẢM ƠN
Em xin gửi lời cám ơn chân thành đến với giảng viên TS Đặng Xuân Vinh đã nhiệt tình giúp đỡ em trong quá trình học tập trên lớp và viết bài báo cáo Do có sự hạn chế về thời gian cũng như kiến thức và kinh nghiệm nên khó tránh khỏi những sai sót, những lỗi mắc phải trong quá trình làm báo cáo
Vì vậy, em rất mong được sự đóng góp ý kiến của thầy giáo đối với bài báo cáo này Em xin chân thành cảm ơn
Trang 3
Đề tài: Xây dựng mô hình máy bơm nước tự động
cho gia đình
I MỤC ĐÍCH, YÊU CẦU
1 Mục đích:
Dựa trên yêu cầu thực tế là hệ thống bơm nước lên bình chứa tại gia đình còn sử dụng thủ công nên có nhiều hạn chế và bất tiện, chính vì lý do đó, tôi xin đưa ra thiết kế về mô hình máy bơm nước
tự động cho gia đình và đây cũng chính là đề tài cho bài tiểu luận của tôi
2 Yêu cầu:
Mô hình phải đảm bảo tính thực tế, thiết kế dễ dàng, lắp ráp thuận tiện, độ bền cao, đảm bảo độ an toàn và giá thành rẻ
II NỘI DUNG
1 Tổng quan
Mô hình được thiết kế bao gồm bốn bộ phận chính đó là:
Bộ cảm biến
Bộ xữ lý và điều khiển
Bộ Relay
Bộ hiển thị
Trang 4
2 Danh sách linh kiện được sử dụng
Boar Arduino UNO R3
Cảm biến siêu âm HC-SR Relay 5V (kích mức cao)
Máy bơm nước 120V LCD Cổng giao tiếp I2C
Trang 5
Ngoài các thiết bị chính ở trên còn có các dây điện để đấu nối, bộ cung cấp nguồn 5V, 120V…
3 Sơ đồ khối
4 Sơ đồ mạch thực tế
Trang 6
5 Chức năng của từng khối
Khối đầu tiên là màn hình LCD 16x2, là đơn vị đầu ra có chức năng
hiển thị mức nước và trạng thái bơm
Khối thứ hai là Arduino, đây được coi là trung tâm xữ lý và điều khiển
của mô hình nó có nhiệm vụ kiểm soát và điều phối tất cả các khối khác
Khối thứ ba là cảm biến siêu âm đo khoảng cách có nhiệm vụ đo mực
nước
Khối khối thứ tư là bộ Relay dùng để bật tắt máy bơm nước thông qua
sự điều khiển của Arduino
Nguyên lý hoạt động của cảm biến siêu âm HC-SR04:
Cảm biến siêu âm phát ra một siêu âm ở tốc độ 40KHz đi qua không khí,
và nếu có một vật hoặc trở ngại trên con đường của nó, nó sẽ quay trở lại
mô đun
Xem xét thời gian di chuyển và tốc độ của âm thanh, bạn có thể tính khoảng cách
Arduino sẽ sử dụng chân echo trên cảm biến siêu âm để đo thời gian đi sóng âm trong vài giây
Trong trường hợp này, cảm biến siêu âm sẽ được đặt trên đầu của bể chứa nước và nó có thể đo mức nước trong bể
Mức nước đo được tính bằng cm sẽ được chuyển sang biểu đồ mực nước
và cũng sẽ được hiển thị trên màn hình LCD 16x2 như vậy, Arduino sẽ tắt máy bơm khi bể đã đầy
6 Phần mềm được sử dụng
Trang 7
Mô phỏng Proteus 8.5
Viết code Arduino
7 Chương trình Code
#include <Wire.h>
#include <NewPing.h>
#define TRIGGER_PIN 12 // Kết nối chốt kích hoạt trên bộ cảm biến Sonar với pin kỹ thuật số Arduino 12
#define ECHO_PIN 11 // Kết nối echo pin trên bộ cảm biến với chân
số 11
#define MAX_DISTANCE 24 // Chiều cao của Bể chứa Nước (bằng cm)
#include <LiquidCrystal_I2C.h> //Khai báo thư viện LCD I2C
LiquidCrystal_I2C lcd(0x3F, 16, 2);// khai báo thuộc tính của LCD
int Relay = 10;
int val=0;
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
// Tạo xếp biểu tượng
byte Level0[8] = {
Trang 8
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b11111,
0b11111
};
byte Level1[8] = {
0b00000,
0b00000,
0b00000,
0b00000,
0b11111,
0b11111,
0b11111,
0b11111
};
byte Level2[8] = {
Trang 9
0b00000,
0b00000,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111
};
byte Level3[8] = {
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111
};
byte NoLevel[8] = {
Trang 10
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};
void setup()
{
lcd.init();
// khoi tao man hinh LCD
lcd.backlight();//bật đèn LCD
lcd.createChar(0, Level0);
lcd.createChar(1, Level1);
lcd.createChar(2, Level2);
lcd.createChar(3, Level3);
lcd.createChar(4, NoLevel);
lcd.begin(16, 2); // thiết lập cột và hàng của LCD
Trang 11
pinMode(Relay,OUTPUT); //thiết lập tín hiệu ra relay digitalWrite(Relay,LOW);
}
void loop()
{
delay(50);
val=sonar.ping_cm();
lcd.setCursor(0, 1);
lcd.print("HET");
lcd.setCursor(11, 1);
lcd.print("DAY");
if(val<4) //mức nước đạt đỉnh
{
delay(50);
lcd.setCursor(3, 1);
lcd.write(byte(0));
lcd.setCursor(4, 1);
lcd.write(byte(0));
lcd.setCursor(5, 1);
lcd.write(byte(1));
Trang 12
lcd.setCursor(6, 1);
lcd.write(byte(1));
lcd.setCursor(7, 1);
lcd.write(byte(2));
lcd.setCursor(8, 1);
lcd.write(byte(2));
lcd.setCursor(9, 1);
lcd.write(byte(3));
lcd.setCursor(10, 1);
lcd.write(byte(3));
digitalWrite(Relay,LOW); //máy bơm tắt lcd.setCursor(0,0);
lcd.print("TAT MAY BOM "); }
else if(val<=15&&val>4)
{
lcd.setCursor(3, 1);
lcd.write(byte(0));
lcd.setCursor(4, 1);
lcd.write(byte(0));
Trang 13
lcd.setCursor(5, 1);
lcd.write(byte(1));
lcd.setCursor(6, 1);
lcd.write(byte(1));
lcd.setCursor(7, 1);
lcd.write(byte(2));
lcd.setCursor(8, 1);
lcd.write(byte(2));
lcd.setCursor(9, 1);
lcd.write(byte(4));
lcd.setCursor(10, 1);
lcd.write(byte(4));
}
else if(val<=20&&val>15)
{
lcd.setCursor(3, 1);
lcd.write(byte(0));
lcd.setCursor(4, 1);
lcd.write(byte(0));
lcd.setCursor(5, 1);
Trang 14
lcd.write(byte(1));
lcd.setCursor(6, 1);
lcd.write(byte(1));
lcd.setCursor(7, 1);
lcd.write(byte(4));
lcd.setCursor(8, 1);
lcd.write(byte(4));
lcd.setCursor(9, 1);
lcd.write(byte(4));
lcd.setCursor(10, 1);
lcd.write(byte(4));
}
else if(val<=21&&val>20)
{
lcd.setCursor(3, 1);
lcd.write(byte(0));
lcd.setCursor(4, 1);
lcd.write(byte(0));
lcd.setCursor(5, 1);
lcd.write(byte(4));
Trang 15
lcd.setCursor(6, 1);
lcd.write(byte(4));
lcd.setCursor(7, 1);
lcd.write(byte(4));
lcd.setCursor(8, 1);
lcd.write(byte(4));
lcd.setCursor(9, 1);
lcd.write(byte(4));
lcd.setCursor(10, 1);
lcd.write(byte(4));
}
else if(val>21) // hết nước
{
digitalWrite(Relay,HIGH); // bật máy bơm
lcd.setCursor(0,0);
lcd.print(" BAT MAY BOM "); lcd.setCursor(3, 1);
lcd.write(byte(4));
lcd.setCursor(4, 1);
lcd.write(byte(4));
Trang 16
lcd.setCursor(5, 1);
lcd.write(byte(4));
lcd.setCursor(6, 1);
lcd.write(byte(4));
lcd.setCursor(7, 1);
lcd.write(byte(4));
lcd.setCursor(8, 1);
lcd.write(byte(4));
lcd.setCursor(9, 1);
lcd.write(byte(4));
lcd.setCursor(10, 1);
lcd.write(byte(4));
}
}
8 Kết quả
Sau khi chạy mô phỏng trên phần mềm Proteus 8.5, thấy mô hình hoạt động tốt và kết quả lắp ráp mạch thực tế vẫn hoạt động như khi mô phỏng trên phần mềm, chạy ổn định
III KẾT LUẬN VÀ ĐÁNH GIÁ KẾT QUẢ
Với kết quả nhận được là mô hình máy bơm nước tự động cho gia đình rất thiết thực và đáp ứng được nhu cầu thực tế, độ bền khá
Trang 17
cao, thiết kế, lắp đặt đơn giản, nhỏ gọn và đặc biệt chi phí rẻ đối với linh kiện hay modul cần thiết