基于 ESP32 的工业物联网控制板
仅自身学习记录,大佬指正,画的烂,轻点喷
一.简介:
板卡支持 Type-C、DC 直流座、接线端子 3 种外部供电,内置锂电池充放电管理芯片,以 ESP32 为核心,自带 WiFi + 蓝牙双模无线通信,同时集成 USB 转串口、RS485 工业总线,支持本地调试、远程物联网接入。4 路继电器隔离输出,可直接驱动强电 / 大功率负载(电机、灯具等),支持输入电压 / 电池电压 ADC 采集、单总线温度采集,可扩展各类模拟 / 数字传感器;板载 TF 卡插槽,支持离线数据缓存、参数配置、日志存储。2 路用户按键、3 路状态 LED,支持本地参数设置与状态指示;预留 FPC 扩展接口,可外接屏幕、传感器模组等外设。
二.原理图解析:
1.ADC 1电压采集:原理图里的R34 和 R35,两个 100K 电阻串联,把最高 12V 的输入电压,分成一半,送到 ESP32 的 ADC1 引脚(ESP32 只能测最高 3.3V 的电压,必须分压才能测高电压)
2.电容「通交流、隔直流」,电容就是电源的 “蓄水池”,当后级电路突然需要大电流时,电容立刻放电补电;当电源有尖峰噪声时,电容把噪声吸收掉,保证电源电压稳定、干净。C1、C247uF 电解电容,放在电源输入口,滤除电源的低频纹波;C1、C2 47uF + C3 100nF + C4 10nF,就是 “大 + 中 + 小” 电容组合,滤除从低频到高频的所有电源噪声;
3.二极管正向导通、反向截止:正向电压超过导通阈值(肖特基管约 0.2V,普通硅管约 0.7V),D1SS34 二极管,和Q1PMOS 配合,实现 Type-C 的 VBUS 和外部 DC 电源输入的自动切换,哪个电压高,哪个路径导通,另一个路径被二极管截止,防止电源倒灌损坏设备。
4.二极管的ESD / 浪涌保护,TVS 二极管是特殊的二极管,反向电压超过击穿电压时,会瞬间导通,把浪涌、静电的高压能量泄放到地,保护后级电路,就像电路里的 “安全阀”,压力超过阈值就自动泄压。原理图里的D2SMBJ6.0A,并联在电源输入口和地之间,当电源输入有浪涌、静电尖峰时,TVS 瞬间导通,把高压泄放掉,把电压钳位在 6V 左右,保护后级所有芯片不会被高压烧坏。
1.二极管整流作用:D3SS34 二极管,外部电源正常时,电流从 VEXT 经过 D3 流到 VDC,给后级供电;外部电源断开时,电池的电流无法反向流过 D3,只能通过 Q2 PMOS 给后级供电,实现充放电路径的隔离。
1.电容储能 / 掉电续航作用,电容充满电后,外部电源断开时,它能放电给后级电路供电,撑一小段时间,就像蓄水池停水了,还能放一会水。Buck 电路输出端的C10、C1122uF 电容,除了滤波,还能在芯片开关切换的间隙,持续给后级电路供电,保证输出电压稳定。
2.电容信号耦合 / 隔直作用,Buck 电路里的C9电容,并联在反馈电阻R8上,把反馈信号里的交流波动传过去,优化电源的瞬态响应,直流成分则被挡住。
1.电容的RC 延时作用(利用「电容两端电压不能突变,充电需要时间」的特性,实现延时、消抖功能,就像蓄水池接满水需要时间,我们可以用接满水的时间来做延时。)例如上电复位电路:R1210K 电阻 +C141uF 电容,组成 RC 电路。上电时,VDD 通过 R12 给 C14 充电,C14 两端的电压慢慢上升,ESP32 的 EN 引脚要等电压升到足够高才会启动,实现上电延时,保证电源稳定后芯片再启动;
2.U3 的电源引脚旁边放了C23100nF 去耦电容,保证芯片电源稳定,不会因为芯片内部开关动作产生电压波动。
1.电容的RC 消抖作用,SW1 按键旁边的C19100nF 电容,和R38上拉电阻组成 RC 电路,按键按下 / 松开时的抖动,会被电容 “抹平”,防止 ESP32 误判成多次按键。
1.二极管续流保护,继电器、电机这类感性负载,断电时会产生反向的高压尖峰,二极管给这个反向高压提供一个泄放路径,防止高压击穿其他元件。4 路继电器电路里的D4、D5、D6、D7,都是 SS34 二极管,反向并联在继电器线圈两端。当三极管关断时,继电器线圈的反向感应电流,通过二极管形成回路泄放,保护三极管不会被高压击穿。
2.ESP32 的 IO 口只能输出很小的电流(最大几十 mA),根本驱动不了继电器线圈,所以用三极管做开关,IO 口输出小电流控制三极管导通,三极管就能给继电器线圈提供大电流,让继电器吸合。NPN 三极管:基极 B 输入小电流,就能控制集电极 C 到发射极 E 的大电流导通;发射极 E 必须接地,基极 B 电压比发射极高 0.7V 左右就会导通。原理图里的Q5SS8050 三极管,基极通过R214.7K 电阻接到 ESP32 的IO32引脚:
- IO32 输出高电平(3.3V):基极有电流流入,三极管导通,继电器 K1 的线圈有电流流过,继电器吸合,触点闭合,控制外部负载;
- IO32 输出低电平(0V):基极没有电流,三极管截止,继电器线圈没有电流,继电器断开,触点打开。
R224.7K 下拉电阻,作用是 IO 口上电高阻态时,把基极拉到低电平,保证三极管可靠截止,防止继电器上电误动作,这是工业级设计的必备细节。
1.自动下载电路开关:原理图里的Q3、Q4SS8050 三极管,组成自动下载电路,CH340 的 RTS# 和 DTR# 引脚输出高低电平,就能控制三极管的通断,进而控制 ESP32 的 EN 和 IO0 引脚,实现自动下载。
三.元器件选型解析
1.LED 指示灯的限流电阻(对应板子上的R42 1.5K电阻 + 蓝色 LEDLD3)
- 单片机总电源电压 U 总 = 3.3V
- 蓝色 LED 导通之后,自己会固定吃掉 1.8V 的电压(叫正向导通压降 Vf,是 LED 的固有电气参数,数据手册上查)
- 指示灯用的 LED,最佳工作电流是 1mA(1-5mA 都能亮,最佳工作电流核心参考是手册标注的额定正向工作电流 If)如果选 1K 电阻:电流
I=(3.3-1.8)/1000=1.5mA,电流更大,LED 更亮,但功耗更高,寿命略有缩短,属于可用范围;选 10K 电阻:电流I=(3.3-1.8)/10000=0.15mA,电流太小,LED 亮度极低,甚至完全看不到,达不到指示灯的设计目的,不可用。 - 根据欧姆定律 R=U/I,R=1.5V / 0.001A = 1500Ω = 1.5KΩ
2.ADC 电压采集的分压电阻(板子上的 R34、R35 两个 100K 电阻,12V 电压采集)
为什么选两个 100K?ESP32 的 ADC 引脚,最高只能测 3.3V 的电压,超过就会烧坏芯片,两个电阻串联,中间点的电压(就是 ADC 测到的电压)U_ADC = 输入电压 U_IN × R35/(R34+R35),R34=100K,R35=100K,所以分压比 = 100/(100+100)=0.5,当输入 6V 时U_ADC=6V×0.5=3V,刚好在 ADC 的 3.3V 量程内。这类小功率电机驱动板,行业通用的额定输入电压就是 12V(适配绝大多数 12V 直流有刷电机、12V 电源适配器、12V 锂电池组),这是板子设计的核心需求。如果要测 12V,会调整电阻比例(比如 300K+100K,分压比 1:4),把 12V 降到 3V 以内,适配 ADC 量程。
3.三极管基极限流电阻(对应板子上的 R21 4.7K 电阻,继电器驱动三极管 Q5)
为什么 R21 选 4.7K?ESP32 的 IO 口输出高电平是 3.3V,NPN 三极管要导通,基极和发射极之间必须有 0.7V 的电压(叫发射结压降,硅三极管固定值)三极管要完全打开(饱和导通),基极需要的最小电流 IB=0.5mA(这个是根据继电器需要的 50mA 电流(数据手册得),除以三极管放大倍数 100 算出来的,也叫直流电流放大系数,符号是 β(贝塔),也叫 hFE),假设手册标注 hFE 最小值为 100,典型值为 100~300,放大倍数的唯一权威来源,是三极管的数据手册,必须以手册标注的hFE 最小值。此时ESP32 IO 口输出 3.3V,三极管发射结压降 0.7V,限流电阻需要承担的电压 Ur=3.3V-0.7V=2.6V;算电阻最大允许阻值:R=Ur/Ib=2.6V/0.5mA=5.2KΩ,只要电阻小于这个值,就能满足最小 Ib 需求;选4.7k因为一是 5.2K 不是标准阻值,采购成本高、难度大;二是 4.7K 阻值更小,基极电流更大,给了过驱动余量,应对电源电压波动、元件参数误差,保证三极管在任何情况下都能彻底饱和。
4.锂电池充电电流采样电阻(对应你板子上的 R6 0.1Ω 电阻,TP4056 充电电路)
TP4056 芯片通过 R6 电阻两端的电压,来控制充电电流,为什么 R6 选 0.1Ω?
- TP4056 充电芯片的固定公式:充电电流 I=100mV/R(100mV 是芯片内部固定的参考电压,芯片手册里写的)
- 你板子要的锂电池充电电流是 1A(常规 18650 锂电池的标准充电电流),R=100mV/I=0.1V/1A=0.1Ω
5.继电器驱动电路
三极管Q5的集电极,接了继电器线圈和 12V 电源,这个节点就是一个 “三通接头”:从 12V 电源流进节点的电流(继电器线圈的电流),全部都流出节点,流进三极管的集电极,所以三极管的集电极电流 = 继电器的工作电流,我们选三极管的时候,必须选能承受这个电流的型号,不然就会烧坏。
