Công tắc, nút nhấn, cầu chì và relay: cách chọn, cách nối với ESP32

Các loại công tắc SPST, SPDT, nút nhấn 4 chân, điện trở kéo lên và chống dội, cầu chì và cách chọn, cấu tạo relay COM NO NC, thí nghiệm nút nhấn bật tắt module relay bằng ESP32.

Công tắc, nút nhấn, cầu chì và relay là các linh kiện "đóng cắt" của mạch: chúng nối hoặc ngắt một đường dòng điện, bằng tay, bằng dòng quá tải hay bằng tín hiệu điện. Bài viết giới thiệu các loại công tắc và nút nhấn, cách đọc nút nhấn bằng vi điều khiển với điện trở kéo lên và chống dội, các loại cầu chì và cách chọn, cấu tạo và thông số relay, rồi làm thí nghiệm dùng một nút nhấn bật tắt module relay qua ESP32, đồng thời đếm số lần tiếp điểm nảy.

1. Công tắc và nút nhấn

Ký hiệu công tắc SPST một cực một ngả bật tắt, SPDT một cực hai ngả với chân giữa C chuyển sang A hoặc B, DPDT hai cực hai ngả chuyển cùng lúc; nút nhấn tactile 4 chân với chân 1 và 2 luôn nối nhau, chân 3 và 4 luôn nối nhau, nhấn thì nối 1-2 với 3-4
Các kiểu công tắc và cách nối bên trong nút nhấn 4 chân (hình tự vẽ).
  • Cực (pole) là số mạch được đóng cắt cùng lúc; ngả (throw) là số vị trí nối của mỗi cực. SPST là công tắc bật tắt đơn giản; SPDT chuyển một đường sang một trong hai ngả; DPDT có hai bộ SPDT chuyển cùng lúc, hay dùng để đảo chiều động cơ.
  • Công tắc giữ trạng thái (gạt, bập bênh, trượt); nút nhấn chỉ nối khi đang nhấn (thường hở, NO) hoặc chỉ ngắt khi đang nhấn (thường đóng, NC, dùng cho nút dừng khẩn cấp).
  • Nút nhấn tactile 4 chân hay dùng trên breadboard có hai cặp chân luôn nối với nhau. Cắm nút vắt ngang rãnh giữa breadboard và dùng hai chân chéo nhau là chắc chắn đúng; hoặc thử bằng thang thông mạch.
  • Mỗi công tắc có dòng và điện áp định mức của tiếp điểm (ví dụ 3 A 250 V AC). Nút tactile chỉ dành cho tín hiệu nhỏ (khoảng 50 mA 12 V), không dùng để bật tắt tải.
Ảnh chụp một nút nhấn tactile còn nguyên bên phải và một nút đã tháo rời bên trái: vỏ đen có bốn chân, miếng vòm kim loại tròn, nút bấm đen và nắp nhựa trong
Nút nhấn tactile và các bộ phận khi tháo rời: miếng vòm kim loại bật xuống nối hai tiếp điểm. Ảnh: Pabloab, CC BY-SA 4.0, Wikimedia Commons, đã thu nhỏ.

2. Đọc nút nhấn bằng vi điều khiển

