BLDCDriver Unit
这个库是 Unit BLDCDrive 的驱动。
支持以下产品:
UiFlow2 应用示例
电机速度控制。
在 UiFlow2 上打开 cores3_bldc_driver_example.m5f2 项目。
示例程序逐渐增加电机转速,然后停止电机转动。
UiFlow2 代码块:
示例输出:
无
MicroPython 应用示例
电机速度控制。
示例程序逐渐增加电机转速,然后停止电机转动。
MicroPython 代码块:
1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from hardware import I2C 9from hardware import Pin 10from unit import BLDCDriverUnit 11import time 12 13 14title0 = None 15label0 = None 16label_speed = None 17i2c0 = None 18bldcdriver_0 = None 19speed = None 20 21 22def setup(): 23 global title0, label0, label_speed, i2c0, bldcdriver_0, speed 24 M5.begin() 25 Widgets.fillScreen(0x222222) 26 title0 = Widgets.Title("BLDCDriver Example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu24) 27 label0 = Widgets.Label("Speed: ", 35, 60, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 28 label_speed = Widgets.Label("0", 115, 60, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 29 i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000) 30 bldcdriver_0 = BLDCDriverUnit(i2c0, 0x65) 31 bldcdriver_0.set_mode(0) 32 bldcdriver_0.set_open_loop_pwm(500) 33 bldcdriver_0.set_rpm_int(0) 34 speed = 0 35 36 37def loop(): 38 global title0, label0, label_speed, i2c0, bldcdriver_0, speed 39 M5.update() 40 if speed < 300: 41 speed = speed + 5 42 label_speed.setText(str(speed)) 43 bldcdriver_0.set_rpm_int(speed) 44 time.sleep_ms(100) 45 else: 46 bldcdriver_0.set_mode(1) 47 label_speed.setText(str("0")) 48 time.sleep_ms(500) 49 50 51if __name__ == "__main__": 52 try: 53 setup() 54 while True: 55 loop() 56 except (Exception, KeyboardInterrupt) as e: 57 try: 58 from utility import print_error_msg 59 60 print_error_msg(e) 61 except ImportError: 62 print("please update to latest firmware")
示例输出:
无
API参考
BLDCDriverUnit
- class unit.bldc_driver.BLDCDriverUnit(i2c, address=101)
基类:
object
创建一个 BLDCDriverUnit 对象。
- 参数:
i2c (machine.I2C | PAHUBUnit) – I2C 端口。
UiFlow2 代码块:
MicroPython 代码块:
from unit import BLDCDriverUnit unit_bldcdriver_0 = BLDCDriverUnit(i2c0, 0x65)
- property get_current_mode: int
获取电流模式设置。
- 返回:
电流模式。
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_current_mode()
- get_device_spec(mode)
获取设备固件和 I2C 地址。
该方法根据提供的模式获取设备的固件版本或 I2C 地址。
- 参数:
mode (int) – mode 用于确定获取何种信息的模式。- 0xFE:获取固件版本;- 0xFF:获取 I2C 地址。
- 返回类型:
None
UiFlow2 代码块:
MicroPython 代码块:
unit_device.get_device_spec(mode)
- property get_motor_current_direction: int
获取电流方向设置。
- 返回:
电流方向。
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_motor_current_direction()
- property get_motor_current_model: int
获取电机电流模型设置。
- 返回:
电机电流模。
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_motor_current_model()
- property get_motor_pole_pairs: int
获取磁极对设置。
- 返回:
电机磁极对。
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_motor_pole_pairs()
- property get_motor_status: int
获取电机状态。
- 返回:
电机状态。
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_motor_status()
- property get_open_loop_pwm: int
获取开环 PWM。
- 返回:
开环 PWM。
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_open_loop_pwm()
- property get_pid_value: tuple
获取 PID 值。
该方法从指定的寄存器中读取 PID 参数,并以元组形式返回。
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_pid_value()
- property get_read_back_freq_float: float
读取返回的频率,返回值为浮点数。
- 返回:
读取返回的频率
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_read_back_freq_float()
- property get_read_back_freq_int: int
读取返回的频率,返回值为整数。
- 返回:
读取返回的频率
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_read_back_freq_int()
- property get_read_back_freq_str: str
读取返回的频率,返回值为字符串。
- 返回:
读取返回的频率
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_read_back_freq_str()
- property get_read_back_rpm_float: float
读取返回的电机转速(单位:RPM),返回值为浮点数。
- 返回:
读取电机转速(单位:RPM)
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_read_back_rpm_float()
- property get_read_back_rpm_int: int
读取返回的电机转速(单位:RPM),返回值为整数。
- 返回:
读取电机转速(单位:RPM)
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_read_back_rpm_int()
- property get_read_back_rpm_str: str
读取返回的电机转速(单位:RPM),返回值为字符串。
- 返回:
读取电机转速(单位:RPM)
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_read_back_rpm_str()
- property get_rpm_float: float
获取转速,返回值为浮点数。
- 返回:
rpm.
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_rpm_float()
- property get_rpm_int: int
获取转速,返回值为整数。
- 返回:
每分钟转数。
- 返回类型:
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.get_rpm_int()
- save_data_in_flash()
保存电机参数到 flash。
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.save_data_in_flash()
- 返回类型:
None
- set_direction(direction)
设置方向。
- 参数:
model (int) – 0 正传,1 反转。
- 返回类型:
None
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.set_direction()
- set_i2c_address(addr)
设置 I2C 地址。
- 参数:
addr (int) – 新 I2C 地址,范围:1~127。
- 返回类型:
None
UiFlow2 代码块:
MicroPython 代码块:
unit_device.set_i2c_address(addr)
- set_mode(mode)
设置模式。
- Param:
0 为开环,1 为闭环。
- 参数:
mode (int)
- 返回类型:
None
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.set_mode(mode)
- set_motor_model(model)
设置电机模型。
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.set_motor_model(model)
- set_open_loop_pwm(pwm)
设置开环 PWM。
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.set_open_loop_pwm(pwm)
- set_pid_value(p, i, d)
设置 PID 参数 (比例,积分,微分)。
该方法将 PID 参数设置到指定寄存器,用于控制电机的 PID 行为。
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.set_pid_value(p, i, d)
- set_pole_pairs(pole)
设置磁极对。
- 参数:
pole (int) – 磁极对,范围:0~255。
- 返回类型:
None
UiFlow2 代码块:
MicroPython 代码块:
unit_bldcdriver_0.set_pole_pairs(pole)