MCU常见输入输出设备
1. 输入输出设备分类体系
- 输入设备:各类传感器(温湿度、光照、运动等)、按键、旋钮
- 输出设备:继电器、电机驱动器、LED、显示屏、压缩机控制单元
- 通信接口:UART、I2C、SPI、CAN等总线设备
- 混合设备:同时具备输入输出功能的复杂模块
设备种类复杂多样,所以针对当前用到的外设进行归纳整理。
1.1. 标准化控制流程
- 设备初始化与配置
- 数据采集与处理(输入设备)
- 控制信号生成与输出(输出设备)
- 状态监控与错误处理
2. 输入设备
2.1. 电流互感器(Current Transformer)
作用:将高电流按比例转换为低电流的电力设备,核心作用是实现测量、计量与继电保护的安全隔离,避免高电压大电流直接接入仪表或保护装置。
工作原理: 应该属于一种特殊的变压器(Transformer),电流互感器基于电磁感应原理工作。它的一次侧(初级)线圈匝数较少,串联在被测电路中;二次侧(次级)线圈匝数较多,连接测量仪表。当一次侧有电流通过时,产生的交变磁通在铁芯中闭合,从而在二次侧感应出与一次电流成比例的电压信号。
2.2. 电流传感器
作用:检测电流,并将其转换成相应的电压信号变化
电流传感器类型:
- 互感式电流传感器,同电流互感器基于电磁感应原理
- 霍尔效应式电流传感器
- 闭环式霍尔效应电流传感器
- 开环式霍尔效应电流传感器
- 磁阻式电流传感器
2.2.1. 电流传感器应用实践
背景:因客户需要使用电流互感器来测试压缩机工作电流,但是没有电流互感器检测电路,所以计划直接将电流互感器接到压力传感器检测电路上,由与单片机AD口只能采集0~3.3V输入,所以检测电路和原来的有所区别,因此原来的AD-电流对应关系有所改变,故需要重新测试。
首先我根据电路和电流互感器的手册进行了一个理论值的计算,因为电流互感器有输入电流与输出电压的关系,根据电路得出实际输入单片机的电压,再根据单片机的配置将电压转换成AD值。这样就得到了一个理论上的AD-电流对应关系表。
测试方案:
- 方法一 用电压源根据电流互感器的关系,模拟输入得出AD-电流表
- 方法二 搞一个电流,通过电流互感器,直接记录AD值,从而得到AD-电流表
不巧,我选择了麻烦的方法二
MCU ─── 电流互感器 ─── 大电流变压器 ─── 接触调压器 ─── 市电
| |
钳形电流表 ────┘
- 大电流变压器:是一种能够产生非常大电流的特殊变压器。其核心工作原理可以概括为:通过巨大匝数比和特殊结构,将普通输入电流转换为安全可控、低电压、大电流输出的特殊变压器。
- 接触调压器:是一种常见的交流电压调节设备。其核心工作原理可以概括为:通过改变碳刷在环形铁芯线圈上的接触位置,来改变自耦变压器的匝数比,从而实现平滑、连续地调节输出电压。
- 钳形电流表:一种电流表,不需要接入电路,就是一种电流互感器。其工作原理可以概括为:当钳口夹住一根载流导线时,该导线就充当了电流互感器的一次侧绕组(1匝)。导线中流动的交流电会在钳形铁芯中产生一个交变磁场。这个交变磁场会绕在铁芯上的二次侧绕组中感应出比例缩小的交流电流,这个缩小后的二次侧电流被送入表内的测量电路,最终由数字表头处理并显示出原始的一次侧电流值。
实际操作:缓慢调节初级电压(通过调压器),同时监测输出电流,使其达到预设的试验值
Q: 疑惑的是为什么大电流变压器的二次侧为什么可以短接而不造成短路?明明回路上没有负载却能产生任意电流?
大电流变压器从设计初衷上,就是一个“故意”的、可控的短路变压器。 它的次级电压极低,而次级内阻极低,使得在短接时,电流被精确控制在其额定值附近,而不会产生破坏性后果。
像普通的变压器,都是设计为电压源。主要的工作是提供一个稳定的电压,如果输出短路,负载测阻抗接近为0,意味着电流会趋向于无穷大(I = U/R, R→0, I→∞)。
大电流变压器采用 “多匝初级绕组 + 极少匝次级绕组”由于匝数比非常大,次级电压被强制降低到一个非常低的值(通常只有几伏特,像我手上这款只有3V)。
整个回路的总电阻 Rtotal = Rinternal + Rload + Rconnection。
如果短接也就是 Rload = Rconnection ≈ 0, Rtotal = Rinternal。
由于变压器的内阻是一个是一个固定的、已知的很小值,这个最大电流值也就是设备的额定短路输出电流,是设计好的,不会无限大(Imax = Vout / Rinternal)。所以即使是短路也是变压器的正常工作状态。
2.3. 温度传感器
作用:检测环境温度,并将其转换成相应的电阻值变化、电压变化。
常见温度传感器类型:
| 传感器类型 | 工作原理 | 输出信号 | 主要优点 | 主要缺点 | 典型应用 |
|---|---|---|---|---|---|
| 热电阻 (RTD) | 金属电阻随温度变化 | 电阻 | 高精度、高稳定性 | 成本高、响应慢 | 工业精密测量 |
| 热敏电阻 (NTC) | 半导体电阻随温度剧变 | 电阻 | 高灵敏度、低成本 | 非线性、范围窄 | 家电、消费电子 |
| 热电偶 (TC) | 两种金属的热电势 | 电压 | 耐高温 | 精度较低 | 高温工业现场 |
| IC传感器 | PN结特性 | 电压/数字信号 | 易使用、线性好、数字化 | 范围窄、响应慢 | 电子设备、计算机 |
2.3.1. NTC温度传感器应用
在白色家电行业,NTC温度传感器应用十分广泛,像一个热泵空调的设备可以用到八九个温度探头。因为本质上是热敏电阻,将温度变化转变为电阻变化。所以其电路设计通常如下:
+3.3V
│
│
[Rntc]
├─────── [Rprocet(10K)] ──┬──> to MCU ADC Pin
│ │
[R1(5K)] [C1(104)]
├─────────────────────────┘
GND
我们这里采用了一个下拉一个电阻并在电源两端,通过MCU的ADC采集NTC上的电压经过欧姆定律求出NTC的阻值:
- 根据串联分压定律得到Vntc:Vntc = 3.3V * (Rntc / (R1 + Rntc))
- 通过测量得到的Vntc,可以反推出NTC此时的电阻值Rntc:Rntc = R1 * Vntc / (3.3V - Vntc)
- 最后,根据求出的Rntc值,查询NTC的温度-电阻对照表或使用方程式等,即可计算出当前的温度值。
我们拿NTC温度传感器一份阻值表作为参考,阻值表如下,表中写了的一些重要参数:
TEMPERATURE VS RESISTANCE TABLE
Resistance 10k Ohms at 25deg. C
Resistance Tolerance + / -1%
B Value 3435K at 25/85 deg. C
B Value Tolerance + / - 1%
Temp.(deg. C) Rmax (k Ohms) Rnor (k Ohms) Rmin (k Ohms)
-50 383.6636 366.4100 349.9328
-49 360.5607 344.5753 329.2657
-48 339.0119 324.1796 309.9653
...
其中:
- Resistance(标称电阻值): 10k Ohms at 25°C;通常式指再基准温度下(25℃)的电阻值;
- Resistance Tolerance(电阻精度): +/- 1% ;在基准温度下,实际阻值与标称10KΩ的盘查范围;
- B Value(B值): 3435K at 25/85°C;(K,开尔文)B值是使用公式法将NTC热敏电阻的电阻值转换为温度值的核心参数,通常指电阻随温度变化的速率。
Q: 如何用查表法完成阻值的转换?
A: 根据厂家提供的完整《电阻-温度对照表》进行插值计算。这是我们较为常用和准确的方法。
- 通过计算,直接将电阻-温度对照表,转换成AD-温度对照表。这样的话对于单片机就毫无压力。
- 或,直接用电阻-温度对照表,这样就需要多做一步将AD转换为电阻值的处理。
- 将测量AD转换为电阻值;
- 再电阻-温度对照表,进行定位区间;
- 进行插值计算处理。
Q: 如何用公式法完成阻值的转换?
此处不做展开,这里需要使用上面提到的B值公式进行计算。这种方法我们并不常用,受限于MCU算力,使得其计算精度还略低于查表法。
涉及公式如下:
\[R_T = R_0 \cdot e^{[B \cdot (\frac{1}{T} - \frac{1}{T_0})]} \tag{1}\]其中:
- $ R_T $:在温度 $ T $ (开尔文) 时的电阻值(即MCU测量计算结果出的目标温度阻值)。
- $ R_0 $:在额定温度 $ T_0 $ (开尔文) 时的电阻值(即10kΩ @ 25°C)。
- $ B $:B值(即3435K)。
- $ T $:待求解的温度(单位为开尔文,K)。
- $ T_0 $:额定温度(单位为开尔文,K)。通常是25°C,即$ 25 + 273.15 = 298.15K $。
- $ e $:自然常数。