文章

一种基于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 进行授权