Tải bản đầy đủ (.pdf) (22 trang)

báo cáo cơ sở điều khiển tự động Đề tài mạch điều khiển máy bơm bằng biến trở

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.36 MB, 22 trang )

UBND THÀNH PHỐ CẦN THƠ
TRƯỜNG ĐẠI HỌC KỸ THUẬT - CÔNG NGHỆ CẦN THƠ
KHOA KỸ THUẬT CƠ KHÍ

BÀI BÁO CÁO

CỞ SỞ ĐIỀU KHIỂN TỰ ĐỘNG

Đề tài: MẠCH ĐIỀU KHIỂN MÁY BƠM BẰNG BIẾN TRỞ

Cần Thơ – 2018


1. Giới thiệu chung.
Mạch bơm nước điều khiển bằng biến trở và cảm biến siêu âm là một mạch bơm nước
đơn giản, nhỏ gọn. Điều khiển máy bơm chủ yếu nhờ vào biến trở và cảm biến siêu âm.
Biến trở dùng để điều chỉnh mức bơm của động cơ, còn cảm biến siêu âm có chức năng
kiểm tra lượng nước trong bồn chứa tới mức nào đó để trả thông tính về mạch điều khiển,
để điều động cơ tiếp tục bơm hoặc là ngừng bơm.
2. Cấu tạo.
Gồm có các thành phần chính như sau:
-

Mạch điều khiển Arduino UNO R3

-

Cảm biến siêu âm SRF05

-


Biến trở 32k

-

Motor bơm nước 12V

-

Màn hình hiển thị LCD

-

Module cổng giao tiếp I2C

-

Module relay (rơ-le)

Và một số linh kiện khác: led, Test boarb, Adapter 5V, điện trờ 470Ω, dây cắm test
boarb, ống nước, bồn chứa nước.
2.1.

Arduino UNO R3.

Hình 2.1. Arduino UNO R3
Bảng 2.1. Một số thông số của Arduino UNO R3

Trang 2



Vi điều khiển

ATmega328 họ 8bit

Điện áp hoạt động

5V DC (chỉ được cấp qua cổng USB)

Tần số hoạt động

16 MHz

Dòng tiêu thụ

khoảng 30mA

Điện áp vào khuyên dùng

7-12V DC

Điện áp vào giới hạn

6-20V DC

Số chân Digital I/O

14 (6 chân hardware PWM)

Số chân Analog


6 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân I/O

30 mA

Dòng ra tối đa (5V)

500 mA

Dòng ra tối đa (3.3V)

50 mA

Bộ nhớ flash

32 KB (ATmega328) với 0.5KB dùng
bởi bootloader

SRAM

2 KB (ATmega328)

EEPROM

1 KB (ATmega328)

Trang 3



2.1.1. Vi điều khiển.

Hình 2.2. Vi điều khiển ATmega328 trên board Arduino UNO R3
Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8, ATmega168,
ATmega328. Bộ não này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp
nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ - độ ẩm và hiển thị
lên màn hình LCD,…
Thiết kế tiêu chuẩn của Arduino UNO sử dụng vi điều khiển ATmega328 với giá
khoảng 90.000đ. Tuy nhiên nếu yêu cầu phần cứng của bạn không cao hoặc túi tiền không
cho phép, bạn có thể sử dụng các loại vi điều khiển khác có chức năng tương đương nhưng
rẻ hơn như ATmega8 (bộ nhớ flash 8KB) với giá khoảng 45.000đ hoặc ATmega168 (bộ
nhớ flash 16KB) với giá khoảng 65.000đ.
Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn ngoài
với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V. Thường thì cấp nguồn bằng
pin vuông 9V là hợp lí nhất nếu bạn không có sẵn nguồn từ cổng USB. Nếu cấp nguồn
vượt quá ngưỡng giới hạn trên, bạn sẽ làm hỏng Arduino UNO.
2.1.2. Các chân năng lượng.
GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi bạn dùng các
thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau.
5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.
3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là 50mA.
Trang 4


Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương của
nguồn với chân này và cực âm của nguồn với chân GND.
IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở chân
này. Và dĩ nhiên nó luôn là 5V. Mặc dù vậy bạn không được lấy nguồn 5V từ chân này để
sử dụng bởi chức năng của nó không phải là cấp nguồn.
RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc

