返回博客
光耦隔离电路设计:TLP281 在数字量 IO 中的应用

光耦隔离电路设计:TLP281 在数字量 IO 中的应用

为什么工业 IO 需要隔离

工业现场设备分散,地电位差异可达数十伏。直接连接会导致地环路电流,引起信号失真、设备损坏。光耦隔离通过光电转换实现电气隔离,切断地环路。

共地干扰

不同设备地电位不等,形成地环路。地环路电流流过信号线,产生共模噪声,导致误触发或通讯失败。

浪涌保护

雷击、感性负载开关产生浪涌电压,直接耦合到 IO 口损坏 MCU。光耦隔离承受浪涌,保护后级电路。

电位差匹配

24V 工业信号与 3.3V MCU 电平不兼容,需电平转换。光耦同时实现隔离和电平转换。

光耦工作原理

光耦由发光二极管(LED)和光敏三极管组成。输入电流驱动 LED 发光,光敏三极管接收光信号导通,实现电-光-电转换。

关键参数

  • 电流传输比(CTR,Current Transfer Ratio):输出电流与输入电流之比,通常 50%-600%
  • 响应时间:导通延迟和关断延迟,典型值 3-10μs
  • 隔离电压:输入输出间耐压,通常 2500V-5000V
  • 带宽:信号传输频率上限,低速光耦约 10kHz,高速可达 10MHz

CTR 计算

CTR 决定输出驱动能力:

#define INPUT_CURRENT 5.0f     // 输入电流 5mA
#define CTR_MIN 0.5f           // 最小 CTR 50%

float output_current = INPUT_CURRENT * CTR_MIN;  // 2.5mA

TLP281-4 四通道光耦

TLP281-4 是四通道光耦,每通道独立隔离,适合多路 IO 隔离。

引脚定义

Pin 1-4:   LED 阳极(输入+)
Pin 5-8:   LED 阴极(输入-)
Pin 9-12:  三极管集电极(输出+)
Pin 13-16: 三极管发射极(输出-)

电气特性

参数 最小值 典型值 最大值 单位
CTR 50 100 600 %
隔离电压 2500 - - V
响应时间 - 4 10 μs
工作温度 -30 - 100

输入侧限流电阻计算

LED 限流电阻决定输入电流,需平衡功耗和 CTR。

计算公式

R = (Vin - Vf) / If
  • Vin:输入电压
  • Vf:LED 正向压降,典型 1.2V
  • If:LED 正向电流,通常 5-10mA

24V 输入计算

#define INPUT_VOLTAGE 24.0f
#define LED_FORWARD_VOLTAGE 1.2f
#define LED_CURRENT 0.005f  // 5mA

float resistor_value = (INPUT_VOLTAGE - LED_FORWARD_VOLTAGE) / LED_CURRENT;
// 结果 4560Ω,选用 4.7kΩ 或 5.1kΩ

电阻功耗计算

#define RESISTOR_VALUE 4700.0f

float power_loss = (INPUT_VOLTAGE - LED_FORWARD_VOLTAGE) * 
                   (INPUT_VOLTAGE - LED_FORWARD_VOLTAGE) / RESISTOR_VALUE;
// 结果 0.11W,选用 1/4W 电阻

输出侧上拉电阻选择

光耦输出为开路集电极,需上拉电阻到电源。

上拉电阻计算

#define VCC 3.3f
#define OUTPUT_CURRENT 0.002f  // 输出电流 2mA

float pullup_resistor = VCC / OUTPUT_CURRENT;
// 结果 1650Ω,选用 1.5kΩ 或 2.2kΩ

上拉电阻越小,响应越快但功耗越大。高速信号选小阻值,低速信号选大阻值。

NPN 与 PNP 接法差异

NPN 接法(共发射极)

输入+ --- 限流电阻 --- LED --- 输入-
输出+ --- 上拉电阻 --- 集电极
输出- --- 发射极 --- GND

输出低电平有效(LED 导通时输出低)。

PNP 接法(共集电极)

输入+ --- 限流电阻 --- LED --- 输入-
输出+ --- 集电极 --- VCC
输出- --- 发射极 --- 下拉电阻 --- GND

输出高电平有效(LED 导通时输出高)。

选择建议

  • MCU 输入检测:NPN 接法(低电平触发)
  • 继电器驱动:NPN 接法(低电平吸合)
  • 高电平有效场景:PNP 接法

高速脉冲场景光耦选型

TLP281 响应时间约 4μs,仅适合 <10kHz 信号。高速脉冲需选用高速光耦。

6N137 高速光耦

6N137 为高速光耦,带宽 10Mbps,响应时间 75ns,适合 SPI、UART 等高速信号。

选型对比

