Robot Dò Line với 7 Cảm Biến Hồng Ngoại sử dụng STM32F4
Đây là một dự án robot dò line sử dụng vi điều khiển STM32F4, với các đặc điểm chính:
Sử dụng 7 cảm biến hồng ngoại để phát hiện vạch line.
2 động cơ DC 12V điều khiển qua PWM.
Tích hợp PID control để điều chỉnh tốc độ động cơ khi lệch khỏi đường line.
Hỗ trợ quay đầu gấp nếu phát hiện mất line về một bên (sharp turn).
Tối ưu hoạt động với tốc độ ổn định và phản hồi chính xác.
Thiết bị
Số lượng
STM32F103C8T6 (Bluepill)
1
Cảm biến hồng ngoại (IR Sensor)
7
Driver cầu H (L298N / L9110)
1
Động cơ DC 12V
2
Bánh tự do (caster wheel)
1
Nguồn cấp 12V
1
Tên cảm biến
Chân STM32
SENSOR1
PA0
SENSOR2
PA1
SENSOR3
PA2
SENSOR4
PA3
SENSOR5
PA4
SENSOR6
PA5
SENSOR7
PA6
Lưu ý: Các cảm biến trả về GPIO_PIN_SET nếu phát hiện line (tùy theo loại cảm biến đen/trắng).
Tên chức năng
Chân STM32
TIM Channel
PWM_LEFT_FORWARD
PB4
TIM3_CH1
PWM_LEFT_BACKWARD
PB5
TIM3_CH2
Tên chức năng
Chân STM32
TIM Channel
PWM_RIGHT_FORWARD
PB6
TIM4_CH1
PWM_RIGHT_BACKWARD
PB7
TIM4_CH2
Robot đọc trạng thái 7 cảm biến hồng ngoại.
Tính toán vị trí line theo trọng số.
Dùng thuật toán PID để điều chỉnh tốc độ 2 động cơ:
P : lỗi hiện tại.
I : tổng lỗi tích lũy.
D : độ lệch so với lần trước.
Nếu mất vạch hoàn toàn:
Dựa trên cảm biến ngoài cùng trái/phải để quay đầu đúng hướng (sharp turn).
Timer Prescaler = 79
Auto-reload = 999
Tần số PWM: ~1 kHz
Hệ số PWM điều chỉnh qua ARR * tốc độ phần trăm
Nạp chương trình main.c vào STM32F4 bằng STM32CubeIDE hoặc ST-Link.
Cấp nguồn 12V cho động cơ, 5V cho board STM32 (qua USB hoặc module AMS1117).
Đặt robot lên đường line (màu đen/trắng tùy cảm biến).
Robot sẽ tự động dò line và di chuyển theo.
7. Thông số PID (có thể tinh chỉnh)
float Kp = 0.05 ;
float Ki = 0.0 ;
float Kd = 0.001 ;
Link video demo: https://youtu.be/-mvY5BXTrck