1. 求单片机C程序,判断旋转编码器正转和反转,以及转数
旋转编码器一般输出3路信号ABZ,AB相位差是90°
将A接到中断。当A下降沿时:B为高就是正转一步,B为低则是反转一步。
转速可以用若干步用的时间进行计算。
2. 旋转编码器通过单片机控制步进电机怎么编程
我也在弄这个控制原理,哥们儿你的成功了吗,我在某音的视频上看过一个是这么弄的,很厉害,但是一直找不出那个驱动器和控制原理,有点想不明白,
3. 单片机控制数字旋转编码器,不会响应什么原
据我所知,数字旋转编码器是一个输入器件,有人称之为数字电位器,并并不受单片机控制,而是单片机读取编码器的信号来判断认为的操作,即判断旋转方向与角度
一般有2个输入端口,分别为A端口和B端口,不同数字旋转编码器,旋转是的信号有所不同,
有一些是顺时针转,A,B都是下降沿,但一个在前,一个在后,逆时针前后的顺序相反,但都是下降沿。
有一些则不同,有下降沿,也有上升沿,但都是一个前一个后,具体要参照相关的规格书
单片机应该利用外部中断来读取信号,否则有可能你旋转时,单片机并没有去读取
4. 如何使用旋转编码开关
具有左转,右转,按下三个功能。4、5 脚是中间按下去的开关接线 1 2 3 脚 一般是中间2
脚接地,1、3 脚上拉电阻后,当左转、右转旋纽时,在1、3 脚就有脉冲信号输出了。
着这是标准资料:
在单片机编程时,左转和右转的判别是难点,用示波器观察这种开关左转和右转时两个输出
脚的信号有个相位差,见下图:
由此可见,如果输出1 为高电平时,输出2 出现一个高电平,这时开关就是向顺时针旋转; 当输
出1 为高电平,输出2 出现一个低电平,这时就一定是逆时针方向旋转.
所以,在单片机编程时只需要判断当输出1 为高电平时,输出2 当时的状态就可以判断出是左
旋转或是右旋转了。
还有另外一种3 脚的,除了不带按钮开关外,和上面是一样的使用。
参考:
#include "reg51.h"
#define uint unsigned int
sbit CodingsWitch_A=P1_1;
sbit CodingsWitch_B=P1_2;
uint CodingsWitchPolling()//
{
static Uchar Aold,Bold; //定义了两个变量用来储蓄上一次调用此方法是编码开关两引
脚的电平
static Uchar st; //定义了一个变量用来储蓄以前是否出现了两个引脚都为高电
平的状态
uint tmp = 0;
if(CodingsWitch_A&&CodingsWitch_B)
st = 1; //
if(st) //如果st 为1 执行下面的步骤
{
if(CodingsWitch_A==0&&CodingsWitch_B==0) //如果当前编码开关的两个引脚
都为底电平执行下面的步骤
{
if(Bold) //为高说明编码开关在向加大的方向转
{
st = 0;
tmp++; //
}
if(Aold) //为高说明编码开关在向减小的方向转
{
st = 0;
tmp--; //设返回值
}
}
}
Aold = CodingsWitch_A; //
Bold = CodingsWitch_B; //储
return tmp; //
}
//
5. 单片机的旋转编码编程
附图是编码开关输出的波形图,可以看出任何方向的旋转发生时,A或者B的波形都是在另一方电平稳定的时候转换电平,不知道你的单片机是否支持电平变化中断。
下边是我用PIC单片机的编码开关检测中断处理程序,希望能对你有参考。
if(RAIE&&RAIF)//中断标志检测
{
unsignedcharport_temp1,port_temp2;
port_temp1=PORTA;//读取端口参数
port_temp2=PORTC;
if(port_temp2&0x04)
{//检测其中一个端口的值
if(port_temp1&0x10)//检测另外端口的值
{key_flags|=0x30;}//顺时针旋转
else
{key_flags|=0x10;}//逆时针旋转
}
else
{;}//非正常波形,不做操作
asm("movf_PORTA,w");//清除中断标志
RAIF=0;
}
6. 如何用单片机发出计旋转编码器的AB相脉冲
用定时器做,两个IO口电平变化,例:计数器100时改变IO1,200改变IO2,300IO1取反,400IO2取反,计数器给初值。
7. 旋转编码器跟51单片机连接如果需要测量出旋转角度应该怎么弄啊,谢谢
相对型旋转编码器:
将A、B路脉冲接入8051(或8031)单片机的脉冲输入端口。用程序读入脉冲的8种状态(即A为高电平;A非为低电平;A↑为A的上跳沿;A↓为A的下跳沿。B 类似),并有8种组合,其中四种组合表示旋转编码器正转,另四种组合表示旋转编码器反转(具体略)。
根据旋转编码器每转的编码数,以及选择的倍率(一般为4倍),计算脉冲当量(即每个脉冲对应的转角--度/脉冲)。
单片机发出读脉冲指令,计数器开始累加脉冲输入个数,直到单片机发出停止指令。由程序计算出旋转角度。
以上是由主程序读脉冲,也可以中断方式读脉冲。具体程序处理略。
绝对型旋转编码器:
将旋转编码器的编码信号通过并行口接入8051(或8031)单片机的数据输入端口。
旋转编码器每转对应n个编码,计算每度角度对应m个编码(即m=n/360)。
可通过中断方法读旋转编码器的编码。
通过两次读的编码,计算出旋转角度。
程序需要注意两点:旋转方向的处理和模数的处理。具体程序处理略。
简单叙述至此,希望能对你有所帮助。
8. 旋转编码器和单片机的接法问题。
接法:直接将A、B、Z对接到相应的 IO 口,同时
1、各加一个小电容滤波以增强抗干扰;
2、根据需要确定是否需用上拉电阻。
应用:编程单片机直接读取相应端口值。
9. 旋转编码器连接单片机
欧姆龙的旋转编码器只有5V的有正反转的,其他的24v是只有一个方向的。
10. 旋转编码器与单片机怎么连,测角度用
旋转编码器有A、B两个信号线,分别接单片机的两个IO口
A先出现高电平表示正转,反之A是低电平,B出现高电平,编码器是反转