打印
[DSP编程]

请问霍尔传感器是如何获取无刷电机的速度的?下面是程序代码。

[复制链接]
1467|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dcqzx|  楼主 | 2015-8-18 21:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问霍尔传感器是如何获取无刷电机的速度的?下面是程序代码。
hall_change_time_sum+=isr_time_inc;
                hall_change_time_sum-=hall_change_time[hall_change_time_index];
                hall_change_time[hall_change_time_index]=isr_time_inc;
                isr_time_inc=0;
                hall_change_time_index++;
                hall_change_time_index &=0x3;
                hall_change_time_ave=hall_change_time_sum>>2;

                speed_tmp = ((long)200000)/hall_change_time_ave;
                system.now_speed = speed_tmp;

                speed_no_change_inc=0;
          }
          else
          {
                speed_no_change_inc++;
                if(speed_no_change_inc>1000)
                        {
                        speed_no_change_inc=0;
                        system.now_speed=0;
                        }
          }

        if(IsrTicker&0xff==0xff)
                {
                pid1_spd.Ref = system.speed_close_loop;
                pid1_spd.Fdb = system.now_speed*3;
                pid1_spd.calc(&pid1_spd);
                }

相关帖子

沙发
zhangmangui| | 2015-8-22 23:22 | 只看该作者
代码有些乱    我自己的思路   
霍尔传感器就是电机转动一周来一个脉冲      采集速度  
也就是单位时间内计算脉冲的个数   

使用特权

评论回复
板凳
dcqzx|  楼主 | 2015-8-24 15:18 | 只看该作者
zhangmangui 发表于 2015-8-22 23:22
代码有些乱    我自己的思路   
霍尔传感器就是电机转动一周来一个脉冲      采集速度  
也就是单位时间内 ...

speed_tmp = ((long)200000)/hall_change_time_ave;  其中200000代表什么呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

10

帖子

0

粉丝