打印

GD32F303 BLDC电机换向控制

[复制链接]
184|6
跳转到指定楼层
楼主
 楼主 | 2019-11-27 12:02 | 只看该作者 |退出气泡模式 回帖奖励 |倒序浏览 |阅读模式
BLDC直流无刷电机的控制需要MCU实现电子换向控制,GD32 MCU的高级定时器很适合用来说电机控制应用,可产生3对可编程死区的互补PWM波,还有一个空余通道可以用于进行ADC采样触发。加之高主频和零等待特性,GD32可以实现高性能的BLDC、FOC控制,拿GD32F303来说,M4F内核支持FPU,具有两个高级定时器,3个独立ADC???。单芯片即可实现控制频率16K左右的双FOC控制。
BLDC控制相对FOC比较简单,实现转子位置检测并提前一定电角度换向即可。附件是此前学习BLDC的换向控制原理时做的按键控制单步顺序换向的demo,每按一下按键可以控制电机进行一次换向,测试时使用的电机是4对极,所以点击6*4次按键电机转动一圈。长按按键可固定占空比和换向延时进行无位置检测的开环运行,让电机连续转动。

换向demo.rar

534.2 KB, 下载次数: 10

使用特权

评论回复
沙发
| 2019-11-27 13:40 | 只看该作者
谢谢分享,,,,,,,

使用特权

评论回复
板凳
 楼主 | 2019-11-27 15:06 | 只看该作者
    通道配置切换时,需要注意各通道切换的一致性,在同一时刻生效,避免中间的时间差带来风险,所以可以采用直接写CHCTL2寄存器的方式、或者开启通道影子寄存器,配置好各通道后用软件换向事件让配置生效。如以下代码:   

           #ifdef  REGISTER

            temp =TIMER_CHCTL2(TIMER0);
            temp|=TIMER_CHCTL2_CH0EN|TIMER_CHCTL2_CH2NEN;
            temp&=~(TIMER_CHCTL2_CH0NEN|TIMER_CHCTL2_CH1EN|TIMER_CHCTL2_CH1NEN|TIMER_CHCTL2_CH2EN);
            TIMER_CHCTL2(TIMER0)=temp;

            #else
            timer_channel_output_state_config(TIMER0,TIMER_CH_0,TIMER_CCX_ENABLE);
            timer_channel_output_state_config(TIMER0,TIMER_CH_1,TIMER_CCX_DISABLE);
            timer_channel_output_state_config(TIMER0,TIMER_CH_2,TIMER_CCX_DISABLE);

            timer_channel_complementary_output_state_config(TIMER0, TIMER_CH_0, TIMER_CCXN_DISABLE);
            timer_channel_complementary_output_state_config(TIMER0, TIMER_CH_1, TIMER_CCXN_DISABLE);
            timer_channel_complementary_output_state_config(TIMER0, TIMER_CH_2, TIMER_CCXN_ENABLE);

            timer_event_software_generate(BLDC_PWM_TIMER, TIMER_EVENT_SRC_CMTG);            
            #endif

使用特权

评论回复
地板
| 2019-11-30 20:20 | 只看该作者
试试看

使用特权

评论回复
5
| 2019-12-5 14:37 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
6
| 2019-12-5 14:44 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
7
| 2019-12-5 14:51 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
扫描二维码,随时随地手机跟帖
*滑动验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表
快3注册邀请码tt 成武县| 鄂尔多斯市| 海伦市| 龙海市| 招远市| 蚌埠市| 玉屏| 崇州市| 文化| 常宁市| 崇礼县| 武宣县| 阿克苏市| 安吉县| 株洲县| 白水县| 沐川县| 泗水县| 山西省| 区。| 西畴县| 定远县| 布拖县| 太保市| 济源市| 青神县| 周至县| 澎湖县| 洛隆县| 钦州市| 清丰县| 沿河| 灌南县| 平谷区| 大厂| 孝义市| 临西县| 广饶县| 沂水县| 黔东| 门头沟区|