搜索
bottom↓
回复: 10

如何实时测转速?对每个信号周期(每个高+低电平5ms----500ms)都要测量,测量完毕(在一个周

[复制链接]

出0入0汤圆

发表于 2010-4-12 09:45:08 | 显示全部楼层 |阅读模式
如何实时测转速?对每个信号周期(每个高+低电平5ms----500ms)都要测量,测量完毕(在一个周期内)马上做出处理,请大家给予指点。不能通过定时时间内计算脉冲个数来测量,那样太慢,下面的程序为什么不能够测量?

转速问题if(T0IF)   //time0 200us中断0.2ms
{
   T0IF=0;
   TMR0=53;               
    if(!in1)//发动机开始旋转RA2口平时转速为0的时候一直为高,转速以来马上变低
      {     
                        
                        if(gaodi) {  tlow++;} //低 电平时间长
                        else  
   
                            {
                                      
                              if (thigh>=250) //1200转以下设标志位speed1=1                              {
                             tlow=0;
                             thigh=0;
                             speed1=1;led2=0;
                               }
                             else  if ((thigh>=130) &&   (thigh<250))//1200--2400转以下设标志位speed2=1                               {
                              tlow=0;
                              thigh=0;
                             speed2=1;   led2=1;
                                }
                            else  //2400转以上 设标志位speed3=1
                                {
                              //tlow=0;
                              //thigh=0;   
                              speed3=1; led2=0;
                                }
                            } //上次为高的标志   
                            gaodi=0;
                       }  
                 else  
                        {
                           if(!gaodi)
                           {
                                  thigh++;  // 高 电平时间长

                           }
                            gaodi=1;        
                         }

出0入0汤圆

发表于 2010-4-14 12:34:26 | 显示全部楼层
换个有CCP的芯片吧,每个周期换算一次转速.

出0入0汤圆

 楼主| 发表于 2010-4-14 14:25:14 | 显示全部楼层
回复【1楼】headwolf_83
-----------------------------------------------------------------------

ccp的我知道怎么做

出0入0汤圆

发表于 2010-4-14 14:47:58 | 显示全部楼层
不带CCP或者这类的捕捉的芯片,那就用外部中断,也能实现类似的功能。

出0入0汤圆

发表于 2010-4-14 22:19:49 | 显示全部楼层
使用一个带电平变化能触发中断功能的引脚和一个定时器,来实现软件“捕获”功能。

如果使用8位定时器,则定时器的溢出中断服务程序中将一个16位变量加1;如果是16位定时器,则使用8位的变量——如此联合构成“24位”的定时器。

引脚的电平变化中断服务程序中,将“24位”的定时器值保存(程序中维护两个定时器的值:“高电平时间值”一个、“低电平时间值”一个)并将其清零准备下一次“捕获”。

“捕获”发生时,如果是正跳变,则用当前“24位”定时器的值来更新“低电平时间值”;如果是负跳变,则更新“高电平时间值”。由“低电平时间值”与“高电平时间值”相加,得到外部脉冲信号的“实时”周期——这样的好处是,每周期可以计算两次,缺点是程序稍显复杂、运算量偏大,适合于外部信号的频率不很快、其高低电平宽度大致相当的情况。

如果是使用霍尔器件等情况,由于一个周期内,高低电平时间有显著差异,可以每周期只计算一次,可以在正跳变之后、也可以在负跳变之后,根据脉冲信号的高低电平时间长短来选择。

出0入0汤圆

发表于 2010-4-15 07:45:11 | 显示全部楼层
set a port to interrupt-on-change and a timer interrupt.

once the ioc is triggered, reset the timer; and wait for the next ioc to trigger. so you know the duration of each cycle.

出0入0汤圆

发表于 2010-4-15 09:12:46 | 显示全部楼层
定时器,输入捕捉,中断

出0入0汤圆

 楼主| 发表于 2010-4-15 13:22:31 | 显示全部楼层
4楼讲得很好、但太复杂了,使用16位定时器

出0入0汤圆

发表于 2010-4-16 11:09:22 | 显示全部楼层
在结构上多动一下脑筋,使用格雷码可以很好的解决问题。就是在快也可以。慢速同样可以。
在一定速度范围内,不存在时间的问题。

出0入0汤圆

 楼主| 发表于 2010-4-16 11:37:01 | 显示全部楼层
回复【8楼】sagetom
-----------------------------------------------------------------------

格雷码高深哦
if(T0IF)   //time0 200us中断0.2ms  
{  
   T0IF=0;  
   TMR0=53;               
    if(!in1)//发动机开始旋转RA2口平时转速为0的时候一直为高,转速以来马上变低  
      {      
                        
                        if(gaodi) {  tlow++;} //低 电平时间长
                        else   
     
                            {  
                                       
                              if (thigh>=250) //1200转以下设标志位speed1=1                              {  
                             tlow=0;  
                             thigh=0;  
                             speed1=1;  
                               } ,,,,,,,,,,,,,,,,,,,,
请问这样测量是否正确?好像程序没怎么运行

出0入0汤圆

发表于 2010-4-22 17:01:26 | 显示全部楼层
回复【7楼】zxcv12345
4楼讲得很好、但太复杂了,使用16位定时器
-----------------------------------------------------------------------

你能保证500ms的周期中,16位的定时器不会溢出么?

我想说的是,我保证它会溢出。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 11:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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