差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版 两侧同时换到之后的修订记录
旋转编码器模块 [2017/06/06 10:34]
anran [硬件说明]
旋转编码器模块 [2017/06/06 11:01]
anran [硬件说明]
行 7: 行 7:
 ------- -------
 旋转编码器是用来测量转速的装置,因其人性化的操作被用于越来越多的电子设备中,旋转编码器有多种分类: 旋转编码器是用来测量转速的装置,因其人性化的操作被用于越来越多的电子设备中,旋转编码器有多种分类:
-\\ + 
-以编码器工作原理可分为:光电式、磁电式和触点电刷式。 +  ​* ​以编码器工作原理可分为:光电式、磁电式和触点电刷式。 
-\\ +  ​* ​以码盘刻孔方式不同分为:增量式和绝对式两类。 
-以码盘刻孔方式不同分为:增量式和绝对式两类。 +
-\\+
 关于以上各类编码器的区别,大家自行查阅资料,这里就不多做介绍了。 关于以上各类编码器的区别,大家自行查阅资料,这里就不多做介绍了。
 \\ \\
 我们[[STEP-BaseBoard]]底板上集成的EC11的旋转编码器就属于增量式触电电刷编码器,其工作原理如下: 我们[[STEP-BaseBoard]]底板上集成的EC11的旋转编码器就属于增量式触电电刷编码器,其工作原理如下:
 \\ \\
-{{:​增量式触电点刷编码器.jpg?​300 |}} +{{ :​增量式触电点刷编码器.jpg?​400 |}}
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\+
 \\ \\
 +如上图所示,当顺时针旋转时A信号提前B信号90度相位,当逆时针旋转时B信号提前A信号90度相位,​FPGA接收到旋转编码器的A、B信号时,可以根据A、B的状态组合判定编码器的旋转方向。
 \\ \\
 +程序设计中我们可以对A、B信号检测,检测A信号的边沿及B信号的状态,
 +  * 当A信号上升沿时B信号为低电平,或当A信号下降沿时B信号为高电平,证明当前编码器为顺时针转动
 +  * 当A信号上升沿时B信号为高电平,或当A信号下降沿时B信号为低电平,证明当前编码器为逆时针转动
  
- +本设计实际电路连接下:
- +
- +
- +
-在键盘中按键数量较多时,为了减少I/​O口的占用,通常将按键排列成矩阵形式,使用行线和列线分别连接到按键开关的两端,这样我们就可以通过4根行线和4根列线(共8个I/​O口)连接16个按键,而且按键数量越多优势越明显。 +
- +
-FPGA驱动矩阵按键模块,首先我们来了解矩阵按键的硬件连接: +
-\\ +
-{{ :​矩阵按键.jpg?​800 |}} +
-\\ +
-上图为4x4矩阵按键的硬件电路图,可以看到4根行线(ROW1、ROW2、ROW3、ROW4)和4根列线(COL1、COL2、COL3、COL4),同时列线通过上拉电阻连接到VCC电压(3.3V),对于矩阵按键来讲: +
-  - 4根行线是输入的,是由FPGA控制拉高或拉低, +
-  - 4根列线数输出的,是由4根行线的输入及按键的状态决定,输出给FPGA +
-当某一时刻,FPGA控制4根行线分别为ROW1=0、ROW2=1、ROW3=1、ROW4=1时, +
-  *   ​对于K1、K2、K3、K4按键:按时对应4根列线输出COL1=0、COL2=0、COL3=0、COL4=0,不按时对应4根列线输出COL1=1、COL2=1、COL3=1、COL4=1, +
-  *   ​对于K5~~~K16之间的按键无论按下与否,对应4根列线输出COL1=1、COL2=1、COL3=1、COL4=1, +
-通过上面的描述:在这一时刻只有K1、K2、K3、K4按键被按下,才会导致4根列线输出COL1=0、COL2=0、COL3=0、COL4=0,否则COL1=1、COL2=1、COL3=1、COL4=1,反之当FPGA检测到列线(COL1、COL2、COL3、COL4)中有低电平信号时,对应的K1、K2、K3、K4按键应该是被按下了。 +
- +
-按照扫描的方式,一共分为4个时刻,分别对应4根行线中的一根拉低,4个时刻依次循环,这样就完成了矩阵按键的全部扫描检测,我们在程序中以这4个时刻对应状态机的4个状态。 +
-至于循环的周期,根据我们基础教程里可知,按键抖动的不稳定时间在10ms以内,所以对同一个按键采样的周期大于10ms,这同样取20ms时间。20ms时间对应4个状态,每5分钟进行一次状态转换。 +
-\\ +
-{{ :​矩阵按键程序框图.jpg?​800 |}}+
 \\ \\
-{{ :矩阵按键扫描法原理.jpg |}}+{{ :旋转编码器硬件连接.jpg?800 |}}
 \\ \\
 ====Verilog代码==== ====Verilog代码====