本帖最后由 辉哥的歌 于 2016-5-31 15:09 编辑
1 电平检测问题
在第5讲“我的‘潘多拉魔盒’5— 简易遥控器开发中,完成了项目的简易遥控器的硬件连接和按键控制的软件程序开发。然而在进一步测试的时候,出现了输入电平跳变的问题。按键在不按的时候,对应引脚的电平发生间隔性跳变,如图1所示。GPIO31 (pin63) 在按键不按时发生高低电平跳动现象,如画红线的部分就是检测到的由高电平跳到低电平的情况。
这种现象将直接影响小车的控制质量,会发生小车在不控制时出现步进行驶情况。因此,必须要解决这个问题。原本以为是NanoPi M2的引脚驱动没写好有bug,但检查几遍发现貌似不是软件程序问题。经过返查
威廉希尔官方网站
和思考,我发现我的按键威廉希尔官方网站
设计出现了一个Bug:
按键状态:(1)低电平;(2)空。因为按键不按时,对应引脚悬空,按下时给低电平。
图1 按键不按时输入引脚电平间隔性跳变
按键引脚连接如图2所示:
图2 按键不按时对应引脚悬空无输入
为了解决这个问题,需要进行按键威廉希尔官方网站
改进设计,达到如下目的:
2 按键改进威廉希尔官方网站
要改进威廉希尔官方网站
设计首先得明白什么是高电平和低电平,由于NanoPi采用的是TTL电平定义方式,如下所示:
按键操作为输入操作,只要输入电压低于0.8V就是低电平,输入电压高于2.0V就是高电平。因此,采用电阻分压的方式,让按键松开时依然形成通路,而不是悬空状态,只要将输入NanoPi对应引脚的电压低于0.8V即可,对应原理如图3所示。当按键按下时,将电阻部分短路,而直接将3.3V引入GPIO32引脚;当按键松开时,接GPIO的引脚电压为R2两端的电压,只要选择合理的电阻就能实现低电平输入,R1选择一个大电阻,R2选择一个小电阻,只要满足如下表达式即可:
由于我手头电阻有限,这里R1选择了470kΩ的色环电阻,R2选择了10Ω的色环电阻,显然是满足要求的。
图3 按键改进设计原理
改进之后的局部连接威廉希尔官方网站
如图4所示:
图4 改进后连接示意图
改进后硬件连接情况如图5所示:
图5 改进后硬件连接测试图
3 设计改进后测试完成威廉希尔官方网站
设计改进后,连接NanoPi M2进行测试,选用GPIO31为按键输入引脚,GPIO30为LED灯输入引脚,要求:GPIO31为高电平时,LED灯点亮;GPIO31为低电平时,LED灯熄灭。并测试按键松开时LED灯是否闪烁,若不闪烁说明改进成功。
试验结果如图6-8所示:
图6 按键不按时输入电平不再发生跳变
图7 按键按下时灯亮输入电平无跳变
按键不按时:LED灯不亮,GPIO31和30电平都为0,且不再发生跳变;
按键按下时:LED灯点亮,GPIO31和30电平都为1,也没有发生跳变;
所以,遥控器的设计改进很成功。
图8 改进后按下按键点亮LED灯
试验过程所采用的开发环境为Geany,采用的语言为Python语言,如图9所示。程序代码如图10所示。
图9 在Geany开发环境下用Python语言
图10 试验测试Python程序
4 总结至此第7讲结束,完成了遥控器按键电平检测威廉希尔官方网站
改进设计,使得按键能够实现稳定的控制。下一节将正式进行无线
通信的开发,通过NanoPi M2与小车控制器进行无线通信从而控制小车的运动。