当前位置: 首页 > news >正文

树莓派4b引脚功能图接入4-20mA变送器的方法:通俗解释

树莓派接入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”的瞬间,那种连接“现实世界”与“数字系统”的成就感,远比背一百遍理论来得深刻。

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

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

http://www.cnnetsun.cn/news/561387.html

相关文章:

  • Source Han Serif CN:专业中文排版的终极解决方案
  • GitHub汉化核心技术解析:构建中文本地化生态体系
  • 纪念币预约自动化工具:零基础3分钟快速上手指南
  • DLSS Swapper终极指南:三步轻松升级游戏画质
  • 如何快速搞定纪念币预约:完整自动化解决方案
  • 碧蓝航线Alas自动化脚本:指挥官的高效秘籍与完整解决方案
  • 百度网盘解析工具:告别限速的全速下载方案
  • Switch手柄电脑适配秘籍:5分钟解锁全平台游戏体验
  • ResNet18物体识别:1000类分类实战代码解析
  • League Akari英雄联盟智能助手终极使用教程:从新手到高手
  • 强力解锁付费限制:Bypass Paywalls Clean完整使用手册
  • 计算机毕设 java 基于 JAVA 的图书租借系统设计与实现 图书资源共享平台 借阅管理信息化系统
  • DownKyi终极教程:高效下载B站高清视频的完整指南
  • iOS微信红包助手:3分钟掌握自动抢红包技巧
  • 超强3步视频去水印攻略:批量处理与画质优化的终极指南
  • 三大通信协议:TCP/IP、CAN与MQTT详解
  • 纪念币预约自动化工具:零基础也能轻松抢到心仪纪念币
  • G-Helper技术架构深度解析:华硕笔记本性能优化新范式
  • 5分钟解锁NVIDIA显卡隐藏性能:Profile Inspector深度玩法解析
  • ViGEmBus:彻底改变Windows游戏控制器兼容性的终极解决方案
  • 7大核心技术解析:LeaguePrank如何通过LCU API实现英雄联盟个性化定制
  • 如何用Scarab模组管理器3分钟定制你的空洞骑士冒险
  • 纪念币自动化预约终极方案:如何实现高效精准抢购
  • 计算机毕设 java 基于 Java 的地铁售票系统的设计与实现 智能地铁票务服务平台 轨道交通售票信息化系统
  • 歌词滚动姬:终极歌词制作神器,让音乐与文字完美共舞
  • DownKyi全方位解析:B站视频下载终极解决方案
  • 智能数据清洗自动化:从规则驱动到自适应学习的范式演进
  • 如何通过思源宋体CN实现专业级中文排版:从入门到精通的完整指南
  • ResNet18部署指南:微服务架构图像分类
  • Linux环境下CH340 USB转串口驱动配置:操作指南