吉安市网站建设_网站建设公司_会员系统_seo优化
2026/1/12 6:33:07 网站建设 项目流程

树莓派接入4-20mA变送器实战指南:从引脚图到工业信号采集

你有没有遇到过这样的场景?手头有个高精度的工业级压力传感器,输出是4-20mA电流信号,想用树莓派做数据采集和远程监控——结果发现,树莓派根本读不了模拟信号,更别说直接接电流了。

这不是你的问题,而是设计上的天然鸿沟:一边是工业现场坚固耐用、抗干扰强的4-20mA标准;另一边是消费级嵌入式系统如树莓派,虽然计算能力强、接口丰富,但连一个模拟输入引脚都没有

那怎么办?放弃吗?当然不。本文就带你一步步打通这条“数字世界”与“工业现场”的桥梁。我们不会堆砌术语,也不会甩一张复杂的电路图让你自己琢磨。相反,我会像一位老工程师坐在你旁边一样,从最基础的树莓派4B引脚功能图讲起,手把手教你如何安全、可靠地把4-20mA变送器接入树莓派,并实现精准读数。


为什么工业都爱用4-20mA?它比电压强在哪?

在深入硬件连接之前,先搞清楚一个问题:为什么非得折腾4-20mA这么麻烦的东西?不能直接给个0~5V电压吗?

答案很简单:稳定性 + 可靠性 + 故障检测能力

想象一下工厂车间,几十米甚至上百米的电缆穿行在电机、变频器、高压设备之间。如果你用0~5V电压传信号,哪怕有一点电磁干扰,采样值可能就跳了几百毫伏,误差大得没法看。

而4-20mA不一样:

  • 它是电流驱动,线路阻抗变化不影响信号(只要电源够劲);
  • 4mA代表“最小值”,不是0mA——这意味着如果断线或设备掉电,电流会降到0,系统立刻知道“出事了”;
  • 长距离传输(几百米甚至上千米)也能保持精度;
  • 多数采用两线制,既供电又传信号,布线简单。

所以,你在石油、化工、水处理、暖通空调等领域看到的绝大多数传感器,都是4-20mA输出。

但这也带来一个问题:树莓派GPIO只能处理3.3V数字电平,怎么敢碰这种工业回路?

别急,关键就在于“隔离”和“转换”。


看懂树莓派4B引脚图:你的第一张地图

拿到一块树莓派4B,正面那个40针排母就是所有外设连接的生命线。这张“地图”决定了你能怎么扩展功能。

别被名字绕晕:BCM编号 vs 物理编号

你会看到两种编号方式:
-物理引脚号(Pin Number):从1开始数,按位置排列。
-BCM编号(GPIOxx):Broadcom芯片内部通道号,编程时要用这个。

比如你想用I2C通信,就得找标着SDA1SCL1的引脚——它们对应的是:
- GPIO2 → SDA1(数据线)
- GPIO3 → SCL1(时钟线)

这两个引脚就在物理第3脚和第5脚上。

还有几个必须记住的关键引脚:
-3V3:提供3.3V电源,可为小模块供电(最大50mA左右);
-GND:接地,至少有6个地脚可供选择;
-5V:来自USB电源,不稳定,建议外部稳压后再用。

⚠️血的教训提醒:千万不要把外部24V接到任何标有“GPIO”的引脚!轻则烧IO,重则SoC报废。

所以我们的策略很明确:让树莓派只负责“读数字”,其他事情交给专用模块去办


如何把“电流”变成“电压”?核心在于一个电阻

既然树莓派不能读电流,那就把它变成能读的——电压。

这就是所谓的I/V 转换(电流转电压),原理极其简单:欧姆定律 $ V = I \times R $。

假设我们放一个250Ω 精密电阻在4-20mA回路中:

电流电压
4mA4 × 0.001 × 250 =1.0V
20mA20 × 0.001 × 250 =5.0V

于是,1V ~ 5V 的电压就出现在这个电阻两端,接下来只要测量这个电压,就能反推出原始电流。

但这还不是终点——因为树莓派依然不能直接测模拟电压!


树莓派没有ADC?那就外挂一个:ADS1115登场

没错,树莓派4B本身没有内置ADC(模数转换器),但它支持I2C、SPI等总线协议,可以轻松外接高精度ADC芯片。

其中最受欢迎的就是TI出品的ADS1115

为什么选ADS1115?

  • ✅ 16位分辨率(比很多单片机自带的10位ADC还高)
  • ✅ 支持4路单端或2路差分输入
  • ✅ 内置PGA(可编程增益放大器),量程灵活
  • ✅ I2C接口,仅需两根线即可通信
  • ✅ 工作电压兼容3.3V,完美匹配树莓派
  • ✅ 开源Python库完善,几分钟就能跑通

更重要的是,它的典型应用之一就是配合4-20mA信号调理电路使用。


实战接线:一步一步搭建完整链路

现在我们来组装整个系统。记住一句话:高压归高压,低压归低压,中间要有“翻译官”

元件清单

名称数量说明
树莓派4B1台主控板
4-20mA变送器(如温度/压力)1个输出工业电流信号
外部24V直流电源1个给变送器供电(不可省!)
250Ω ±0.1%金属膜电阻1个用于I/V转换
ADS1115模块1个模数转换核心
杜邦线若干——连接各部件

接线步骤详解