Bên trái: điện trở kéo lên 10 kΩ từ 3V3 tới chân GPIO, nút nhấn từ GPIO xuống đất, không nhấn GPIO ở mức cao, nhấn thì mức thấp; bên phải: dạng sóng mức đọc thô ở GPIO có nhiều xung nảy khi nhấn và nhả, dạng sóng sau khi chống dội 30 ms chỉ còn một lần xuống và một lần lên
Điện trở kéo lên và hiện tượng nảy tiếp điểm (hình tự vẽ, dạng sóng minh họa).
  • Chân GPIO đặt làm đầu vào có trở kháng rất lớn. Nếu nút nhấn chỉ nối chân xuống GND, lúc không nhấn chân bị bỏ lửng, đọc ngẫu nhiên 0 hoặc 1 theo nhiễu. Cần một điện trở kéo lên (pull-up) từ chân lên 3V3: không nhấn thì đọc HIGH, nhấn thì đọc LOW.
  • ESP32 có điện trở kéo lên bên trong, khoảng vài chục kΩ, bật bằng pinMode(chan, INPUT_PULLUP). Riêng GPIO34 đến GPIO39 không có điện trở kéo bên trong, phải dùng điện trở ngoài.
  • Nảy tiếp điểm: khi nhấn, hai tiếp điểm kim loại va vào nhau và bật ra vài lần trong vài mili giây. Vi điều khiển đọc rất nhanh nên thấy một lần nhấn thành nhiều lần. Cách xử lý: chống dội bằng phần mềm (chỉ nhận mức mới khi nó giữ nguyên khoảng 20–50 ms) hoặc bằng mạch RC (bài 12).

3. Cầu chì

Các loại cầu chì: thủy tinh 5 nhân 20 mm có dây chảy nhìn thấy được, cầu chì cắm ô tô màu đỏ 10 A, cầu chì tự phục hồi PTC màu vàng, ký hiệu cầu chì F1 1 A trên sơ đồ; hướng dẫn chọn dòng định mức 1,25 đến 1,5 lần dòng làm việc, loại chảy chậm cho động cơ, loại chảy nhanh cho mạch điện tử
Các loại cầu chì và cách chọn (hình tự vẽ).
  • Cầu chì là một đoạn dây kim loại được tính để chảy đứt khi dòng vượt định mức, cắt mạch trước khi dây dẫn và linh kiện bị nóng cháy.
  • Chọn dòng định mức khoảng 1,25–1,5 lần dòng làm việc lớn nhất. Loại chảy chậm (ký hiệu T) chịu được dòng khởi động ngắn của động cơ, tụ lọc; loại chảy nhanh (F) bảo vệ mạch điện tử nhạy.
  • Cầu chì tự phục hồi (PTC, polyfuse) nóng lên và tăng điện trở khi quá dòng, nguội thì dẫn lại; hay có trên cổng USB của các bo mạch.
  • Đặt cầu chì trên dây dương, càng gần nguồn càng tốt (nhất là với pin, ắc quy có thể cho dòng chập rất lớn). Cầu chì đứt là dấu hiệu có lỗi: tìm nguyên nhân trước khi thay, và không thay bằng loại dòng lớn hơn hay dây đồng.

4. Relay

Hình vẽ relay điện từ: cuộn dây quấn quanh lõi sắt, phần ứng có lò xo, tiếp điểm chung COM, thường đóng NC và thường hở NO; bảng thông số relay 5 V phổ biến: điện áp cuộn 5 V, dòng cuộn khoảng 70 đến 90 mA, tiếp điểm 10 A 250 V AC và 10 A 30 V DC, thời gian đóng khoảng 10 ms
Cấu tạo relay điện từ và thông số điển hình (hình tự vẽ, sơ lược).
  • Relay là công tắc điều khiển bằng điện: cuộn dây có điện thì thành nam châm, hút phần ứng làm đổi tiếp điểm. Tiếp điểm chung COM bình thường nối NC (thường đóng); khi cuộn có điện, COM chuyển sang NO (thường hở).
  • Phía cuộn dây và phía tiếp điểm không nối điện với nhau, nên relay cho phép tín hiệu 3,3 V bật tắt một tải 12 V hay 220 V, với điều kiện tải nằm trong định mức tiếp điểm.
  • Cuộn relay 5 V cần khoảng 70–90 mA, vượt xa mức một chân GPIO cấp được, và sinh điện áp cảm ứng khi ngắt (bài 13). Vì vậy cần một transistor (bài 19) và một diode dập. Module relay đã có sẵn transistor (hoặc optocoupler), diode và đèn báo; chân IN chỉ cần dòng nhỏ.
  • Relay cơ có tuổi thọ tiếp điểm giới hạn (khoảng 100 000 lần đóng cắt ở tải định mức) và không nên đóng cắt nhanh. Cần đóng cắt nhanh, êm, bền thì dùng relay bán dẫn (SSR) hoặc MOSFET (bài 20).

