注册 登录
查看: 8593|回复: 49

【KL26】有几路脉冲计数器啊, 双电机怎么测速呢??

[复制链接]
发表于 2014-3-27 14:07:56 | 显示全部楼层 |阅读模式
lptmr 和 TPM 分别测一个吗 还是、、、、、

本帖被以下淘专辑推荐:

回复

使用道具 举报

发表于 2014-3-27 14:30:14 | 显示全部楼层
TPM 有两个脉冲输入口TPM_CLKINn,两个可以选择不同TPMn,或者共用同一个TPM。如果用同一个TPM模块的话,那就需要分时复用。如果两个都配置到不同的TPMn上,那么可以同时一起计数。
LPTMR 有一个,有两个引脚可选(山外哥的A19用作晶振,实际上只有一个管脚C5可用)。

TPM_CLKINn 管脚,可以看这里的代码:
\Board\inc\FIRE_PORT_cfg.h  (打开看看,很容易知道如何配置的)

KL26 没有正交解码功能,因此如果需要测正反转,那么就得外部来测。有的人说可以用 D触发器 上升沿 来触发计数,自己搭个电路来。也有的人用 外部正交解码芯片(百度搜索一下:正交解码 芯片,很容易找到的,例如HCTL-2032)。


D触发器的原理图(自己分析一下时序就知道,B相高电平时,由A相电平可知道旋转方向):


我是根据 输出的PWM来区分是正转还是反转。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2014-3-27 14:14:48 | 显示全部楼层
顶一顶,顶一顶
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-27 15:03:56 | 显示全部楼层
丁玉 发表于 2014-3-27 14:30
TPM 有两个,两个可以选择不同TPM,或者共用同一个TPM。如果用同一个TPM模块的话,那就需要分时复用。
LPT ...

1》.“TPM有两个,” ?不是有三个TPM吗,一个给电机,一个给舵机,一个给测速,这样测速就要使用同一个TPM模块了。
2》 分时复用的话,我们也考虑过,说 速度快了 估计误差会比较大。
3》 小玉童靴,你的意思是不是 TPM测一个,然后lptmr测一个
回复 支持 反对

使用道具 举报

发表于 2014-3-27 15:07:43 | 显示全部楼层
雪瑞鸟鸣 发表于 2014-3-27 15:03
1》.“TPM有两个,” ?不是有三个TPM吗,一个给电机,一个给舵机,一个给测速,这样测速就要使用同一个T ...

用于脉冲计数的只有两个,TPM1和TPM2,那个TPM0是不能用于脉冲计数,可以用于PWM输出
回复 支持 反对

使用道具 举报

发表于 2014-3-27 15:08:22 | 显示全部楼层
雪瑞鸟鸣 发表于 2014-3-27 15:03
1》.“TPM有两个,” ?不是有三个TPM吗,一个给电机,一个给舵机,一个给测速,这样测速就要使用同一个T ...

可以的啊,TPM一个,LPTMR 一个
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-27 15:17:58 | 显示全部楼层
丁玉 发表于 2014-3-27 15:08
可以的啊,TPM一个,LPTMR 一个

谢谢 丁丁童鞋
回复 支持 反对

使用道具 举报

发表于 2014-5-24 00:54:31 | 显示全部楼层
雪瑞鸟鸣 发表于 2014-3-27 15:17
谢谢 丁丁童鞋

走过路过,不能错过

丁丁前辈,小白路过有好些问题要想哭了

1,既然可以在TPM_CLKIN 那个引脚输入,TPM1.TPM2分配的四个引脚是做什么用的?

2,编码器 有A OUT, B OUT,这两个输出脉冲是一样的,,,,,为什么要用两个

3,编码器是要累加之后才能算速度的是吧
  pit_delay_ms(PIT0,1000);                                //利用 PIT 延时时间,LPTMR模块进行 计算,累加 FTM 产生的PWM脉冲

