智能车制作

标题: xs128只有一个脉冲累加器,而电机闭环要两个编码器?大家都是怎么处理的? [打印本页]

作者: 永远的记忆    时间: 2016-4-25 20:58
标题: xs128只有一个脉冲累加器,而电机闭环要两个编码器?大家都是怎么处理的?
光电c车,用xs128当做主控板,电机闭环时加两个编码器,xs128只有一个脉冲累加器,大家都是怎么解决的?是不是外加个脉冲累加器???大神门都是怎么解决的,?????????

作者: aytc100    时间: 2016-4-25 21:19
换单片机
作者: 永远的记忆    时间: 2016-4-25 21:28
aytc100 发表于 2016-4-25 21:19
换单片机

大神,不换单片机不行吗?大神有没有其他好的方法

作者: aytc100    时间: 2016-4-25 21:32
永远的记忆 发表于 2016-4-25 21:28
大神,不换单片机不行吗?大神有没有其他好的方法

最简单的方法就是换单片机

作者: 永远的记忆    时间: 2016-4-25 21:52
aytc100 发表于 2016-4-25 21:32
最简单的方法就是换单片机

好吧,

作者: ZDT55    时间: 2016-4-25 22:17
可以用中断计数吧
作者: 李莹华    时间: 2016-4-25 23:35
直接用PT6,PT7两个捕捉脉冲计数不行吗?
作者: higuain1995    时间: 2016-4-26 11:38
加计数器
作者: aytc100    时间: 2016-4-26 12:37
ZDT55 发表于 2016-4-25 22:17
可以用中断计数吧

会反复进中断,其他程序的时效性没法保证

作者: aytc100    时间: 2016-4-26 12:37
李莹华 发表于 2016-4-25 23:35
直接用PT6,PT7两个捕捉脉冲计数不行吗?

只有一个pacat寄存器,从哪里输入都是一样的

作者: aytc100    时间: 2016-4-26 12:38
higuain1995 发表于 2016-4-26 11:38
加计数器

工程量和换单片机没区别

作者: 永远的记忆    时间: 2016-4-26 16:02
李莹华 发表于 2016-4-25 23:35
直接用PT6,PT7两个捕捉脉冲计数不行吗?

不清楚,我就知道有一个脉冲累加器,你是怎么处理的?

作者: 永远的记忆    时间: 2016-4-26 16:03
ZDT55 发表于 2016-4-25 22:17
可以用中断计数吧

不清楚,

作者: 永远的记忆    时间: 2016-4-26 16:04
higuain1995 发表于 2016-4-26 11:38
加计数器

加计数器不就是加脉冲累加器吗?怎么加,大神提点一下

作者: 永远的记忆    时间: 2016-4-26 16:05
aytc100 发表于 2016-4-26 12:37
只有一个pacat寄存器,从哪里输入都是一样的

恩恩,所以要外界一个脉冲累加器

作者: ZDT55    时间: 2016-4-26 19:49
aytc100 发表于 2016-4-26 12:37
会反复进中断,其他程序的时效性没法保证

多谢,我们一直用的中断,看来得改一下了
作者: ▲_important゜    时间: 2016-4-26 22:44
看以往的技术报告
作者: 波风    时间: 2016-4-27 08:24
一个编码器也可以上2.5+上了在想着怎么解决吧
作者: 李莹华    时间: 2016-4-27 11:39
永远的记忆 发表于 2016-4-26 16:02
不清楚,我就知道有一个脉冲累加器,你是怎么处理的?

我随便选了两个PT 口,然后捕捉编码器的脉冲,做的电磁直立,感觉没什么大问题啊。。。
作者: 永远的记忆    时间: 2016-4-27 13:21
李莹华 发表于 2016-4-27 11:39
我随便选了两个PT 口,然后捕捉编码器的脉冲,做的电磁直立,感觉没什么大问题啊。。。

666666,你没有外焊接脉冲累加器?

作者: 李莹华    时间: 2016-4-27 14:31
永远的记忆 发表于 2016-4-27 13:21
666666,你没有外焊接脉冲累加器?

没有的。

作者: 永远的记忆    时间: 2016-4-27 15:43
李莹华 发表于 2016-4-27 14:31
没有的。

那xs128,你编码器用脉冲累加器,陀螺仪也要用脉冲累加器,而xs128就一个,你怎么解决的?

作者: 李莹华    时间: 2016-4-27 21:18
永远的记忆 发表于 2016-4-27 15:43
那xs128,你编码器用脉冲累加器,陀螺仪也要用脉冲累加器,而xs128就一个,你怎么解决的?

