打印

哪位用过eCAP测霍尔信号的频率?

[复制链接]
3901|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
不锈钢铁|  楼主 | 2012-9-12 20:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我最近在用TI的DSP芯片,型号是TMS320F2808,打算用里面的eCAP模块测直流无刷电机的霍尔信号频率,以此来测速。
我先用一块我做的板子发送PWM波,然后用eCAP测频率,测出来的没有问题,用信号发生器发的PWM波测起来也很准。。。但是当我接上电机后,问题就来了,无论电机的转速是多少ecap测出来的频率都是25K。。。用示波器看霍尔信号才50Hz....我有用自己做的板子发50Hz的PWM,测的也没问题。。。总之就是一测霍尔的信号就固定的是25K了。。。霍尔信号和自己发的信号都是5V的方波。
我测试的思路是用CAP2和CAP4都是下降沿触发,CAP1,CAP3是上升沿触发 。然后在CEVT4的中断里用CAP4减去CAP2就能得到一个波的时间了,然后算频率
eCAP设置如下:
   ECap2Regs.ECEINT.all = 0x0000;            
   ECap2Regs.ECCLR.all = 0xFFFF;                    ECap2Regs.ECCTL1.bit.CAPLDEN = 0;            ECap2Regs.ECCTL2.bit.TSCTRSTOP = 0;           
      ECap2Regs.ECCTL2.bit.CONT_ONESHT = 0;         ECap2Regs.ECCTL2.bit.STOP_WRAP = 3;        // Stop at 4 events
   ECap2Regs.ECCTL1.bit.CAP1POL = 1;            ECap2Regs.ECCTL1.bit.CAP2POL = 0;            ECap2Regs.ECCTL1.bit.CAP3POL = 1;            ECap2Regs.ECCTL1.bit.CAP4POL = 0;             ECap2Regs.ECCTL1.bit.CTRRST1 = 0;          // Difference operation         
   ECap2Regs.ECCTL1.bit.CTRRST2 = 0;          // Difference operation         
   ECap2Regs.ECCTL1.bit.CTRRST3 = 0;          // Difference operation         
   ECap2Regs.ECCTL1.bit.CTRRST4 = 1;          // Difference operation         
   ECap2Regs.ECCTL2.bit.SYNCI_EN = 0;         // Enable sync in
   ECap2Regs.ECCTL2.bit.SYNCO_SEL = 2;        // Pass through
   ECap2Regs.ECCTL1.bit.CAPLDEN = 1;          // Enable capture units
   ECap2Regs.ECCTL2.bit.TSCTRSTOP = 1;        // Start Counter
   ECap2Regs.ECCTL1.bit.CAPLDEN = 1;          ECap2Regs.ECEINT.bit.CEVT4 = 1;            // 4 events = interrupt
CAP4的中断函数如下:
interrupt void ecap_test_isr(void)
{
Uint32 aa1=0,aa2=0,aa3=0;
   if(ECap2Regs.CAP4 > ECap2Regs.CAP2)
   {
     aa1= ECap2Regs.CAP4;
     aa2= ECap2Regs.CAP2;
     aa3=aa1-aa2;
     speed[ECap1PassCount]=aa3;
     aa3=0;
     ECap1PassCount++;     
   }
if(ECap1PassCount==100)
{
  ECap1PassCount=0;   
}
   ECap2Regs.ECCLR.bit.CEVT4 = 1;
   ECap2Regs.ECCLR.bit.INT = 1;
   PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
}

相关下载

相关帖子

沙发
不锈钢铁|  楼主 | 2012-9-12 21:05 | 只看该作者
接上电机运行的时候,CAP4-CAP2一直等于4000。。。蛋疼啊。。。

使用特权

评论回复
板凳
figo20042005| | 2012-9-12 22:11 | 只看该作者
是不是你用的驱动电机的载波PWM为25K,然后霍尔口和电机驱动口连在一起来了

使用特权

评论回复
地板
不锈钢铁|  楼主 | 2012-9-12 23:47 | 只看该作者
3# figo20042005 我示波器看了霍尔到板子的波形,就是50HZ。。。。

使用特权

评论回复
5
llm110| | 2014-5-7 13:00 | 只看该作者
ECap2Regs.ECCTL1.bit.CTRRST4 = 1;          // Difference operation         
这个等于1有问题吧?

使用特权

评论回复
6
596142041| | 2014-8-21 07:48 | 只看该作者
楼主问题解决没有呢

使用特权

评论回复
7
445406690| | 2014-11-20 10:34 | 只看该作者
你好,请问你捕获霍尔信号测速,接驱动器捕获频率不对的问题怎么解决的,我qq445406690,交流下,谢谢

使用特权

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

本版积分规则

个人签名:小鸟快跑

31

主题

730

帖子

5

粉丝