5. Thí nghiệm: nút nhấn bật tắt relay qua ESP32

Chuẩn bị

  • ESP32 DevKit V1, breadboard, dây cắm.
  • Module relay 5 V loại 1 kênh (hoặc dùng một kênh của module nhiều kênh), một nút nhấn tactile.
  • Ở bước này chưa nối tải vào tiếp điểm; chỉ nghe tiếng relay đóng và xem đèn báo. Muốn thử tải, dùng tải điện áp thấp như đèn LED 12 V với nguồn adapter riêng.
Sơ đồ: chân VIN của ESP32 nối VCC module relay, GND nối GND, GPIO26 nối IN; nút nhấn nối từ GPIO27 xuống GND, GPIO27 dùng điện trở kéo lên bên trong; GPIO2 nối sẵn LED xanh trên bo
Sơ đồ nối nút nhấn và module relay (hình tự vẽ).
TừTớiGhi chú
Module relay VCCESP32 VIN5 V từ cổng USB; giữ jumper JD-VCC – VCC nếu module có
Module relay GNDESP32 GNDĐất chung
Module relay INESP32 GPIO26Tín hiệu điều khiển
Nút nhấn chân 1ESP32 GPIO27Dùng điện trở kéo lên bên trong
Nút nhấn chân 2 (chéo)ESP32 GND

Chương trình

/*
  PYWORLD.VN - Nút nhấn bật tắt relay bằng ESP32: điện trở kéo lên bên trong, chống dội bằng phần mềm, đếm số lần nảy
  Nút nhấn: một chân vào GPIO27, chân kia vào GND. Module relay: VCC -> VIN (5 V), GND -> GND, IN -> GPIO26
  LED xanh trên bo (GPIO2) sáng khi relay đóng
*/

#define CHAN_NUT 27
#define CHAN_RELAY 26
#define CHAN_LED 2

const bool RELAY_KICH_MUC_THAP = true;   // Module kích mức thấp: IN = LOW thì relay đóng. Loại kích mức cao thì đặt false
const uint32_t THOI_GIAN_CHONG_DOI_MS = 30;

bool relayDong = false;
int mucTho = HIGH;               // Mức đọc trực tiếp ở chân nút (chưa chống dội)
int mucOnDinh = HIGH;            // Mức đã ổn định sau thời gian chống dội
uint32_t lanDoiCuoi = 0;         // Thời điểm mức thô đổi lần gần nhất
uint32_t soCanhTho = 0;          // Số lần mức thô đổi trong một lần nhấn (1 nếu tiếp điểm không nảy)
uint32_t soLanNhan = 0;

void datRelay(bool dong) {
  relayDong = dong;
  bool muc = RELAY_KICH_MUC_THAP ? !dong : dong;
  digitalWrite(CHAN_RELAY, muc ? HIGH : LOW);
  digitalWrite(CHAN_LED, dong ? HIGH : LOW);
}

void setup() {
  Serial.begin(115200);
  pinMode(CHAN_NUT, INPUT_PULLUP);   // Điện trở kéo lên bên trong: không nhấn = HIGH, nhấn = LOW
  pinMode(CHAN_RELAY, OUTPUT);
  pinMode(CHAN_LED, OUTPUT);
  datRelay(false);
  delay(300);
  Serial.println("Nhan nut de bat/tat relay");
}