chân RESET được nối với GND qua 1 điện trở 10KΩ.
 Lưu ý:
-

Arduino UNO không có bảo vệ cắm ngược nguồn vào. Do đó bạn phải hết sức
cẩn thận, kiểm tra các cực âm – dương của nguồn trước khi cấp cho Arduino UNO.
Việc làm chập mạch nguồn vào của Arduino UNO sẽ làm cho nó hư hỏng vì vậy
các bạn nên bạn nên dùng nguồn từ cổng USB nếu có thể.

-

Các chân 3.3V và 5V trên Arduino là các chân dùng để cấp nguồn ra cho các thiết
bị khác, không phải là các chân cấp nguồn vào. Việc cấp nguồn sai vị trí có thể
làm hỏng board.

-

Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi điều khiển
ATmega328.

-

Cường độ dòng điện vào/ra ở tất cả các chân Digital và Analog của Arduino UNO
nếu vượt quá 200mA sẽ làm hỏng vi điều khiển.

-

Cấp điệp áp trên 5.5V vào các chân Digital hoặc Analog của Arduino UNO sẽ
làm hỏng vi điều khiển.


-

Cường độ dòng điện qua một chân Digital hoặc Analog bất kì của Arduino UNO
vượt quá 40mA sẽ làm hỏng vi điều khiển. Do đó nếu không dùng để truyền nhận
dữ liệu, bạn phải mắc một điện trở hạn dòng.
Ở đây mình nói rằng bạn “có thể làm hỏng”, điều đó có nghĩa là chưa chắc sẽ hỏng

ngay bởi các thông số kĩ thuật của linh kiện điện tử luôn có một sự tương đối nhất định.
Do đó hãy cứ tuân thủ theo những thông số kĩ thuật của nhà sản xuất.
2.1.3. Bộ nhớ.
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:

Trang 5


-

32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ nhớ
Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được
dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần quá 20KB bộ nhớ này
đâu.

-

2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo
khi lập trình sẽ lưu ở đây. Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ
RAM. Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ mà
bạn phải bận tâm. Khi mất điện, dữ liệu trên SRAM sẽ bị mất.

-


1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory):
đây giống như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của mình
vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM.

2.1.4. Các cổng vào/ra.

Hình 2.3. Các cổng vào/ra trên board Arduino UNO R3
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2 mức
điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi chân đều có các
điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các
điện trở này không được kết nối).
Một số chân digital có các chức năng đặc biệt như sau:
-

2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive
– RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông
qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial
Trang 6


không dây. Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này
nếu không cần thiết
-

Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ
phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm
analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở
chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những
chân khác.


-

Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các
chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao
thức SPI với các thiết bị khác.

-

LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút
Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13.
Khi chân này được người dùng sử dụng, LED sẽ sáng.

Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 →
210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên board, bạn có
thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu bạn cấp điện
áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ
0V → 2.5V với độ phân giải vẫn là 10bit.
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI
với các thiết bị khác.

2.1.5. Lập trình cho Arduino UNO R3.

Trang 7


Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn riêng. Ngôn ngữ này dựa
trên ngôn ngữ Wiring được viết cho phần cứng nói chung. Và Wiring lại là một biến thể của
C/C++. Một số người gọi nó là Wiring, một số khác thì gọi là C hay C/C++. Riêng mình thì
gọi nó là “ngôn ngữ Arduino”, và đội ngũ phát triển Arduino cũng gọi như vậy. Ngôn ngữ

Arduino bắt nguồn từ C/C++ phổ biến hiện nay do đó rất dễ học, dễ hiểu. Nếu học tốt chương
trình Tin học 11 thì việc lập trình Arduino sẽ rất dễ đối với bạn.Để lập trình cũng như gửi
lệnh và nhận tín hiệu từ mạch Arduino, nhóm phát triển dự án này đã cũng cấp đến cho người
dùng một môi trường lập trình Arduino được gọi là Arduino IDE (Intergrated Development
Environment) như hình dưới đây.

Hình 2.4. Đoạn mã nguồn như trong hình sẽ điều khiển một đèn LED nhấp nháy với
chu kì 1 giây.

Trang 8


2.2.

Cảm biến siêu âm.

