Trong bài viết này, Wizard sẽ cho chúng ta biết cách tạo ra một hệ thống để theo dõi và kiểm soát mực nước trong bể. Nó là một hệ thống đơn giản và đáng tin cậy.
Các tính năng chính của nó là như sau:
Giám sát mực nước theo thời gian thực.
Tự động bật / tắt bơm.
Tắt máy bơm khẩn cấp.
Dụng cụ và vật liệu:
-Arduino Chuyên nghiệp nhỏ
-Ult cảm biến siêu âm HC-SR04;
- Mô-đun MAX485;
- Mô-đun LCD i2c;
LCD 1602;
- Vi điều khiển ATTINY45 / 85;
- Ổn áp LM7805;
Bóng bán dẫn NPN (2n3904);
-M MOSF kênh IRFD024PBF;
Diode 1N4007;
Đầu nối 5 chân;
Đầu nối 4 chân
Đầu nối -2 chân;
- Thiết bị đầu cuối có 2 tiếp điểm (màu xanh) - 2 chiếc;
- Thiết bị đầu cuối có 2 tiếp điểm (màu xanh lá cây);
Jack DC (- 2 chiếc.)
-Audio jack (nam / nữ) - 2 chiếc;
- Điện trở 1 kOhm;
- Điện trở 10 kOhm - 3 chiếc;
- Tụ 100 nF - 3 chiếc;
Tụ 100 uF;
- Nút SMD, 6x3,5mm;
Công tắc -DIP (SPST 2) - 2 chiếc;
- nút nguồn;
-Tumbler;
Rơle DC -12V;
-Relay contactor;
- Nguồn điện một chiều 5 V (> 200 mA);
- Nguồn điện DC 12 V (> 500 mA);
-Các hộp cho trường hợp kích thước phù hợp;
-Fastener;
Phụ kiện -Soldering;
- tuốc nơ vít;
-Wire;
Bước một: Bộ cảm biến
Bộ phận này đo mực nước và gửi dữ liệu đến bộ điều khiển chính. Nó có hai cảm biến để đo mực nước. Một là cảm biến khoảng cách siêu âm HC-SR04, hai ốc vít dài còn lại nhô ra ngoài, như trong ảnh.
Để cài đặt các cảm biến, bạn cần thực hiện các bước sau:
Đặt đầu dò siêu âm lộn ngược ở mặt trước của nắp gần đỉnh và đánh dấu hai lỗ cho máy phát và máy thu siêu âm.
Cắt lỗ và gắn chặt cảm biến tại chỗ bằng keo nóng.
Sau đó khoan hai lỗ có đường kính 3 mm với khoảng cách 2-3 cm ở giữa nắp.
Chèn các bu lông M3 dài với đầu nối dây được kẹp giữa hai vòng đệm ở mặt sau của nắp và siết chặt các đai ốc M3 ở phía bên kia.
Bộ cảm biến sử dụng ATTINY45 làm vi điều khiển chính. Như đã đề cập trước đó, HC-SR04 được sử dụng để đo mực nước. Nó hoạt động bằng cách đo khoảng cách từ đỉnh bể.
Ngoài ra, điều khiển được thực hiện bằng cách sử dụng hai bu lông trong mạch, mà bóng bán dẫn được cài đặt. Bộ vi điều khiển đọc dữ liệu từ cả hai cảm biến này và gửi dữ liệu đến Arduino được cài đặt trong bộ điều khiển.
Đầu tiên, thuyền trưởng muốn gửi dữ liệu thông qua các mô-đun RF HC-12. Nhưng phạm vi của các mô-đun này không phù hợp với yêu cầu.Trình hướng dẫn đã sử dụng bộ chuyển đổi MAX485 TTL sang RS485 và tạo một riser nhỏ để cài đặt thay cho các mô-đun HC-12.
Đề án và liên kết đến bảng có thể được tải xuống tại địa chỉ này.
Cài đặt như sau:
HC-SR04 vào mạch chính:
Vcc - 5V (CN1).
trig - trigPin (CN1).
echo - echoPin (CN1).
Gnd - GND (CN1).
Bu lông M3 vào mạch chính:
Bu lông 1 - 5 V (CN1).
Bu lông 2 - 100 (CN1).
Mô-đun MAX485 (TX):
VCC - 5V (Đầu nối HC-12)
A - Giắc âm thanh 1/4 inch.
B - Giắc âm thanh 1/4 inch.
GND - GND (Đầu nối HC-12)
R0 - RX (Đầu nối HC-12)
RE - VCC (MAX485) hoặc 5V.
DE - RE (viết tắt là RE và DE).
DI - TX (đầu nối HC-12).
Jack DC (Đầu nối P1):
Mẹo - 5V
Tay áo - GND
Bước hai: Bộ điều khiển
Hoạt động của bộ điều khiển rất đơn giản. Arduino được sử dụng làm bộ điều khiển chính. Nó nhận dữ liệu cảm biến được gửi từ bảng phát thông qua mô-đun max485. Nó có màn hình LCD 1602 hiển thị mức nước hiện tại và hoạt động của bơm. Nó sử dụng rơle 12 V làm công tắc để bật công tắc tơ rơle. Nó có hai công tắc, một cho đèn nền LCD và một cho bật / tắt bơm khẩn cấp.
Một liên kết đến sơ đồ mạch và thiết kế của bảng mạch in cho máy phát và máy thu được đặt ở đây.
Mô-đun LCD i2c được hàn trực tiếp vào LCD 1602. Bộ nhảy đèn nền trên mô-đun i2c được kết nối với công tắc bật tắt để bật / tắt. Nút khẩn cấp (lớn) được kết nối với mạch chính qua đầu nối P4.
Mô-đun I2c LCD đến mạch chính (CN4):
GND - CN4-1 (GND1).
VCC - CN4-2 (5V).
SCL - CN4-3 (A5).
SDA - CN4-4 (A4).
Kết nối Relay Contactor:
A1 - 230 VAC1 (không).
A2 - KHÔNG (tiếp điểm).
S1 - 230 VAC1 (không).
S2 - 230 VAC2 (pha)
L1 - Dây động cơ bơm 1
L2 - Bơm dây động cơ 2.
Kết nối tiếp điểm rơle COM với 230 VAC2 (đường dây).
Bước ba: Phần mềm và lập trình
Bây giờ bạn cần lập trình bộ điều khiển trên cả hai thiết bị.
Để tải mã xuống ATTINY45, nó tải xuống thư viện SoftwareSerial.h.
Trong chức năng Loop,
> Trước tiên hãy kiểm tra xem bể có đầy hay không.
> Nếu nó đầy, nó sẽ gửi "255."
> Nếu nó không đầy, nó sẽ kiểm tra mực nước bằng cảm biến âm thanh siêu âm và truyền dữ liệu qua giao tiếp nối tiếp.
Chương trình này sử dụng hàm con getwtrLvl () để lấy mực nước hiện tại. Đầu tiên, nó đo thời gian cần thiết để cảm biến truyền và nhận sóng siêu âm. Sau đó thời gian được chuyển đổi thành khoảng cách bằng tốc độ âm thanh.
dist = PulseIn (echoPin, CAO); // thời gian dành cho sóng âm thanh.
dist = dist / 28/2; // dịch thời gian thành khoảng cách tính bằng cm
dist = dist * 1,25; // ở đây 1.25 là hệ số hiệu chỉnh để khắc phục lỗi đo
trở lại dist; // trả về khoảng cách đến hàm gọi
Bây giờ cho Arduino.
Trong chức năng Loop:
> Đầu tiên, nó được kiểm tra xem nút khẩn cấp có được nhấn hay không.
> Kiểm tra cảm biến. Một phần của chương trình kiểm tra lỗi cảm biến. tức là, nếu dữ liệu nhận được không hợp lệ (<= 1) 5 lần, thì màn hình sẽ hiển thị lỗi cảm biến và bơm tắt.
> Phần tiếp theo hiển thị mức nước hiện tại và ra lệnh cho bơm 1 nếu mực nước nhỏ hoặc 0 nếu nó là 100% (đầy).
Chương trình này sử dụng hai hàm con updtMotor () và getWaterLvl (). Hàm updtMotor () hiển thị hoạt động của bơm trên màn hình LCD và cũng gửi tín hiệu đến rơle.
Trước tiên, hàm getWaterLvl sẽ kiểm tra xem có lỗi kết nối nào không. Nếu kết nối giữa máy phát và máy thu không được thiết lập trong thời gian chờ (3000 ms). Nó hiển thị một lỗi cảm biến và tắt máy bơm.
Khi kết nối được khôi phục, hoạt động trở lại.
Mọi thứ đã sẵn sàng, nhờ chủ nhân cho một điều thú vị tự làm.