void loop() {
  int muc = digitalRead(CHAN_NUT);
  if (muc != mucTho) {
    mucTho = muc;
    lanDoiCuoi = millis();
    soCanhTho++;
  }
  // Chỉ nhận mức mới khi nó giữ nguyên đủ lâu: các xung nảy ngắn bị bỏ qua
  if (millis() - lanDoiCuoi > THOI_GIAN_CHONG_DOI_MS && mucOnDinh != mucTho) {
    mucOnDinh = mucTho;
    if (mucOnDinh == LOW) {
      soLanNhan++;
      datRelay(!relayDong);
      Serial.printf("Nhan lan %u: relay %s | so lan doi muc tho khi nhan: %u\n", (unsigned)soLanNhan,
                    relayDong ? "DONG" : "NHA", (unsigned)soCanhTho);
    }
    soCanhTho = 0;   // Bắt đầu đếm lại cho lần đổi mức tiếp theo (nhả hoặc nhấn)
  }
}
  • INPUT_PULLUP bật điện trở kéo lên bên trong: không nhấn đọc HIGH, nhấn đọc LOW.
  • Mỗi lần mức thô thay đổi, chương trình ghi lại thời điểm. Chỉ khi mức giữ nguyên quá 30 ms nó mới được coi là trạng thái ổn định; nhờ vậy các xung nảy bị bỏ qua và mỗi lần nhấn chỉ đảo relay một lần.
  • Biến soCanhTho đếm số lần mức thô đổi trong một lần nhấn: 1 là tiếp điểm không nảy; 3, 5… là tiếp điểm đã nảy.
  • Hằng RELAY_KICH_MUC_THAP chọn kiểu module: phần lớn module relay đóng khi IN ở mức thấp. Nếu relay đóng ngay khi cấp điện và nhả khi nhấn nút, đổi hằng này thành false.

Kết quả mong đợi

Hình minh họa Serial Monitor: dòng Nhan nut de bat tat relay, sau đó các lần nhấn 1 đến 5 lần lượt relay DONG, NHA, DONG, NHA, DONG, số lần đổi mức thô khi nhấn là 1, 3, 1, 5, 1
Kết quả mong đợi trên Serial Monitor (hình minh họa theo định dạng của chương trình; số lần đổi mức là ví dụ).

Mỗi lần nhấn, relay kêu tách và đổi trạng thái, đèn báo trên module và LED xanh trên bo sáng tắt theo. Có lần số đổi mức thô lớn hơn 1: tiếp điểm đã nảy, nhưng nhờ chống dội relay vẫn chỉ đổi một lần. Thử đặt THOI_GIAN_CHONG_DOI_MS bằng 0: thỉnh thoảng một lần nhấn sẽ làm relay đổi hai lần (đóng rồi nhả ngay).

6. Xử lý lỗi thường gặp

Hiện tượngNguyên nhân thường gặpCách xử lý
Nhấn nút không có phản ứngDùng hai chân luôn nối với nhau của nút tactileDùng hai chân chéo nhau; thử bằng thang thông mạch
Relay đóng sẵn khi cấp điệnModule kích mức cao nhưng chương trình đặt kích mức thấp (hoặc ngược lại)Đổi RELAY_KICH_MUC_THAP
Đèn báo sáng nhưng relay không kêuCuộn relay thiếu nguồn: VCC nối 3V3 thay vì VIN, hoặc tháo jumper JD-VCCNối VCC vào VIN (5 V), giữ jumper
ESP32 khởi động lại khi relay đóngSụt nguồn khi cuộn relay hút, cáp USB dài hoặc yếuDùng cáp USB tốt; thêm tụ 100–470 µF giữa VIN và GND

7. Xem thêm


Tin tức liên quan

Tay điều khiển flycam và FPV: các kênh, tín hiệu PPM, SBUS, CRSF/ELRS, failsafe và băng tần
Tay điều khiển flycam và FPV: các kênh, tín hiệu PPM, SBUS, CRSF/ELRS, failsafe và băng tần

