Mục lục:

Hướng dẫn sử dụng bộ mã hóa quay với Arduino: 6 bước
Hướng dẫn sử dụng bộ mã hóa quay với Arduino: 6 bước

Video: Hướng dẫn sử dụng bộ mã hóa quay với Arduino: 6 bước

Video: Hướng dẫn sử dụng bộ mã hóa quay với Arduino: 6 bước
Video: Hướng Dẫn Sử Dụng Encoder Với Arduino 2024, Tháng mười một
Anonim
Hướng dẫn mã hóa quay với Arduino
Hướng dẫn mã hóa quay với Arduino

Bộ mã hóa vòng quay là một thành phần điện tử có khả năng giám sát chuyển động và vị trí khi quay. Bộ mã hóa quay sử dụng các cảm biến quang học có thể tạo ra xung khi bộ mã hóa quay quay. Ứng dụng của bộ mã hóa quay thường như một màn hình chuyển động cơ học hoặc rô bốt cũng có thể được sử dụng để lựa chọn menu trên màn hình. Bộ mã hóa quay có hai đầu ra để nó có thể phân biệt giữa xoay âm (CW) và dương (CCW) và cũng có một nút duy nhất.

Bước 1: Dòng xung của bộ mã hóa quay

Dòng xung của bộ mã hóa quay
Dòng xung của bộ mã hóa quay

Dòng xung được tạo ra bởi bộ mã hóa quay sau giống như hình trên.

Bước 2: Sơ đồ của bộ mã hóa quay

Sơ đồ chân của bộ mã hóa quay
Sơ đồ chân của bộ mã hóa quay

Giải trình:

  • GND GND
  • + + 5V
  • Nút SW của bộ mã hóa quay khi được nhấn
  • Dữ liệu DT
  • Dữ liệu CLK 2

Một trong các chân DT hoặc CLK phải được kết nối với chân ngắt của Arduino Uno, hoặc cả hai chân DT và CLK được kết nối với chân ngắt.

Bước 3: Sơ đồ

Sơ đồ
Sơ đồ
  • GND à GND Arduino Uno
  • + à + 5V Arduino Uno
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

Bước 4: Mã

Mã số
Mã số

Trong hướng dẫn sau, thứ sẽ được sử dụng làm ngắt là PIN 2 của Arduino Uno, trong khi PIN 3 chỉ được sử dụng như một đầu vào thông thường.

#define encoder0PinA 2 # define encoder0PinB 3 #define encoder0Btn 4 int encoder0Pos = 0; void setup () {Serial.begin (9600); pinMode (encoder0PinA, INPUT_PULLUP); pinMode (encoder0PinB, INPUT_PULLUP); pinMode (encoder0Btn, INPUT_PULLUP); mountInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; void loop () {int btn = digitalRead (encoder0Btn); Serial.print (btn); Serial.print (""); Serial.print (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } if (valRotary {

Serial.print ("CCW");

} lastValRotary = valRotary; Serial.println (""); chậm trễ (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } else {encoder0Pos--; } valRotary = encoder0Pos / 2.5; }

Trong dòng 10 của bản phác thảo ở trên được sử dụng để kích hoạt ngắt của chân 2 Arduino Uno. Trong chức năng "doEncoder" được tính toán từ bộ mã hóa quay. Nếu giá trị của DT và CLK (ngắt chân của Arduino Uno) bằng nhau, thì biến "encoder0Pos" sẽ được tăng / thêm, ngoài điều kiện đó, biến "encoder0Pos" bị giảm.

Bước 5: Giải thích

Giá trị ValRotary là giá trị của số bước đã chạy. Giá trị ValRotary nhận được từ giá trị đọc của bộ mã hóa cảm biến quay chia cho 2,5. Giá trị 2,5 nhận được từ thử nghiệm, vì một bước của bộ mã hóa quay có thể vượt quá 1, vì vậy chia cho 2,5 cho giá trị của nó theo cá thể và cũng như cộng thêm độ trễ đọc.

Trong khi trên dòng 19 - 25 là một chương trình để xác định xem bộ mã hóa vòng quay CW hay CCW. Lời giải thích của các dòng 19 - 25 là khi giá trị đọc của bộ mã hóa vòng quay hiện tại lớn hơn dữ liệu vòng quay trước đó sau đó được biểu thị bằng CW. Trong khi nếu số đọc hiện tại nhỏ hơn số đọc trước đó thì nó được ghi là CCW.

Bước 6: Đầu ra

Đầu ra
Đầu ra

1 = giá trị nút khởi động của mâm quay khi nó chưa được nhấn

Đề xuất: