tb6612 --- Trình điều khiển động cơ TB6612

Mô-đun tb6612 cung cấp trình điều khiển cho chip TB6612. Nó cung cấp lớp Motor để điều khiển một động cơ DC trên một trong hai kênh và lớp Stepper để điều khiển động cơ bước 4 dây.

Cả hai lớp đều sử dụng pyb.Timer(4) ở tần số 1 kHz trên các chân P7P8 để xuất PWM. Các chân chiều MotorP3/P2 (kênh 1) và P1/P0 (kênh 2). Stepper sử dụng tất cả bốn chân (P3, P2, P1, P0) cùng với cả hai kênh PWM.

Ví dụ:

from tb6612 import Motor, Stepper

m = Motor(1)
m.set_speed(50)      # 50% duty forward

s = Stepper(stepnumber=200, rpms=2, power=50)
s.step(100)          # advance 100 steps

lớp Motor

class tb6612.Motor(channel: int)

Tạo bộ điều khiển động cơ DC gắn với một trong hai kênh của TB6612.

  • channel: Số kênh động cơ. 1 sử dụng chân chiều P3/P2 và chân PWM P7 (bộ định thời 4, kênh 1). 2 sử dụng chân chiều P1/P0 và chân PWM P8 (bộ định thời 4, kênh 2).

set_speed(pwm: int) None

Đặt tốc độ và chiều quay của động cơ.

  • pwm: Chu kỳ làm việc có dấu trong khoảng -100 đến 100. Giá trị dương chạy động cơ tiến, giá trị âm chạy ngược. Giá trị tuyệt đối được áp dụng làm phần trăm chu kỳ làm việc PWM cho chân nguồn.

lớp Stepper

class tb6612.Stepper(stepnumber: int = 200, rpms: int = 2, power: int = 50)

Tạo bộ điều khiển động cơ bước 4 dây. Khởi tạo các chân chiều P3, P2, P1, P0 và hai kênh PWM trên P7P8, sau đó áp dụng tốc độ và công suất yêu cầu.

  • stepnumber: Số bước đầy đủ mỗi vòng quay của động cơ bước được kết nối. Được sử dụng cùng với rpms để tính độ trễ giữa các bước.

  • rpms: Tốc độ quay mục tiêu tính bằng vòng trên phút. Được chuyển tiếp đến set_speed().

  • power: Phần trăm chu kỳ làm việc PWM (0-100) áp dụng cho cả hai kênh nguồn. Được chuyển tiếp đến set_power().

phase_list() Generator[tuple[int, int, int, int], None, None]

Bộ tạo liên tục trả về mẫu điều khiển bốn pha (1, 0, 0, 0), (0, 0, 1, 0), (0, 1, 0, 0), (0, 0, 0, 1) được dùng bởi step(). Mỗi phần tử của bộ là giá trị để ghi vào pin1, pin2, pin3, pin4 tương ứng.

set_speed(rpms: int) None

Cập nhật tốc độ bước.

  • rpms: Tốc độ quay mục tiêu tính bằng vòng trên phút. Độ trễ mỗi nửa bước (tính bằng microsecond) được tính lại theo công thức 1000000 / (rpms * stepnumber) / 2.

set_power(power: int) None

Đặt chu kỳ làm việc PWM áp dụng cho cả hai kênh nguồn.

  • power: Phần trăm chu kỳ làm việc trong khoảng 0 đến 100.

step(num: int) None

Tiến động cơ bước num chuyển pha, áp dụng pha tiếp theo từ phase_list() và chờ độ trễ giữa các bước đã cấu hình (qua pyb.udelay) giữa các chuyển đổi.

  • num: Số bước pha cần tiến. Mỗi lần gọi step tiến đúng số pha này; chiều là cố định (bộ tạo pha cơ bản chỉ lặp về phía trước).