使用一个 GPIO 引脚读取模拟传感器
与其他一些设备不同,Raspberry Pi 没有任何模拟输入。它的所有 17 个 GPIO 引脚都是数字的。它们可以输出高低电平或读取高低电平。这对于为 Pi 提供数字输入的传感器非常有用,但如果您想使用不提供数字输入的传感器,则效果不佳。
对于充当可变电阻器的传感器,例如 LDR(光敏电阻器)或热敏电阻器(温度传感器),有一个简单的解决方案。它允许您使用单个 GPIO 引脚测量多个电平。对于光传感器,这允许您测量不同的光照水平。
它使用基本的“RC”充电电路(维基百科文章),通常用作电子产品的介绍。在这个电路中,您将一个电阻器与一个电容器串联。当在这些组件上施加电压时,电容器上的电压会升高。电压达到最大值的 63% 所需的时间等于电阻乘以电容。当使用光敏电阻时,这个时间将与光照水平成正比。这个时间叫做时间常数:
t =RC 其中 t 是时间,R 是电阻(欧姆),C 是电容(法拉)
因此,诀窍是计算电路中的某个点达到足以在 GPIO 引脚上注册为“高”电压的时间。这个电压大约为 2 伏,根据我的喜好,它足够接近 3.3V 的 63%。因此,电路将 GPIO 输入从低电平变为高电平所需的时间等于‘t’。
使用 10Kohm 电阻器和 1uF 电容器 t 等于 10 毫秒。在黑暗中,我们的 LDR 可能具有 1Mohm 的电阻,这将提供 1 秒的时间。您可以使用在线时间常数计算器计算其他值。
为了保证 3.3V 和 GPIO 引脚之间总有一些电阻,我插入了一个与 LDR 串联的 2.2Kohm 电阻。
理论
这是事件的顺序:
- 将 GPIO 引脚设置为输出并将其设置为低。这会释放电容器中的所有电荷,并确保电容器的两侧均为 0V。
- 将 GPIO 引脚设置为输入。这开始电流流过电阻器和电容器到地。电容器两端的电压开始上升。所需时间与 LDR 的电阻成正比。
- 监控 GPIO 引脚并读取其值。在我们等待时增加一个计数器。
- 在某些时候,电容器电压将增加到足以被 GPIO 引脚视为高电平(约 2v)。花费的时间与 LDR 看到的光照水平成正比。
- 将 GPIO 引脚设置为输出并根据需要重复该过程。
有关更多详细信息:使用一个 GPIO 引脚读取模拟传感器
制造工艺
- 使用廉价传感器绘制家庭温度流量图
- 带 RPi 的线跟踪传感器
- 使用真实传感器控制效果
- 使用一个 GPIO 引脚读取模拟传感器
- Raspberry Pi 上没有模拟输入的模拟传感器
- Java ME 8 + Raspberry Pi + 传感器 =物联网世界(第 1 部分)
- 使用 Raspberry Pi 和 Zabbix Supervisor 读取模拟传感器
- 带有数字接口的简单模拟接近传感器(用于 Raspberry Pi)[最后更新:2014 年 2 月 7 日]
- 带有 PIR 运动传感器的 Raspberry Pi GPIO:最佳教程
- 使用 MCP3008 的 Raspberry Pi 上的模拟传感器
- 将 HC-SR501 PIR 运动传感器与 Raspberry Pi 连接
- Raspberry Pi 自动浇灌网站