- 29a Bùi Xuân Phái, P.Tây Thạnh, Quận Tân Phú, TPHCM
- linhkienduchuy2018@gmail.com
- TƯ VẤN, GIẢI ĐÁP, HƯỚNG DẪN, MUA HÀNG (ZALO): 0966515049 - 0942954739
Giao miễn phí chuyển phát nhanh trong nội thành TPHCM đối với đơn hàng trên 1 triệu đồng
Giảm 5k cho đơn hàng trên 300k đồng
Giảm 10k cho đơn hàng trên 500k đồng
Giảm 15k hoặc freeship chuyển phát nhanh cho đơn hàng trên 1tr đồng
Giảm 25.000đ hoặc freeship cho đơn hàng trên 2tr đồng.
+ Động cơ DC giảm tốc GA25 Encoder thực tế là động cơ DC GA25 thường có gắn thêm phần Encoder để có thể trả xung về vi điều khiển giúp xác định vị trí, vận tốc,…
+ Về cách điều khiển thì động cơ DC giảm tốc GA25 Encoder sử dụng Driver như động cơ DC thường để điều khiển công suất động cơ, tốc độ và đảo chiều: L298, L293,…, chỉ có điểm khác biệt là có thêm phần encoder để có thể hồi tiếp (feedback) xung về Vi điều khiển, từ đó vi điều khiển tác động lại động cơ qua mạch công suất sử dụng các thuật toán điều khiển như PID,… để điều khiển tốc độ, vị trí,…
THÔNG SỐ KỸ THUẬT JGA25-370:
SƠ ĐỒ KẾT NỐI ENCODER VÀ ARDUINO:
CODE ARDUINO THAM KHẢO ĐỌC ENCODER:
// Khai báo các chân của encoder
const int encoderPinA = 2; // Chân A của encoder
const int encoderPinB = 3; // Chân B của encoder
// Biến lưu số xung encoder
volatile long encoderCount = 0;
// Thời gian
unsigned long previousTime = 0;
float speedRPM = 0.0; // Tốc độ quay tính theo RPM (vòng/phút)
void setup() {
// Khởi động Serial để hiển thị tốc độ
Serial.begin(9600);
// Cấu hình các chân encoder là ngõ vào
pinMode(encoderPinA, INPUT);
pinMode(encoderPinB, INPUT);
// Gắn ngắt cho encoder (chân 2)
attachInterrupt(digitalPinToInterrupt(encoderPinA), updateEncoder, RISING);
}
void loop() {
unsigned long currentTime = millis(); // Lấy thời gian hiện tại
// Kiểm tra nếu đủ 1 giây
if (currentTime - previousTime >= 1000) {
noInterrupts(); // Tắt ngắt tạm thời để đọc giá trị
long count = encoderCount; // Đọc giá trị encoder count
encoderCount = 0; // Reset bộ đếm xung
interrupts(); // Bật lại ngắt
// Tính tốc độ quay (RPM)
speedRPM = (count / 20.0) * 60.0; // Giả sử encoder có 20 xung mỗi vòng
// In tốc độ quay ra Serial Monitor
Serial.print("Tốc độ quay: ");
Serial.print(speedRPM);
Serial.println(" RPM");
previousTime = currentTime; // Cập nhật thời gian
}
}
// Hàm xử lý ngắt khi có xung encoder
void updateEncoder() {
int stateB = digitalRead(encoderPinB); // Đọc giá trị chân B
// Kiểm tra chiều quay
if (stateB == HIGH) {
encoderCount++; // Cùng chiều kim đồng hồ
} else {
encoderCount--; // Ngược chiều kim đồng hồ
}
}
Bình luận