NTM Solutions

Thứ Bảy, 8 tháng 8, 2026

🥤 Bài 5 — Điều khiển chính xác: Cảm biến và Encoder

Ở bài trước, chúng ta điều khiển động cơ bằng cách:

Quay 1 giây

↓

Dừng

Cách này hoạt động khá tốt để thử nghiệm.

Nhưng nếu muốn máy hoạt động liên tục ngoài thực tế thì không đủ chính xác.


Mục tiêu

Sau bài này bạn sẽ:

  • Hiểu vì sao không nên điều khiển bằng delay().

  • Biết Encoder là gì.

  • Biết Hall Sensor hoạt động như thế nào.

  • Chọn loại cảm biến phù hợp.

  • Điều khiển động cơ quay đúng một vòng.


Vì sao delay() không chính xác?

Giả sử hôm nay:

Motor

30 RPM

↓

1 giây

↓

Quay đúng 180°

Một tuần sau:

  • Adapter yếu hơn.

  • Lon nặng hơn.

  • Nhiệt độ cao hơn.

Kết quả:

1 giây

↓

Chỉ quay 150°

Hoặc:

1 giây

↓

Quay 220°

Máy sẽ:

❌ Kẹt hàng

❌ Rơi 2 lon

❌ Không rơi lon nào


Máy thương mại làm thế nào?

Không ai đo thời gian.

Họ đo:

Vị trí của trục

Ví dụ:

0°

↓

45°

↓

90°

↓

180°

↓

360°

Khi đạt đúng vị trí yêu cầu:

Motor dừng.


Encoder là gì?

Encoder giống như chiếc đồng hồ đếm vòng quay.

Ví dụ:

Motor

↓

Encoder

↓

ESP32

Encoder sẽ phát ra xung.

Ví dụ:

1 vòng

=

200 xung

ESP32 chỉ cần đếm.


Điều khiển bằng Encoder

Ví dụ:

Đếm

0

↓

50

↓

100

↓

150

↓

200

↓

Dừng

Không quan trọng:

  • Motor nhanh.

  • Motor chậm.

Miễn đủ:

200 xung


Có những loại Encoder nào?

1. Optical Encoder

Dùng đĩa có nhiều khe.

LED

↓

||||||||||

↓

Sensor

Độ chính xác cao.


2. Magnetic Encoder

Dùng nam châm.

Nam châm

↓

Hall Sensor

Rẻ.

Bền.

Ít bụi.


3. Encoder tích hợp

Một số motor đã có sẵn encoder phía sau.

Đây là lựa chọn rất tốt nếu ngân sách cho phép.


Hall Sensor

Đây là loại mình khuyến nghị cho khóa học.

Ví dụ:

Motor

↓

Nam châm

↓

Hall Sensor

Mỗi lần nam châm đi qua:

Sensor phát:

HIGH

LOW

HIGH

LOW

ESP32 chỉ cần đếm.


Gắn Hall Sensor

          Nam châm

              ●

==============

Hall Sensor

Mỗi vòng quay:

Nam châm đi ngang qua Hall Sensor một lần.


Nếu muốn chính xác hơn

Gắn:

● ● ● ●

4 nam châm.

Khi đó:

1 vòng

=

4 xung

Hoặc:

8 nam châm

=

8 xung

Độ chính xác sẽ tăng lên.


Kết nối ESP32

Ví dụ:

Hall Sensor

VCC → 3.3V

GND → GND

OUT → GPIO27

Đọc tín hiệu

Ví dụ:

volatile int count = 0;

void IRAM_ATTR pulse() {
    count++;
}

void setup() {

    pinMode(27, INPUT_PULLUP);

    attachInterrupt(27, pulse, FALLING);

}

Mỗi xung:

count++


Điều khiển

Giả sử:

4 xung

=

1 vòng

Thuật toán:

count = 0

↓

Motor chạy

↓

Đếm xung

↓

Đủ 4

↓

Motor dừng

Không cần dùng:

delay()

nữa.


Cảm biến phát hiện lon rơi

Máy thương mại luôn có thêm cảm biến ở khay nhận hàng.

Ví dụ:

Lon

↓

IR Sensor

↓

ESP32

Nếu:

Lon đã rơi.

ESP32 sẽ biết.


Tại sao cần cảm biến này?

Nếu:

Motor quay.

Nhưng:

Lon bị kẹt.

Thì:

Encoder

OK

Nhưng

Không có lon.

Máy sẽ:

  • Báo lỗi.

  • Hoàn tiền.

  • Thử quay lại.


Sơ đồ hoàn chỉnh

Button

↓

ESP32

↓

Motor Driver

↓

Motor

↓

Encoder

↓

ESP32

↓

IR Sensor

↓

ESP32

Bây giờ hệ thống đã có:

  • Đầu vào.

  • Điều khiển.

  • Phản hồi.

Đây gọi là:

Closed Loop Control (Điều khiển vòng kín)

Khác với bài trước:

Button

↓

Motor

↓

Hết

Đó là:

Open Loop


Mô phỏng hoạt động

Khách bấm

↓

Motor quay

↓

Encoder báo

↓

Đủ 1 vòng

↓

Motor dừng

↓

Lon rơi

↓

IR Sensor xác nhận

↓

Hoàn thành

Nếu:

Không thấy lon

↓

ESP32 báo lỗi

↓

Hiển thị:

"Sản phẩm bị kẹt"

Chuẩn bị phần cứng

Thiết bịSố lượng
ESP321
Driver L298N1
Motor giảm tốc1
Hall Sensor A31441
Nam châm Neodymium2–4
Cảm biến hồng ngoại1

Bài tập

  1. Gắn một nam châm nhỏ lên trục động cơ hoặc khớp nối.

  2. Đặt Hall Sensor cách nam châm khoảng 2–5 mm.

  3. Viết chương trình đếm số xung khi động cơ quay.

  4. Thử tăng số nam châm từ 1 lên 4 và so sánh độ chính xác.

  5. Gắn cảm biến hồng ngoại ở khay nhận hàng để phát hiện khi một lon nước rơi xuống.


Tổng kết

Sau bài này, chiếc máy của bạn đã chuyển từ mô hình điều khiển theo thời gian sang điều khiển có phản hồi, gần giống nguyên lý của các máy bán hàng tự động chuyên nghiệp.

Bạn đã biết:

  • Vì sao delay() không phù hợp cho sản phẩm thực tế.

  • Cách dùng Hall Sensor hoặc Encoder để xác định vị trí quay.

  • Vai trò của cảm biến xác nhận sản phẩm.

  • Khái niệm điều khiển vòng hở và vòng kín.

Bài tiếp theo

🥤 Bài 6 — Thiết kế phần mềm điều khiển: State Machine

Thay vì viết các câu lệnh if...else dài và khó bảo trì, chúng ta sẽ xây dựng chương trình theo mô hình State Machine, giúp máy xử lý rõ ràng các trạng thái như Chờ khách, Thanh toán, Nhả hàng, Kiểm tra cảm biến, Hoàn tấtBáo lỗi. Đây cũng là cách tổ chức phần mềm được sử dụng phổ biến trong các thiết bị nhúng và máy bán hàng thương mại.

Không có nhận xét nào:

Đăng nhận xét

Facebook Youtube RSS