OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 82|回复: 1

DMF407 电机开发板中的 BLDC无感例程,延时30度的计算?

[复制链接]

8

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2014-9-14
在线时间
17 小时
发表于 6 天前 | 显示全部楼层 |阅读模式
1金钱
    /************************************** 速度计算 ***************************************/
    g_hallless_three.Filter_Edge = uemf_edge(g_hallless_three.QFilter_Status[0]);
    if(g_hallless_three.Filter_Edge == 0)//1 -> 0/* 统计过零信号的高电平时间 */信号由1变为0
    {
        /* 延迟30°换相,因为硬件上低通滤波器和软件延迟的原因,实际延迟角度需小于30°,
        最优解可以通过示波器确定 */
        if(count_i >= 4)/*稳定检测到过零信号才对速度进行测量*/
        {
            if(g_bldc_motor1.dir == CW)
                g_hallless_three.Speed_RPM = ((uint32_t)SPEED_COEFF/count_j);
            else//    count_j++:运行过程时间计数 18K的中断频率为单位 */
                g_hallless_three.Speed_RPM = -((uint32_t)SPEED_COEFF/count_j);
            FirstOrderRC_LPF(g_bldc_motor1.speed,g_hallless_three.Speed_RPM,0.2379);  /* 过滤尖峰带来的影响 */
        }
        g_hallless_three.Filter_Delay = count_j/ 10;  /* 实际延迟时间 */
        g_hallless_three.Filter_Count = 0;
        count_j = 0;
        count_i++;                              /* 捕捉过零点,累计次数 */
    }
如上程序,count_j应该是180度的计时,延时时间,30度不应该是count_j/ 6,怎么成了count_j/ 10??



捕获12.JPG

最佳答案

查看完整内容[请看2#楼]

上面不是说了由于硬件低通滤波器造成检测滞后,所以提前一点点呗。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 6 天前 | 显示全部楼层
上面不是说了由于硬件低通滤波器造成检测滞后,所以提前一点点呗。
专治疑难杂症
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 08:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表