一种基于RC充电的电阻电容测量
硬件电路设计
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌────────────────────────────┐
│ │
│ VCC─────┐ │
│ │ │
│ ┌┴┐ │
│ │R│ │
│ └┬┘ │
│ │ │
│ ├───────────GPIO │
│ │ │
│ ─┴─ │
│ C │
│ ─┬─ │
│ │ │
│ │ │
│ │ │
│ GND │
└────────────────────────────┘
RC充电时间计算公式
\(t=RC=100*10^3*1*10^{-6}=0.1s \\ 假设R=100K,C=1uF\)
根据R和C都可以变动,在R变化的时候可以测量滑动变阻器,这里只能测试得出一个大概的阻值,在没有ADC多余的地方可以使用,例如测量旋钮旋转到哪个位置了。
在C变化的之后可以用作触摸按键的触发,当人手接触到焊盘的时候,默认的C值会发生改变,从而影响IO口达到高电平的时间,通过测量这个时间的差值来判断人手有没有触摸到这个按键。
软件设计
在软件设计中,最好是能连在定时器的输入捕获IO口,如果硬件设计中没有连接到这个IO口或者输入捕获IO口不够用的话,可以连接到外部中断IO口上,通过外部中断的上升沿触发来检测充电的时间。
软件设计步骤:
1、IO口设置为推挽输出,输出0,使电容电压放电完成。这里可以持续ms,确保电容中的电放完。
2、IO口设置为浮空输入,这时电容开始充电。
3、开启IO口的输入捕获中断、或者上升沿触发外部中断。
4、等待中断触发,计算得出充电所花时间。
往复循环,持续检测。
本文由作者按照 CC BY 4.0 进行授权