Lớp Reader và Writer trong Java
1. Lớp Reader trong Java Lớp abstract Reader nằm trong package java.io là lớp cha của...
Kết quả sẽ mở trong tab mới, giới hạn trong website này.
Truy cập nhanh
Tìm kiếm gần đây
1. Giới thiệu DC motor Motor (động cơ) là thiết bị biến điện năng thành chuyển động quay. DC motor là loại đơn giản, thường dùng trong các mô hình điều khiển bằng vi điều khiển. DC motor thông dụng thường là loại chổi than. Cấp điện áp phù hợp vào hai đầu, motor sẽ […]
Motor (động cơ) là thiết bị biến điện năng thành chuyển động quay. DC motor là loại đơn giản, thường dùng trong các mô hình điều khiển bằng vi điều khiển.
DC motor thông dụng thường là loại chổi than. Cấp điện áp phù hợp vào hai đầu, motor sẽ quay liên tục. Đảo cực nguồn thì motor quay ngược lại. Tốc độ quay phụ thuộc chủ yếu vào điện áp trung bình đặt lên motor và tải.
Mạch gồm Arduino, DC motor, biến trở để chỉnh tốc độ và một mạch khuếch đại dòng (transistor, MOSFET hoặc driver L298N, L9110S).
Chân Arduino chỉ nên cấp dòng khoảng 20 mA (giới hạn tuyệt đối 40 mA), còn motor cần hàng trăm mA. Vì vậy không nối motor trực tiếp vào chân Arduino.
Chân PWM (~3, ~5, ~6, ~9, ~10, ~11 trên Uno) chỉ xuất tín hiệu điều khiển. Motor lấy điện từ nguồn riêng, GND nối chung với Arduino.
Lưu ý: Sơ đồ trên nối motor thẳng vào chân 9, chỉ dùng để mô phỏng. Mạch thật có thể dùng TIP120: chân 9 qua điện trở 1kΩ vào cực B, motor nối giữa nguồn (+) và cực C, cực E nối GND. Mắc diode 1N4007 song song ngược với motor (vạch hướng về nguồn +). MOSFET logic-level sẽ ít nóng hơn TIP120.
Có thể dùng thêm biến trở để điều khiển tốc độ quay của DC motor.
Biến trở là điện trở có thể thay đổi trị số. Arduino không đọc điện trở mà đọc điện áp do biến trở tạo ra.
Phần màu cam là lớp điện trở. Cây kim màu xanh dương là con chạy, luôn tiếp xúc với lớp điện trở này.
Hai chân ngoài nối 5V và GND, chân giữa nối con chạy và vào chân A0. Con chạy chia biến trở thành mạch phân áp, nên điện áp chân giữa thay đổi từ 0V đến 5V tùy vị trí con chạy.
analogRead(A0) trả về giá trị 0–1023, tương ứng 0–5V.
analogWrite() nhận giá trị 0–255, tương ứng độ rộng xung 0–100%. Xung càng rộng, motor quay càng nhanh. Nếu xung quá hẹp, motor có thể chỉ kêu ù mà không quay, đây là hiện tượng bình thường.
Dùng map() để đổi giá trị biến trở (0–1023) sang giá trị PWM (0–255).
int motor = 9;//Chân PWM điều khiển transistor/driver của motor
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ở
}