你的编码器接入是否正确
你打开了外部中断1,但没有中断服务程序,程序可能跑飞。
编码器最好还是接入到定时器中断比较好,采用计数模式。
相对型旋转编码器:
将A、B路脉冲接入8051(或8031)单片机的脉冲输入端口。用程序读入脉冲的8种状态(即A为高电平;A非为低电平;A↑为A的上跳沿;A↓为A的下跳沿。B 类似),并有8种组合,其中四种组合表示旋转编码器正转,另四种组合表示旋转编码器反转(具体略)。
根据旋转编码器每转的编码数,以及选择的倍率(一般为4倍),计算脉冲当量(即每个脉冲对应的转角--度/脉冲)。
单片机发出读脉冲指令,计数器开始累加脉冲输入个数,直到单片机发出停止指令。由程序计算出旋转角度。
以上是由主程序读脉冲,也可以中断方式读脉冲。具体程序处理略。
绝对型旋转编码器:
将旋转编码器的编码信号通过并行口接入8051(或8031)单片机的数据输入端口。
旋转编码器每转对应n个编码,计算每度角度对应m个编码(即m=n/360)。
可通过中断方法读旋转编码器的编码。
通过两次读的编码,计算出旋转角度。
程序需要注意两点:旋转方向的处理和模数的处理。具体程序处理略。
简单叙述至此,希望能对你有所帮助。
由你提供的这张图上看,你用的编码器应该是绝对式光电编码器。绝对式光电编码器是由光栅盘和光电检测装置组成。光栅盘是在一定直径的圆板上等分地开通若干个长方形孔。由于光电码盘与电动机同轴,电动机旋转时,光栅盘与电动机同速旋转,经发光二极管等电子元件组成的检测装置检测输出若干脉冲信号,通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速。此外,为判断旋转方向,码盘还可提供相位相差90º的两路脉冲信号。你图中的MOTOR-L和MOTOR-R即为两路脉冲的输出,这两路脉冲信号相差90度,将这脉冲输出直接接入单片机IO,在程序里计算单位时间内脉冲数,即可获得转速。另外,通常是将这两路脉冲信号经过D触发器来判断电机转向。画个图给你,可能更直观些~
以上就是关于51单片机连接编码器 关于外部中断的问题全部的内容,包括:51单片机连接编码器 关于外部中断的问题、旋转编码器跟51单片机连接如果需要测量出旋转角度应该怎么弄啊,谢谢、请问各位大虾,直流电机编码器如何把信号反馈给单片机等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)