型号 带宽 响应时间 CTR 适用场景
TLP281 10kHz 4μs 100% 开关量 IO
6N137 10Mbps 75ns 20% SPI、UART
HCPL-2630 10Mbps 50ns 7% 高速差分

实际电路设计

数字量输入隔离

24V 工业信号输入,3.3V MCU 检测:

24V 输入+ --- 4.7kΩ --- LED --- 输入-
3.3V --- 2.2kΩ --- 集电极 --- MCU GPIO
发射极 --- GND

MCU GPIO 配置为输入上拉或外部上拉。

数字量输出隔离

MCU 输出控制 24V 继电器:

3.3V GPIO --- 1kΩ --- LED --- GND
24V --- 继电器线圈 --- 集电极
发射极 --- GND

继电器线圈并联续流二极管(1N4007),防止反向电动势。

完整四通道电路

使用 TLP281-4 实现四路输入输出:

// 通道 1:输入
#define IN1_RESISTOR 4700
#define OUT1_PULLUP 2200

// 通道 2:输出
#define IN2_RESISTOR 1000
#define OUT2_LOAD 100  // 继电器线圈电阻

// 通道 3:输入
// 通道 4:输出

PCB 注意事项

布局原则

  • 输入输出分区布局,避免交叉
  • 光耦横跨隔离区
  • 限流电阻靠近输入连接器
  • 上拉电阻靠近 MCU

隔离间距

输入输出间保持足够间距,满足爬电距离要求。

24V 系统:

  • 基本绝缘:2.5mm
  • 加强绝缘:5mm

接地处理

输入侧地(GND_IN)与输出侧地(GND_OUT)完全隔离,不共地。

完整代码示例

输入检测

#include "stm32f1xx_hal.h"

#define OPTO_INPUT_PIN GPIO_PIN_0
#define OPTO_INPUT_PORT GPIOA

void Opto_Input_Init(void) {
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    
    __HAL_RCC_GPIOA_CLK_ENABLE();
    
    GPIO_InitStruct.Pin = OPTO_INPUT_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    HAL_GPIO_Init(OPTO_INPUT_PORT, &GPIO_InitStruct);
}

uint8_t Opto_Input_Read(void) {
    return HAL_GPIO_ReadPin(OPTO_INPUT_PORT, OPTO_INPUT_PIN) == GPIO_PIN_RESET;
}

输出控制

#define OPTO_OUTPUT_PIN GPIO_PIN_1
#define OPTO_OUTPUT_PORT GPIOA

void Opto_Output_Init(void) {
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    
    __HAL_RCC_GPIOA_CLK_ENABLE();
    
    GPIO_InitStruct.Pin = OPTO_OUTPUT_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(OPTO_OUTPUT_PORT, &GPIO_InitStruct);
    
    HAL_GPIO_WritePin(OPTO_OUTPUT_PORT, OPTO_OUTPUT_PIN, GPIO_PIN_RESET);
}

void Opto_Output_Set(uint8_t state) {
    HAL_GPIO_WritePin(OPTO_OUTPUT_PORT, OPTO_OUTPUT_PIN, 
                      state ? GPIO_PIN_SET : GPIO_PIN_RESET);
}

常见问题

输出电平不稳定

原因:上拉电阻过大或 CTR 过小。

解决:减小上拉电阻或选用高 CTR 光耦。

响应慢

原因:光耦响应时间长或上拉电阻过大。

解决:选用高速光耦(6N137)或减小上拉电阻。

隔离失效

原因:PCB 隔离间距不足或布局不当。

解决:增加隔离间距,优化布局。

功耗过大

原因:输入电流过大或上拉电阻过小。

解决:增大限流电阻或上拉电阻。

测试验证

隔离电压测试

使用耐压测试仪验证隔离电压:

#define ISOLATION_VOLTAGE 2500  // 2500V
#define TEST_DURATION 60        // 60秒

// 测试步骤
// 1. 输入输出间施加 2500V AC
// 2. 保持 60 秒
// 3. 检查漏电流 < 1mA

响应时间测试

使用示波器测量响应时间:

// 测试步骤
// 1. 输入施加阶跃信号
// 2. 测量输出 10%-90% 上升时间
// 3. 测量输出 90%-10% 下降时间
// 4. 确认满足设计要求

总结

光耦隔离电路设计关键点:

  • TLP281-4 适合低速数字量 IO 隔离
  • 输入限流电阻根据输入电压计算(24V 用 4.7kΩ)
  • 输出上拉电阻根据输出电流选择(2-10kΩ)
  • NPN 接法低电平有效,PNP 接法高电平有效
  • 高速信号选用 6N137 等高速光耦
  • PCB 布局注意输入输出分区和隔离间距
  • 继电器输出需并联续流二极管

按此设计可实现可靠的工业 IO 隔离。