BLDCDriver Unit

这个库是 Unit BLDCDrive 的驱动。

支持以下产品:

Unit BLDCDriver

UiFlow2 应用示例

电机速度控制。

在 UiFlow2 上打开 cores3_bldc_driver_example.m5f2 项目。

示例程序逐渐增加电机转速,然后停止电机转动。

UiFlow2 代码块:

cores3_bldc_driver_example.png

示例输出:

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 对象。

参数:

UiFlow2 代码块:

init.png

MicroPython 代码块:

from unit import BLDCDriverUnit

unit_bldcdriver_0 = BLDCDriverUnit(i2c0, 0x65)
property get_current_mode: int

获取电流模式设置。

返回:

电流模式。

返回类型:

int

UiFlow2 代码块:

get_current_mode.png

MicroPython 代码块:

unit_bldcdriver_0.get_current_mode()
get_device_spec(mode)

获取设备固件和 I2C 地址。

该方法根据提供的模式获取设备的固件版本或 I2C 地址。

参数:

mode (int) – mode 用于确定获取何种信息的模式。- 0xFE:获取固件版本;- 0xFF:获取 I2C 地址。

返回类型:

None

UiFlow2 代码块:

get_device_spec.png

MicroPython 代码块:

unit_device.get_device_spec(mode)
property get_motor_current_direction: int

获取电流方向设置。

返回:

电流方向。

返回类型:

int

UiFlow2 代码块:

get_motor_current_direction.png

MicroPython 代码块:

unit_bldcdriver_0.get_motor_current_direction()
property get_motor_current_model: int

获取电机电流模型设置。

返回:

电机电流模。

返回类型:

int

UiFlow2 代码块:

get_motor_current_model.png

MicroPython 代码块:

unit_bldcdriver_0.get_motor_current_model()
property get_motor_pole_pairs: int

获取磁极对设置。

返回:

电机磁极对。

返回类型:

int

UiFlow2 代码块:

get_motor_pole_pairs.png

MicroPython 代码块:

unit_bldcdriver_0.get_motor_pole_pairs()
property get_motor_status: int

获取电机状态。

返回:

电机状态。

返回类型:

int

UiFlow2 代码块:

get_motor_status.png

MicroPython 代码块:

unit_bldcdriver_0.get_motor_status()
property get_open_loop_pwm: int

获取开环 PWM。

返回:

开环 PWM。

返回类型:

int

UiFlow2 代码块:

get_open_loop_pwm.png

MicroPython 代码块:

unit_bldcdriver_0.get_open_loop_pwm()
property get_pid_value: tuple

获取 PID 值。

该方法从指定的寄存器中读取 PID 参数,并以元组形式返回。

返回:

一个包含 PID 参数(比例、积分、微分)的元组。

返回类型:

tuple[int, int, int]

UiFlow2 代码块:

get_pid_value.png

MicroPython 代码块:

unit_bldcdriver_0.get_pid_value()
property get_read_back_freq_float: float

读取返回的频率,返回值为浮点数。

返回:

读取返回的频率

返回类型:

float

UiFlow2 代码块:

get_read_back_freq_float.png

MicroPython 代码块:

unit_bldcdriver_0.get_read_back_freq_float()
property get_read_back_freq_int: int

读取返回的频率,返回值为整数。

返回:

读取返回的频率

返回类型:

int

UiFlow2 代码块:

get_read_back_freq_int.png

MicroPython 代码块:

unit_bldcdriver_0.get_read_back_freq_int()
property get_read_back_freq_str: str

读取返回的频率,返回值为字符串。

返回:

读取返回的频率

返回类型:

str

UiFlow2 代码块:

get_read_back_freq_str.png

MicroPython 代码块:

unit_bldcdriver_0.get_read_back_freq_str()
property get_read_back_rpm_float: float

读取返回的电机转速(单位:RPM),返回值为浮点数。

返回:

读取电机转速(单位:RPM)

返回类型:

float

UiFlow2 代码块:

get_read_back_rpm_float.png

MicroPython 代码块:

