- Các thành phần
- Mô-đun cảm biến siêu âm
- Hoạt động của bộ điều khiển mực nước tự động
- Sơ đồ mạch và giải thích
- Lập trình
Trong dự án bộ điều khiển và chỉ báo mực nước tự động dựa trên Arduino này, chúng tôi sẽ đo mực nước bằng cách sử dụng cảm biến siêu âm. Cơ bản chính của phép đo khoảng cách siêu âm dựa trên ECHO. Khi sóng âm truyền trong môi trường thì chúng quay trở lại điểm gốc là ECHO sau khi đập vào bất kỳ vật cản nào. Vì vậy, chúng ta chỉ phải tính toán thời gian di chuyển của cả hai âm thanh có nghĩa là thời gian đi và thời gian trở về điểm xuất phát sau khi chạm vào bất kỳ chướng ngại vật nào. Và sau một số phép tính, chúng ta có thể nhận được một kết quả là khoảng cách. Khái niệm này được sử dụng trong dự án bộ điều khiển nước của chúng tôi, nơi máy bơm động cơ nước được tự động bật khi mực nước trong bể thấp. Bạn cũng có thể kiểm tra mạch chỉ báo mực nước đơn giản này để biết phiên bản đơn giản hơn của dự án này.
Các thành phần
- Arduino Uno
- Mô-đun cảm biến siêu âm
- LCD 16x2
- Rơ le 6 Volt
- ULN2003
- 7806
- PVT
- Dây đồng
- Pin 9 volt hoặc 12 Voltadaptor
- Kết nối dây
Mô-đun cảm biến siêu âm
Cảm biến siêu âm HC-SR04 dùng để đo khoảng cách trong phạm vi từ 2cm-400cm với độ chính xác 3mm. Mô-đun cảm biến bao gồm máy phát siêu âm, máy thu và mạch điều khiển.
Mô-đun cảm biến siêu âm hoạt động dựa trên hiện tượng ECHO tự nhiên của âm thanh. Một xung được gửi trong khoảng 10us để kích hoạt mô-đun. Sau đó, mô-đun tự động gửi 8 chu kỳ tín hiệu siêu âm 40 KHz và kiểm tra tiếng vang của nó. Tín hiệu sau khi va chạm với chướng ngại vật sẽ quay trở lại và được bộ thu bắt. Do đó, khoảng cách của chướng ngại vật từ cảm biến được tính đơn giản theo công thức được đưa ra như
Khoảng cách = (thời gian x tốc độ) / 2.
Ở đây chúng tôi đã chia tích của tốc độ và thời gian cho 2 vì thời gian là tổng thời gian cần thiết để đến chướng ngại vật và quay trở lại. Vì vậy, thời gian đến chướng ngại vật chỉ bằng một nửa tổng thời gian thực hiện.
Hoạt động của bộ điều khiển mực nước tự động
Công việc của dự án này rất đơn giản, chúng tôi đã sử dụng mô-đun cảm biến siêu âm gửi sóng âm trong bể nước và phát hiện sự phản xạ của sóng âm là ECHO. Trước hết chúng ta cần kích hoạt mô-đun cảm biến siêu âm để truyền tín hiệu bằng cách sử dụng Arduino và sau đó chờ nhận ECHO. Arduino đọc thời gian từ khi kích hoạt đến khi nhận được ECHO. Chúng ta biết rằng tốc độ âm thanh vào khoảng 340 m / s. vì vậy chúng ta có thể tính khoảng cách bằng cách sử dụng công thức đã cho:
Khoảng cách = (thời gian di chuyển / 2) * tốc độ âm thanh
Trong đó tốc độ âm thanh xấp xỉ 340m trên giây.
Bằng cách sử dụng các phương pháp này, chúng tôi nhận được khoảng cách từ cảm biến đến bề mặt nước. Sau khi nó, chúng ta cần phải tính toán mực nước.
Bây giờ chúng ta cần tính tổng chiều dài của bể nước. Như chúng ta biết chiều dài của bể nước, sau đó chúng ta có thể tính toán mực nước bằng cách lấy tổng chiều dài của bể trừ đi khoảng cách thu được từ siêu âm. Và chúng ta sẽ nhận được khoảng cách mực nước. Bây giờ chúng ta có thể chuyển đổi mực nước này thành phần trăm nước và có thể hiển thị nó trên màn hình LCD. Hoạt động của dự án chỉ báo mực nước hoàn chỉnh được thể hiện trong sơ đồ khối dưới đây.
Sơ đồ mạch và giải thích
Như được hiển thị trong mạch điều khiển mực nước được đưa ra bên dưới, các chân “trigger” và “echo” của mô-đun cảm biến siêu âm được kết nối trực tiếp với chân 10 và 11 của arduino. Màn hình LCD 16x2 được kết nối với arduino ở chế độ 4-bit. Chân điều khiển RS, RW và En được kết nối trực tiếp với chân của arduino 7, GND và 6. Và chân dữ liệu D4-D7 được kết nối với 5, 4, 3 và 2 của arduino, và buzzer được kết nối ở chân 12. 6 Rơ le Volt là cũng được kết nối tại chân 8 của arduino thông qua ULN2003 để bật hoặc tắt máy bơm động cơ nước. Một bộ điều chỉnh điện áp 7805 cũng được sử dụng để cung cấp 5 volt cho rơle và mạch còn lại.
Trong mạch này, mô-đun cảm biến siêu âm được đặt ở trên cùng của thùng (thùng nước) để trình diễn. Mô-đun cảm biến này sẽ đọc khoảng cách giữa mô-đun cảm biến và mặt nước, và nó sẽ hiển thị khoảng cách trên màn hình LCD với thông báo “Không gian nước trong bể là:”. Nó có nghĩa là chúng tôi đang ở đây hiển thị vị trí trống về khoảng cách hoặc thể tích cho nước thay vì mực nước. Vì chức năng này, chúng tôi có thể sử dụng hệ thống này trong bất kỳ bể nước nào. Khi mực nước trống đạt đến khoảng cách khoảng 30 cm thì Arduino BẬT máy bơm nước bằng rơ le dẫn động. Và bây giờ màn hình LCD sẽ hiển thị “Mức nước THẤP” “Động cơ đã BẬT” và đèn LED trạng thái Rơle sẽ bắt đầu phát sáng
Bây giờ nếu không gian trống đạt đến khoảng cách khoảng 12 cm, arduino TẮT rơ le và màn hình LCD sẽ hiển thị “Bình đầy” “Động cơ TẮT”. Buzzer cũng phát ra tiếng bíp trong một thời gian và đèn LED trạng thái rơ le sẽ TẮT.
Lập trình
Để lập trình Arduino cho bộ điều khiển mực nước, trước tiên, chúng tôi xác định tất cả các chân mà chúng tôi sẽ sử dụng trong dự án để giao tiếp với các thiết bị bên ngoài như rơle, LCD, buzzer, v.v.
# bộ kích hoạt xác định 10 # tiếng vọng xác định 11 # động cơ xác định 8 # bộ rung xác định 12
Sau đó, chúng tôi khởi tạo tất cả các thiết bị được sử dụng trong dự án.
lcd.begin (16,2); pinMode (kích hoạt, OUTPUT); pinMode (tiếng vang, INPUT); pinMode (động cơ, OUTPUT); pinMode (buzzer, OUTPUT); lcd.print ("Mực nước"); lcd.setCursor (0,1); lcd.print ("Chỉ báo"); chậm trễ (2000);
Bây giờ khởi tạo mô-đun cảm biến siêu âm và đọc thời gian gửi và nhận của sóng siêu âm hoặc âm thanh bằng cách sử dụng xungIn (pin). Sau đó thực hiện các phép tính và hiển thị kết quả trên màn hình LCD 16x2 bằng cách sử dụng các chức năng thích hợp.
digitalWrite (kích hoạt, CAO); delayMicroseconds (10); digitalWrite (kích hoạt, THẤP); delayMicroseconds (2); time = pulseIn (echo, HIGH); khoảng cách = thời gian * 340/20000; lcd.clear (); lcd.print ("Không gian nước Trong"); lcd.setCursor (0,1); lcd.print ("Xe tăng là:"); lcd.print (khoảng cách); lcd.print ("Cm");
Sau đó, chúng tôi kiểm tra các điều kiện xem bể chứa nước có đầy hoặc mực nước THẤP hay không và thực hiện các hành động phù hợp.
if (khoảng cách <12 && temp == 0) {digitalWrite (motor, LOW); digitalWrite (buzzer, HIGH); lcd.clear (); lcd.print ("Bể nước đầy"); lcd.setCursor (0,1); lcd.print ("Động cơ đã TẮT"); chậm trễ (2000); digitalWrite (buzzer, LOW); chậm trễ (3000); nhiệt độ = 1; } else if (khoảng cách <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print ("Bể nước đầy"); lcd.setCursor (0,1); lcd.print ("Động cơ đã TẮT"); chậm trễ (5000); }