请教傻孩子。关于使用欧姆龙E6B2-CWZ6C增量式光电旋转编码器测量速度。
近来研究电子皮带秤,需要用欧姆龙E6B2-CWZ6C来测量速度,但这方面知识很匮乏,有几个问题1.编码器的电压是 DC 5~24V,但是没有给出A,B,Z三相的输入电压,是否需要放大电路处理信号,还是直接接DC 5V,输出就是5V,可以直接进单片机?
2.是否必须需要光电隔离和四倍频电路?如果只是为了提高精度,可否选择高分辨率的编码器来简化设计,如选择2000P/R的型号?
3.编码器的计数程序和硬件接口如何设计?
4.计数的值如何转换成线速度,我看论坛上大多是转换秤角速度。如果有相关的电路图和源码就更好了。
初学硬件,就碰到这么个课题,很是晕。。。。 1、是的,可以直接进单片机。
2、不需要光欧隔离,四倍频单片机自己就可以实现。
3、用两个外中断
4、线速度嘛……单位时间记录一下走了多少脉冲就OK了 其他都同意,四分频电路我们仍然在用,比较保守。
傻孩子讲解就像是庖丁解牛似的,很轻松啊!@~~~@ stm32编码器接口可以简单实现。四倍频无问题。 谢谢 受AVR 以及程序运行需要的时间限制 脉冲稍微高点 就有问题 频率 大约在10K 到头了 10K还早……跑20M,4倍频率,你看看? 回复【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的晶振。 修改为
#pragma interrupt_handler Int1: 4/*外部中断INT1的入口地址*/
void Int1(void)
{
if((PIND & (1<<PD4)))//判断PD4是否为低电平
{
plus_counter++;
}
else //是高电平,逆时针旋转,plus_counter减1
{
plus_counter--;
}
}
另外,你的转速是多少?是不是还有其他中断处理程序?你确认你的fuse设置正确——DIV8是否被错误的选中了? 如果要处理正反转,测速的时候编码器过0怎么处理好啊?
页:
[1]