Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 51 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
51
Dung lượng
3,67 MB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CƠ KHÍ - BÁO CÁO BÀI TẬP LỚN Mơn học: KỸ THUẬT LẬP TRÌNH TRONG CƠ ĐIỆN TỬ Đề tài: Hệ thống tưới tự động Giảng viên hướng dẫn: TS Dương Văn Lạc Nhóm :19 – Mã Lớp: 132785 Danh sách nhóm: STT Họ tên Nguyễn Quốc Hùng Võ Nhật Khang Tạ Duy Ngọc Hà Nội, ngày MSSV 20195036 20195055 20195118 tháng năm MỤC LỤC Mục lục Tóm tắt sản phẩm Chương I: Tổng quan hệ thống tưới tự động .3 Chương II: Các phần tử mạch điều khiển hệ thống tưới tự động 2.1.Mạch điều khiển: Kit Arduino Leonardo 2.2.Cảm biến độ ẩm đất .7 2.3.Cảm biến nhiệt độ LM35 2.4.Module thời gian thực(DS1307) 2.5.Màn hình LCD 20x04(I2C) 11 2.6.Rơ-le(5VDC) 12 2.7.Máy bơm chìm mini 13 2.8 Nguồn 14 Chương III: Thiết kế hệ thống tưới 15 3.1 Sơ đồ nối mạch 15 3.2 Sơ đồ thuật toán 22 Chương IV.Lập trình 23 4.1.Code Adruino .23 4.2.Code chương trình điều khiển 30 Chương V:Kết luận 49 Tài liệu tham khảo 50 Tóm tắt sản phẩm 1.Tên sản phẩm :Máy tưới tự động 2.Chức - Đảm bảo cung cấp đủ nước cho trồng theo dõi nhiệt độ , độ ẩm mơt trường đất 3.Các linh kiện cấu thành: Kít Adruino Leonardo Module thời gian thực DS1307 Relay 5v đóng ngắt thiết bị Màn hình LCD 20x04 I2C Cảm biến nhiệt độ LM35 cảm biến độ ẩm đất Máy bơm chìm mini viên pin 1.5V Các dây kết nối Chương I TỔNG QUAN VỀ HỆ THỐNG TƯỚI CÂY TỰ ĐỘNG 1.1 Khái niệm hệ thống tự động Hệ thống điều khiển tự động hệ thống bao gồm phần tử tự động nhằm điều khiển trình xảy thiên nhiên, sống mà khơng có tham gia trực tiếp cong người Hệ thống điều khiển tự động: tập hợp thành phần vật lý có mối liên quan tác động qua lại lẫn để chi huy, tự hiệu chỉnh điều khiển hệ thống khác Hệ thống điều khiển tự động xuất ngày phổ biến - Hệ thống điều hịa khơng khí - Hệ thống điều chỉnh độ ẩm - Hệ thống tự báo cháy v.v Trong môi trường sản xuất: - Các máy tự động - Các đường dây sản xuất, lắp ráp - Các máy điều khiển theo chương trình, Máy tính , Robot v.v 1.2 Vai trị tự đơng hóa sản xuất Nền sản xuấ đại thành q trình giới hóa điện khí hóa cơng cụ lao động phương tiện lao đơng Mỗi có đột phá lĩnh vực vật liệu hay điện tử IT cơng nghệ tự động hóa lại có hội phát triển mạnh mẽ, đem lại giá trị thiết thực cho xã hội Tự động hóa yếu tố then chốt cho phát trỉển sản xuất đại Trong thực tiễn, tự đơng hóa áp dụng q trình sản xuất mang lại lợi ích lớn nhiều lần so với việc sử dụng lao động thủ cơng Khi q trình sản xuất vận hành tự động khơng suất lao động tăng cao, chi phí nhân cơng cắt giảm mà cịn giúp nâng cao trình độ người lao động… Từ tăng khả cạnh trạnh doanh nghiệp cá nhân, đáp ứng nhu cầu ngày cao 1.3 Ứng dụng tự động hệ thống tưới Nền nông nghiệp lạc hậu yêu cầu số lượng lớn người lao động q trình sản xuất mà suất khơng đáp ứng chất lượng suất, sản lượng Ứng dụng tự động vào trình sản xuất giúp giảm bớt sức người, nâng cao giá trị sản phẩm, Mặc dù tự động hóa ứng dụng từ lâu cho viêc tưới tiêu song phổ biến nước phát triển, nước phát triển hay nước phát triển nông nghiệp chiếm tỉ trọng lớn việc ứng dụng tự động hóa việc tưới chưa phổ biến Hiên để đáp ứng nhu cầu từ thực tiễn tự động hóa mở rộng quy đời sống Ngày với thành tựu to lớn khoa học công nghệ tự động hóa áp dụng hầu hết lĩnh vực Có thể nói tự động hóa trở thành xu tất yếu cho quốc gia CHƯƠNG CÁC PHẦN TỬ CỦA HỆ THỐNG TƯỚI CÂY TỰ ĐỘNG Hệ thống thiết kế gồm khối: Khối thu gồm cảm biến nhiệt độ LM 35, cảm biến độ ẩm đất Nguồn Khối xử lý trung tâm sử dụng Kit Arduino Leonardo Khối hiển thị: Màn hình LCD 2004 I2C Khối điều khiển thiết bị sử dụng :Relay 5VDC Khối thời gian thực (hẹn giờ) :DS1307 Cơ cấu chấp hành: máy bơm chìm mini Sơ đồ khối mạch Hình 2.1: Sơ đồ khối hệ thống -Chức khối: Khối xử lý trung tâm : Kit Adruino Leonardo điều khiển toàn hoạt động mạch nhận dự liệu giải mã tín hiệu nhiệt độ độ ẩm Sau hiển thị LCD đưa tín hiệu điều khiển bật/tắt thiết bị Khối hiển thị: Là hình LCD dịng 20 kí tự thể nhiệt độ, độ ẩm môi trường đất, thời gian thực Khối điều khiển thiết bị : để đóng ngắt mạch thiết bị nhận tín hiệu tù Kit Adruino Leonardo Khối thời gian thực: DS1307 IC thời gian thực với nguồn cung cấp nhỏ, dùng để cập nhật thời gian ngày tháng Nguồn: Cung cấp lượng cho hệ thống Khối thu: đo tín hiệu độ ẩm , nhiệt độ Cơ cấu chấp hành : Bơm nước để tưới 2.1 Kit Adrunio Leonardo 2.1.1 Sơ đồ chân Adruino Leornardo Hình 2.2 Sơ đồ chân Adruino Leonardo 2.1.2 Thông số Adruino Leonardo Sơ đồ chân Adruino Leonardo thể hình 2.2 với đặc điểm sau: Vi điều khiển Điện áp hoạt động Tần số hoạt động Dòng tiêu thụ chân I/O Điện áp vào khuyên dùng Điện áp vào giới hạn Số chân Digital I/O ATmega32u4 (họ 8bit) 5V – DC 16 MHz 40mA 7-12V – DC 6-20V – DC 14 (7 chân PWM) 12 (các chân PWM dùng chân Analog bình thường - nghĩa dùng Analog read) (độ phân giải 10bit 40 mA 500 mA 50 mA 32 KB (ATmega32u4) với 4KB dùng bootloader 2.5 KB (ATmega32u4) KB (ATmega32u4) 68.6mm x 53.3mm Số chân Analog Dòng tối đa chân I/O Dòng tối đa (5V) Dòng tối đa (3.3V) Bộ nhớ flash SRAM EEPROM Kích thước 2.2.Cảm biến đo độ ẩm đất -Hình dáng thơng số Hình 2.3 Cảm biến đo độ ẩm - Cảm biến đo độ ẩm đất có chân với kết nối sau Cảm biến độ ẩm đất Vcc GND D0 A0 Arduino UNO 5V GND A0 -Nguyên lý hoạt động Cảm biến độ ẩm đất, trạng thái đầu mức thấp (0V), đất thiếu nước đầu là mức cao (5V), độ nhạy cao chúng ta có thể điều chỉnh biến trở. Phần đầu đo được cắm vào đất để phát hiện độ ẩm đất, độ ầm đất đạt ngưỡng thiết lập, đầu DO chuyển trạng thái từ mức thấp lên mức cao 2.3 Cảm biến nhiệt độ LM35 Hình 2.4 cảm biến nhiệt độ LM35 - Các thông số bản: Điện áp hoạt động: Công suất tiêu thụ: Khoảng đo: Điện áp tuyến tính theo nhiệt độ: Sai số: Kiểu chân: 4~20VDC khoảng 60uA -55°C đến 150°C 10mV/°C 0.25°C TO92 Kích thước: -Nguyên lý hoạt động: 4.3 × 4.3mm Cảm biến LM35 hoạt động cách cho giá trị điện áp định chân VOUT (chân giữa) ứng với mức nhiệt độ Như vậy, cách đưa vào chân bên trái cảm biến LM35 điện áp 5V, chân phải nối đất, đo hiệu điện chân giữa, bạn có nhiệt độ (0-100ºC) tương ứng với điện áp đo 2.4.Module thời gian thực DS1307 DS1307 chip thời gian thực hay RTC( Read time clock) Đây IC tích hợp cho thời gian tính xác thời gian tuyệt đối cho thời gian: Thứ ngày, tháng , năm, , phút giây Hình 2.5 Module DS1307 Sơ đồ chân DS1307 -Hình ảnh sau cho thấy hình dạng sơ đồ chân IC RTC DS1307 Để giảm công suất tiêu thụ, số lượng chân IC phải giảm Do đó, DS1307 RTC sử dụng Giao tiếp I2C Hình 2.6 Sơ đồ chân DS1307 serialPort1.Open(); //Mở cổng serial serialPort1.Write("k"); //Gửi ký tự "k" tới Serial btConnect.Text = "Ngắt kết nối"; //Đổi chữ nút btConnect sang Ngắt kết nối btExit.Enabled = false; //Vơ hiệu hóa nút enableAuto(); //Kích hoạt tự động enableDisplay(); //Kích hoạt hiển thị } catch { MessageBox.Show("Khơng thể mở cổng" + serialPort1.PortName, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void btExit_Click(object sender, EventArgs e) { DialogResult traloi; traloi = MessageBox.Show("Bạn có muốn thốt?", "Thốt", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (traloi == DialogResult.OK) { Application.Exit(); // Đóng ứng dụng } } private void btRun_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write("k"); //Gửi ký tự "k" tới Serial serialPort1.Write("1"); //Gửi ký tự "1" qua Serial } } 36 private void btPause_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write("0"); //Gửi ký tự "0" qua Serial, Dừng Arduino } } private void btClear_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { DialogResult traloi; traloi = MessageBox.Show("Bạn có muốn xóa?", "Xóa liệu", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (traloi == DialogResult.OK) { if (serialPort1.IsOpen) { serialPort1.Write("2"); //Gửi ký tự "2" qua Serial listView1.Items.Clear(); // Xóa listview this.chart1.Series["Nhiệt độ"].Points.Clear(); //Xóa đồ thị nhiệt độ - thời gian this.chart1.Series["Độ ẩm đất"].Points.Clear(); //Xóa đồ thị độ ẩm đất - thời gian } } } } private void listView1_SelectedIndexChanged(object sender, EventArgs e) { } 37 private void chart1_Click(object sender, EventArgs e) { } private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) { } private void label1_Click(object sender, EventArgs e) { } private void textBox1_TextChanged(object sender, EventArgs e) { } private void checkBox1_CheckedChanged(object sender, EventArgs e) { } private void btSend_Click(object sender, EventArgs e) { } private void groupBox2_Enter(object sender, EventArgs e) { 38 } private void btGTG1_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write("e"); //Gửi kỹ tự "e" tới Serial } } private void btTTG1_Click(object sender, EventArgs e) { if (tg1 == tg2) //Nếu thời gian giới hạn nhiệt độ giới hạn gửi thơng báo lỗi { MessageBox.Show("Thời gian ngưỡng cao thời gian ngưỡng trên", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); } else serialPort1.Write("f"); //Nếu không gửi ký tự "f" tới Serial } private void btGND1_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write("a"); //Gửi ký tự "a" tới Serial } } private void btTND1_Click(object sender, EventArgs e) { if (nd1 == nd2) //Nếu nhiệt độ giới hạn nhiệt độ giới hạn gửi thơng báo lỗi { MessageBox.Show("Nhiệt độ ngưỡng cao nhiệt độ ngưỡng trên", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); } else serialPort1.Write("b"); //Nếu không gửi ký tự "b" tới Serial 39 } private void btGND2_Click(object sender, EventArgs e) { if (nd1 == nd2) //Nếu nhiệt độ giới hạn nhiệt độ giới hạn gửi thơng báo lỗi { MessageBox.Show("Nhiệt độ ngưỡng thấp nhiệt độ ngưỡng dưới", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); } else serialPort1.Write("c"); //Nếu không gửi ký tự "c" tới Serial } private void btTND2_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write("d"); //Gửi ký tự "d" tới Serial } } private void btGTG2_Click(object sender, EventArgs e) { if (tg1 == tg2) //Nếu thời gian giới hạn nhiệt độ giới hạn gửi thơng báo lỗi { MessageBox.Show("Thời gian ngưỡng thấp thời gian ngưỡng dưới", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); } else serialPort1.Write("g"); //Nếu không gửi ký tự "g" tới Serial } private void btTTG2_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write("h"); //Gửi ký tự "h" tới Serial } 40 } private void btReset_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write("i"); //Gửi ký tự "i" tới Serial } } private void checkBox1_CheckedChanged_1(object sender, EventArgs e) { if (checkBox1.Checked) //Nếu checkBox1 tích { serialPort1.Write("x"); //Gửi ký tự "x" tới Serial checkBox1.Text = "Máy bơm: Bật"; //Đặt ký tự checkBox1 Máy bơm: Bật } else //Nếu khơng tích { serialPort1.Write("y"); //Gửi ký tự "y" tới Serial checkBox1.Text = "Máy bơm: Tắt"; //Đặt ký tự checkBox1 Máy bơm: Tắt } } private void btAuto_Click(object sender, EventArgs e) { if (auto1 == 1) //Nếu biến auto1 = { serialPort1.Write("j"); //Gửi ký tự "j" tới Serial btAuto.Text = "Thủ công"; //Chữ nút btAuto chuyển sang Thủ công disableAuto(); //Vô hiệu tự động serialPort1.Write("y"); //Gửi ký tự "y" tới Serial } 41 else //Nếu biến auto1 không { serialPort1.Write("k"); //Gửi ký tự "k" tới Serial btAuto.Text = "Tự động"; //Chữ nút btAuto chuyển sang Tự động enableAuto(); //Kích hoạt tự động } } private void disableDisplay() //Vơ hiệu hóa hiển thị { btClear.Enabled = false; btAuto.Enabled = false; btRun.Enabled = false; btPause.Enabled = false; listView1.Enabled = false; chart1.Enabled = false; textBox1.Enabled = false; textBox2.Enabled = false; } private void textBox1_TextChanged_1(object sender, EventArgs e) { } private void textBox3_TextChanged(object sender, EventArgs e) { } private void enableDisplay() //Kích hoạt hiển thị { btClear.Enabled = true; btAuto.Enabled = true; 42 btRun.Enabled = true; btPause.Enabled = true; listView1.Enabled = true; chart1.Enabled = true; textBox1.Enabled = true; textBox2.Enabled = true; } private void disableAuto() //Vơ hiệu hóa tự động { tbND1.Enabled = false; tbND2.Enabled = false; tbTG1.Enabled = false; tbTG2.Enabled = false; btGND1.Enabled = false; btGND2.Enabled = false; btGTG1.Enabled = false; btGTG2.Enabled = false; btTND1.Enabled = false; btTND2.Enabled = false; btTTG1.Enabled = false; btTTG2.Enabled = false; btReset.Enabled = false; checkBox1.Enabled = true; } private void enableAuto() //Kích hoạt tự động { tbND1.Enabled = true; tbND2.Enabled = true; tbTG1.Enabled = true; tbTG2.Enabled = true; btGND1.Enabled = true; btGND2.Enabled = true; btGTG1.Enabled = true; 43 btGTG2.Enabled = true; btTND1.Enabled = true; btTND2.Enabled = true; btTTG1.Enabled = true; btTTG2.Enabled = true; btReset.Enabled = true; checkBox1.Checked = false; checkBox1.Text = "Máy bơm"; checkBox1.Enabled = false; } } } -Giao diện lúc bật chương trình, chương trình hiển thị cổng có sẵn để kết nối 44 -Lúc kết nối, chương trình lấy liệu vẽ biểu đồ nhiệt độ, độ ẩm đất theo thời gian chạy, hiển thị thời gian thưc với thời gian tưới lần trước -Lúc vừa kết nối chạy theo chế độ tự động 45 -Thời gian nhiệt độ giới hạn chế độ tưới tự động tùy ý thay đổi phù hợp với thời tiết 46 -Chương trình đưa thơng báo lỗi thay đổi thông số thời gian nhiệt độ không phù hợp 47 -Chuyền qua chế độ tưới thủ công, bật tắt máy bơm cách tích vào để bật, bỏ tích để tắt máy bơm nước 48 CHƯƠNG V: KẾT LUẬN 5.1 Kết đạt - Tìm hiểu hệ thống tưới tự động: phân loại, nguyên lý, v.v… - Tìm hiểu kit adruino phần tử hệ thống ; relay, DS1307, v.v - Thiết kế chương trình điều khiển hệ thống tưới - Lập trình cho hệ thống tưới tự động 5.2 Hạn chế - Do tài có hạn nên hệ thống cịn đơn giản chưa có nhiều chức năng, chế độ khác 5.3 Hướng phát triển - Tích hợp thêm nhiều chức : chế độ tưới cho giống khác , tưới nhỏ giọt, điều khiển từ xa v.v - Thiết kế thêm vào hệ thống phận thông báo cho người sử dụng biết tình trạng hệ thống 49 Tài liệu tham khảo Các website tham khảo - www.adruino.vn, www.dientuvietnam.net , nguồn khác 50