为Arduino构建隔离模拟输入电路
元件与物料
| 元件 | 数量 | 规格/备注 |
|---|---|---|
| 100kΩ 电阻 | 2 | ±1% 金属膜 |
| Arduino UNO | 1 | |
| LM331 电压-频率转换器 | 1 | 核心隔离元件 |
| LM7808 稳压器 | 1 | 8V 输出供现场侧 |
| 3.3kΩ / 270Ω / 47Ω / 12kΩ / 6.8kΩ / 10kΩ / 330Ω / 220Ω 电阻 | 各1 | ±1% 金属膜 |
| 5kΩ 多圈精密电位器 | 1 | 校准用 |
| 100nF / 10nF / 1μF / 4.7μF / 220μF 电容 | 各1 | Mylar/电解 |
| 1N4001 二极管 | 4 | 整流/保护 |
| 4N25 光耦隔离器 | 1 | 实现信号隔离传输 |
必备工具
- 电烙铁
应用与服务
- Arduino IDE
项目原理
现场传感器信号常受电涌、雷击、EMI 干扰及地电位差影响。彻底解决的方法是**完全隔离**现场侧与控制侧,这需要现场侧独立供电。
本电路采用 **LM331** 将输入电压/电流转换为频率信号,经 **4N25 光耦** 隔离传输至 Arduino 数字引脚,再由 Arduino 测量频率还原模拟量。详细设计见博客:ardupiclab.blogspot.it。
输入范围与接线
- 电压输入:约 20mV ~ 5V(经分压);
- 电流输入:4~20mA(接入跳线 W1,并联 R2/R3 约 250Ω 满量程对应 1~5V);
- Arduino 侧仅需 3 根线:光耦集电极接 D5(配 2.2kΩ 上拉至 5V)、光耦发射极接 GND、现场侧地与 Arduino 地**不连接**;
- 若需 10V 量程,将 7808 换为 7815,变压器 T1 次级电压/功率相应提升;
- 调节电位器 P1 使转换系数约 1 kHz/V。
Arduino 频率测量两种方式
- 脉宽法:两次
pulseIn()分别测高/低电平宽度求和得周期。分辨率低(微秒级),易受 50/60Hz 工频干扰,但响应快; - 频率计数法(推荐):用 Timer/Counter 硬件计数,配合 FreqCounter 库(Martin Nawrath)。选 1000ms 门控时间(50/60Hz 整数倍周期),抗工频干扰极强,分辨率比脉宽法高 5 倍。
示例代码
#include
void setup() {
Serial.begin(9600);
Serial.println("Optoisolated analog input");
}
long int frq;
void loop() {
FreqCounter::f_comp = 0;
FreqCounter::start(1000); // 1000ms 门控
while (FreqCounter::f_ready == 0);
frq = FreqCounter::f_freq;
Serial.println(frq);
delay(100);
}
原理图

电路接受 20mV~5V 电压或 4~20mA 电流输入(接入 W1)。R2/R3 并联约 250Ω 实现电流转电压。光耦输出接 Arduino D5 加 2.2kΩ 上拉。若扩展至 10V 量程,需将 7808 换 7815 并相应调整变压器 T1。P1 调节使输出频率约 1kHz/V。
制造工艺
- 智能缺水报警器 – DIY植物土壤湿度监测装置
- 用 Arduino Nano 和 Nokia 5110 LCD 自制 20kHz 示波器:简易 DIY 指南
- 智能窗帘:基于Arduino与太阳能的自动光控系统
- 意大利语单词时钟:Arduino Nano + NeoPixel 144 灯珠 + LCD + RTC 打造
- 仅用 3 根模拟口驱动 4×3 矩阵键盘:电阻分压识别键值
- 基于Arduino MKR Fox 1200构建可靠Sigfox千瓦时电表
- 蓝牙温度监测仪:Arduino Nano + NTC 热敏电阻 + HC-06 无线传输
- 非接触手势门锁:APDS-9960 + Arduino 实现安全门禁
- Arduino Nano 多功能伴侣套件 —— 电阻/电容测量、二极管测试、RTC时钟一体化
- Arduino Micro/Leonardo USB MIDI 适配器套件 —— 完整元件清单与固件指南
- 信用卡大小 Arduboy 克隆机:Arduino Nano + I²C OLED 复古游戏机自制
- 两个电阻自制 Arduino UNO 视频输出线(RCA/TVout)