mac_arthur 发表于 2009-4-7 17:25:50

请教傻孩子。关于使用欧姆龙E6B2-CWZ6C增量式光电旋转编码器测量速度。

近来研究电子皮带秤,需要用欧姆龙E6B2-CWZ6C来测量速度,但这方面知识很匮乏,有几个问题

1.编码器的电压是 DC 5~24V,但是没有给出A,B,Z三相的输入电压,是否需要放大电路处理信号,还是直接接DC 5V,输出就是5V,可以直接进单片机?

2.是否必须需要光电隔离和四倍频电路?如果只是为了提高精度,可否选择高分辨率的编码器来简化设计,如选择2000P/R的型号?

3.编码器的计数程序和硬件接口如何设计?

4.计数的值如何转换成线速度,我看论坛上大多是转换秤角速度。如果有相关的电路图和源码就更好了。

初学硬件,就碰到这么个课题,很是晕。。。。

Gorgon_Meducer 发表于 2009-4-7 20:10:40

1、是的,可以直接进单片机。
2、不需要光欧隔离,四倍频单片机自己就可以实现。
3、用两个外中断
4、线速度嘛……单位时间记录一下走了多少脉冲就OK了

LiAsO 发表于 2009-4-7 20:40:29

其他都同意,四分频电路我们仍然在用,比较保守。
傻孩子讲解就像是庖丁解牛似的,很轻松啊!@~~~@

heky 发表于 2009-4-7 20:50:45

stm32编码器接口可以简单实现。四倍频无问题。

mac_arthur 发表于 2009-4-8 09:16:21

谢谢

wang_xm 发表于 2009-6-14 15:12:24

受AVR 以及程序运行需要的时间限制 脉冲稍微高点 就有问题 频率 大约在10K 到头了

Gorgon_Meducer 发表于 2009-6-14 20:37:34

10K还早……跑20M,4倍频率,你看看?

bbi3014 发表于 2011-11-24 07:15:22

回复【7楼】Gorgon Meducer 傻孩子
-----------------------------------------------------------------------
#pragma interrupt_handler Int1: 4/*外部中断INT1的入口地址*/
void Int1(void)         
{

if(!((PIND&(1<<PD4))==(1<<PD4)))//判断PD4是否为低电平
/**********是低电平,顺时针旋转,plus_counter加1 *****************/
{
//if(plus_counter<360)
plus_counter++;
}
else //是高电平,逆时针旋转,plus_counter减1
{
//if(plus_counter>0)
plus_counter--;
}
}

这段程序接100P/R的就能识别出方向,接360P/R的就识别不出来方向了,这是为什么呢?
是单片机速度不够吗?
使用 的是内部8M的晶振。

Gorgon_Meducer 发表于 2011-11-24 12:55:11

修改为

#pragma interrupt_handler Int1: 4/*外部中断INT1的入口地址*/
void Int1(void)         
{   
    if((PIND & (1<<PD4)))//判断PD4是否为低电平
    {
      plus_counter++;
    }
    else //是高电平,逆时针旋转,plus_counter减1
    {
      plus_counter--;
    }
}
另外,你的转速是多少?是不是还有其他中断处理程序?你确认你的fuse设置正确——DIV8是否被错误的选中了?

apple_eat 发表于 2017-1-3 11:19:35

如果要处理正反转,测速的时候编码器过0怎么处理好啊?
页: [1]
查看完整版本: 请教傻孩子。关于使用欧姆龙E6B2-CWZ6C增量式光电旋转编码器测量速度。