Ở 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 |
|---|---|
| ESP32 | 1 |
| Driver L298N | 1 |
| Motor giảm tốc | 1 |
| Hall Sensor A3144 | 1 |
| Nam châm Neodymium | 2–4 |
| Cảm biến hồng ngoại | 1 |
Bài tập
Gắn một nam châm nhỏ lên trục động cơ hoặc khớp nối.
Đặt Hall Sensor cách nam châm khoảng 2–5 mm.
Viết chương trình đếm số xung khi động cơ quay.
Thử tăng số nam châm từ 1 lên 4 và so sánh độ chính xác.
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ất và Bá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