Hình 2.5. Cảm biến siêu âm SRF05.
Cảm biến siêu âm hoạt động bằng cách phát đi 1 xung tín hiệu và đo thời gian nhận
được tín hiệu trở vể. Sau khi đo được tín hiệu trở về trên cảm biến siêu âm, ta tính được
thời gian từ lúc phát đến lúc nhận được tín hiệu. Từ thời gian này có thể tính ra được
khoảng cách.
Nếu đo được chính xác thời gian và không có nhiễu, mạch cảm biến siêu âm trả về
kết quả cực kì chính xác. Điều này phụ thuộc vào cách viết chương trình không sử dụng
các hàm delay.
Lưu ý: Sóng siêu âm chỉ bị dội lại khi gặp 1 số loại vật cản, nếu phát sóng siêu âm
vào chăn, nệm bạn sẽ không nhận được sóng phản hồi. có thể sử dụng các loại chip thông
dụng để nhận và xử lý dữ liệu như 8051, AVR, PIC, Arduino . . .
Thông số kĩ thuật module SRF05:
-


Nguồn cung cấp: 5V DC

-

Dòng : 30mA (Max 50mA)

-

Tần số hoạt động : 40KHz

-

Khoảng cách lớn nhất đo được : 6m

-

Khoảng cách nhỏ nhất đo được : 3 cm

-

Góc quét : 45 °

-

Kích thước module: 45x20mm.

-

Góc cảm biến < 15 độ
Trang 9



2.3.

-

Độ chính xác cao lên đến 3mm

-

Chân kết nối: VCC / Trig(T) / echo (R) / GND
Biến trở.

Hình 2.6. Biến trở.
Biến trở là các thiết bị có điện trở thuần có thể biến đổi được theo ý muốn. Chúng có
thể được sử dụng trong các mạch điện để điều chỉnh hoạt động của mạch điện.
Điện trở của thiết bị có thể được thay đổi bằng cách thay đổi chiều dài của dây dẫn
điện trong thiết bị, hoặc bằng các tác động khác như nhiệt độ thay đổi, ánh sáng hoặc bức
xạ điện từ,...
Cấu tạo của biến trở gồm 2 thành phần chính là con chạy và cuộn dây được làm bằng
hợp kim có điện trở suất lớn.
Biến trở thường ráp trong máy phục vụ cho quá trình sửa chữa, cân chỉnh của kỹ
thuật viên.
2.4.

Motor bơm nước.

Hình 2.7. Motor bơm nước 12V.
Động cơ bơm P385 12VDC 3W có kích thước nhỏ gọn, được sử dụng để bơm nước,
dung dịch với khả năng bơm tối đa lên đến 1.8L / 1 phút, động cơ sử dụng điện áp

12VDC, thích hợp với các thiết kế sử dụng máy bơm nhỏ: bơm hồ cá, tưới nước cho
cây,..., lưu ý không cấp ngược cực vì có thể làm hư cơ cấu bơm của động cơ (cực dương
có đánh dấu màu đỏ).
Trang 10


Thông số kĩ thuật:

2.5.

-

Loại động cơ DC: 385.

-

Điện áp sử dụng: 12VDC

-

Dòng điện sử dụng: 0.25A.

-

Công suất: 3W

-

Lưu lượng bơm: 1,8 ± 0,1 L / 1 phút.


-

Áp suất nước: 0.3Mpa.

-

Thời gian làm việc liên tục tối đa trong 1 ngày: không quá 8h.

-

Kích thước: 86 x 46 x 46 mm.
Màn hình hiển thị LCD.

Hình 2.8. Màn hình hiển thị LCD.

Sơ đồ chân: Như hình 2.8.
Bảng 2.2. Chức năng các chân trên LCD.
Chức năng

Thứ tự chân

Tên chân

1

VSS

GND của LCD

2


VCC

Nguồn cấp cho LCD

Trang 11


3

VEE

