完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Arduino Simple FOC库BLDC和步进电机支持驱动器:
类BLDCDriver3PWM和BLDCDriver6PWM为所有支持的平台提供所有硬件/平台特定代码的实现层:atmega328、esp32、stm32和teensy。他们:
方式可以支持更多不同的程序,可以完全不同。信号运行的 BLDC 驱动板都可以用这个类来表示。
步骤硬件 需要创建驱动的接口,您需要指定 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]
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); } |
|||||
|
|||||
只有小组成员才能发言,加入小组>>
3277 浏览 9 评论
2950 浏览 16 评论
3454 浏览 1 评论
8983 浏览 16 评论
4044 浏览 18 评论
1093浏览 3评论
567浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
564浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2298浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1855浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 19:39 , Processed in 1.185189 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号