unit_bldcdriver_0.get_read_back_rpm_float()
property get_read_back_rpm_int: int

读取返回的电机转速(单位:RPM),返回值为整数。

返回:

读取电机转速(单位:RPM)

返回类型:

int

UiFlow2 代码块:

get_read_back_rpm_int.png

MicroPython 代码块:

unit_bldcdriver_0.get_read_back_rpm_int()
property get_read_back_rpm_str: str

读取返回的电机转速(单位:RPM),返回值为字符串。

返回:

读取电机转速(单位:RPM)

返回类型:

str

UiFlow2 代码块:

get_read_back_rpm_str.png

MicroPython 代码块:

unit_bldcdriver_0.get_read_back_rpm_str()
property get_rpm_float: float

获取转速,返回值为浮点数。

返回:

rpm.

返回类型:

float

UiFlow2 代码块:

get_rpm_float.png

MicroPython 代码块:

unit_bldcdriver_0.get_rpm_float()
property get_rpm_int: int

获取转速,返回值为整数。

返回:

每分钟转数。

返回类型:

int

UiFlow2 代码块:

get_rpm_int.png

MicroPython 代码块:

unit_bldcdriver_0.get_rpm_int()
save_data_in_flash()

保存电机参数到 flash。

UiFlow2 代码块:

save_data_in_flash.png

MicroPython 代码块:

unit_bldcdriver_0.save_data_in_flash()
返回类型:

None

set_direction(direction)

设置方向。

参数:

model (int) – 0 正传,1 反转。

返回类型:

None

UiFlow2 代码块:

set_direction.png

MicroPython 代码块:

unit_bldcdriver_0.set_direction()
set_i2c_address(addr)

设置 I2C 地址。

参数:

addr (int) – 新 I2C 地址,范围:1~127。

返回类型:

None

UiFlow2 代码块:

set_i2c_address.png

MicroPython 代码块:

unit_device.set_i2c_address(addr)
set_mode(mode)

设置模式。

Param:

0 为开环,1 为闭环。

参数:

mode (int)

返回类型:

None

UiFlow2 代码块:

set_mode.png

MicroPython 代码块:

unit_bldcdriver_0.set_mode(mode)
set_motor_model(model)

设置电机模型。

参数:

model (int) – 0 低速,1 高速。

返回类型:

int

UiFlow2 代码块:

set_motor_model.png

MicroPython 代码块:

unit_bldcdriver_0.set_motor_model(model)
set_open_loop_pwm(pwm)

设置开环 PWM。

参数:

pwm (int) – 开环 PWM,范围:0~2047。

返回类型:

int

UiFlow2 代码块:

set_open_loop_pwm.png

MicroPython 代码块:

unit_bldcdriver_0.set_open_loop_pwm(pwm)
set_pid_value(p, i, d)

设置 PID 参数 (比例,积分,微分)。

该方法将 PID 参数设置到指定寄存器,用于控制电机的 PID 行为。

参数:
  • p (int) – 比例

  • i (int) – 积分

  • d (int) – 微分

返回类型:

None

UiFlow2 代码块:

set_pid_value.png

MicroPython 代码块:

unit_bldcdriver_0.set_pid_value(p, i, d)
set_pole_pairs(pole)

设置磁极对。

参数:

pole (int) – 磁极对,范围:0~255。

返回类型:

None

UiFlow2 代码块:

set_pole_pairs.png

MicroPython 代码块:

unit_bldcdriver_0.set_pole_pairs(pole)
set_rpm_float(rpm)

设置转速。

参数:

rpm (float) – 每分钟转数。

返回类型:

None

UiFlow2 代码块:

set_rpm_float.png

MicroPython 代码块:

unit_bldcdriver_0.set_rpm_float(rpm)
set_rpm_int(pwm)

设置转速。

参数:

rpm (int) – 每分钟转数。

返回类型:

None

UiFlow2 代码块:

set_rpm_int.png

MicroPython 代码块:

unit_bldcdriver_0.set_rpm_int(rpm)