Mục lục:

Bộ mã hóa quay - Hiểu và sử dụng nó (Arduino / other ΜController): 3 bước
Bộ mã hóa quay - Hiểu và sử dụng nó (Arduino / other ΜController): 3 bước

Video: Bộ mã hóa quay - Hiểu và sử dụng nó (Arduino / other ΜController): 3 bước

Video: Bộ mã hóa quay - Hiểu và sử dụng nó (Arduino / other ΜController): 3 bước
Video: Học lập trình Arduino KHÔNG HỀ KHÓ - Bộ KIT học tập Arduino Uno R3 BLK 2024, Tháng mười một
Anonim
Bộ mã hóa quay - Hiểu và sử dụng nó (Arduino / other ΜController)
Bộ mã hóa quay - Hiểu và sử dụng nó (Arduino / other ΜController)

Bộ mã hóa quay là một thiết bị điện cơ chuyển đổi chuyển động quay thành thông tin kỹ thuật số hoặc tương tự. Nó có thể quay theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ. Có hai loại bộ mã hóa quay: Bộ mã hóa tuyệt đối và tương đối (tăng dần).

Trong khi bộ mã hóa tuyệt đối xuất ra giá trị tỷ lệ với góc trục hiện tại, bộ mã hóa gia tăng xuất ra bước của trục và hướng của nó. (Trong trường hợp này, chúng tôi có bộ mã hóa gia tăng)

Bộ mã hóa quay đang trở nên phổ biến hơn vì bạn có thể sử dụng hai chức năng trong một mô-đun điện: Một công tắc đơn giản để xác nhận các đối nghịch và bộ mã hóa quay để điều hướng, ví dụ: thông qua một menu.

Một bộ mã hóa quay tăng dần tạo ra hai tín hiệu đầu ra trong khi trục của nó đang quay. Tùy thuộc vào hướng, một trong các tín hiệu dẫn tín hiệu kia. (xem bên dưới)

Bước 1: Tìm hiểu dữ liệu đầu ra

Hiểu dữ liệu đầu ra
Hiểu dữ liệu đầu ra

Như bạn có thể thấy khi trục bộ mã hóa bắt đầu quay theo chiều kim đồng hồ, Đầu ra A giảm xuống THẤP đầu tiên và Đầu ra B theo sau nó. Theo hướng ngược chiều kim đồng hồ, hoạt động quay ngược lại.

Bây giờ chúng ta chỉ cần thực hiện điều này trên µController của chúng ta (tôi đã sử dụng Arduino Nano).

Bước 2: Xây dựng mạch

Xây dựng mạch
Xây dựng mạch
Xây dựng mạch
Xây dựng mạch

Như tôi đã mô tả trước khi các kết quả đầu ra tạo ra một sườn CAO và một sườn THẤP. Để có được HIGH sạch tại chân dữ liệu A và B của µController, chúng ta phải thêm các điện trở Pull-Up. Chốt C chung được nối thẳng xuống đất đối với sườn THẤP.

Để biết thông tin về công tắc bên trong (nút nhấn), chúng ta sẽ sử dụng hai chân còn lại. Một trong số chúng đi tới VCC và cái còn lại tới một Pin dữ liệu của µController. Chúng tôi cũng phải thêm một Điện trở kéo xuống cho chân dữ liệu để có được mức THẤP rõ ràng.

Cũng có thể sử dụng các điện trở Kéo lên và Kéo xuống bên trong của µController của bạn!

Trong trường hợp của tôi, sơ đồ chân trông giống như:

  • +3, 3V => +3, 3V (Arduino) (cũng có thể + 5V)
  • GND => GND (Arduino)
  • A => Pin10
  • B =>

    Ghim

    11

  • C => GND
  • SW =>

    Ghim

    12

Bước 3: Viết mã

int pinA = 10; // công tắc nội A int pinB = 11; // công tắc bên trong B int pinSW = 12; // switch (đã nhấn Encoder) int encoderPosCount = 0; // bắt đầu từ 0, thay đổi nếu bạn muốn

int vị trí;

công tắc bool; int mrotateLast; int mrotate;

void setup () {

int mrotateLast = digitalRead (pinA); Serial.begin (9600); chậm trễ (50); }

void loop () {readencoder (); if (readwitch () == 1) {Serial.println ("Switch = 1"); }}

int readencoder () {

mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// núm xoay if (digitalRead (pinB)! = mrotate) {// công tắc A được thay đổi trước -> xoay theo chiều kim đồng hồ encoderPosCount ++; Serial.println ("quay theo chiều kim đồng hồ"); } else {// công tắc B được thay đổi trước -> xoay ngược chiều kim đồng hồ encoderPosCount--; Serial.println ("quay ngược chiều kim đồng hồ"); }

Serial.print ("Vị trí bộ mã hóa:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; trả về encoderPosCount; } bool readwitch () {

if (digitalRead (pinSW)! = 0) {// công tắc được nhấn

while (digitalRead (pinSW)! = 0) {} // công tắc hiện đang được nhấn switchval = 1; } else {switchval = 0;} // switch được giải nén return switchval; }

Bây giờ bạn có thể xoay bộ mã hóa và biến encoderPosCount sẽ đếm lên nếu bạn xoay theo chiều kim đồng hồ và đếm ngược nếu bạn xoay ngược chiều kim đồng hồ.

Đó là nó! Đơn giản và hữu ích.

Hãy thay đổi và thực hiện mã. Bạn có thể thực hiện nó trong dự án của mình.

Tôi cũng sẽ tải lên một dự án đèn LED trong đó tôi đã sử dụng bộ mã hóa để đặt độ sáng của đèn LED của mình.

Đề xuất: