ba_wang_mao 发表于 2011-4-8 11:02:16

请教马老师:按照你教材上的方法,使用测频法测量高转速时,当被测齿盘为12齿时,测量的转速

1、由于需要测量频率比较高的转速,因此采用测频法测量。
2、使用T1计数
3、T0使用CTC模式,T0的定时时间=10ms。
   在T0中断服务程序中读取T1的读数。
4、设计一个队列,队列长度 = 100(保存100次读取的脉冲数,100 * 10ms = 1s),这样从队列中取出的脉冲数的累加,刚好是1秒钟的脉冲值。


5、当测速的齿盘=60齿时, 队列中的脉冲数全部累加,刚好等于转速值。

      即:转速值 = 1秒的脉冲累加 * 60秒 / 60齿   (转速误差±1rpm)
            

问题是:我现在的齿盘的齿数是12齿, 如果仍然使用1秒钟的队列保存最近1秒钟的脉冲数的话,

       即:
         转速 = 1秒的脉冲累加 * 60秒 / 12齿

          由于 :(1)、1秒钟的脉冲累加是个整数。
               (2)、60/12 = 5

                因此计算的转速值的尾数只能是0或5,尾数不会出现(1,2,3,4,6,7,8,9)

      虽然我可以使用5秒钟的队列来累加脉冲个数,但是由于时间太长,计算得到的实际转速的“实时性”太差,这种想法在实际应用中不好。


   请问:
            如何解决测频法,计算齿盘为12齿的转速的方法呢?

bolimao101 发表于 2011-4-8 12:28:59

说说我的应用吧,实践证明,频率较低小于2Khz使用测周期精度较高。
测频率仅仅适合频率较高才行。你的应用齿盘为12±1rpm齿,在60rpm每秒及时出一个读数精度很低的,精度不会优于1/12(8.3%)的,达不到±1rpm要求。建议使用测量周期法。

zhaoghsea 发表于 2011-4-8 13:12:17

你测转速的思路有问题,你1s去数脉冲个数,肯定存在数得的个数和实际偏差一个的情况。假如1s你转n转,那你相当于测n*60个脉冲和n*12个脉冲
精度就是1除以他,齿熟少时明显精度很差,要么增大n(增加测量时间),要么想办法消除1个的误差
即周期法来测频率,保证测量脉冲是完整的,但是低频是精度也有问题
其实你应该用等精度测频法,啥都解决。

ba_wang_mao 发表于 2011-4-11 11:59:42

高频的时候,采用测频法始终存在±1个脉冲的误差。

      如果采样频率=1S,则假如测速齿盘=12齿时,频率转换成转速

                转速 = 1s采集的脉冲 * 60          1s采集的脉冲 * 60
                     -----------------=    ----------------------   =1s采集的脉冲 * 5
                            测速齿盘                  12


         显然增大了误差,即分辨率=5.

         
   结论:测速时,使用测频法是无法得到准确的“转速值”的。
          齿盘=12时,虽然增加采样时间=5S时,可以修正分辨率从5到1,但是也影响了转速的“实时性”。




    请问:马老师,如果我采用AVR的捕获方式,可否彻底解决低频率和高频率的误差问题呢?
       (测频范围达到0.1HZ ---> 15000HZ,而且误差非常小呢?)


         (1)、低频时,扩展定时器的溢出次数,可以测量0.1HZ的频率,但是不知道在齿盘=12齿时,转速误差是否会小于0.5rpm呢?
         (2)、高频时,增大采样次数,可以测量15000HZ的频率,但是不知道在齿盘=12齿时,      转速误差是否会小于0.5rpm呢?

fsclub 发表于 2011-4-11 13:44:14

用捕捉功能ICP!?

machao 发表于 2011-4-12 21:21:06

1.先确定测试间隔,你说是1秒。那么1秒内用测周法也只能测0.5Hz频率,再低的频率根本测不出,需要增加时间的,你先介绍如何在1秒内测出0.1Hz的频率?

2。转速误差为0.5rpm定义的不合理。因为这个是绝对误差,意味着1分内为6个齿的误差,一秒内为0.1个齿,那么达到这个精度至少需要10秒的测量周期!

3。所以要误差小的话,齿数就要多。比如120齿,那么1秒内误差1的话,正好是0.5rpm。12齿的,就需要10秒的测试间隔。要么增加齿数,要么增加测量时间的长度。

=================================================
测量频率,高频采用测频法,低频采用测周法,是指测量精度高,误差小。但不是指什么频率都能测的出。

0.1Hz的频率,你在1秒内如何测的出?测量都测不出,还谈什么误差?

ba_wang_mao 发表于 2011-4-13 09:31:41

回复【5楼】machao
1.先确定测试间隔,你说是1秒。那么1秒内用测周法也只能测0.5hz频率,再低的频率根本测不出,需要增加时间的,你先介绍如何在1秒内测出0.1hz的频率?
2。转速误差为0.5rpm定义的不合理。因为这个是绝对误差,意味着1分内为6个齿的误差,一秒内为0.1个齿,那么达到这个精度至少需要10秒的测量周期!
3。所以要误差小的话,齿数就要多。比如120齿,那么1秒内误差1的话,正好是0.5rpm。12齿的,就需要10秒的测试间隔。要么增加齿数,要么增加测量时间的长度。
=================================================
测量频率,高频采用测频法,低频采用测周法,是指测量精度高,误差小。但不是指什么频率都能测的出。
0.1hz的频率,你在1秒内如何测的出?测量都测不出,还谈什么误差?

-----------------------------------------------------------------------


      马老师:
         我是说:当使用测频率法时,由于始终存在±1个脉冲的误差,因此只能采取如下方法尽量将误差控制在±1之内。   
            方法1:增加测速时间(从1S增加到5S,即可将误差控制在±1之内)
            方法2:增加齿盘齿数
            
               方法1虽然可行,但是由于测速时间太长(5S),导致“实时性”太差,如果采集的“转速”仅仅用于监视还可以
                   说得过去,但是5S的测速值进行“PID调节控制系统”,可能不敢使用。

               方法二,一般不可行,你不可能要求用户将齿盘从12齿更换成60齿或者120齿吧。

   其实我是想问:
          使用AVR单片机提供的捕获模式,使用外部12M晶振,测频的精度如何呢(包括低频和高频)?
            
               (1)、当使用你教材上的方法,低频时,增加定时器的溢出次数,能否测到0.5HZ,同时精度能否达到0.001HZ?
               (2)、当使用你教材上的方法,高频时,增加捕获的脉冲个数,能否测到20000HZ,同时精度达到0.001HZ?
页: [1]
查看完整版本: 请教马老师:按照你教材上的方法,使用测频法测量高转速时,当被测齿盘为12齿时,测量的转速