说道ADC,第一反应是量化模拟信号,可量化之后做什么呢?当然最简单的就是测量模拟信号,也可以进行信息采集,以及实现数字算法等。今天来讲一个ADC另一种应用。希望高手可以改进,将其做的更好,更强大。
本人在电子设计时遇到一个问题,但是使用的处理器是AVR的ATmega16单片机,在我准备设计输入输出接口时,发现IO够用了,怎么办呢?想了想,我前面不是用ADC来实现无级调速吗,难道就不可以用单片机自带的ADC功能的实现键盘输入吗?仔细一想还真可以,后面用8个相同的10K电阻串联,取出8个结点分别连接到8个按键的一端,这8个结点将参考电压均分为8份(1/8,2/8,3/8,4/8,5/8,6/8,7/8,8/8),8个按键的另一端统一汇集到一点后接到单片机的ADC的输入端,这样当一个按键按下时,ADC就可以采集到相应结点的电压值,剩下的就是软件的任务了,根据采集到的电压值就可以确定按下的是哪个键了,是不是简单好用呢,不用再焊接麻烦的矩阵键盘了,这个方案用一个IO就实现了8个按键的检测。当然理论上还可以做得更多8位的ADC可以量化到1/256,10位的话就是1/1024,用八位的做一个4x4=16键盘应该还是不难的。
下面谈谈个人认为的一些可以提高其精度(即可以实现更多的按键检测)的可改进点,如有不对的地方,请大家指正,谢谢。
1、当初我使用的参考电压就是电源电压,未作任何稳定性处理(因为只需8个按键),如果将参考电压改用稳压管或者精度更高的专用电压源芯片(如**431),结点电压的精度提高了,而且稳定了。整体精度会有提高。
2、电阻的选取:我当初使用的是一般的电阻(应该是5%),如果使用精度更高的电阻,如1%的或0.5%的。如此各节点的更接近理论均分值(n/N Vref)。
3、另外在进入ADC前,可以加入一级电压跟做阻抗变换随以减小按键按下时电阻链电流的影响。如果引线短或ADC内部阻抗高,则该部分应该可以不考虑。
4、最后,前面的方案都需要处理器做循环的扫描。可以在ADC的输入端加一触发电路则可以实现中断检测,节省软件系统开支,该出发电路应该有多种方案,我所想到最简单的就是电压比较器,因为ADC平时检测到的总为零电压(有微小抖动)。选取合适的参考电压则可实现触发。
需要说明的是该方案改进的后成本肯定增加,不过也不多。如果做产品的话还是建议使用专用的键盘控制与检测芯片。该方案适合电子爱好者平时的DIY。
用户1552954 2012-12-30 16:45
用户1561824 2012-4-27 19:32
用户1624708 2011-10-9 18:45
用户1626350 2011-9-27 16:49
用户1588142 2011-9-25 12:19
用户1580664 2011-9-23 23:44
用户1356701 2011-9-23 10:57
gxiang87_978620800 2011-9-23 07:04
peng36933_557691152 2011-8-12 10:37
用户1184181 2011-8-9 17:03