亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

树莓派无原生 ADC 读取模拟传感器:阶跃响应法实战

背景知识

树莓派缺乏内置模拟输入,但这不妨碍读取模拟传感器。通过几个电阻和一个电容,即可采用简单的 阶跃响应 技术测定电阻值——适用于电位器、光敏电阻、热敏电阻等。

这种方法由 Adafruit 教程推广,并收录于 《Raspberry Pi Cookbook》,其原理是测量电容充电超过阈值所需的时间。树莓派 GPIO 引脚可检测电压超过约 1.65 V 的时刻,从而推断连接的可变电阻阻值。

所需材料

Python 代码

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
# 引脚分配
A_PIN = 18  # 电容充放电控制
B_PIN = 23  # 电压阈值检测

def discharge():
    GPIO.setup(A_PIN, GPIO.IN)
    GPIO.setup(B_PIN, GPIO.OUT)
    GPIO.output(B_PIN, False)
    time.sleep(0.005)

def charge_time():
    GPIO.setup(B_PIN, GPIO.IN)
    GPIO.setup(A_PIN, GPIO.OUT)
    count = 0
    GPIO.output(A_PIN, True)
    while not GPIO.input(B_PIN):
        count += 1
    return count

def analog_read():
    discharge()
    return charge_time()

try:
    while True:
        print(analog_read())
        time.sleep(1)
except KeyboardInterrupt:
    GPIO.cleanup()

运行脚本产生类似输出:

$ sudo python pot_step.py
101
210
101
623
435
367
728
610
512
314
317
0

拨动电位器旋钮时,读数在 10 到 170 之间波动,反映了可变电阻的变化。

工作原理

该技术依赖 RC 充电曲线。当电容连接到可变电阻时,其电压呈指数上升。GPIO 引脚在电容电压超过输入阈值(约 1.65 V)时判为逻辑高。循环迭代计数的耗时直接与电阻相关:电阻越小,充电越快,计数越小。

由于树莓派没有模数转换器,这种计时方法绕过了该限制,提供了一种低成本、可靠的方式来读取各类模拟传感器。

制造工艺

  1. 树莓派专业温度监测:基于 DS18B20 传感器的完整指南
  2. 树莓派紧凑型 DHT 温湿度扩展板:ATtiny85 + DHT22/DHT11
  3. 树莓派 GPIO 直连 DS1820 单总线温度传感器指南
  4. 树莓派传感器数据融合实战:GPS 与 MPU‑9150 IMU 的 I²C 与 UART 接入
  5. 树莓派 3 接 HC‑SR04 超声波测距传感器完全指南
  6. 树莓派单 GPIO 引脚读取模拟传感器:RC 充电法实战
  7. 树莓派光敏电阻日志与报警系统:低功耗光照传感器 Python 实现
  8. Java ME 8 在树莓派上构建物联网:第 1 部分——GPIO 传感器集成
  9. 树莓派读取线性霍尔传感器:Java 指南与 ADC0832 深度解析
  10. 树莓派 GPIO 读取按键:分步实战指南
  11. 树莓派配合 MCP3008 ADC 与 Zabbix 监控模拟传感器:分步指南
  12. 树莓派纯数字引脚实现低成本红外测距传感器:RC 计时法