Cảm Biến Tốc Độ Động Cơ 5mm

Một cảm biến tốc độ động cơ có kích thước 5mm là một sản phẩm được sử dụng để đo tốc độ của động cơ sử dụng encoder. Tín hiệu từ encoder sẽ tạo ra các xung vuông có tần số thay đổi phụ thuộc vào tốc độ của động cơ. Các xung vuông này được đưa vào bộ vi xử lý để đếm số xung trong một khoảng thời gian cho phép, từ đó ta có thể tính được giá trị vận tốc của động cơ.

Cảm Biến Tốc Độ Động Cơ
Ảnh minh họa: Cảm biến tốc độ động cơ

Nguyên lý hoạt động của encoder khá đơn giản. Đó là một đĩa tròn xoay quay quanh trục, trên đĩa có các lỗ hoặc rãnh. Một đèn led được sử dụng để chiếu sáng lên mặt đĩa. Khi đĩa quay, đèn led sẽ không chiếu xuyên qua chỗ không có lỗ, và sẽ chiếu xuyên qua chỗ có lỗ. Vì vậy, phía bên kia đĩa, có một cảm biến để nhận dạng ánh sáng chiếu qua hay không. Số xung được đếm và tăng lên tương ứng với số lần ánh sáng bị cắt.

Cảm Biến Tốc Độ Động Cơ
Ảnh minh họa: Cảm biến tốc độ động cơ

Thông số Kỹ Thuật

  • Độ rộng rãnh: 5mm
  • Led hiển thị trạng thái đọc
  • Mức cao HIGH khi bị chắn, LOW khi không bị chắn
  • Dạng xung tín hiệu ngõ ra tốt, dòng output 15mA
  • Điện áp hoạt động: 3.3V-5V
  • Kích thước: 3.2cm x 1.4cm
  • Dễ dàng lắp đặt
  • Ứng dụng đa dạng cho các nền tảng Arduino / AVR / ARM

Sơ Đồ Đấu Nối

Cảm Biến Tốc Độ Động Cơ 5mm

Mã Mẫu Với Arduino

int encoder_pin = 2; // Chân được kết nối với encoder
unsigned int rpm; // Giá trị tốc độ quay (RPM)
volatile byte pulses; // Số xung
unsigned long timeold; // Số xung mỗi vòng quay

void counter() {
    // Cập nhật số xung
    pulses++;
}

void setup() {
    Serial.begin(9600);
    pinMode(encoder_pin, INPUT);
    attachInterrupt(0, counter, FALLING);

    // Khởi tạo giá trị ban đầu
    pulses = 0;
    rpm = 0;
    timeold = 0;
}

void loop() {
    if (millis() - timeold >= 1000) {
        // Cập nhật tỷ lệ xung mỗi giây
        detachInterrupt(0);
        rpm = (60 * 1000 / pulsesperturn ) / (millis() - timeold) * pulses;
        timeold = millis();
        Serial.print(pulses);
        pulses = 0;
        Serial.print(" RPM = ");
        Serial.println(rpm, DEC);
        attachInterrupt(0, counter, FALLING);
    }
}

Video Ứng Dụng

Tag