Bài 6 · Công nghệ
Điều khiển rơ le một và hai kênh
cho một chân 3,3 V đóng cắt được mạch mạnh hơn nó nhiều lần
Đây là bài đầu tiên ESP32 không tự làm việc mà ra lệnh cho một thứ khác làm. Chân GPIO chỉ đẩy được vài mi-li-ampe, còn rơ le đóng cắt được cả một mạch đèn 12 V — và toàn bộ bài học nằm ở chỗ hai thế giới ấy được ngăn cách ra sao.
01 Mục tiêu và yêu cầu cần đạt
Năm bài trước, ESP32 tự làm mọi việc: nó sáng đèn, nó đếm, nó đo thời gian. Bài này nó chuyển sang vai khác — ra lệnh. Một chân GPIO chỉ chịu được vài mi-li-ampe, nhưng qua rơ le, nó đóng cắt được mạch mạnh gấp hàng nghìn lần.
Sau bài này học sinh làm được
- Đấu đúng một module rơ le và giải thích vai trò của
COM,NO,NC. - Nhận ra module kích mức thấp và viết mã đúng với logic đảo đó.
- Đặt trạng thái an toàn ngay lúc khởi động, không để rơ le đóng nhầm.
- Viết được khoá liên động để hai kênh không bao giờ cùng đóng.
- Chỉ ra ranh giới cách li giữa mạch điều khiển và mạch tải trên chính bo mạch trước mặt.
- Công nghệ 10 — Thiết kế và Công nghệ: cơ cấu chấp hành, tín hiệu điều khiển và mạch động lực.
- Công nghệ 12 — Điện — Điện tử: rơ le điện từ, tiếp điểm thường mở và thường đóng.
Trích nguyên văn yêu cầu cần đạt từ Phụ lục Thông tư 32/2018 trước khi đưa vào kế hoạch bài dạy.
02 Lí thuyết
Rơ le là công tắc được bấm bằng nam châm điện
Dòng chạy qua cuộn dây → thành nam châm điện → hút lá thép → lá thép gạt tiếp điểm. Ngắt dòng, lò xo kéo về. Tiếng "tách" chính là lá thép đập vào tiếp điểm.
Quan trọng nhất: cuộn dây và tiếp điểm không nối điện với nhau, chỉ tác động qua từ trường. Nhờ vậy mạch 3,3 V điều khiển được một mạch hoàn toàn khác mà hai bên không dùng chung dây nào.
COM, NO và NC
COM— chân chung, lá thép gắn ở đây.NO(thường mở) — rơ le nghỉ thì hở, đóng thì nốiCOM.NC(thường đóng) — ngược lại hoàn toàn.
"Thường" nghĩa là lúc chưa có điện vào cuộn dây. Đèn báo hay quạt dùng
NO để mất điện thì tải tắt; thiết bị mất điện phải chạy tiếp —
đèn thoát hiểm chẳng hạn — dùng NC. Đây là quyết định thiết kế
thật, không phải chi tiết vụn.
Gần như mọi module bán sẵn đều đóng khi chân IN xuống mức 0. Lí do nằm ở con opto ghép quang: đèn LED của opto nối sẵn lên VCC, nên phải kéo đầu kia xuống đất mới sáng.
Hệ quả: lúc bo vừa cấp nguồn, các chân GPIO ở mức thấp
trước khi chương trình chạy — đúng mức làm rơ le đóng. Vì vậy dòng khai báo
chân bắt buộc có value=1, đặt chân lên mức cao sớm nhất có thể.
Khoá liên động
Hai kênh điều khiển hai việc loại trừ nhau — chạy tới và chạy lui, bơm vào và xả ra — thì cả hai cùng đóng có thể làm hỏng thiết bị. Khoá liên động là quy tắc: mở hết rồi mới đóng cái mới, chừa một khoảng nghỉ để tiếp điểm kịp rời nhau hẳn.
03 Linh kiện
| Linh kiện | Mô tả, lưu ý khi mua | Số lượng · giá |
|---|---|---|
| ESP32 DevKit V1 | Bo 30 chân, cổng micro-USB hoặc Type-C | 1 · 90–150k |
| Module rơ le 2 kênh 5 V | Loại có opto cách li, kích mức thấp | 1 · 20–30k |
| Đèn LED 12 V hoặc quạt 12 V nhỏ | Tải để đóng cắt. Bắt buộc là nguồn một chiều | 1 · 10–20k |
| Nguồn một chiều 12 V | Adapter rời, có sẵn ở phòng thực hành | 1 · dùng lại |
| Dây nối cái–đực | Nối bo với module rơ le | 5 · 3k |
04 Lắp mạch và sơ đồ nối dây
| Khối | Nối dây | Nguồn |
|---|---|---|
| Rơ le kênh 1 | GPIO23 → IN1 | Kích mức thấp: xuống 0 thì đóng |
| Rơ le kênh 2 | GPIO22 → IN2 | Cùng logic với kênh 1 |
| Nguồn module | VCC → 5V của ESP32 · GND → GND | GND phải nối chung, nếu không rơ le không nhận lệnh |
| Mạch tải | Nguồn 12 V → COM · tải → NO | Phần này hoàn toàn tách khỏi ESP32 |
Toàn cảnh: ESP32, module rơ le 2 kênh, adapter 12 V và một đèn LED 12 V. Thấy rõ hai vùng riêng biệt — vùng điều khiển 3,3 V và vùng tải 12 V.
Khung giữ chỗ — thay bằng ảnh chụp thật khi cóCận cảnh khối tiếp điểm với ba vít COM, NO, NC và nhãn in trên mạch, đủ nét để học sinh đối chiếu khi lắp.
Khung giữ chỗ — thay bằng ảnh chụp thật khi cóSơ đồ hai vòng tách rời: vòng trái là ESP32 → opto → cuộn dây; vòng phải là nguồn 12 V → COM → NO → tải. Giữa hai vòng vẽ một vạch đứt ghi "cách li".
Khung giữ chỗ — thay bằng ảnh chụp thật khi cóLắp theo đúng thứ tự này
- Rút hết nguồn — cả cáp USB lẫn adapter 12 V.
- Nối phần điều khiển:
GPIO23→IN1,GPIO22→IN2,5V→VCC,GND→GND. - Nối phần tải: cực dương 12 V →
COMkênh 1,NOkênh 1 → chân dương của đèn, chân âm của đèn → cực âm 12 V. - Kiểm tra lại một lượt, đặc biệt là
GNDchung. - Cắm USB trước, thấy đèn nguồn của module sáng thì mới cắm adapter 12 V.
Rơ le trên module ghi được cả thông số cho điện lưới, nhưng lớp học không đấu điện lưới. Toàn bộ lộ trình này chỉ làm việc với nguồn một chiều từ adapter, tối đa 12 V. Mọi ý tưởng "bật bóng đèn thật trong phòng" phải thay bằng đèn LED 12 V — hiệu ứng dạy học y hệt mà không có rủi ro nào.
Module có đèn nguồn riêng nên vẫn sáng dù thiếu dây GND. Học sinh
thấy đèn sáng thì tưởng đã xong, nhưng rơ le không bao giờ tách. Nếu chương
trình chạy mà không nghe tiếng "tách" nào, hãy kiểm tra dây GND trước tiên.
05 Mã nguồn
Toàn bộ mã trong bài chạy trên MicroPython 1.28 cho ESP32. Bài này chỉ dùng tải một chiều điện áp thấp; không đấu điện lưới trong bất kì hoạt động nào của lớp.
Bước 0 — một kênh, nghe tiếng tách# ------------------------------------------------------------
# Bai 6 - Buoc 0: nghe tieng "tach" de biet chan nao ra kenh nao
# ------------------------------------------------------------
from machine import Pin
import time
# Module ro le pho bien nhat kich MUC THAP: dua chan xuong 0 thi ro le DONG.
relay1 = Pin(23, Pin.OUT, value=1) # value=1 -> mo ngay tu dau
while True:
relay1.off() # xuong 0 -> DONG. Nghe tieng "tach"
time.sleep(1)
relay1.on() # len 1 -> MO. Lai mot tieng "tach"
time.sleep(1) Chưa cần đấu tải. Chỉ cần nghe. Mỗi giây một tiếng "tách" nghĩa là phần điều khiển đã đúng, và học sinh nghe được bằng tai chính cái khoảnh khắc lá thép chuyển vị trí.
Hãy để học sinh tự phát hiện điều lạ: relay1.off() lại làm rơ le
đóng. Câu hỏi "vì sao ngược" dẫn thẳng vào phần opto ở mục Lí thuyết.
# ------------------------------------------------------------
# Bai 6 - Hai kenh co khoa lien dong: khong bao gio cung dong
# ------------------------------------------------------------
from machine import Pin
import time
# ===== CẤU HÌNH =====
CHAN_RELAY1 = 23
CHAN_RELAY2 = 22
THOI_GIAN_DONG = 2000 # ms - moi kenh dong bao lau
NGHI_GIUA = 300 # ms - khoang cach an toan giua hai lan dong
# ====================
relay1 = Pin(CHAN_RELAY1, Pin.OUT, value=1)
relay2 = Pin(CHAN_RELAY2, Pin.OUT, value=1)
def mo_het():
relay1.on()
relay2.on()
mo_het() # trang thai an toan khi vua khoi dong
while True:
mo_het()
time.sleep_ms(NGHI_GIUA)
relay1.off()
time.sleep_ms(THOI_GIAN_DONG)
mo_het()
time.sleep_ms(NGHI_GIUA)
relay2.off()
time.sleep_ms(THOI_GIAN_DONG)
Hàm mo_het() được gọi cả trước vòng lặp lẫn đầu mỗi nhánh. Đó không
phải thừa: gọi trước vòng lặp là để đặt trạng thái an toàn lúc khởi động, gọi
trong vòng lặp là để giữ khoá liên động. Hai mục đích khác nhau, tình cờ dùng
chung một câu lệnh.
Em mô tả bằng tiếng Việt, hệ thống dựng thuật toán và chương trình, rồi nạp thẳng xuống ESP32 qua Wi-Fi.
06 Hiệu chuẩn và kiểm thử
Kiểm tra trạng thái an toàn
Đây là phép thử quan trọng nhất của bài, và cũng là phép thử hay bị bỏ qua nhất.
- Nạp chương trình, để chạy bình thường.
- Rút cáp USB rồi cắm lại. Quan sát đèn tải ngay giây đầu tiên.
- Nhấn nút
ENtrên bo để khởi động lại. Quan sát lần nữa. - Lặp lại năm lần và ghi số lần đèn loé lên ngoài ý muốn.
| Lần | Cách khởi động lại | Đèn có loé không | Ước lượng thời gian loé |
|---|---|---|---|
| 1 | Cắm USB | … | … |
| 2 | Nhấn EN | … | … |
| 3 | Cắm USB | … | … |
| 4 | Nhấn EN | … | … |
| 5 | Cắm USB | … | … |
Thử nghịch để thấy vì sao cần value=1
Xoá , value=1 khỏi hai dòng khai báo rồi nạp lại và khởi động lại vài
lần. Rơ le sẽ đóng một nhịp ngắn trước khi chương trình kịp mở nó. Sau khi cả lớp
thấy rõ, trả lại value=1. Đây là cách hiệu quả nhất để dạy khái niệm
trạng thái an toàn: cho học sinh thấy hậu quả trước, rồi mới nói tên khái niệm.
Danh sách kiểm trước khi coi là xong
- Nghe rõ tiếng tách ở cả hai kênh.
- Đèn tải sáng đúng kênh đang đóng, không sáng mờ hay chớp.
- Khởi động lại năm lần, không lần nào đèn loé ngoài ý muốn.
- Không có thời điểm nào hai kênh cùng đóng — kiểm bằng cách nghe hai tiếng tách luôn cách nhau.
- Học sinh chỉ được đúng ranh giới cách li trên module.
07 Kinh nghiệm và cạm bẫy
Cả lớp nghe được cùng lúc, không cần nhìn màn hình. Khi sửa thời gian trong khu thực hành AI rồi nạp lại, nhịp tách đổi theo — và học sinh nghe thấy chương trình của mình chạy trước cả khi kịp nhìn.
- Rơ le tách liên tục không theo nhịp. Nguồn 5 V không đủ. Cuộn dây rút khá nhiều dòng lúc hút; nếu cấp qua cổng USB của máy tính yếu thì bo bị sụt áp và khởi động lại liên tục.
- Không nghe tiếng nào. Thiếu dây
GNDchung, hoặc module là loại kích mức cao — thử đảoon()vàoff(). - Đèn tải sáng mờ. Đấu nhầm vào
NCthay vìNO, hoặc quên nối cực âm 12 V về lại nguồn. - Đèn loé lúc khởi động. Thiếu
value=1.
Các hộp trên viết từ quá trình dựng và chạy thử bài. Sau buổi dạy đầu tiên, xin thầy cô thay bằng tình huống đã thực sự xảy ra ở lớp mình.
08 Ứng dụng trong dạy học
Công nghệ — tín hiệu điều khiển và mạch động lực
Bài này là ví dụ gọn nhất cho một cặp khái niệm nền của ngành điều khiển: mạch điều khiển làm việc ở mức năng lượng rất thấp, mạch động lực làm việc ở mức cao, và giữa chúng luôn có một khâu cách li. Học sinh cầm trên tay đúng ba phần đó.
Vì sao ngày nay người ta hay thay rơ le bằng linh kiện bán dẫn
Rơ le có tiếp điểm cơ khí nên mòn dần, tách chậm và kêu. Rơ le bán dẫn không có bộ phận chuyển động, đóng cắt nhanh và im lặng, nhưng đắt hơn và toả nhiệt. Đây là một bài tập so sánh phương án rất thật: hãy để học sinh chọn cho một tình huống cụ thể và bảo vệ lựa chọn của mình.
Hoạt động 1 — Xác định vấn đề. Đèn bàn hay bị quên tắt. Cần một bộ hẹn giờ tự ngắt sau một khoảng đặt trước.
Tiêu chí sản phẩm: chỉ dùng đèn 12 V một chiều; mất điện rồi có điện lại thì đèn phải tắt chứ không tự sáng; sai lệch thời gian dưới 5 % trong 10 phút.
Hoạt động 2 — Kiến thức nền. Rơ le và tiếp điểm; logic kích mức thấp; trạng thái an toàn khi khởi động; đếm thời gian đã học ở Bài 5.
Hoạt động 3 — Đề xuất và chọn phương án. Tiêu chí "có điện lại
thì phải tắt" ép các nhóm dùng NO chứ không phải NC, và
ép phải có value=1. Đây là chỗ tiêu chí thiết kế quyết định kĩ thuật.
Hoạt động 4 — Chế tạo và thử. Lắp mạch, lập trình, thử ngắt nguồn đột ngột ít nhất năm lần.
Hoạt động 5 — Báo cáo và điều chỉnh. Mỗi nhóm trình bày bảng kiểm trạng thái an toàn. Nhóm nào có lần đèn loé phải giải thích nguyên nhân.
- Ghép nút nhấn của Bài 2 để bật tắt bằng tay, có nhớ trạng thái.
- Ghép cảm biến chuyển động của Bài 17 thành đèn hành lang tự động.
- Ghép webserver của Bài 44 để bật tắt từ điện thoại trong cùng mạng.
- Hướng thi Khoa học kĩ thuật: tủ ấp trứng mini có khoá liên động giữa sưởi và quạt.