CC2430 Joystick 硬件说明
1 目标
学习了CC2430的AD,UART和Timer之后,感觉自己有点入门了,接着做一点人机交互的内容。在这里我介绍一下Joystick的硬件连接。
刚开始看Joystick的硬件部分的时候,还很的觉得有点麻烦的,后来把这个电路分解为反相放大器,同相放大器之后,问题就好解决多了。
2 分解Joystick的4个按钮
刚开始拿到原理图的时候,4个按钮“纠结”在了一起,让人实在是看不懂是。后来我“分解”了这四个按键,在Proteus中重新绘制原理图。Proteus可以进行一定的仿真,我还模拟仿真了一下。建立的模型如下:
编号和原来图纸有所出入,但是原件参数还是一样的。每次按某个按键,U1:B就会输出不同的电压。这下我也放心了,至少原理就那么回事——通过检测不同的电压判断按键是否被按下。
3 反相放大器
观察图左边的放大器,本质上就是一个反相放大器。通过按下不同的开关,获得了不同的放大倍数。另外,放大器的正输入端还有一个参考电压,使得反相放大时不至于出现都负电压的情况(但后来的计算发现还是出现了负电压,不过没有关系)。输出和输入的关系如下图所示:
该图来自《嵌入式系统中使用单电源运算放大器》一文,在microchip官网上找到。microchip提供的资料,简单且易于理解,不乏经典的中文资料,应用手册条理清楚,堪称典范。
Vout1(左边放大器的输出)存在这样的关系:
Vout1 = -(R2/R1)*Vin + (1+(R2/R1))*VBIAS;
其中,Vin为3.3V,R1为800K,400K,200K和100K其中的一个;R2为50K。VBIAS有两个电阻分压得到,100/(100+220)*3.3V。这样就可以很简单的计算出4个按钮按下时,反相放大器的输出结果。但是需要注意的是,当R1为100K时,计算出的结果为-0.1V,小于0。由于放大器没有使用双电源,所以只能输出大于0V的部分,理论计算小于0的部分,只能委屈一点当0了。
4 同相放大器
同相放大器电路就简单一点了,计算公式如下图所示。同样来自《嵌入式系统中使用单电源运算放大器》一文。
这个放大器的放大倍数为3。实际的Vout = 3*Vout1。
5 总结
看的懂的觉得很简单,但是“不说”。分析软件的人要比分析硬件的多。我觉得这很难,好不容易看懂了,我就分享一下。具体的结果如下
UP键按下 2.67V
DOWN键按下 0V(-0.31V)
LEFT键按下下 1.39V
RIGHT键按下 2.24V
代码也写好了,一定公布。最近发现写博客还是很累人的,怪自己文笔太烂了。
最后,我的邮箱 xukai19871105@126.com