Hướng dẫn sử dụng cảm biến quay với Raspberry Pi

Giới thiệu cảm biến quay

Cảm biến quay (Rotation sensor), hay còn gọi là rotary encoder, là một loại cảm biến dùng để phát hiện chuyển động quay của trục. Nó tạo ra tín hiệu xung số khi quay và cho biết cả hướng lẫn số bước quay. Cảm biến thường đi kèm nút nhấn tích hợp, giúp mở rộng khả năng điều khiển. Với thiết kế nhỏ gọn và độ chính xác cao, rotation sensor được sử dụng phổ biến trong các ứng dụng như điều khiển menu, điều chỉnh âm lượng, robot, và các hệ thống tự động hóa.

Thông số kỹ thuật

  • Số xung một vòng: 20
  • Điện áp hoạt động: 3.0V ~ 5.3V
  • Kích thước: 32.1mm * 15.4mm
  • Đường kính lỗ gá: 2.0mm

Sản phẩm được sử dụng trong bài viết

Giảm 7%
Giá từ: 1.720.000 
Sản phẩm này có nhiều biến thể. Các tùy chọn có thể được chọn trên trang sản phẩm
Giảm 14%
Giá gốc là: 350.000 ₫.Giá hiện tại là: 300.000 ₫.

Cảm biến

Bộ 13 cảm biến

950.000 

Sơ đồ kết nối chân

Kết nối cảm biến quay với Raspberry Pi
Kết nối cảm biến quay với Raspberry Pi

 

Raspberry Pi 4 Rotation Sensor
5V VCC
GND GND
GPIO 27 SW
GPIO 17 SIA
GPIO18 SIB

 

Sử dụng cảm biến quay (Rotation sensor) với Raspberry Pi 4 để phát hiện chuyển động quay của trục

Mở IDE bất kỳ trên Raspberry Pi. Trong hướng dẫn này, chúng ta sẽ sử dụng Thonny IDE – một môi trường lập trình Python thân thiện với người mới bắt đầu.

Nhập và chạy đoạn code dưới đây:

import RPi.GPIO as GPIO
import time

CLK = 17   # Clock (SIA)
DT = 18    # Data (SIB)
SW = 27    # Switch button

GPIO.setmode(GPIO.BCM)
GPIO.setup(CLK, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(DT, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(SW, GPIO.IN, pull_up_down=GPIO.PUD_UP)

counter = 0
last_clk_state = GPIO.input(CLK)

print("Start rotating... Press Ctrl+C to exit.")

try:
    while True:
        clk_state = GPIO.input(CLK)
        dt_state = GPIO.input(DT)

        if clk_state != last_clk_state:
            if dt_state == clk_state:
                counter += 1
                print("Rotated clockwise ", counter)
            else:
                counter -= 1
                print("Rotated counterclockwise ", counter)

        last_clk_state = clk_state

        # Reset counter when button is pressed
        if GPIO.input(SW) == 0:
            counter = 0
            print("Button pressed! Counter reset to 0.")
            time.sleep(0.3)

        time.sleep(0.01)

except KeyboardInterrupt:
    print("Stopped.")
    GPIO.cleanup()
Lập trình cảm biến quay trên Raspberry Pi
Lập trình cảm biến quay trên Raspberry Pi

Cảm biến quay tạo ra các xung điện khi trục quay. Hai tín hiệu A và B sẽ lệch pha nhau, giúp vi điều khiển xác định được hướng quaysố bước quay. Khi nhấn nút trên trục, cảm biến sẽ gửi thêm một tín hiệu để thực hiện chức năng phụ như đặt lại giá trị hoặc chọn menu.

Kết luận

Cảm biến quay – Rotation sensor là một thiết bị đơn giản nhưng hiệu quả để đo hướng và số vòng quay của trục. Khi kết hợp với Raspberry Pi, cảm biến này cho phép điều khiển các chức năng như thay đổi giá trị, điều hướng menu, hoặc điều chỉnh thiết bị theo thời gian thực. Nhờ độ bền cao và dễ sử dụng, nó được ứng dụng rộng rãi trong tự động hóa, điện tử tiêu dùng và các dự án nhúng.