基于FPGA的光电编码器同步触发电路的设计

时间:2022-09-24 03:36:33

基于FPGA的光电编码器同步触发电路的设计

摘 要:本设计采用altera公司cycloneII系列FPGA完成过光电编码器同步触发电路的设计,通过编码器来测得相应的角度,从何实现在电机转到不同角度时八路电磁阀的开关控制,同时利用内部的NIOSII软核结合PID算法实现了电机的运行调速。

关键词:FPGA;光电编码器;开关;软核;PID

中图分类号:TP3 文献标识码:A 文章编号:1674-7712 (2013) 10-0234-01

一、应用背景

在机电设备中运行的电机,如果需要知道电机旋转运行时的绝对角度,一般在电机转轴上面安装一个光电编码器,编码器输出A/B/Z三路脉冲信号。360线的正交编码器,CPU或FPGA芯片处理,用可以4倍频到每圈1440个脉冲分辨率。

而Z脉冲用于零度位置校准。

现有8个电磁阀,分别需要控制他们按照既定的电机旋转角度来开和关(0表示打开,1表示关闭)。具体控制时序要求如下表:

本设计采用altera公司cycloneII系列FPGA完成相关的功能,同时利用内部的NIOSII软核结合PID算法实现了电机的运行调速。

具体实现功能:

1.FPGA芯片实现正交编码器的解码以及控制8路输出信号的开/闭。

2.电机运行中FPGA的串口可以接收新的运行控制参数。

3.FPGA来控制电机的运行调速。

二、系统设计

整个系统分为正交编码器的解码模块、输出信号的控制模块、串口通信模块和电机控制模块。

(一)正交编码器的解码模块

端口A、B、Z分别为正交编码器输出的A、B、Z三相脉冲、端口angle[8:0]为经正交解码后计算出电机旋转的角度。A、B输入FPGA解码模块后使用D触发器进行滤波。通过检测脉冲跳变沿的方法,对输入信号进行4倍频以提高测量精度。计数模块为了排除电机旋转过程中的抖动采取可逆计数的方法。根据计数结果计算出相应的旋转角度。

(二)输出信号的控制模块

端口valve1_on[15:0]、valve1_off[15:0]、……、valve1_on[15:0]、valve1_off[15:0]为8路阀门的控制参数输入端、angle[8:0]为正交编码器解码输出结果。模块内部进行逻辑比较,当旋转到一定角度时控制相应阀门开关。

(三)串口通信模块

端口rs232_rx为串口接收数据端、端口valve1_on[15:0]、valve1_off[15:0]、……、valve1_on[15:0]、valve1_off[15:0]为接收数据经处理后的8路阀门的控制参数。该模块根据串口通信协议,当检测到起始位时,进行波特率计数开始接收数据,并将接收的数据存入一个移位寄存器中,同时模块内部建立了一个数据缓冲区对移位寄存器中数据进行解析和串并然后输出,当没有接收到数据时输出为默认控制参数。串口通信模块波特率设置为9600bps、1个起始位、8个数据位、1个停止位。

(四)电机控制模块

对于电机的运行调速,我们用FPGA内部的NIOS2软核做控制单元,专门设计了电机驱动模块,编写了相应的PID控制程序。电机驱动部分是采用MOS管搭建的双H桥驱动,控制信号为两路,一路为PWM控制电机的速度,一路为DIR,控制电机的转动方向,然后通过逻辑电路将PWM和DIR转换成相应的四个桥臂的控制信号。数字电路和模拟电路采用的光耦隔离;同时MOS每个桥并联2个,增加其带负载能力;在变向瞬间,由于MOS存在导通和关断延时时间会引起MOS管发烫甚至烧毁,增加了RC延时(如果不加,在变向瞬间,由于MOS管关闭的延时存在,会使GND和VCC接通,流过大电流将MOS管烧毁);控制端均接上拉电阻,防止在开机时发生电机飞跑。

电机的控制算法用带棒棒的PID调速算法。在电机开始运行以后,通过键盘给定目标速度值,然后通过PID调速,使之达到目标速度值,代码运行在FPGA内嵌的软核中。速度采样和速度控制周期均为10ms.

三、系统测试与分析

使用通用逻辑分析仪检测编码器的A/B/Z信号,以及FPGA输出的8路(电磁阀)控制信号。在逻辑分析仪上,可以看出FPGA的设计控制是完全符合要求的。本设计采用500线的编码器,8路输出信号控制误差控制在了1度以内。同时利用内部的NIOSII软核结合PID算法实现了电机的运行调速。

上一篇:《赤土村志》序 下一篇:富余煤气利用发电工程60MW汽轮发电机组振动测...