给你找了个电容检测的方案,可以看看
感应电容Csensor一端接到MCU任意一个具有中断功能的I/0IIPxy,本文Csensor“基准电容”取1OpF,由于需严格测量Csensor通过R的放电时间,所以应将R电阻值取足够大,此处选5.1M,确保任意情况下均可测量电容放电时间,图4中Csensor从VCC放电到OV的时间约为250μs。
当Pxy设为输出高电平时,Csensor开始充电,充电到设定的时间后,将Pxy设为输入状态,此时Csensor则通过电阻R放电,因MSP430管脚漏电流值很小,仅50nA,故不会影响电容放电时间的测量。
本文的Pxy端口需要选择具有中断功能的I/0口,在MSP430系列MCU中P1和P2口均具有中断功能,将Pxy口的低电压阈值作为中断信号。当Csensor开始放电时,启动Timer_A定时器从Tstar开始计时,当Csensor放电电压达到该I/0口的低电压阈值时,Pxy产生中断信号,在I/0口中断程序中Timer-A定时器捕获电容放电结束时间Tend,(Tend-Tstar)即为Csensor的放电时间。
MCU内部DCO时钟模块作为系统时钟源,可根据不同型号选用8MHz或16MHz晶振,系统时钟越高时,定时器检测感应电容变化时的计数值越多,则判断按键的精度越高。系统将没有手指触摸时“基准电容”的平均放电时间作为放电参考时间Tsensor,MCU工作时不断检测Csensor放电时间T,并于Tsensor进行比较,若T>Tsensor,说明感应电容容量增加,即感应电容按键有手指接下
|