Điều chỉnh độ tương phản ( cần được gắn với biến
trở

4

RS

Chọn thanh ghi:
RS = 0: Đưa LCD vào chế độ ghi lệnh.
RS = 1: Đưa LCD vào chế độ ghi dữ liệu (dữ liệu
xuất lên màn hình).

5

RW

Chọn chế độ đọc/ghi cho LCD:
RW = 0: Vi điều khiển truyền dữ liệu vào LCD.

RW = 1: Vi điều khiển đọc dữ liệu vào LCD.

6

E

E = 0: Vô hiệu hóa đọc/ghi.
E = 1: Cho phép LCD đọc/ghi.
E chuyển từ mức 1 về 0: Bắt dầu đọc/ghi LCD.

7

D0

Dữ liệu bit thứ 0

8

D1

Dữ liệu bit thứ 1

9

D2

Dữ liệu bit thứ 2

10


D3

Dữ liệu bit thứ 3

11

D4

Dữ liệu bit thứ 4

12

D5

Dữ liệu bit thứ 5

13

D6

Dữ liệu bit thứ 6

14

D7

Dữ liệu bit thứ 7

15


LED +

Nguồn dương cấp cho led nền

16

LED -

Nguồn âm cấp cho led nền

Trang 12


Các thanh ghi:
-

Thanh ghi IR: Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng. Người dùng
chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR.Ví dụ: Lệnh “hiển
thị màn hình và con trỏ” có mã lệnh là 00001110.

-

Thanh ghi DR : Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào vùng RAM
DDRAM hoặc CGRAM ( ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2 vùng RAM
này gửi ra cho MPU (ở chế độ đọc).

-

Cờ báo bận BF: (Busy Flag) Khi đang thực thi các hoạt động bên trong, LCD bỏ
qua mọi giao tiếp với bên ngoài và bật cờ BF( thông qua chân DB7 khi có thiết

lập RS=0, R/W=1) lên để cho biết nó đang “bận”.

-

Bộ đếm địa chỉ AC : (Address Counter) Khi một địa chỉ lệnh được nạp vào thanh
ghi IR, thông tin được nối trực tiếp cho 2 vùng RAM (việc chọn lựa vùng RAM
tương tác đã được bao hàm trong mã lệnh). Sau khi ghi vào (đọc từ) RAM, bộ
đếm AC tự động tăng lên (giảm đi) 1 đơn vị. Bộ nhớ LCD Vùng RAM hiển thị
DDRAM : (Display Data RAM)

DDRAM:

Hình 2.9. DDRAM.
-

Đây là vùng RAM dùng để hiển thị, nghĩa là ứng với một địa chỉ của RAM là
một ô kí tự trên màn hình.

CGROM:

Trang 13


Chứa các mẫu kí tự loại 5x7 hoặc 5x10 điểm ảnh/kí tự, và định địa chỉ bằng 8 bit.

Hình 2.10. Mẫu kí tự đồ họa riêng.

Tập lệnh:
Bảng 2.3. Các tập lệnh cơ bản trong LCD.
Mã (Hex)


Lệnh đến thanh ghi của LCD

1

Xóa màn hình hiển thị

2

Trở về đầu dòng

4

Giả con trỏ (dịch con trỏ sang trái)

5

Tăng con trỏ (dịch con trỏ sang phải)

6

Dịch hiển thị sang phải

7

Dịch hiển thị sang trái
Trang 14


8


Tắt con trỏ, tắt hiển thị

A

Bật con trỏ, tắt hiển thị

C

Tắt con trỏ, bật hiển thị

E

Bật hiển thi, nhấp nháy con trỏ

F

Tắt con trỏ, nhấp nháy con trỏ

10

Dịch vị trí con trỏ sang trái

14

Dịch vị trí con trỏ sang phải

18

Dịch toàn bộ hiển thị sang trái


1C

Dịch toàn bộ hiển thị sang phải

80

Ép con trỏ vào đầu dòng thứ nhất

C0

Ép con trỏ vào đầu dòng thứ hai

38

Hai dòng và ma trạn 5 x 7

Ví dụ một số lệnh:
Copy file “Lcd_4bit.h” vào thư mục C:\Program Files\PICC\Devices.
lcd_init(): Khởi tạo LCD, gọi 1 lần trong hàm main.
lcd_gotoxy(int8 x, int8 y) : Hiển thị tại vị trí cột x , hàng y.
lcd_send_byte(int8 address, int8 n): Gửi 1 byte n đến lcd, address=0: thao tác lệnh,
address=1: thao tác dữ liệu.
int8 lcd_read_byte(void) : đọc về 1 byte - lcd_putc(char c) : Gửi các ký tự lên lcd.
char lcd_getc(int8 x, int8 y) : Đọc ký tự tại cột x, hàng y.

Trang 15


2.6.


Module cổng giao tiếp I2C.

Hình 2.11. Module I2C.
Các thông số cơ bản:
-

Kích thước: 41.5mm(L)x19mm(W)x15.3mm(H)

-

Trọng lượng: 5g.

-

Điện áp hoạt động :2.5-6V.

-

Giao tiếp I2C.

-

Jump Chốt: Cung cấp đèn cho LCD hoặc ngắt.

-

Biến trở xoay độ tương phản cho LCD.

I2C sử dụng hai đường truyền tín hiệu:

-

Một đường xung nhịp đồng hồ(SCL) chỉ do Master phát đi ( thông thường ở
100kHz và 400kHz. Mức cao nhất là 1Mhz và 3.4MHz).

2.7.

Một đường dữ liệu(SDA) theo 2 hướng.
Module rơ-le.

Hình 2.12. Module rơ-le.
Giới thiệu:
Trang 16


Rơ-le là một loại linh kiện điện tử thụ động rất hay gặp trong các ứng dụng thực tế.
Khi bạn gặp các vấn đề liên quan đến công suất và cần sự ổn định cao, ngoài ra có thể dễ
dàng bảo trì, thì rơ-le chính là cái bạn cần tìm. Vì vậy, hôm nay, chúng ta sẽ cùng nhau tìm
hiểu về relay và các ứng dụng của nó trong cuộc sống.
Rơ-le là một công tăc (khóa K). Nhưng khác với công tắc ở một chỗ cơ bản, rơ-le
được kích hoạt bằng điện thay vì dùng tay người. Chính vì lẽ đó, rơ-le được dùng làm
công tắc điện tử. Vì rơ-le là một công tắc nên nó có 2 trạng thái: đóng và mở.
Các loại rơ-le và cách xác định trạng thái của nó:
Trên thị trường chúng ta có 2 loại module rơ-le: module rơ-le đóng ở mức thấp (nối
cực âm vào chân tín hiệu rơ-le sẽ đóng), module rơ-le đóng ở mức cao (nối cực dương
vào chân tín hiệu rơ-le sẽ đóng). Nếu sơ sánh giữa 2 module rơ-le có cùng thông số kỹ
thuật thì hầu hết mọi kinh kiện của nó đều giống nhau, chỉ khác nhau ở chỗ cái transitor của
mỗi module. Chính vì cái transistor này nên mới sinh ra 2 loại module rơ-le này đấy (có 2
loại transistor là NPN - kích ở mức cao, và PNP - kích ở mức thấp).
Thông số của một module relay

Một module rơ-le được tạo nên bởi 2 linh kiện thụ động cơ bản là rơ-le và transistor,
nên module rơ-le có những thông số của chúng.
-

Hiệu điện thế kích tối ưu: Chẳng hạn, bạn cần một module relay sẽ làm nhiệm vụ
bật tắt một bóng đèn (220V) khi trời tối từ cảm biến ánh sáng hoạt động ở mức 512V thì bạn bảo họ bán loại module relay 5V (5 volt) hoặc module relay 12V (12
volt) kích ở mức cao .

-

Các mức hiệu điện thế tối đa và cường độ dòng điện tối đa của đồ dùng điện khi
nối vào module rơ-le.

-

10A - 250VAC: Cường độ dòng điện tối đa qua các tiếp điểm của rơ-le với hiệu
điện thế <= 250V (AC) là 10A.

-

10A - 30VDC: Cường độ dòng điện tối đa qua các tiếp điểm của rơ-le với hiệu
điện thế <= 30V (DC) là 10A.

-

10A - 125VAC: Cường độ dòng điện tối đa qua các tiếp điểm của rơ-le với hiệu
điện thế <= 125V (AC) là 10A.

Trang 17



-

10A - 28VDC: Cường độ dòng điện tối đa qua các tiếp điểm của rơ-le với hiệu
điện thế <= 28V (DC) là 10A.

-

SRD-05VDC-SL-C: Hiện điện thế kích tối ưu là 5V.

Rơ-le bình thường gồm có 6 chân. Trong đó có 3 chân để kích, 3 chân còn lại nối với
đồ dùng điện công suất cao.
 3 chân dùng để kích:
-

+: cấp hiệu điện thế kích tối ưu vào chân này.

-

: nối với cực âm.

-

S: chân tín hiệu, tùy vào loại module rơ-le mà nó sẽ làm nhiệm vụ kích rơ-le.

-

Nếu bạn đang dùng module rơ-le kích ở mức cao và chân S bạn cấp điện thế
dương vào thì module rơ-le của bạn sẽ được kích, ngược lại thì không.


-

Tương tự với module rơ-le kích ở mức thấp.

 3 chân còn lại nối với đồ dùng điện công suất cao:
-

COM: chân nối với 1 chân bất kỳ của đồ dùng điện, nhưng mình khuyên bạn
nên mắc vào đây chân lửa (nóng) nếu dùng hiệu điện thế xoay chiều và cực
dương nếu là hiệu điện một chiều.

-

ON hoặc NO: chân này bạn sẽ nối với chân lửa (nóng) nếu dùng điện xoay chiều
và cực dương của nguồn nếu dòng điện một chiều.

-

OFF hoặc NC: chân này bạn sẽ nối chân lạnh (trung hòa) nếu dùng điện xoay
chiều và cực âm của nguồn nếu dùng điện một chiều.

3. Nối mạch.
Bảng 3.1. Sơ đồ nối mạch.
Arduino

Module

Module

Module


Biến

Relay

siêu âm

I2C

Trở

5V

5V

5V

5V

5V

GND

GND

GND

GND

GND


A2

2

A4

SDA
Trang 18

LED

GND


A5

SCL

7

ECHO

9

TRIG

10

IN1


13

+

4. Nguyên lí làm việc.
Đặt cảm biến siêu âm ở trên nắp thùng, nó sẽ kiểm tra độ cao tương đối giữa nó và mực
nước trong thùng. Dùng biến trở để điều chỉnh bơm đến mức nào đó thì máy bơm sẽ hoạt
động, led sẽ sáng và mức nước đến mức điều chỉnh thì ngừng bơm, led sẽ tắt. Khi mức
nước cách cảm biến siêu âm 4cm thì tự động ngừng bơm và led sẽ nhấp nháy cảnh báo.
5. Lập trình.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#define BACKLIGHT_PIN

13

const int chipSelect = 4;
#define trigPin 9 // Chan triger cua cam bien gan vao pin so 3 cua arduino
#define echoPin 7 // chan echo cua cam bien gan vao pin so 3 cua arduino
#define re1 10 // pin for relay
//#define re2 8
#define lenght 16.0 // chieu dai 16 cot cua man hinh
double percent = 100.0;

int bientroPin = A2;

LiquidCrystal_I2C lcd(0x3F, 16, 2); // thiet lap man hinh dia chi LCD 0x20 cho 16 ki tu
va hien thi 2 dong tren man hinh

Trang 19


//=====================================
void setup()
{
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(re1, OUTPUT);
pinMode(13, OUTPUT);

while(!Serial);
Serial.println("Khoi tao hoan tat");
lcd.init();
// khoi tao man hinh LCD
lcd.backlight();
}
//================================
void loop()
{
//chia bien tro
int d = analogRead(bientroPin);
int volt = d / 1023.0 * 18.0;
lcd.print(volt);
lcd.setCursor(0,01);
Serial.println(volt);
{
}
//=========================

long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = 18 - ((duration / 2) / 29.1);
Trang 20


// thiet lap muc nuoc su dung xuong < volt thi tu dong bat relay
if (distance < volt)
{
digitalWrite (re1, LOW);
digitalWrite (13 , HIGH);

Serial.print(" ON ");
lcd.setCursor(14, 0);
lcd.print("ON");
}
// thiet lap muc nuoc len den >=volt thi tu dong tat relay
if (distance >=volt)
{
digitalWrite (re1, HIGH);
digitalWrite (13, LOW);

Serial.print(" OOF ");
lcd.setCursor(13, 0);
lcd.print("OOF");

}
if (distance >=13)
{
digitalWrite (re1, HIGH);
digitalWrite (13, HIGH);
delay(100);
digitalWrite (13, LOW);
delay(100);

Serial.print(" OOF ");
lcd.setCursor(13, 0);
lcd.print("OOF");
}
//===========================
lcd.setCursor(0, 0);
lcd.print(distance);
Trang 21


Serial.print(distance);
Serial.print(" CM , ");
percent = ((18. - (18 - distance ) ) / 18.) * 100.;
Serial.print(percent);

Serial.println(" %");
lcd.print(" CM-");
lcd.print(percent);
lcd.print("%");
lcd.setCursor(0, 1);
delay(500);

}

Trang 22



×