打印

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 手机| 高雄县| 南开区| 文登市| 边坝县| 信丰县| 锡林浩特市| 海南省| 孝义市| 友谊县| 五台县| 彰化市| 南郑县| 常德市| 清新县| 开原市| 镇原县| 铅山县| 土默特右旗| 修文县| 阜新市| 江北区| 正定县| 双鸭山市| 龙海市| 南开区| 霍城县| 舒兰市| 晋中市| 虹口区| 滦南县| 鹤庆县| 清镇市| 高唐县| 东兰县| 元氏县| 深圳市| 临猗县| 慈利县| 贵定县| 阳曲县|