tb6612 --- ไดรเวอร์มอเตอร์ TB6612¶
โมดูล tb6612 ให้ไดรเวอร์สำหรับ TB6612 motor driver โดยเปิดเผยคลาส Motor สำหรับขับเคลื่อนมอเตอร์ DC หนึ่งตัวบนหนึ่งในสองช่อง และคลาส Stepper สำหรับขับเคลื่อนมอเตอร์สเต็ปเปอร์แบบ 4 สาย
ทั้งสองคลาสใช้ pyb.Timer(4) ที่ 1 kHz บนพิน P7 และ P8 สำหรับเอาต์พุต PWM พินทิศทางของ Motor คือ P3/P2 (ช่อง 1) และ P1/P0 (ช่อง 2) Stepper ใช้พินทั้งสี่ (P3, P2, P1, P0) บวกกับช่อง PWM ทั้งสอง
ตัวอย่าง:
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
คลาส Motor¶
คลาส Stepper¶
- class tb6612.Stepper(stepnumber: int = 200, rpms: int = 2, power: int = 50)¶
สร้างตัวควบคุมมอเตอร์สเต็ปเปอร์แบบ 4 สาย กำหนดค่าพินทิศทาง
P3,P2,P1,P0และช่อง PWM สองช่องบนP7และP8จากนั้นใช้ความเร็วและพลังงานที่ร้องขอstepnumber: จำนวนขั้นตอนเต็มต่อรอบของมอเตอร์สเต็ปเปอร์ที่เชื่อมต่อ ใช้ร่วมกับrpmsเพื่อคำนวณเวลาหน่วงระหว่างขั้นตอนrpms: ความเร็วการหมุนเป้าหมายเป็นรอบต่อนาที ส่งต่อไปยังset_speed()power: เปอร์เซ็นต์ duty cycle PWM (0-100) ที่ใช้กับช่องพลังงานทั้งสอง ส่งต่อไปยังset_power()
- phase_list() Generator[tuple[int, int, int, int], None, None]¶
เจเนอเรเตอร์ที่วนซ้ำรูปแบบไดรฟ์สี่เฟสอย่างไม่สิ้นสุด
(1, 0, 0, 0),(0, 0, 1, 0),(0, 1, 0, 0),(0, 0, 0, 1)ที่ใช้โดยstep()แต่ละองค์ประกอบทูเพิลคือค่าที่จะเขียนไปยังpin1,pin2,pin3,pin4ตามลำดับ
- set_speed(rpms: int) None¶
อัปเดตความเร็วการก้าว
rpms: ความเร็วการหมุนเป้าหมายเป็นรอบต่อนาที เวลาหน่วงต่อครึ่งขั้นตอน (เป็นไมโครวินาที) จะถูกคำนวณใหม่เป็น1000000 / (rpms * stepnumber) / 2
- set_power(power: int) None¶
ตั้งค่า duty cycle PWM ที่ใช้กับช่องพลังงานทั้งสอง
power: เปอร์เซ็นต์ duty cycle ในช่วง0ถึง100
- step(num: int) None¶
ขยับสเต็ปเปอร์ไปข้างหน้า
numการเปลี่ยนเฟส โดยใช้เฟสถัดไปจากphase_list()และรอเวลาหน่วงระหว่างขั้นตอนที่กำหนดค่าไว้ (ผ่านpyb.udelay) ระหว่างการเปลี่ยนแปลงnum: จำนวนขั้นตอนเฟสที่จะก้าว แต่ละการเรียกstepก้าวไปข้างหน้าตามจำนวนเฟสนี้เท่านั้น ทิศทางถูกกำหนดคงที่ (เจเนอเรเตอร์เฟสพื้นฐานวนซ้ำไปข้างหน้าเท่านั้น)