单片机学习小组
直播中

符筹荣

7年用户 972经验值
私信 关注

如何对Arduino FOC扩展板的驱动进行配置呢

怎样去使用Arduino简单FOC扩展板呢?
如何对Arduino FOC扩展板的驱动进行配置呢?

回帖(1)

郭武莱

2022-1-24 14:20:47
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)32kHz32kHz8位是的
STM3250kHz100kHz14位是的是的
ESP3240kHz100kHz10位是的是的
青少年50kHz100kHz8位是的是的
所有这些都在库源中的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);
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分