Tay điều khiển flycam và FPV: cần Mode 2, thứ tự kênh AETR, tín hiệu PWM, PPM, khung SBUS 25 byte, IBUS, CRSF/ELRS, failsafe khi mất sóng, kính FPV 5,8 GHz và dùng ESP32 làm bộ phát.

Flip-flop, bộ đếm và thanh ghi dịch 74HC595: mở rộng chân ra cho ESP32
Flip-flop, bộ đếm và thanh ghi dịch 74HC595: mở rộng chân ra cho ESP32

Mạch chốt SR, flip-flop D lấy mẫu theo xung nhịp, bộ đếm nhị phân, thanh ghi dịch và IC 74HC595, dạng sóng khi dịch một byte, thí nghiệm ESP32 tự dịch bit ra 8 LED, đếm nhị phân và đèn chạy.

Transistor khuếch đại: mạch E chung, phân cực, điểm làm việc và hệ số khuếch đại
Transistor khuếch đại: mạch E chung, phân cực, điểm làm việc và hệ số khuếch đại

Mạch khuếch đại E chung dùng transistor: phân cực bằng cầu phân áp, cách tính điểm làm việc, đường tải một chiều, hệ số khuếch đại có và không có tụ CE, cắt đỉnh, ba cách mắc transistor.

Hiệu chỉnh độ chính xác máy CNC, máy laser tự chế: bước/mm, vuông góc, độ rơ, phay phẳng, dò Z
Hiệu chỉnh độ chính xác máy CNC, máy laser tự chế: bước/mm, vuông góc, độ rơ, phay phẳng, dò Z

Đo và hiệu chỉnh máy CNC, máy laser tự chế: số bước mỗi milimét, độ vuông góc bằng hai đường chéo, độ rơ bằng đồng hồ so, phay phẳng tấm lót, dò Z bằng G38.2, kèm chương trình Python.

Dùng transistor làm công tắc: tính điện trở base, bật tải 5 V, 12 V từ ESP32
Dùng transistor làm công tắc: tính điện trở base, bật tải 5 V, 12 V từ ESP32

Mạch transistor NPN đóng cắt phía thấp, bốn bước tính điện trở base, diode dập cho relay và động cơ, cách biết transistor bão hòa, thí nghiệm ESP32 so sánh đủ và thiếu dòng base.

Sai số Abbe, sai số cosin và giãn nở nhiệt khi đo chuyển vị, kích thước: cách tính và cách giảm
Sai số Abbe, sai số cosin và giãn nở nhiệt khi đo chuyển vị, kích thước: cách tính và cách giảm

Ba nguồn sai số có ở mọi phép đo kích thước: sai số Abbe khi đường đo lệch thang đo, sai số cosin khi trục đo lệch chuyển động, giãn nở nhiệt; cách tính, ví dụ ngân sách và quy tắc bố trí.

Xốp định hình cho vali nhôm, vali kéo: sắp xếp bộ dụng cụ nhiều chi tiết
Xốp định hình cho vali nhôm, vali kéo: sắp xếp bộ dụng cụ nhiều chi tiết

Gia công xốp định hình cho vali nhôm và vali kéo: khoang tròn, khoang chữ nhật, rãnh dài cho bộ dụng cụ nhiều chi tiết. Xem hai mẫu thực tế, bảng kích thước vali nhôm và cách đặt làm.

Cấu tạo flycam và nguyên lý hoạt động: khung, động cơ, ESC, cánh quạt, pin, mạch điều khiển bay
Cấu tạo flycam và nguyên lý hoạt động: khung, động cơ, ESC, cánh quạt, pin, mạch điều khiển bay

Cấu tạo flycam 4 cánh: khung, động cơ không chổi than, ESC, cánh quạt, pin LiPo, mạch điều khiển bay; đường năng lượng, tín hiệu và cách tạo ga, roll, pitch, yaw chỉ bằng tốc độ động cơ.


Bình luận
Đã thêm vào giỏ hàng