Đèn cầu thang tự sáng khi có người, chỉ bật lúc trời tối
Dây LED 12V dọc cầu thang tự sáng dần khi cảm biến PIR thấy người đi tới, sáng trong thời gian cài đặt rồi mờ dần tắt. Quang trở khoá mạch vào ban ngày nên không tốn điện vô ích. Dùng adapter 12V, không đụng tới điện 220V.
✅ Đã kiểm thử
Xem chi tiết 13 phép đo
Đèn đang sáng hết cỡ (trời tối, PIR thấy người)
- Q1: dẫn 997.9mA, Vds=0.03V.
- Chân D9 cấp 0.5mA (an toàn ≤ 20.0mA).
- Dòng qua dây LED 12V: 997.9mA ✓
- Sụt áp trên MOSFET (càng nhỏ càng mát): 0.03V ✓
- Áp kích cửa MOSFET: 4.94V ✓
- Áp ra module hạ áp cấp Nano và PIR: 5.00V ✓
- Áp quang trở lúc trời tối: 0.24V ✓
- Tổng dòng adapter phải cấp (adapter 2A): 1.01A ✓
Trời sáng nên không bật dù có người
- Dây LED phải tắt: 0.0mA ✓
- Áp quang trở lúc trời sáng: 4.17V ✓
- Mức tín hiệu PIR vào Nano: 3.30V ✓
Ban đêm không có người (đèn chờ)
- Dây LED tắt: 0.0mA ✓
- Cửa MOSFET được kéo xuống mát: 0.00V ✓
Nguyên lý hoạt động
PIR HC-SR501 bắt tia hồng ngoại từ thân nhiệt người; thấy chuyển động là chân OUT lên 3,3V — đủ để Nano chạy 5V đọc là mức cao. Quang trở LDR mắc nối tiếp với điện trở 10kΩ thành cầu chia áp: trời tối quang trở lên khoảng 200kΩ nên chân A0 chỉ còn khoảng 0,24V, trời sáng quang trở xuống khoảng 2kΩ nên A0 lên hơn 4V. Nano chỉ bật đèn khi A0 thấp hơn ngưỡng (trời tối) và PIR báo có người. Chân D9 phát xung PWM qua điện trở 100Ω vào cửa MOSFET IRLZ44N để sáng dần — mờ dần; điện trở 10kΩ kéo cửa xuống mát giữ đèn tắt lúc Nano chưa khởi động xong. MOSFET đóng cắt phía âm của dây LED, chịu khoảng 1A ở 12V với sụt áp chỉ vài chục milivôn nên gần như không nóng. Adapter 12V nuôi dây LED, đồng thời qua module hạ áp DC-DC xuống 5V cấp cho Nano, PIR và cầu chia áp quang trở — hạ áp kiểu xung nên không nóng như hạ áp bằng điện trở.
Sơ đồ đấu dây
Mỗi màu là một dây. Chấm tròn là điểm hàn. Chạm vào tên dây trong bảng để làm nổi bật.
Đây là mô phỏng một chiều (DC) ở trạng thái tĩnh: dùng để kiểm tra mức áp, dòng và công suất. Hiệu ứng nhấp nháy, PWM hay giao tiếp số do code quyết định nên không chạy ở đây.
| # | Dây | Nối các điểm | Áp mô phỏng |
|---|---|---|---|
| 1 | đỏ sẫm 12V | PS1 + ⟷ U2 IN+ ⟷ L1 + ⟷ C1 + | — |
| 2 | đen GND | PS1 - ⟷ U2 IN- ⟷ U2 OUT- ⟷ U1 GND ⟷ U3 GND ⟷ Q1 S ⟷ R1 2 ⟷ R3 2 ⟷ C1 - | — |
| 3 | đỏ 5V | U2 OUT+ ⟷ U1 5V ⟷ U3 VCC ⟷ LDR1 1 | — |
| 4 | vàng PIR_OUT | U3 OUT ⟷ U1 D2 | — |
| 5 | xanh lá LDR_SENSE | LDR1 2 ⟷ R1 1 ⟷ U1 A0 | — |
| 6 | xanh dương GATE_DRV | U1 D9 ⟷ R2 1 | — |
| 7 | tím GATE | R2 2 ⟷ Q1 G ⟷ R3 1 | — |
| 8 | xanh ngọc LED_NEG | L1 - ⟷ Q1 D | — |
Danh sách linh kiện
| Ký hiệu | Linh kiện | Giá tham khảo | |
|---|---|---|---|
| PS1 | Adapter 12V 2A jack DC 5.5×2.1mm | 65.000đ | Tìm mua |
| U2 | Module hạ áp DC-DC LM2596 (chỉnh ra 5V) hoặc mini-360 ra 5V | 25.000đ | Tìm mua |
| U1 | Arduino Nano (chip nạp CH340) | 75.000đ | Tìm mua |
| U3 | Cảm biến chuyển động PIR HC-SR501 | 22.000đ | Tìm mua |
| LDR1 | Quang trở LDR 5mm (GL5528) | 2.000đ | Tìm mua |
| R1 | Điện trở 10kΩ 1/4W (nâu-đen-cam) | 200đ | Tìm mua |
| Q1 | MOSFET IRLZ44N (TO-220, loại logic-level chữ L) | 12.000đ | Tìm mua |
| R2 | Điện trở 100Ω 1/4W (nâu-đen-nâu) | 200đ | Tìm mua |
| R3 | Điện trở 10kΩ 1/4W (nâu-đen-cam) | 200đ | Tìm mua |
| C1 | Tụ hóa 470µF 25V (470u) | 2.500đ | Tìm mua |
| L1 | Dây LED 12V đơn màu (tổng dòng ≤1A, xem nhãn W/m) | 45.000đ | Tìm mua |
| Tổng (chưa gồm board hàn, dây, thiếc) | 249.100đ |
Các bước làm
Code nạp cho mạch
Chọn board Arduino Nano.
/*
Đèn cầu thang tự sáng khi có người — Arduino Nano
- PIR HC-SR501 ở D2 báo có người (mức cao 3,3V)
- Quang trở + trở 10k ở A0: số đọc CÀNG NHỎ nghĩa là CÀNG TỐI
- Dây LED 12V qua MOSFET IRLZ44N ở D9 (có PWM nên sáng dần / mờ dần)
Mở Serial Monitor 115200 để xem số đọc A0 rồi chỉnh NGUONG_TOI cho đúng phòng.
*/
// ---------- Cấu hình ----------
const uint8_t CHAN_PIR = 2; // OUT của PIR
const uint8_t CHAN_LDR = A0; // cầu chia áp quang trở
const uint8_t CHAN_DEN = 9; // cửa MOSFET (chân có PWM)
int NGUONG_TOI = 400; // A0 nhỏ hơn số này = trời tối (0..1023)
const int VUNG_CHET = 60; // chống chớp quanh ngưỡng
const unsigned long GIU_SANG_MS = 45000UL; // sáng bao lâu sau lần thấy người cuối
const uint8_t DO_SANG_MAX = 255; // 255 = sáng hết cỡ
const uint8_t DO_SANG_CHO = 0; // 0 = tắt hẳn; đặt 20 nếu muốn sáng mờ chờ sẵn
const unsigned long BUOC_FADE_MS = 6; // càng lớn càng chuyển chậm
const unsigned long KHOI_DONG_MS = 60000UL; // PIR cần ~60s ổn định sau khi cấp điện
// ---------- Trạng thái ----------
int doSangHienTai = 0;
int doSangDich = 0;
bool troiToi = false;
unsigned long mocTatDen = 0;
unsigned long mocFade = 0;
unsigned long mocInLog = 0;
void setup() {
pinMode(CHAN_PIR, INPUT);
pinMode(CHAN_DEN, OUTPUT);
analogWrite(CHAN_DEN, 0);
Serial.begin(115200);
Serial.println(F("Den cau thang PIR - dang khoi dong PIR (~60 giay)"));
}
void loop() {
unsigned long bayGio = millis();
// 1. Đọc ánh sáng môi trường, có vùng chết để không chớp quanh ngưỡng
int sangMT = analogRead(CHAN_LDR);
if (troiToi && sangMT > NGUONG_TOI + VUNG_CHET) troiToi = false;
else if (!troiToi && sangMT < NGUONG_TOI) troiToi = true;
// 2. Đọc PIR (bỏ qua trong lúc PIR chưa ổn định)
bool coNguoi = (bayGio > KHOI_DONG_MS) && (digitalRead(CHAN_PIR) == HIGH);
if (coNguoi && troiToi) mocTatDen = bayGio + GIU_SANG_MS;
// 3. Quyết định độ sáng đích
bool dangTrongGioSang = (mocTatDen != 0) && (bayGio < mocTatDen);
doSangDich = (dangTrongGioSang && troiToi) ? DO_SANG_MAX : DO_SANG_CHO;
// 4. Sáng dần / mờ dần, không dùng delay
if (bayGio - mocFade >= BUOC_FADE_MS) {
mocFade = bayGio;
if (doSangHienTai < doSangDich) doSangHienTai++;
else if (doSangHienTai > doSangDich) doSangHienTai--;
analogWrite(CHAN_DEN, doSangHienTai);
}
// 5. Nhật ký 2 giây một lần
if (bayGio - mocInLog >= 2000) {
mocInLog = bayGio;
Serial.print(F("A0=")); Serial.print(sangMT);
Serial.print(F(" troiToi=")); Serial.print(troiToi ? 1 : 0);
Serial.print(F(" PIR=")); Serial.print(coNguoi ? 1 : 0);
Serial.print(F(" den=")); Serial.print(doSangHienTai);
if (dangTrongGioSang) {
Serial.print(F(" con_sang=")); Serial.print((mocTatDen - bayGio) / 1000); Serial.print(F("s"));
}
Serial.println();
}
}
🔌 Cắm thử trên breadboard
Cắm nháp trên board cắm trước cho chắc, chạy đúng rồi hãy làm mạch in. Sơ đồ này do máy tự xếp từ chính netlist ở trên và đã đối chiếu lại: hai chân cùng một cột (cùng nửa board) là thông nhau, không có net nào bị chập.
- Mỗi cột 5 lỗ trong cùng một nửa board thông nhau; hai nửa cách nhau bởi rãnh giữa.
- Hai đường kẻ dọc mép board là đường nguồn: hàng + (vạch đỏ) và hàng − (vạch xanh). Nhớ bắc dây nối đường nguồn trên với đường nguồn dưới nếu dùng cả hai nửa.
- Màu dây trên hình trùng với màu trong bảng nối dây ở mục Sơ đồ, cắm theo màu cho dễ dò.
🧲 Mạch in để ủi (PCB 1 mặt)
Bản mạch in một mặt đồng, tự xếp linh kiện và tự đi dây, đã kiểm quy tắc khoảng cách và đối chiếu đúng 100% với sơ đồ nguyên lý ở trên. In tỉ lệ 1:1 rồi ủi lên tấm đồng.
Hướng dẫn ủi – ăn mòn – khoan – hàn (đầy đủ)
Hướng dẫn làm mạch in bằng phương pháp ủi
Mạch: Đèn cầu thang tự sáng khi có người, chỉ bật lúc trời tối
Kích thước board: 53,3×63,5 mm · 54 lỗ khoan (mũi 0,8, 0,9, 1, 1,1 và 1,2 mm) · 20 đoạn mạch, tổng 421 mm · 0 cầu nhảy.
Quy tắc đã kiểm: đường mạch rộng 0,8mm (nguồn và GND 1mm), khe cách tối thiểu 0,5mm. Mạch in đã được máy đối chiếu đúng 100% với sơ đồ nguyên lý.
1. In đúng tỉ lệ 1:1
- In trang "MẶT ĐỒNG" bằng máy in LASER, đặt tỉ lệ 100%, KHÔNG chọn "Fit to page" hay "Scale to fit".
- Dùng thước trên bản in đo lại đoạn 100mm: phải đúng 100mm mới dùng được.
- In trên giấy in ảnh bóng, giấy decal bóc, hoặc giấy tạp chí láng. Mực càng dày càng tốt.
- Trang "MẶT ĐỒNG" đã được LẬT GƯƠNG sẵn: úp mặt có mực vào tấm đồng là đúng chiều.
2. Chuẩn bị tấm đồng
- Cắt phíp đồng (board đồng một mặt) lớn hơn kích thước mạch mỗi bề khoảng 5mm.
- Chà mặt đồng bằng giấy nhám mịn (P800–P1200) rồi rửa sạch, lau khô. Mặt đồng phải sáng, không vết dầu mỡ, không chạm tay vào.
3. Ủi mực sang đồng
- Úp mặt có mực vào tấm đồng, dùng băng keo giấy dán cố định một cạnh.
- Bàn ủi để mức nóng nhất (cotton/linen), KHÔNG dùng chế độ phun hơi nước.
- Ủi đè mạnh và đều 3–5 phút, tập trung từng vùng nhỏ, chú ý các góc và mép.
- Để nguội hẳn rồi ngâm cả tấm vào nước ấm 5–10 phút, bóc giấy thật nhẹ. Giấy decal thì bóc khi còn ấm.
- Soi kỹ: chỗ nào mực bị thiếu hoặc đứt đường thì tô lại bằng bút lông dầu (bút CD) rồi để khô.
4. Ăn mòn (etching)
- Pha dung dịch sắt(III) clorua FeCl3 theo hướng dẫn trên bao bì, hoặc dung dịch oxy già + muối ăn + a-xít; dùng hộp nhựa, KHÔNG dùng đồ kim loại.
- Nhiệt độ dung dịch khoảng 40–50°C thì ăn nhanh hơn. Lắc nhẹ hộp cho đều, thường 10–25 phút là xong.
- An toàn: đeo găng tay cao su và kính bảo hộ, làm ở nơi thoáng. Dung dịch ăn mòn làm hỏng quần áo, bồn rửa và gây bỏng rát da.
- Xong thì rửa board bằng nước sạch, lau khô, dùng xăng thơm hoặc axeton lau sạch lớp mực.
- Dung dịch đã dùng KHÔNG đổ xuống bồn rửa hay cống; đựng vào can kín và bỏ đúng nơi thu gom chất thải.
5. Khoan lỗ
- Đối chiếu trang "BẢN VẼ LỖ KHOAN" để biết lỗ nào dùng mũi nào.
- Dùng mũi khoan 0,8mm, 0,9mm, 1mm, 1,1mm và 1,2mm, khoan từ MẶT ĐỒNG vào để mũi tự định tâm giữa pad.
- Khoan tốc độ cao, đẩy nhẹ; mũi nhỏ rất dễ gãy. Khoan xong chà nhẹ bavia hai mặt.
6. Hàn linh kiện
- Linh kiện cắm ở MẶT KHÔNG CÓ ĐỒNG, hàn ở mặt đồng. Theo trang "MẶT LINH KIỆN" để đặt đúng vị trí và đúng chiều.
- Hàn linh kiện thấp trước (điện trở, đi-ốt), cao sau (tụ, hàng chân, board vi điều khiển).
- Chú ý chiều: LED chân dài là (+); đi-ốt có vạch trắng là K; tụ hoá có vạch là (−); transistor theo mặt chữ như nét vẽ đỏ.
- Trước khi cấp điện: đo thông mạch giữa chân nguồn và GND — KHÔNG được kêu (không được chập).
Lưu ý với board vi điều khiển
- Board nhái có thể khác thứ tự chân. Đối chiếu tên chân in cạnh từng lỗ trên trang "MẶT LINH KIỆN" với chữ in trên board thật TRƯỚC KHI ăn mòn. Nếu khác, đừng hàn mà báo lại để sửa bản vẽ.
Bản vẽ lỗ khoan
Đo kiểm bằng đồng hồ vạn năng
| Giữa 12V và GND trên board | 11,5 – 12,6V |
| Giữa OUT+ và OUT− của module hạ áp | 4,9 – 5,1V |
| Giữa A0 và GND lúc che tối quang trở | dưới 1V |
| Giữa A0 và GND lúc rọi đèn pin vào quang trở | trên 3V |
| Giữa D (chân giữa MOSFET) và GND lúc đèn sáng | dưới 0,3V |
Sửa lỗi thường gặp
Đèn sáng suốt ngày
Ngưỡng tối đang đặt quá cao hoặc quang trở bị chính dây LED rọi vào. Xem số A0 trên Serial Monitor lúc ban ngày rồi đặt NGUONG_TOI thấp hơn số đó.
Đèn chớp tắt liên tục
Quang trở đang nhìn thấy dây LED: tắt đèn thì trời tối, bật đèn lại thành sáng. Xoay quang trở ra hướng khác hoặc che bằng ống nhựa đen.
Đèn không bật dù có người
Chờ 60 giây sau khi cấp điện cho PIR ổn định; kiểm tra PIR được cấp 5V và jumper ở H; xem dòng PIR=1 trên Serial Monitor khi vẫy tay.
Nano hoặc module hạ áp nóng
Module hạ áp loại LM2596 ấm nhẹ là bình thường. Nếu nóng rát tay thì kiểm tra lại điện áp ra đúng 5V (vặn sai có thể ra 10V làm hỏng Nano) và dây LED không bị chạm chập.
Dây LED sáng yếu ở đoạn cuối
Dây dài trên 3m bị sụt áp. Cấp nguồn vào cả hai đầu dây hoặc chia thành hai đoạn chạy song song.
⚠️ An toàn
- Chỉ dùng adapter 12V có chứng nhận, dòng ≥ 2A. Không tự chế nguồn từ điện 220V.
- Không dùng mạch này để đóng cắt đèn 220V; muốn điều khiển đèn 220V phải nhờ thợ điện hoặc dùng ổ cắm thông minh có chứng nhận.
- Dây LED dán lên bề mặt kim loại thì lót băng keo cách điện để tránh chạm chập.
- Rút điện trước khi hàn hoặc đổi dây.