class Encoder -- bộ giải mã cầu phương¶
Lớp Encoder bao bọc khối phần cứng i.MX RT QENC được cấu hình dưới dạng bộ giải mã cầu phương. Nó theo dõi tín hiệu hai pha (phase_a / phase_b) đến từ một bộ mã hóa quay, tăng hoặc giảm bộ đếm vị trí 32-bit theo mối quan hệ pha, và có thể kết hợp với các đầu vào index / reset tùy chọn để tham chiếu tuyệt đối.
Chỉ khả dụng trên OpenMV Cam RT1062 (cổng mimxrt). Trên các OpenMV Cam dựa trên STM32, hãy dùng pyb.Timer được cấu hình cho chế độ encoder (Timer.ENC_AB) thay thế. Không được hỗ trợ trên OpenMV Cam AE3 (cổng alif).
Ví dụ sử dụng:
from machine import Pin, Encoder
enc = Encoder(0, Pin("P0", Pin.IN), Pin("P1", Pin.IN), phases=4)
enc.value(0)
# ... rotate the encoder ...
print("position:", enc.value())
Hàm khởi tạo¶
- class machine.Encoder(id: int, phase_a: Pin | None = None, phase_b: Pin | None = None, *, phases: int = 1, filter_ns: int = 0, max: int | None = None, min: int = 0, index: Pin | None = None, reset: Pin | None = None, match: int | None = None, match_pin: Pin | None = None)¶
Khởi tạo (hoặc lấy singleton của) khối encoder QENC được xác định bởi
id. Các đối số tương tự cũng đượcinit()chấp nhận để cấu hình lại một thực thể hiện có.phase_a/phase_blà hai chân đầu vào cầu phương.phases(chỉ từ khóa) chọn độ phân giải giải mã. QENC hỗ trợ1(đếm một cạnh mỗi cặp xung),2(cả hai cạnh của pha A) hoặc4("giải mã 4x" -- mỗi cạnh của cả hai pha đều được đếm). Mặc định1.filter_ns(chỉ từ khóa) -- thời gian đầu vào ổn định tối thiểu tính bằng nano giây. Driver sử dụng bộ lọc phần cứng dài nhất nhỏ hơn hoặc bằng giá trị này.0(mặc định) sẽ tắt bộ lọc.max/min(chỉ từ khóa) -- phạm vi modulo của bộ đếm vị trí. Khi bộ đếm vượt quamax, nó quay vềminvà bộ đếm chu kỳ tăng lên (giảm khi di chuyển theo chiều ngược lại). Truyền cả hai bằng0sẽ vô hiệu hóa phạm vi.index(chỉ từ khóa) -- mộtPincó cạnh lên sẽ nạp lại bộ đếm vị trí vềminvà cập nhật bộ đếm chu kỳ theo hướng; thường được dùng làm dấu kênh Z trên một bộ mã hóa quay.reset(chỉ từ khóa) -- mộtPincó cạnh lên sẽ nạp lại bộ đếm vị trí về giá trị bắt đầu (không thay đổi bộ đếm chu kỳ).match(chỉ từ khóa) -- giá trị vị trí mà tại đó một ngắtIRQ_MATCHđược kích hoạt. TruyềnNoneđể vô hiệu hóa.match_pin(chỉ từ khóa) -- mộtPinđược kéo cao khi bộ đếm vị trí bằngmatchvà kéo thấp trong các trường hợp còn lại.Phương thức¶
- init(phase_a: Pin | None = None, phase_b: Pin | None = None, *, phases: int = 1, filter_ns: int = 0, max: int | None = None, min: int = 0, index: Pin | None = None, reset: Pin | None = None, match: int | None = None, match_pin: Pin | None = None) None¶
Khởi tạo lại encoder với các tham số đã cho và đặt lại các bộ đếm vị trí và chu kỳ. Chấp nhận các đối số từ khóa giống như hàm khởi tạo.
- deinit() None¶
Dừng encoder, vô hiệu hóa bất kỳ ngắt đang chờ xử lý nào và giải phóng tài nguyên phần cứng QENC. Một lần reset mềm sẽ tự động deinitialise tất cả các thực thể
Encoder.
- value() int¶
- value(value: int, /) int
Lấy hoặc đặt bộ đếm vị trí có dấu.
Không có đối số, trả về vị trí hiện tại.
Với một đối số
valueduy nhất, đặt nguyên tử bộ đếm vị trí thànhvaluevà trả về giá trị đếm trước đó. Thành ngữ phổ biếnenc.value(0)đặt lại bộ đếm ở đầu cửa sổ đo lường.
- cycles() int¶
- cycles(value: int, /) int
Lấy hoặc đặt bộ đếm chu kỳ, một số nguyên 16-bit có dấu theo dõi số lần bộ đếm vị trí đã vượt qua
max/min.Không có đối số, trả về giá trị đếm chu kỳ hiện tại.
Với một đối số
valueduy nhất, đặt bộ đếm chu kỳ thànhvalue(không ảnh hưởng đến bộ đếm vị trí) và trả về giá trị đếm trước đó.
- irq(handler: Callable[[Encoder], None] | None = None, trigger: int = 0, hard: bool = False) None¶
Đăng ký một hàm gọi lại được gọi khi một trong các sự kiện QENC được hỗ trợ xảy ra. Bộ xử lý nhận đối tượng
Encoderlàm đối số duy nhất; sự kiện cụ thể có thể được xác định bên trong bộ xử lý quairq.flags().triggerlà một bitmask của một hoặc nhiều hằng sốIRQ_*:IRQ_RESET-- chânresetđược kích hoạt.IRQ_INDEX-- chânindexđược kích hoạt.IRQ_MATCH-- bộ đếm vị trí đạt đếnmatch. Match là một lần và phải được tái kích hoạt bằng cách cài đặt lại IRQ.IRQ_ROLL_OVER-- bộ đếm vị trí quay từmaxvềmin.IRQ_ROLL_UNDER-- bộ đếm vị trí quay từminvềmax.
hard=Trueđăng ký một bộ xử lý ngắt cứng (độ trễ thấp hơn, nhưng bộ xử lý không được phân bổ bộ nhớ). Mặc định là một hàm gọi lại theo lịch. Truyềnhandler=Noneđể vô hiệu hóa ngắt.
Hằng số¶