Arduino
Simple FOC库BLDC和步进电机支持驱动器:
- BLDC驱动器
- 3个PWM信号(3相)-BLDCDriver3PWM
- 6个PWM信号(3相)-BLDCDriver6PWM
- 驱动器
- 4个PWM信号(2相)-StepperDriver4PWM
类BLDCDriver3PWM和BLDCDriver6PWM为所有支持的平台提供所有硬件/平台特定代码的实现层:atmega328、esp32、stm32和teensy。他们:
- 脉宽改编
- 脉宽适应频率
- PWM聚焦中心
- 互补通道(6PWM)
- 死区/死区时间 (6PWM)
- PWM占空比设置
- 电压限制
这些类可用于独立类,可用于为 BLDC 驱动器输出,设置特定的 PWM 值,请参阅它们的示例代码utils > driver_standalone_test。 .程序代码的
驱动
方式可以支持更多不同的程序,可以完全不同。信号运行的 BLDC 驱动板都可以用这个类来表示。
- Arduino简单FOC扩展板
- Arduino Simple FOC 电源扩展板
- L6234分线板
- HMBGC v2.2
- DRV830x(可以在3pwm或6pwm模式下运行)
- X-NUCLEO-IHM07M1
- 等等。
步骤硬件
需要创建驱动的接口,您需要指定 3 个 pwm 设置设备,可选用于使电机和相位器设置为 1 个 BLDC 驱动的接口。
// BLDCDriver3PWM( int phA, int phB, int phC, int en)
// - phA, phB, phC - A,B,C phase pwm pins
// - enable pin - (optional input)
BLDCDriver3PWM driver = BLDCDriver3PWM(9, 10, 11, 8);
此外,此dc驱动类程序用户为每个相位提供启用信号(启用SimpleFOC)
的能力,如果将多个处理库启用。将能够为电机相位设置高阻力控制,这非常适合反电动势,例如:
// BLDCDriver3PWM( int phA, int phB, int phC, int enA, int enB, int enC )
// - phA, phB, phC - A,B,C phase pwm pins
// - enA, enB, enC - enable pin for each phase (optional)
BLDCDriver3PWM driver = BLDCDriver3PWM(9, 10, 11, 8, 7, 6);
2.1 PWM配置
// pwm frequency to be used [Hz]
// for atmega328 fixed to 32kHz
// esp32/stm32/teensy configurable
driver.pwm_frequency = 50000;
是与 Arduino
Simple FOC 库一起使用不同的微控制器列表和 PWM 频率和的设想。
[trMCUdefault frequencyMAX frequency]
Arduino UNO(Atmega328) | 32kHz | 32kHz | 8位 | 是的 | 不 |
STM32 | 50kHz | 100kHz | 14位 | 是的 | 是的 |
ESP32 | 40kHz | 100kHz | 10位 | 是的 | 是的 |
青少年 | 50kHz | 100kHz | 8位 | 是的 | 是的 |
所有这些都在库源中的drivers/hardware_specific/x_mcu.cpp/h中定义。
2.2电压
驱动类是处理设置驱动输出的程序占设置的pwm比,它需要知道它所插入的电源电压。此外,允许用户提供电压极限输出电压
。
电压类也使用此类参数,如上图设置设置类,如果电机电压限制,电机会产生电压限制,
电机会产生被传送到 BLDC 中的 FOC 电压,并且会担心驱动器电压限制/2 为中心。
2. 3
初始化
的情况下,此参数可用于非常必要的安全功能。配置驱动程序代码执行所需的所有硬件和软件。
// driver init
driver.init();
3.BLDCDriver3PWM实时使用BLDC驱动程序类被开发SimpleFOClibrary并且为在BLDCMotor类中实现的FOC算法抽象提供,但是BLDCDriver3PWM类也可以驱动独立驱动层类,以及可以选择使用bldc实现程序其他类型的控制算法。
FOC 算法支持
在 FOC 控制链接的时间点中,所有驱动程序的使用由运动控制算法完成的,需要的只是将驱动程序到 BLDCMotor 类。
// linking the driver to the motor
motor.linkDriver(&driver)
如果您将
bldc驱动程序使用独立设备代码并围绕它实现一个简单的您自己的逻辑,可以轻松完成。这是非常独立的应用程序的示例。
/
// BLDC driver standalone example
#include
// BLDC driver instance
BLDCDriver3PWM driver = BLDCDriver3PWM(9, 5, 6, 8);
void setup() {
// pwm frequency to be used [Hz]
driver.pwm_frequency = 50000;
// power supply voltage [V]
driver.voltage_power_supply = 12;
// Max DC voltage allowed - default voltage_power_supply
driver.voltage_limit = 12;
// driver init
driver.init();
// enable driver
driver.enable();
_delay(1000);
}
void loop() {
// setting pwm
// phase A: 3V, phase B: 6V, phase C: 5V
driver.setPwm(3,6,5);
}
具有三个使能引脚的 BLDC 驱动器示例代码,每相一个。此代码将一次将一个相位置于高阻抗模式,并在其余两个相位上设置 3 和 6 伏。
// BLDC driver standalone example
#include
// BLDC driver instance
BLDCDriver3PWM driver = BLDCDriver3PWM(9, 10, 11, 8, 7, 6);
void setup() {
// pwm frequency to be used [Hz]
driver.pwm_frequency = 50000;
// power supply voltage [V]
driver.voltage_power_supply = 12;
// Max DC voltage allowed - default voltage_power_supply
driver.voltage_limit = 12;
// driver init
driver.init();
// enable driver
driver.enable();
_delay(1000);
}
void loop() {
// phase (A: 3V, B: 6V, C: high impedance )
// set the phase C in high impedance mode - disabled or open
driver.setPhaseState(_ACTIVE , _ACTIVE , _HIGH_Z); // _HIGH_Z or _HIGH_IMPEDANCE
driver.setPwm(3, 6, 0);
_delay(1000);
// phase (A: 3V, B: high impedance, C: 6V )
// set the phase B in high impedance mode - disabled or open
driver.setPhaseState(_ACTIVE , _HIGH_IMPEDANCE, _ACTIVE);
driver.setPwm(3, 0, 6);
_delay(1000);
// phase (A: high impedance, B: 3V, C: 6V )
// set the phase A in high impedance mode - disabled or open
driver.setPhaseState(_HIGH_IMPEDANCE, _ACTIVE, _ACTIVE);
driver.setPwm(0, 3, 6);
_delay(1000);
}
Arduino
Simple FOC库BLDC和步进电机支持驱动器:
- BLDC驱动器
- 3个PWM信号(3相)-BLDCDriver3PWM
- 6个PWM信号(3相)-BLDCDriver6PWM
- 驱动器
- 4个PWM信号(2相)-StepperDriver4PWM
类BLDCDriver3PWM和BLDCDriver6PWM为所有支持的平台提供所有硬件/平台特定代码的实现层:atmega328、esp32、stm32和teensy。他们:
- 脉宽改编
- 脉宽适应频率
- PWM聚焦中心
- 互补通道(6PWM)
- 死区/死区时间 (6PWM)
- PWM占空比设置
- 电压限制
这些类可用于独立类,可用于为 BLDC 驱动器输出,设置特定的 PWM 值,请参阅它们的示例代码utils > driver_standalone_test。 .程序代码的
驱动
方式可以支持更多不同的程序,可以完全不同。信号运行的 BLDC 驱动板都可以用这个类来表示。
- Arduino简单FOC扩展板
- Arduino Simple FOC 电源扩展板
- L6234分线板
- HMBGC v2.2
- DRV830x(可以在3pwm或6pwm模式下运行)
- X-NUCLEO-IHM07M1
- 等等。
步骤硬件
需要创建驱动的接口,您需要指定 3 个 pwm 设置设备,可选用于使电机和相位器设置为 1 个 BLDC 驱动的接口。
// BLDCDriver3PWM( int phA, int phB, int phC, int en)
// - phA, phB, phC - A,B,C phase pwm pins
// - enable pin - (optional input)
BLDCDriver3PWM driver = BLDCDriver3PWM(9, 10, 11, 8);
此外,此dc驱动类程序用户为每个相位提供启用信号(启用SimpleFOC)
的能力,如果将多个处理库启用。将能够为电机相位设置高阻力控制,这非常适合反电动势,例如:
// BLDCDriver3PWM( int phA, int phB, int phC, int enA, int enB, int enC )
// - phA, phB, phC - A,B,C phase pwm pins
// - enA, enB, enC - enable pin for each phase (optional)
BLDCDriver3PWM driver = BLDCDriver3PWM(9, 10, 11, 8, 7, 6);
2.1 PWM配置
// pwm frequency to be used [Hz]
// for atmega328 fixed to 32kHz
// esp32/stm32/teensy configurable
driver.pwm_frequency = 50000;
是与 Arduino
Simple FOC 库一起使用不同的微控制器列表和 PWM 频率和的设想。
[trMCUdefault frequencyMAX frequency]
Arduino UNO(Atmega328) | 32kHz | 32kHz | 8位 | 是的 | 不 |
STM32 | 50kHz | 100kHz | 14位 | 是的 | 是的 |
ESP32 | 40kHz | 100kHz | 10位 | 是的 | 是的 |
青少年 | 50kHz | 100kHz | 8位 | 是的 | 是的 |
所有这些都在库源中的drivers/hardware_specific/x_mcu.cpp/h中定义。
2.2电压
驱动类是处理设置驱动输出的程序占设置的pwm比,它需要知道它所插入的电源电压。此外,允许用户提供电压极限输出电压
。
电压类也使用此类参数,如上图设置设置类,如果电机电压限制,电机会产生电压限制,
电机会产生被传送到 BLDC 中的 FOC 电压,并且会担心驱动器电压限制/2 为中心。
2. 3
初始化
的情况下,此参数可用于非常必要的安全功能。配置驱动程序代码执行所需的所有硬件和软件。
// driver init
driver.init();
3.BLDCDriver3PWM实时使用BLDC驱动程序类被开发SimpleFOClibrary并且为在BLDCMotor类中实现的FOC算法抽象提供,但是BLDCDriver3PWM类也可以驱动独立驱动层类,以及可以选择使用bldc实现程序其他类型的控制算法。
FOC 算法支持
在 FOC 控制链接的时间点中,所有驱动程序的使用由运动控制算法完成的,需要的只是将驱动程序到 BLDCMotor 类。
// linking the driver to the motor
motor.linkDriver(&driver)
如果您将
bldc驱动程序使用独立设备代码并围绕它实现一个简单的您自己的逻辑,可以轻松完成。这是非常独立的应用程序的示例。
/
// BLDC driver standalone example
#include
// BLDC driver instance
BLDCDriver3PWM driver = BLDCDriver3PWM(9, 5, 6, 8);
void setup() {
// pwm frequency to be used [Hz]
driver.pwm_frequency = 50000;
// power supply voltage [V]
driver.voltage_power_supply = 12;
// Max DC voltage allowed - default voltage_power_supply
driver.voltage_limit = 12;
// driver init
driver.init();
// enable driver
driver.enable();
_delay(1000);
}
void loop() {
// setting pwm
// phase A: 3V, phase B: 6V, phase C: 5V
driver.setPwm(3,6,5);
}
具有三个使能引脚的 BLDC 驱动器示例代码,每相一个。此代码将一次将一个相位置于高阻抗模式,并在其余两个相位上设置 3 和 6 伏。
// BLDC driver standalone example
#include
// BLDC driver instance
BLDCDriver3PWM driver = BLDCDriver3PWM(9, 10, 11, 8, 7, 6);
void setup() {
// pwm frequency to be used [Hz]
driver.pwm_frequency = 50000;
// power supply voltage [V]
driver.voltage_power_supply = 12;
// Max DC voltage allowed - default voltage_power_supply
driver.voltage_limit = 12;
// driver init
driver.init();
// enable driver
driver.enable();
_delay(1000);
}
void loop() {
// phase (A: 3V, B: 6V, C: high impedance )
// set the phase C in high impedance mode - disabled or open
driver.setPhaseState(_ACTIVE , _ACTIVE , _HIGH_Z); // _HIGH_Z or _HIGH_IMPEDANCE
driver.setPwm(3, 6, 0);
_delay(1000);
// phase (A: 3V, B: high impedance, C: 6V )
// set the phase B in high impedance mode - disabled or open
driver.setPhaseState(_ACTIVE , _HIGH_IMPEDANCE, _ACTIVE);
driver.setPwm(3, 0, 6);
_delay(1000);
// phase (A: high impedance, B: 3V, C: 6V )
// set the phase A in high impedance mode - disabled or open
driver.setPhaseState(_HIGH_IMPEDANCE, _ACTIVE, _ACTIVE);
driver.setPwm(0, 3, 6);
_delay(1000);
}
举报