时间:2024-05-17 11:56:07 作者:服务与支持
顶层模块Amp_Adjust通过实例化三个子模块并将对应的信号连接,最终实现旋转调节系统的总体设计。
旋转编码器(rotary encoder)也称为轴编码器,是将旋转位置或旋转量转换成模拟或数字信号的机电设施。旋转编码器用在许多需要精确旋转位置及速度的场合,如工业控制、机器人技术、专用镜头、电脑输入设备(如鼠标及轨迹球)等。 旋转编码器以码盘刻孔方法不一样分为:绝对式和增量式两类。
STEP BaseBoard V3.0底板上集成的旋转编码器就是机械增量式的。
上图是机械增量式旋转编码器的原理示意图,中间圆形齿轮连接到旋转编码器的公共端4管脚,STEP BaseBoard V3.0底板上我们将之接地处理,A、B两个触点连接到旋转编码器的A、B相输出端3、5管脚,当进行旋转操作时,A、B触点会先后接触和错开圆形齿轮,因此导致A、B相输出信号产生相位不同的脉冲信号:
根据时序图能够准确的看出旋转编码器顺时针或逆时针旋转时,A相信号超前或滞后B相信号,FPGA接收到旋转编码器的A、B信号时,能够准确的通过A、B的状态组合判定编码器的旋转方向。 程序设计中我们大家可以对A、B信号检测,检测A信号的边沿及B信号的状态,
前面电路连接部分个人会使用了两个电容对A、B信号作去抖处理,能够更好的起到一定的效果,为了驱动更稳定,我们在程序中再简易地处理一下,先对系统时钟分频得到2KHz的时钟,然后在2KHz时钟的节拍下对A、B信号采样,三级锁存消除亚稳态
所以通过上面程序最终实现了左旋右旋的脉冲输出,脉冲的脉宽等于系统时钟的周期。
回顾旋转调节系统模块设计框架,刚刚我们已学习完成了旋转编码器的驱动设计,在基础数字电路实验部分我们已掌握了FPGA驱动独立显示数码管的原理及方法, 模块通过一个4位的输入传递要显示的数值,通过9位的输出控制数码管显示该数值,这里我们不再重复,还要设计一个模块,通过旋转编码器模块脉冲输出控制变量在0~99范围内加减变化。
将程序下载到实验平台,核心板数码管显示50,旋转编码器左旋(逆时针)数值减小,旋转编码器右旋(顺时针)数值增加,旋转编码器旋转时有顿挫感,每次顿挫数值变化1。