如果这个编码器累加是在中断里的,那这个中断是不是要很长时间。如果不是这样,那怎么解决这个速度采集问题?
回复 支持 反对

使用道具 举报

发表于 2014-5-24 16:51:24 | 显示全部楼层
抢沙发~给哥们顶一个
回复 支持 反对

使用道具 举报

发表于 2014-5-25 22:54:18 | 显示全部楼层
同学你好,你能发一份KL26的示例程序给我吗,我在这上面下的都有错,都不知道怎么改了,我只要能用的示例程序就好了,谢谢啊。我的邮箱489611082@qq.com强烈支持,非常感谢哥们强烈支持,非常感谢哥们强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-5-26 18:57:35 | 显示全部楼层
哥们,你的kl26pwm 驱动能力怎么样?
回复 支持 反对

使用道具 举报

发表于 2014-6-5 19:35:03 | 显示全部楼层
用外部计数模块,采集连续8个口的高低电平,能直接采集吗
回复 支持 反对

使用道具 举报

发表于 2014-6-5 21:32:11 | 显示全部楼层
山外KL26 代码 与 山外K60 代码 接口基本类似,大家可以看着 K60 的视频 来学习 KL。

KL26 和 K60 的主要差别:
频率不同
DMA通道数目不同:KL26 有 4 通道 、 K60 有 16通道
IO中断不同:KL26 的 A、C、D端口 可支持 IO中断,K60 全部IO都支持中断
PORT端口属性不一样:KL26 不支持开漏输出、无源滤波等(还有其他的,请查表)
PIT定时器:KL26 有 两个 PIT 定时器,而且 共用相同的 中断号( VECTOR_038)

山外KL26 的后续代码统一发布到如下网址:http://vcan123.com/forum.php?mod ... on=view&ctid=26
回复 支持 反对

使用道具 举报

发表于 2014-6-9 16:04:18 | 显示全部楼层
void system_init(void)       //系统初始化
{   DisableInterrupts;      //关总中断  防止系统初始化被打断
   //DisableInterrupts
   // led_init(LED_MAX);            //初始化LED端口
    LCD5110_init();                 //5110液晶初始化
   /******ADC初始化*************/
    adc_init(ADC0_DM0);        // PTE21        //ADC初始化
    adc_init(ADC0_DM1);        // PTE17        //ADC初始化
    adc_init(ADC0_DM2);        // PTE19       //ADC初始化
    adc_init(ADC0_DM3);        // PTE23       //ADC初始化
    adc_init(ADC0_DP3);        // PTE22       //ADC初始化
    adc_init(ADC0_SE1);        // PTE16       //ADC初始化
     /******电机初始化*************/  
   tpm_pwm_init(TPM0, TPM_CH2,1000,0);        //初始化 TPM PWM ,使用 TPM0_CH3,频率为200k ,占空比为 30 / TPM0_PRECISON
                                                    // fire_port_cfg.h 里 配置 TPM0_CH3 对应为 PTE29、
   tpm_pwm_init(TPM0, TPM_CH3,1000,0);        //初始化 TPM PWM ,使用 TPM0_CH3,频率为200k ,占空比为 30 / TPM0_PRECISON
                                                    // fire_port_cfg.h 里 配置 TPM0_CH3 对应为 PTE30、
   tpm_pwm_init(TPM0, TPM_CH0,1000,0);        //初始化 TPM PWM ,使用 TPM0_CH3,频率为200k ,占空比为 30 / TPM0_PRECISON
                                                    // fire_port_cfg.h 里 配置 TPM0_CH3 对应为 PTE24、
   tpm_pwm_init(TPM0, TPM_CH1,1000,0);        //初始化 TPM PWM ,使用 TPM0_CH3,频率为200k ,占空比为 30 / TPM0_PRECISON
                                                     // fire_port_cfg.h 里 配置 TPM0_CH3 对应为 PTE25、
    /*********舵机初始化*******************/
   tpm_pwm_init(TPM1,TPM_CH0,50,355 );      //转向舵机 50HZ PTE20                 355+_     415    295                             

    /******编码器初始化*************/  
  
    tpm_pulse_init(TPM2,TPM_CLKIN1,TPM_PS_1); //初始化 TPM2 为脉冲累加,输入管脚为 TPM_CLKIN0_PIN ,分频系数为 1
     //tpm_pulse_init(TPM2,TPM_CLKIN1,TPM_PS_1); //初始化 TPM2 为脉冲累加,输入管脚为 TPM_CLKIN0_PIN ,分频系数为 1
     lptmr_pulse_init(LPT0_ALT2, 0xFFFF, LPT_Rising);         //初始化脉冲计数器,用LPT0_ALT1,即PTA19输入,每隔INT_COUNT产生中断(需要开中断才能产生中断),上升沿触发

    led_init(LED0);                                         //初始化LED0,PIT0中断用到LED0
    EnableInterrupts;       //开总中断
    pit_init_ms(PIT0, 2);                                   //初始化PIT0,定时时间为: 2ms
    set_vector_handler(PIT_VECTORn ,PIT_IRQHandler);       //设置PIT0的中断服务函数为 PIT0_IRQHandler
    enable_irq (PIT_IRQn);                                 //使能PIT0中断
  
}

