1. Giới thiệu DC motor
Motor (động cơ) là một thiết bị tạo ra chuyển động quay liên tục 360°. Có nhiều loại motor nhưng DC motor là một trong những loại motor được sử dụng phổ biến nhất.
Chỉ cần cấp nguồn dương (+) vào chân dương và nguồn âm (-) vào chân âm cho DC motor thì nó sẽ tự động quay liên tục 360°. Nếu cấp các nguồn dương và âm vào các chân ngược lại thì động cơ sẽ quay theo chiều ngược lại.
2. Thiết kế mạch điều khiển DC motor với board mạch Arduino
Mạch điều khiển motor với Arduino gồm 1 board Arduino, 1 DC motor, có thể thêm 1 biến trở để điều khiển tốc độ quay của DC motor.
Để DC motor hoạt động, cần cấp nguồn cho DC motor. Một chân của motor phải kết nối với một chân của Arduino có khả năng xuất xung PWM (~3, ~ 5, ~ 6, ~ 9, ~ 10, ~ 11) để chịu sự điều khiển của Arduino.
Có thể dùng thêm biến trở để điều khiển tốc độ quay của DC motor.
Hiểu về biến trở
Biến trở chỉ đơn giản chỉ là một điện trở có thể thay đổi được trị số. Mạch Arduino không đọc trực tiếp điện trở này mà đọc gián tiếp qua điện áp mà biến trở gây ra.
Phần màu cam là một lớp điện trở. Cây kim màu xanh dương được đè chặt xuống phần điện trở này.
Khi có dòng điện đi từ chân 1 đến chân 3 thì nó sẽ phải qua phần điện trở được tô màu đỏ. Lúc đó, dòng điện sẽ bị suy giảm đi bởi phần điện trở đó. Từ đó mà xác định được điện trở hiện tại của biến trở.
Chúng ta chỉ việc vặn cây kim màu xanh dương để tăng giảm độ dài của vùng màu đỏ, qua đó tăng giảm giá trị điện trở.
3. Chương trình điều khiển tốc độ quay của DC motor với biến trở
Đọc giá trị điện áp ở chân Arduino kết nối với biến trở nhờ hàm analogRead()
. Giá trị nhận được từ 0 đến 1023, tương ứng từ 0 đến 5V. Giá trị này càng lớn thì điện trở của biến trở càng nhỏ, có nghĩa là khả năng cản trở dòng điện của biến trở càng nhỏ.
Giá trị tốc độ của motor từ khoảng 0 đến 255. Sử dụng hàm analogWrite()
để gán tốc độ quay của motor.
Sử dụng hàm map()
để biến đổi giá trị điện áp lấy ra từ biến trở sang giá trị tốc độ quay của motor. Giá trị tốc độ quay càng lớn thì motor quay càng nhanh và ngược lại.
int motor = 9;//Chân PWM kết nối motor Arduino
int rv = A0;//Chân kết nối biến trở với Arduino
void setup(){
pinMode(motor, OUTPUT);//Khai báo chân motor sẽ là ngõ ra
}
void loop(){
int value = analogRead(rv);//Đọc giá trị điện áp từ biến trở
int motor_speed = map(value,0,1023,0,255);//chuyển thang đo của value từ 0-1023 sang 0-255
analogWrite(motor, motor_speed);//Gán tốc độ quay của motor dựa vào giá trị biến trở
}