第一步:构建电流环
[24V+] ----+---- [4-20mA变送器 +] | [保险丝(可选)] | [24V-] <---+---- [4-20mA变送器 -] ----+---- [250Ω电阻] ---- [GND of 24V电源] ↑ 此处取电压 → 接ADS1115 AIN0

⚠️ 注意:
- 变送器由24V独立供电,不要试图用树莓派的5V或3.3V供电!
- 250Ω电阻一端接变送器负极,另一端接地(即24V电源负极);
- 电压从电阻两端取出,正端接ADC输入,负端接GND。

第二步:连接ADS1115到树莓派
ADS1115引脚接树莓派引脚功能
VDD3V3模块供电
GNDGND共地
SCLGPIO3 (SCL)I2C时钟
SDAGPIO2 (SDA)I2C数据
ADDRGND设置I2C地址为0x48

📌 提示:确保树莓派已启用I2C接口:

sudo raspi-config # → Interface Options → I2C → Yes

安装必要库:

sudo apt update sudo apt install python3-smbus i2c-tools pip3 install adafruit-circuitpython-ads1x15

检查是否识别到设备:

i2cdetect -y 1

应能看到48地址出现。


Python代码实战:实时读取电流并换算工程值

下面这段代码不仅能读电压,还能自动转成电流,并判断是否正常。

import time import board import busio from adafruit_ads1x15.ads1115 import ADS1115 from adafruit_ads1x15.analog_in import AnalogIn # 初始化I2C总线 i2c = busio.I2C(board.SCL, board.SDA) # 创建ADS1115对象(默认地址0x48) ads = ADS1115(i2c) # 设置采样率和增益 ads.data_rate = 860 # 最高速度860SPS ads.gain = 1 # ±4.096V量程(适合1~5V输入) # 创建模拟输入通道(AIN0-GND) chan = AnalogIn(ads, 0) # AIN0 对应P0 print("开始采集4-20mA信号...") print("电压(V)\t\t电流(mA)\t状态") while True: voltage = chan.voltage # 单位:伏特 current = (voltage / 250.0) * 1000 # I = V/R × 1000 → mA # 判断状态 if current < 3.8: status = "❌ 断线或故障" elif current > 20.5: status = "⚠️ 超量程" else: status = "✅ 正常" print(f"{voltage:.3f}V\t\t{current:.2f}mA\t{status}") time.sleep(1)

运行效果示例:

电压(V) 电流(mA) 状态 1.203V 4.81mA ✅ 正常 3.750V 15.00mA ✅ 正常 0.000V 0.00mA ❌ 断线或故障

你可以进一步将电流映射为实际物理量,例如:

# 假设4mA对应0℃,20mA对应100℃ temperature = (current - 4.0) * (100 / 16) print(f"当前温度: {temperature:.1f}℃")

常见坑点与调试秘籍

别以为接完线就能万事大吉。以下是新手最容易踩的几个坑:

❌ 问题1:电压始终为0或接近0

排查方向
- 是否忘了接24V电源?
- 变送器是否需要单独供电(三线制)?
- 250Ω电阻是否虚焊或阻值错误?

🔧 秘籍:用电压表直接测电阻两端,确认是否有1~5V压降。


❌ 问题2:电压超过5V,ADS1115报警甚至损坏

原因:某些变送器负载电压上限较低,当供电24V、压降过大时可能导致输出异常。

💡 解决方案:
- 改用100Ω采样电阻 → 输出0.4V~2.0V,更安全;
- 或改用带过压保护的信号隔离模块(推荐用于工业环境)。


❌ 问题3:读数跳动剧烈、噪声大

原因:工业现场电磁干扰严重,导线如同天线。

🛠 应对措施:
- 在ADS1115输入端加RC低通滤波:串联10kΩ电阻 + 并联100nF电容到地;
- 使用屏蔽双绞线连接变送器;
- 将24V电源与树莓派电源物理隔离。


✅ 高阶玩法:加一级隔离保命

如果你的应用环境恶劣(强电、雷击风险、长距离),强烈建议加入信号隔离模块,例如:

  • AMC1200:隔离型ΔΣ调制器,直接替换采样电阻;
  • HX-4I系列模块:集成I/V转换+光耦隔离+稳压输出,即插即用;
  • 带隔离的DC-DC电源:彻底切断地环路。

这类模块虽然贵一点,但能避免一次烧板子带来的损失。


总结:这套方案到底适不适合你?

这套基于树莓派4B + ADS1115 + 250Ω电阻的4-20mA采集方案,特别适合以下场景:

教育实验:学生理解工业信号采集全流程
原型开发:快速验证传感器可行性
小型自动化项目:楼宇监控、农业温室、水质检测
边缘计算前端:本地采集后通过MQTT上传云平台

但它也有局限:

⛔ 不适用于多通道高速采集(I2C速度有限)
⛔ 无原生隔离,需自行增加防护
⛔ 对电源共地要求较高,设计不当易引入噪声


最后一句真心话

技术从来不是孤立存在的。当你真正动手把一根4-20mA的线接到树莓派上,并看到屏幕上跳出第一个“4.02mA”的瞬间,那种连接“现实世界”与“数字系统”的成就感,远比背一百遍理论来得深刻。

而这套方法,正是无数工业物联网项目的起点。

如果你正在尝试类似项目,欢迎留言交流你遇到的问题。也可以分享你是如何校准系统的、用了哪些传感器,我们一起把这条路走得更稳、更远。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询