/*********************** PWM **************************/

#define TPM0_PRECISON 100u     //定义占空比精度,100即精度为1%,1000u则精度为0.1%,用于占空比 duty 形参传入,即占空比为 duty/TPM_PRECISON
#define TPM1_PRECISON 10000u     //定义占空比精度,100即精度为1%,1000u则精度为0.1%,用于占空比 duty 形参传入,即占空比为 duty/TPM_PRECISON
#define TPM2_PRECISON 100u     //定义占空比精度,100即精度为1%,1000u则精度为0.1%,用于占空比 duty 形参传入,即占空比为 duty/TPM_PRECISON
我的ltpm和tpm的定义有问题么?怎么一个记出来的是个位数,一个记得是百位数啊 ....3       100duo
回复 支持 反对

使用道具 举报

发表于 2014-6-9 20:33:52 | 显示全部楼层
sxy88665360 发表于 2014-6-9 16:04
void system_init(void)       //系统初始化
{   DisableInterrupts;      //关总中断  防止系统初始化被 ...

好像kl26的tpm只有2路,m0,m1,而且如果你是那样的情况的话,也许你要进行分时复用就可以了
回复 支持 反对

使用道具 举报

发表于 2014-6-10 07:58:46 | 显示全部楼层
920195713 发表于 2014-6-9 20:33
好像kl26的tpm只有2路,m0,m1,而且如果你是那样的情况的话,也许你要进行分时复用就可以了

分时复用是不是,一毫秒检测这一通道一毫秒检测那一通道啊
回复 支持 反对

使用道具 举报

发表于 2014-11-12 22:27:24 | 显示全部楼层
sxy88665360 发表于 2014-6-10 07:58
分时复用是不是,一毫秒检测这一通道一毫秒检测那一通道啊

分时复用是可以的。


回复 支持 反对

使用道具 举报

发表于 2014-11-25 01:10:26 | 显示全部楼层
一个lptnr搞两路,亲测中
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-11-25 17:51:37 | 显示全部楼层
笨小哒 发表于 2014-5-25 22:54
同学你好,你能发一份KL26的示例程序给我吗,我在这上面下的都有错,都不知道怎么改了,我只要能用的示例程 ...

山外不是有例程么?
找找看
你会找到的
回复 支持 反对

使用道具 举报

发表于 2014-12-2 18:25:08 来自手机 | 显示全部楼层
TPM2中的TPM_CLKIN0对应那个管脚啊
回复 支持 反对

使用道具 举报

发表于 2014-12-2 19:06:21 | 显示全部楼层
755850063@qq.co 发表于 2014-12-2 18:25
TPM2中的TPM_CLKIN0对应那个管脚啊

看管脚复用配置头文件。
回复 支持 反对

使用道具 举报

发表于 2014-12-4 12:45:32 | 显示全部楼层
邴和 发表于 2014-12-2 19:06
看管脚复用配置头文件。

lptmr使用PTA19计脉冲  不会和晶振冲突么?
回复 支持 反对

使用道具 举报

发表于 2014-12-4 13:13:35 | 显示全部楼层
山外メ雲ジ 发表于 2014-11-12 22:27
分时复用是可以的。

山外哥  直立光电的两个编码器应该接单片机什么引脚呀  可以详细解答一下么 新手第一次参加
回复 支持 反对

使用道具 举报

发表于 2014-12-4 13:15:35 | 显示全部楼层
920195713 发表于 1402317232
好像kl26的tpm只有2路,m0,m1,而且如果你是那样的情况的话,也许你要进行分时复用就可以了
是3路TPM,2个脉冲计数入口 。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2014-12-4 13:25:31 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-4 13:15
是3路TPM,2个脉冲计数入口 。

我的单片机是kl26  直立车  电机正反转要怎么测 该接单片机哪几个引脚呀
回复 支持 反对

使用道具 举报

发表于 2014-12-4 13:27:36 | 显示全部楼层
a295656031 发表于 1417670731
我的单片机是kl26  直立车  电机正反转要怎么测 该接单片机哪几个引脚呀
要测正反转,看这里淘宝描述:
http://item.taobao.com/item.htm?spm=a1z10.1.w4004-8523049655.8.QB021F&id=41243840665

接什么管脚,你看懂一下脉冲计数的例程,就应该知道怎么接啊。就是A相管脚接入脉冲技术的管脚,B相管脚看上面淘宝描述。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2014-12-4 13:34:59 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-4 13:27
要测正反转,看这里淘宝描述:
http://item.taobao.com/item.htm?spm=a1z10.1.w4004-8523049655.8.QB021F& ...

好的 谢谢   
回复 支持 反对

使用道具 举报

发表于 2014-12-4 13:48:28 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-4 13:27
要测正反转,看这里淘宝描述:
http://item.taobao.com/item.htm?spm=a1z10.1.w4004-8523049655.8.QB021F& ...

我们用的是这个编码器   请问一下该怎么弄

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-12-4 13:49:26 | 显示全部楼层
a295656031 发表于 1417672108
我们用的是这个编码器   请问一下该怎么弄
IO口判断方向就好。
具体用法,你联系卖家。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2014-12-4 14:07:25 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-4 13:49
IO口判断方向就好。
具体用法,你联系卖家。

那这个A相接TPM-CLKIN0引脚可以么 B相连接普通I/O口
回复 支持 反对

使用道具 举报

发表于 2014-12-4 15:07:50 | 显示全部楼层
认真的学习中。。。。
回复 支持 反对

使用道具 举报

发表于 2014-12-18 16:45:21 | 显示全部楼层
山外的电机驱动板给KL26用时,若使用小底板,无法脉冲计数啊
回复 支持 反对

使用道具 举报

发表于 2014-12-21 15:33:12 | 显示全部楼层
Greece 发表于 2014-12-4 12:45
lptmr使用PTA19计脉冲  不会和晶振冲突么?

会啊
所以建议不用
回复 支持 反对

使用道具 举报

发表于 2015-1-23 20:11:09 | 显示全部楼层
还需学习啊·····
回复 支持 反对

使用道具 举报

发表于 2015-1-24 16:42:31 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-4 13:27
要测正反转,看这里淘宝描述:
http://item.taobao.com/item.htm?spm=a1z10.1.w4004-8523049655.8.QB021F& ...

淘宝上描述A相还要接D触发器的输入吗?  你说A相接脉冲计数,B相接D触发器,  A相同时接脉冲计数和 D触发器吗?
回复 支持 反对

使用道具 举报

发表于 2015-1-24 16:46:30 | 显示全部楼层
jixian79 发表于 1422088951
淘宝上描述A相还要接D触发器的输入吗?  你说A相接脉冲计数,B相接D触发器,  A相同时接脉冲计数和 D触发器吗?
A/B相都要接D触发器!!

D触发器的输出为方向信号。
A相本身就是脉冲信号,接脉冲计数管脚
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2015-2-9 11:25:57 | 显示全部楼层
我们学长去年参加比赛用的是KL26,但是他们没有D触发器,也没有用正交解码,而是直接通过电机输出电压的正负来判断电机的转动方向,例如:如果设定电压为正位正转,那么电压为负为反转。不过去年他们调的并不好,所以我也不确定这个方法有什么弊端,不知道能不能用,求指教,求分析,求讲解。。。菜鸟报到
回复 支持 反对

使用道具 举报

发表于 2015-2-9 11:27:56 | 显示全部楼层
花满楼 发表于 2015-2-9 11:25
我们学长去年参加比赛用的是KL26,但是他们没有D触发器,也没有用正交解码,而是直接通过电机输出电压的正 ...

感觉会容易烧单片机~~电机的电源很不稳定的。
回复 支持 反对

使用道具 举报

发表于 2015-3-27 19:26:39 | 显示全部楼层
山外メ雲ジ 发表于 2015-1-24 16:46
A/B相都要接D触发器!!

D触发器的输出为方向信号。

是不是a相一端接d触发器 再分一路接kl26的计数端  ,然后d触发器的q端接单片机的普通io口呢
回复 支持 反对

使用道具 举报

发表于 2015-3-27 19:46:46 | 显示全部楼层
龙象 发表于 2015-3-27 19:26
是不是a相一端接d触发器 再分一路接kl26的计数端  ,然后d触发器的q端接单片机的普通io口呢

对,b相那段也要接d触发器。
回复 支持 反对

使用道具 举报

发表于 2015-5-29 17:46:45 | 显示全部楼层
丁玉 发表于 2014-3-27 14:30
TPM 有两个脉冲输入口TPM_CLKINn,两个可以选择不同TPMn,或者共用同一个TPM。如果用同一个TPM模块的话,那 ...

这个方案可行吗?
可以单独做出来一个模块吗?
回复 支持 反对

使用道具 举报

发表于 2015-11-28 16:05:29 | 显示全部楼层
MYCH206有什么作用,怎么用啊
回复 支持 反对

使用道具 举报

发表于 2015-12-5 14:04:27 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2015-12-25 21:44:38 | 显示全部楼层
顶顶 学习了
回复 支持 反对

使用道具 举报

发表于 2015-12-31 19:16:50 | 显示全部楼层
问一下,那我已经用了PTA19怎么办,可以改晶振的管脚吗
回复 支持 反对

使用道具 举报

发表于 2015-12-31 19:22:36 | 显示全部楼层
山外メ雲ジ 发表于 2015-3-27 19:46
对,b相那段也要接d触发器。

我想问一下,那我已经用了PTA19怎么办,可以改晶振的管脚吗
回复 支持 反对

使用道具 举报

发表于 2015-12-31 23:18:35 | 显示全部楼层
binglabi 发表于 2015-12-31 19:22
我想问一下,那我已经用了PTA19怎么办,可以改晶振的管脚吗

我们的核心板,a19可以用作脉冲技术
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2016-1-4 12:07:57 | 显示全部楼层
亲测,可以的,A19可以的
回复 支持 反对

使用道具 举报

发表于 2016-5-20 18:26:56 | 显示全部楼层
可以看一下你们的编码器部分的程序么,为什么我们的加上编码器之后就不会正反转了
回复 支持 反对

使用道具 举报

发表于 2016-7-5 14:36:09 | 显示全部楼层
KL26有DMA计数吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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