陀螺仪要用脉冲累加吗?用AD吧?XS128 PT口具有捕捉功能,在用PE生成的底层函数里面定义一个变量,让它++,用来累加捕捉到的编码器脉冲个数。这样不就可以测速了么。

作者: 蓝翔一头驴    时间: 2016-4-29 08:20
aytc100 发表于 2016-4-26 12:37
只有一个pacat寄存器,从哪里输入都是一样的

你们 北科的论坛账号也是留传下来的吗 7000多个小时  6年前注册   666666666

作者: 葱葱哥    时间: 2016-4-29 10:43
采用外部计数芯片CD        好多 搞忘了
作者: 风生水起    时间: 2016-4-29 19:18
分时复用,50ms左轮用,50模式右轮用
作者: 永远的记忆    时间: 2016-4-29 21:34
风生水起 发表于 2016-4-29 19:18
分时复用,50ms左轮用,50模式右轮用

能不能让具体说一下

作者: 风生水起    时间: 2016-5-2 20:53
永远的记忆 发表于 2016-4-29 21:34
能不能让具体说一下

void CalSpeedError(void)
{
        static float fSpeedErrorTemp[5] = {0};
        static int8 Flag_Exchange = 0;
       
        switch(Flag_Exchange)
        {
                case 0:
                {
                        g_nLeftSpeed = (g_nLeftPWM >= 0? tpm_pulse_get(TPM2)-tpm_pulse_get(TPM2)));
                        tpm_pulse_clean (TPM2);
               
                        tpm_pulse_init(TPM2,TPM_CLKIN1,TPM_PS_1); //初始化 TPM2 (PE30)为脉冲累加,右编码器
                };break;
                case 1:
                {
                        g_nRighSpeed = (g_nRighPWM >= 0? tpm_pulse_get(TPM2):(-tpm_pulse_get(TPM2)));
                        tpm_pulse_clean (TPM2);
               
                        tpm_pulse_init(TPM2,TPM_CLKIN0,TPM_PS_1); //初始化 TPM2 (PB16)为脉冲累加,左编码器
               
                        fSpeedErrorTemp[4] = fSpeedErrorTemp[3];
                        fSpeedErrorTemp[3] = fSpeedErrorTemp[2];
                        fSpeedErrorTemp[2] = fSpeedErrorTemp[1];
                        fSpeedErrorTemp[1] = fSpeedErrorTemp[0];
                        fSpeedErrorTemp[0] = -(g_fExpectSpeed - ((g_nLeftSpeed + g_nRighSpeed)/2.0)*Ratio_Encoder);
                        g_fSpeedError = 0.5*fSpeedErrorTemp[0] + 0.2*fSpeedErrorTemp[1] + 0*fSpeedErrorTemp[2] + 0*fSpeedErrorTemp[3];       
                };break;
        }
       
       
        Flag_Exchange++; if(Flag_Exchange >= 2)Flag_Exchange = 0;
}


作者: 风生水起    时间: 2016-5-2 20:55
程序写的渣,将就看看
作者: 永远的记忆    时间: 2016-5-2 22:20
风生水起 发表于 2016-5-2 20:55
程序写的渣,将就看看

相对于我来说你这是大神了,谢谢了

作者: 孙建东    时间: 2016-5-3 05:28
可以设计一个逻辑电路,分时复用,实测可行,不影响效率。
作者: 永远的记忆    时间: 2016-5-3 18:18
孙建东 发表于 2016-5-3 05:28
可以设计一个逻辑电路,分时复用,实测可行,不影响效率。

设计逻辑电路??能具体点吗?

作者: MY三木    时间: 2016-5-3 21:33
DMA计数可以吗?

作者: 要相信,不放弃    时间: 2016-5-4 09:41
楼主问题解决了吗?用外部计数器还是?我们现在也在纠结
作者: 永远的记忆    时间: 2016-5-4 13:29
要相信,不放弃 发表于 2016-5-4 09:41
楼主问题解决了吗?用外部计数器还是?我们现在也在纠结

准备用外部的计数器
作者: higuain1995    时间: 2016-5-5 19:48
永远的记忆 发表于 2016-4-26 16:04
加计数器不就是加脉冲累加器吗?怎么加,大神提点一下

就是加外部计数器啊

作者: 木叶之火在燃烧    时间: 2016-5-22 17:15
用数据选择器
作者: ﹏獨家記憶    时间: 2016-5-22 17:21
用与非门芯片隔一段时间切换io口高低电平就行了

作者: 永远的记忆    时间: 2016-5-22 19:46
﹏獨家記憶 发表于 2016-5-22 17:21
用与非门芯片隔一段时间切换io口高低电平就行了

奥,已经用外接脉冲累加器了





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2