Đọc cảm biến encoder
1. Mục tiêu bài học #
Sau bài học này, bạn sẽ:
- Hiểu encoder là gì
- Biết cách đọc xung encoder bằng Arduino Nano
- Đếm số vòng quay của động cơ
- Hiển thị giá trị encoder lên Serial Monitor
- Ứng dụng encoder để đo tốc độ hoặc quãng đường robot
2. Encoder là gì #
Encoder là cảm biến dùng để đo:
- Tốc độ quay
- Số vòng quay
- Quãng đường di chuyển của bánh xe
Khi động cơ quay, encoder sẽ tạo ra các xung ON/OFF liên tục.
Arduino sẽ đếm số xung này để biết bánh xe đã quay bao nhiêu.
Ví dụ:
- 1 vòng quay tạo ra 20 xung
Nếu Arduino đếm được:
- 20 xung → bánh quay 1 vòng
- 40 xung → quay 2 vòng
3. Sơ đồ kết nối #
4. Code đọc encoder cơ bản #
volatile long encoderCount = 0;
void encoderISR() {
encoderCount++;
}
void setup() {
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);
// Ngắt khi tín hiệu thay đổi
attachInterrupt(digitalPinToInterrupt(2), encoderISR, CHANGE);
}
void loop() {
Serial.print("Encoder Count: ");
Serial.println(encoderCount);
delay(200);
}5. Nạp code và kiểm tra #
Bước 1: Nạp code
Bước 2: Mở Serial Monitor
Chọn:
- Baudrate: 9600
Bạn sẽ thấy:
Encoder Count: 15
Encoder Count: 22
Encoder Count: 35
Giá trị sẽ tăng liên tục.
6. Giải thích code #
Biến encoderCount
volatile long encoderCount = 0;
Dùng để lưu số xung encoder.
volatile giúp Arduino luôn cập nhật giá trị mới nhất.
Hàm encoderISR
void encoderISR() {
encoderCount++;
}
Mỗi khi encoder tạo xung:
- Arduino tự động chạy hàm này
- Giá trị encoder tăng thêm 1
attachInterrupt
attachInterrupt(digitalPinToInterrupt(2), encoderISR, CHANGE);
Ý nghĩa:
- Theo dõi chân D2
- Khi tín hiệu thay đổi:
- LOW → HIGH
- HIGH → LOW
- Gọi hàm
encoderISR()
7. Các lỗi thường gặp #
Encoder không đếm
Nguyên nhân:
- Chưa nối GND chung
- Sai chân tín hiệu
- Sai nguồn cấp
Giá trị nhảy lung tung
Nguyên nhân:
- Nhiễu tín hiệu
- Dây quá dài
- Không dùng INPUT_PULLUP
Đếm thiếu xung
Nguyên nhân:
- Dùng delay quá nhiều
- Tốc độ động cơ quá nhanh
Không hiển thị gì
Kiểm tra:
- Đã mở Serial Monitor chưa
- Baudrate có đúng 9600 không
8. Ứng dụng #
Encoder thường dùng để:
- Robot chạy chính xác quãng đường
- Đo tốc độ bánh xe
- PID điều khiển động cơ
- Robot tự cân bằng
- Robot dò line chính xác
- Robot SLAM
9. Tổng kết #
Cập nhật vào Tháng 5 29, 2026