㈠ 用硬件实现光电编码器输出脉冲的鉴相及其计数,怎么连接STM32单片机看不懂
每个编码器接到每个定时器的TIMx_CHx上,这个引脚既可以作为PWM输出,也可以作为输入引脚,可配置。一个编码器对应一个定时器即可。
㈡ 请教光电编码器如何和单片机相连
光电编码器,一般有相差90度相位的A,B脉冲和其反向/A,/B脉冲,以及零位脉冲Z及其反向/Z。根据需要连接。如果只检测速度,接A和Z就可以了。如果还需要检测方向,那么需要接A、B、Z三路信号。
㈢ 增量式光电编码器如何与单片机连接直接连接还是设置电路连接呢直接连接在哪里连
直接连。
连在单片机的I/O口上,用I/O口检测编码器输出的脉冲,判断旋转方向和角速度。
㈣ 光电编码器的脉冲信号如何接到单片机上
每个单片机都有计数功能,将脉冲信号接入单片机的输入口,再设置一下计数器,就可以了。具体的设置你查一下相应单片机的资料。
如果我的回答还算满意,请支持一下,谢谢。
㈤ 请问如何把光电编码器中的数据采集到单片机上
光电编码器一般采用四线制,数字输出,电源、地、信号A、信号B,AB相差半个脉冲用来识别正反转。可以把A直接接单片机中断,在中断中根据B判断正反转。
㈥ 编码器与单片机的连接
可以直接和单片机IO相接,但有的设计者为了降低外部干扰,一般通过D触发器或者光耦后与IO相连,一般的光电编码器都是集电极开路输出型的,你看其说明书有具体电路。一般将A、B相接到定时器输入的IO上,这样比较好处理,将定时器设为计数器模式就可以了。检测步进电机转动角度当然可以做到,这只是基本应用。360线,一个脉冲输入就是1度,所以很容易的。接收到45个脉冲就证明转动了45度了。
㈦ 关于两个光电编码器 接ATMEGA16单片机来进行 脉冲计数
随着微电子技术的发展,电气控制方式变得更加灵活多样,控制精度越来越高。智能化控制中越来越多地采用了以单片机为核心的控制单元实现设备的智能化控制。介绍以Atmega16单片机为控制核心,实现重物提升位移量的精确控制。
1 重物提升控制系统原理
重物提升控制系统的设计目的是使用智能化的控制技术,将重物提升到预定高度。如图1所示是系统控制结构图,从控制结构图可以看出,控制系统研究对象是重物的提升和降落。主要的控制对象是卷扬机,通过卷扬机的正、反转运动实现控制目标。
图中传感器选用光电编码器,光电编码器的转轴上安装一个轮,将其固定在导向轮上,这样光电编码器和导向轮同轴旋转,实现光电编码器转过的角度与导向轮转过的角度相等,重物提升的距离就是导向轮周长和转过总角度的乘积。设导向轮的直径为d,与其同轴连接的光电编码器每圈输出脉冲数设为k,那么脉冲当量为:
2 单片机主从结构的控制方式
工程设计研究对象是控制卷扬机的转动,提升重物到预定高度,需要在运行前计算出运行的总脉冲数;设计要求显示屏能实时显示重物的高度,需要在运行中对采集的数据实时处理,计算出移动的距离;还要求对重物高度和导向轮周长进行设定,设定参数要能够存储和读出,这就需要带有存储功能的智能化器件。Atmega16单片机能够完成数据处理,内含EEPROM存储区,在掉电的情况下也能够保存数据,内含2个外输入计数器,能够实现计数任务,可以简化硬件电路。综合考虑,本设计选择Atmega16单片机作为核心器件实现任务要求。为了简化结构,突出模块设计,采用双芯片结构,以主、从机模式的设计方法实现控制要求。主机单元负责传感器信号的处理、人机界面参数设定、实时数据处理等工作。从机单元负责接收主机所发信号,响应主机决定是否输出实时的控制指令。
3 光电编码器测量位移
光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器,这是目前高精度控制系统最常用的位移量测量传感器。光电编码器由光栅盘和光电检测装置组成,光栅盘是在一定直径的圆板上等分地开通若干个长方形孔。原理示意如图2所示。通过计算光电编码器输出脉冲的个数就能知道当前拖动的位移量,还可以通过计算每秒光电编码器输出脉冲的个数实现速度测量。
用光电编码器测量位移时,不仅要知道位移的大小,还要知道位移的正负方向,判别方向是成功测量关键。现在市场上见到的光电编码器是4线接口或5线接口。4线接口的光电编码器能输出A、B两路脉冲,5线接口的能输出A、B、Z三路脉冲。光电编码器输出的A、B两路脉冲在相位上差90°,正转时A路超前B路90°,反转时B路超前A路90°。测量中依据A、B之间的相位差,就能够判别位移的方向符号,通过带符号的加运算,可以知道输出脉冲个数,计算出位移量。
4 传感器信号的提取电路设计
如图3所示是传感器信号提取电路。光电编码器输出的信号通过74LS244进行整形后,输出理想的A、B相波形,U3(74LS74)是D触发器,把传感器输出整形方波信号的A相输入D1,B相作为D触发器的时钟信号CK,U3与U9(7400)共同组成鉴相电路,判断光电编码盘是正转还是反转。
当光电编码器正向旋转时,通道A输出波形超前通道B输出波形90°,D触发器输出Q为高电平,Q为低电平,上面U9A与非门关闭保持高电平,计数脉冲不能通过U11;此时,下面U9B与非门打开,其输出计数脉冲D能够顺利通过U12进行传输,如图4(a)所示。
当光电编码器逆时针旋转时,通道A输出波形比通道B输出波形滞后90°,D触发器Q输出为低电平,Q为高电平,上面U9A与非门打开,其输出计数脉冲C能够通过U11进行传输;此时,下面U9B与非门关闭保持高电平,计数脉冲不能通过,如图4(b)所示。
5 重物提升位移量的计算
Atmega16微处理器内包含3个独立的定时器/计数器模块,其中T/C0、T/C2是8位定时器/计数器模块,T/C1是16位的定时器/计数器模块。硬件设计中选择T0、T1作为正反转计数器,记录光电编码器输出的正、负脉冲数。在软件设计中一定要将T0、T1计数器进行扩展,使其有足够的计数空间,扩展位移测量范围。笔者在设计软件时,将T0、T1进行扩展,使它们都是长整数(32位)形式,利用的就是计数器满产生溢出中断的形式扩展的。这样T0计数256个脉冲产生中断一次, T1计数65 536个脉冲产生中断一次。
T0、T1控制寄存器设置及产生溢出中断程序为:
…
TCCR0=0x06; //计数脉冲由T0引脚输入,下降沿有效。
TCCR1B=0x06; //计数脉冲由T1引脚输入,下降沿驱动
有效。
…
#pragma interrupt_handler timer1_ovf_isr:9//正计数 16bits
void timer1_ovf_isr(void){
cnt1++; //32位计数
}
#pragma interrupt_handler timer0_ovf_isr:10 //负计数8bits
void timer0_ovf_isr(void){
long c;
cnt0++; //32位计数
c=(cnt0>>8); //防止cnt0,cnt1溢出
if(c && (cnt1>=c))
{cnt1-=c; //计算计数差值
cnt0=cnt0&0xff; //只保留低8位
} }
设计中,选择型号为S38-J3V100光电编码器,输出编码是500码/转,则脉冲当量是πd/500,当前的位移量就是总脉冲数与脉冲当量的乘积。软件计算程序如下:
…
posicnt=(cnt1<<16)|TCNT1; //正脉冲数
negcnt=(cnt0<<8)|TCNT0; //负脉冲数
totalcnt =posicnt-negcnt; //产生位移量大的总脉冲数
curPosi=(totalcnt*(meterCyl*1000+ CentCyl));
curPosi/=PLS_PER_ROUND; //当前的位移量
…
执行运行命令,微处理器就要对设定的位移量进行计算,把位移量大小转换成脉冲数的多少。在运行中进行脉冲数的比较,如果相等,则停止运行,表示已经达到目标位置。软件计算程序如下:
sysStatus = SYS_RUN;
PosiSet=meterPosi*1000+CentPosi; //毫米计算
cntSet=(PosiSet*PLS_PER_ROUND)/(CentCyl+
meter Cyl*1000);
if(cntSet>totalcnt) Command=CMD_FWD;
//执行正转命令
else if(cntSet<totalcnt) Command=CMD_REV;
//执行反转命令
else sysStatus=SYS_IDLE; //停止状态
本方案设计的重物提升控制系统在实际运行过程中获得了良好的动态性能,控制精确,智能化程度高。利用光电编码器作为位移传感器,能获取高精度控制信号。高性价比的Atmega16单片机使成本大大降低,提高了软件设计的灵活性,简化了硬件电路设计,具有很好的实用价值。
㈧ 如何用单片机测量光电编码器的脉冲,以实现测量电机转速
你说的是增量型编码器,这种类型的编码器主要就是测量速度的,其A,B相,Z相可以通过接在计数器或者PLC上,来获取其脉冲个数,从而进行转换,变成速度测量。一般说来只要一相信号就够了,B相信号和A相信好相位相差90度,通过A超前还是B超前从而判定电机是正转还是反转。如果只是测速度,Z相信号用不到的。Z相是一个零点参考信号,每旋转一圈,会输出一个脉冲,一般用来测量位移的时候才会用到,不过增量编码器测位移会出现丢脉冲的现象,造成脉冲累积不准,从而出现位置偏差。最重要的是,供电类型一定要看准,如果是5v供电,你供24v,那就直接烧了,切记切记!
㈨ 绝对式 光电编码器与单片机怎么接
绝对式光电编码器有很多种接口,现在比较常见的是串行同步接口,也就是符合RS422电平标准的时钟数据接口,其时钟线通常有+,- 一组,数据线+,- 一组,如与单片机连接的话,最好是选用带有SPI功能的单片机,把单片机的SPI的时钟输出和数据输入分别用422电平转换芯片转换成差分信号后与编码器连接,当然也可以用普通单片机IO口模拟SPI时序,不过这样做的话程序上处理相当麻烦,最好不用。
NPN开路输出,又叫OC输出。
需要在A、B端分别外接一个电阻,电阻上端的电压由你的电路决定:
单片机接5V,PLC接24V,使用就很方便了。
检测A、B信号就是(1)检测脉冲数量;(2)A、B谁在前,谁在后。A相上升沿在前(出现高电平)表示编码器正转;反之B在前,表示反转。
至于45°,就看编码器一周有多少脉冲,自己分配了。
㈩ 为什么我把光电编码器的信号线接到单片机上却不接受呢
你是用什么电路进行放大的?这样的问题很简单:就是输入阻抗不够,虽然看起来信号是放大了,但跟单片机的I/O口一形成回路之后,对单片机来说信号的输入阻抗不够,电压并没有完全落到I/O引脚上。所以出现这样的问题。把电路图贴出来才能分析错误在那里怎么改进。
补充:三极管集电极的上啦电阻是多大的,基极有没有电阻?还有出来的11v电压你怎么接到单片机的I/O口上?有没有对I/O口的过压保护措施?我在网络信息里告诉你我的邮箱了。