Mục lục:
Video: Bộ giải mã vòng quay đơn giản: 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Hướng dẫn này mô tả một phương pháp đơn giản để giải mã bộ mã hóa quay tuần tự bằng Arduino Uno R3.
Các quy trình phần mềm nhỏ gọn được sử dụng để đếm số lần chuyển đổi, loại bỏ hiện tượng nảy tiếp xúc và xác định hướng quay. Các thành phần bổ sung và bảng tra cứu không bắt buộc.
Các phiên bản ngắt và không ngắt của mã được cung cấp.
Phiên bản ngắt của mã chỉ yêu cầu một chân ngắt duy nhất.
Hình ảnh:
- Hình ảnh mở đầu cho thấy bộ mã hóa đã lắp ráp.
- Ảnh chụp màn hình hiển thị mã cho phiên bản ngắt và số đếm khi trục bộ mã hóa được quay theo chiều kim đồng hồ và ngược chiều kim đồng hồ.
- Video hiển thị số đếm trong quá trình quay nhanh.
Bước 1: Sơ đồ mạch
Sơ đồ đấu dây bộ mã hóa được hiển thị trong hình 1.
Các dây jumper được hàn trực tiếp vào các chân của bộ mã hóa.
Trao đổi hai dây màu xanh nếu hướng đếm bị đảo ngược.
Bước 2: Danh sách bộ phận
Các phần sau được lấy từ
- 1 duy nhất Arduino UNO R3 với cáp USB.
- 1 bộ mã hóa quay tuần tự duy nhất (EC11 hoặc tương đương) có công tắc.
- 1 núm duy nhất cho phù hợp với trục.
- 3 dây nhảy nam sang nam duy nhất của Arduino.
Bước 3: Lý thuyết
Các bộ mã hóa quay tuần tự tạo ra hai sóng vuông, mỗi sóng được dịch chuyển 90 độ như thể hiện trong Hình 1.
Các mẫu logic tại Tiếp điểm A và Tiếp điểm B khác nhau khi trục quay theo chiều kim đồng hồ (CW) và ngược chiều kim đồng hồ (CCW) qua các vị trí từ 1 đến 6.
Các phương pháp phổ biến để xác định hướng quay bao gồm:
- phần cứng
- ngắt đôi
- bảng tra cứu mẫu
Dự án này sử dụng một phương pháp phần mềm không yêu cầu bảng tra cứu. [1]
Phương hướng
Thay vì xem xét các mẫu đầu ra từ Liên hệ A và Liên hệ B, hãy tập trung vào Liên hệ A.
Nếu chúng tôi lấy mẫu Liên hệ B sau mỗi lần chuyển đổi Liên hệ A, chúng tôi lưu ý rằng:
- Tiếp điểm A và tiếp điểm B có trạng thái logic ngược nhau khi bộ mã hóa được xoay CW
- Tiếp điểm A và Tiếp điểm B có cùng trạng thái logic khi bộ mã hóa được xoay CCW
Mã thực tế:
// ----- Đếm quá trình chuyển đổi
CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); if (CurrentStateA == CurrentStateB) Count ++; if (CurrentStateA! = CurrentStateB) Đếm--; LastStateA = CurrentStateA; }
Phương pháp này mang lại những ưu điểm sau:
- bảng tra cứu không bắt buộc
- chỉ cần một dòng ngắt duy nhất
Debounce
Tất cả các bộ mã hóa cơ học đều bị "trả lại tiếp xúc".
Nếu một tiếp điểm công tắc không thực hiện / ngắt một cách sạch sẽ thì trạng thái logic của nó sẽ dao động nhanh chóng từ CAO đến THẤP cho đến khi tiếp điểm công tắc ổn định. Điều này dẫn đến số lượng sai.
Một phương pháp để triệt tiêu tiếp xúc nảy là thêm một tụ điện nhỏ trên mỗi tiếp điểm của công tắc. Tụ điện và điện trở kéo lên được kết hợp tạo thành một bộ tích hợp có hiệu quả làm giảm tần số cao và cho phép điện áp chuyển đổi tăng / giảm một cách duyên dáng.
Nhược điểm của phương pháp này là có thể bỏ sót quá trình chuyển đổi nếu trục bộ mã hóa quay nhanh.
Debouncing phần mềm
Phương pháp này sử dụng hai bộ đếm (Mở, Đóng) đã được đặt thành 0. [2]
Sau khi phát hiện thấy quá trình chuyển đổi trên Liên hệ A:
- Liên tục thăm dò Liên hệ A.
- Tăng bộ đếm Mở và đặt lại bộ đếm Đóng, bất cứ khi nào Tiếp điểm A ở mức CAO.
- Tăng bộ đếm Đóng và đặt lại bộ đếm Mở, bất cứ khi nào Tiếp điểm A ở mức THẤP.
- Thoát khỏi vòng lặp khi một trong các bộ đếm đạt đến số đếm định trước. Chúng tôi đang tìm kiếm hiệu quả khoảng thời gian trạng thái ổn định sau bất kỳ số liên lạc nào bị trả lại.
Mã thực tế:
// ----- Liên hệ Debounce A
while (1) {if (digitalRead (ContactA)) {// ----- ContactA is Open Closed = 0; // Bộ tích phân đối diện rỗng Open ++; // Tích hợp if (Open> MaxCount) return HIGH; } else {// ----- ContactA is Closed Open = 0; // Bộ tích phân đối diện rỗng Đóng ++; // Tích hợp if (Closed> MaxCount) return LOW; }}
Không cần phải loại bỏ Tiếp điểm B vì việc chuyển đổi Tiếp điểm A và Tiếp điểm B không trùng khớp với nhau.
Đếm
Một "detent" cơ học tăng gấp đôi số của bạn một cách hiệu quả khi hai số được đăng ký giữa các lần nhấp (xem hình 1).
Có thể xác định số lượng "phần tử" bằng cách sử dụng số học modulo 2 như hình dưới đây.
Mã thực tế:
// ----- Đếm "detents"
if (Đếm% 2 == 0) {Serial.print ("Đếm:"); Serial.println (Số lượng / 2); }
Người giới thiệu
Thông tin thêm có thể được tìm thấy tại:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
Bước 4: Phần mềm
Dự án này yêu cầu phiên bản gần đây của Ardino Uno R3 IDE (môi trường phát triển tích hợp) có sẵn tại
Tải xuống từng bản phác thảo Arduino sau (đính kèm)
- rotary_encoder_1.ino (phiên bản thăm dò ý kiến)
- rotary_encoder_2.no (phiên bản ngắt)
Nhấp đúp vào phiên bản ưa thích của bạn và làm theo hướng dẫn trên màn hình.
Thưởng thức …
Nhấn vào đây để xem các tài liệu hướng dẫn khác của tôi.
Đề xuất:
Quay vòng quay tự động: 7 bước (có hình ảnh)
Tự động Twister Spinner: Bạn đã bao giờ chơi một trò chơi siêu thú vị có tên là " Twister. &Quot; Đây là một trò chơi về kỹ năng thể chất có thể cải thiện mối quan hệ của bạn với đồng đội. Cố gắng hết sức để tồn tại để trở thành người chiến thắng trong trò chơi, đồng thời tuân theo chỉ thị khó khăn
Cách tạo bộ giải mã đường dây điện thoại DTMF (âm báo) đơn giản: 3 bước
Cách tạo bộ giải mã đường dây điện thoại DTMF (âm báo) đơn giản: Đây là một dự án đơn giản cho phép bạn giải mã tín hiệu DTMF về cơ bản trên bất kỳ đường dây điện thoại nào. Trong hướng dẫn này, chúng tôi đang sử dụng bộ giải mã MT8870D. Chúng tôi đang sử dụng một bộ giải mã giai điệu dựng sẵn bởi vì, tin tôi đi, việc thử và làm điều đó với
Giai điệu giai điệu Arduino đơn giản: 3 bước
Giai điệu Arduino đơn giản: Giai điệu giai điệu Arduino đơn giản là một cách bắt đầu với các dự án Arduino vì bạn chỉ tải lên mã từ phần mềm Arduino trực tiếp mà không cần phải viết gì cả
Một bộ tạo giai điệu đơn giản: 7 bước (có hình ảnh)
Trình tạo giai điệu đơn giản: Trình tạo giai điệu Arduino là một bộ công tắc chia sẻ một thiết bị đầu cuối chung với GND trong khi các chân còn lại được kết nối với 2, 3, 4, 5, 6, 7, 8 và 9 chân kỹ thuật số Arduino và với một loa. được cài đặt giữa GND và chân kỹ thuật số 11 từ Arduino Uno
Cách diễn giải hướng quay từ công tắc quay kỹ thuật số với PIC: 5 bước
Cách diễn giải hướng quay từ công tắc quay kỹ thuật số với PIC: Mục tiêu của Tài liệu hướng dẫn này là minh họa cách giao diện công tắc xoay kỹ thuật số (được mã hóa vuông góc) với bộ vi điều khiển. Đừng lo lắng, tôi sẽ giải thích những gì? Mã hóa vuông góc? có nghĩa là đối với chúng tôi. Giao diện này và phần mềm đi kèm sẽ