TC7135双积分ADC原理与±2V电压表设计实战 📅 2026/6/19 4:14:22 1. 项目概述从“古董”芯片到现代测量的桥梁在嵌入式开发和精密测量领域ADC模数转换器是连接模拟世界与数字世界的咽喉要道。如今我们习惯了在STM32、ESP32等微控制器上轻松调用内置的12位、16位甚至更高分辨率的ADC享受其高速、集成化的便利。但你是否想过在单片机内置ADC性能羸弱或对精度、抗干扰能力有极致要求的场合我们该如何选择TC7135这颗诞生于上世纪、如今依然活跃在特定领域的4½位双积分ADC芯片就是一个绝佳的答案。它不像SAR逐次逼近型ADC那样追求速度而是以其极高的分辨率、优异的抗工频干扰能力和低廉的成本在数字万用表、电子秤、温控仪表等需要稳定、精确测量直流或缓变信号的场合牢牢占据一席之地。所谓4½位是指其最大显示值为19999即从-19999到19999比普通的4位9999多了一位最高位只能显示0或1因此精度可达1/20000即0.005%。双积分Dual-Slope是其核心工作原理通过两次积分过程将输入电压转换为时间宽度再通过计数器转换为数字量。这个过程虽然慢通常每秒几次转换但能有效抑制周期性的噪声尤其是50Hz/60Hz的工频干扰。对于很多从事仪器仪表、工业控制开发的工程师来说深入理解TC7135不仅是掌握一种经典电路设计更是理解高精度、高稳定性测量系统设计思想的钥匙。本文将带你彻底拆解TC7135的原理并手把手完成一个完整的±2V量程电压表电路设计。2. TC7135核心原理与架构深度解析要驾驭TC7135必须从根上理解其双积分原理和独特的“4½位”动态扫描输出机制。这决定了整个外围电路的设计逻辑。2.1 双积分ADC的工作原理用时间测量电压双积分ADC的核心思想可以类比为一个用水位计时的沙漏。它不直接测量电压的“高度”而是测量电压“填充”和“放空”一个标准容器所需的时间比例。其一个完整的转换周期分为三个阶段自动调零阶段AZ内部电路对失调电压进行采样和存储在后续阶段进行补偿这是实现高精度和低漂移的关键。信号积分阶段INT开关接通被测输入电压VIN对一个积分电容CINT进行固定时长TINT的充电。积分器的输出电压从起始点开始线性上升或下降取决于VIN极性上升的斜率与VIN成正比。TINT通常设计为工频周期20ms或16.67ms的整数倍例如100ms5个50Hz周期。这样在积分阶段内对称的工频干扰正负面积相等理论上会被完全平均掉这是双积分ADC抗工频干扰能力的根源。参考电压反积分阶段DE开关断开VIN接通一个极性相反的参考电压VREF。积分电容开始以固定的斜率由VREF决定放电直到积分器输出回到起始电平。这个反积分的时间TDE与被测电压VIN成正比即VIN (VREF * TDE) / TINT。最终通过一个高频时钟计数器在TDE阶段内计数的数值就是转换出的数字结果。因为TINT是固定的VREF是精确的所以计数值直接对应VIN。注意这里的“精度”核心依赖于VREF的稳定性和时钟的稳定性。VREF的微小漂移会直接导致测量误差因此参考电压源的选择和设计是电路成败的重中之重。2.2 TC7135的引脚功能与“4½位”动态扫描逻辑TC7135采用40引脚DIP或44引脚PLCC封装其引脚大致可分为电源、模拟输入、参考源、时钟、数字输出和控制几大类。关键引脚详解V V-通常采用±5V双电源供电这是保证其能够处理正负输入电压的基础。IN HI IN LO差分模拟输入端。IN LO通常接模拟地COMIN HI接信号。这种差分输入方式有助于抑制共模噪声。REF HI REF LO参考电压输入端。REF LO通常也接模拟地COM。参考电压VREF的典型值为1V满量程输入电压为2V因为设计上满量程输入对应2倍VREF。CINT BUFF AZ分别接积分电容、积分电阻缓冲放大器输出端和自动调零电容。这三个外围元件的取值需要精确计算。CLK IN时钟输入端。TC7135需要一个外部时钟典型频率为120kHz。时钟频率fCLK与积分时间TINT的关系为TINT 40000 / fCLK。要得到100ms的积分时间则fCLK 40000 / 0.1 400kHz。实际常用120kHz对应TINT333ms或更高再通过后续处理实现过采样降噪。D1-D5位驱动这是TC7135最具特色的部分。它采用动态扫描方式输出5位BCD码万、千、百、十、个位和极性、超量程等信息。D1-D5是5个位选通信号依次循环变为低电平每个位持续200个时钟周期。当D5个位有效时数据线上是个位BCD码当D4十位有效时数据线是十位BCD码以此类推。B1 B2 B4 B8段驱动这4条线输出当前位选通信号所对应位的BCD码8421码。它们需要外接上拉电阻。POL OVER UNDER极性、超量程、欠量程标志输出。STROBE数据输出选通脉冲。在每个位驱动信号的中间时刻会产生一个负脉冲可用于锁存当前稳定的BCD数据到外部锁存器如74HC574这是与单片机接口的关键信号。R/H运行/保持控制。高电平时连续转换低电平时完成当前转换后进入保持状态输出数据保持不变。这种动态扫描输出省去了5个BCD码所需的20根并行数据线极大地简化了与显示驱动器或微控制器的接口但要求接收端必须同步地锁存数据。3. 关键外围电路设计与参数计算实战理解了原理下一步就是动手计算和选择每一个外围元件。这是将芯片手册上的理论变为稳定可靠电路的核心环节。3.1 模拟部分设计积分网络与参考源模拟电路的稳定性直接决定了测量的精度和噪声水平。1. 积分电阻RINT和积分电容CINT的计算积分器的输出摆幅必须在芯片的线性范围内通常电源轨的1-2V以内。TC7135在±5V供电时推荐积分器输出摆幅为±3.5V至±4V。 计算公式RINT (满量程电压VFS) / (积分器输入电流IIB)其中IIB推荐值为20μA。对于VFS2V则RINT 2V / 20μA 100kΩ。这是一个标准值。 积分电容的计算取决于积分时间TINT和积分器输出摆幅VSWINGCINT (TINT * IIB) / VSWING假设我们设定TINT100ms抗50Hz干扰VSWING取4V则CINT (0.1s * 20μA) / 4V 0.5μF。应选择低介质吸收、高稳定性的聚丙烯CBB或聚酯薄膜电容温度系数要小。2. 自动调零电容CAZ和缓冲器输出电容CBUFCAZ和CBUF的取值会影响噪声和失调。通常CAZ取CINT的1到2倍即1μF。CBUF可取CAZ的一半或相等即0.47μF到1μF。同样需要选择优质电容。3. 参考电压源VREF电路设计这是精度的心脏。绝不能简单用电阻分压。标准做法是使用一颗精密基准电压源芯片如ADR4212.5V、REF50252.5V或LM385-2.5V。然后通过精密电阻分压得到所需的1.000V。 例如使用REF50252.5V初始精度0.05%温漂3ppm/°C。设计一个分压网络2.5V - (R115kΩ) - VREF - (R210kΩ) - GND。则VREF 2.5V * (R2/(R1R2)) 2.5V * (10k/25k) 1.000V。R1和R2应选用5ppm/°C的精密金属膜电阻。分压点后需要接一个运算放大器作为缓冲器如OPA2188以提供低阻抗输出并驱动TC7135的REF HI引脚。参考地的连接点REF LO必须与模拟地COM单点连接避免地线噪声。4. 输入滤波电路在IN HI前端必须加入一个RC低通滤波器以滤除高频噪声。例如一个1kΩ电阻串联和一个0.1μF电容对地其截止频率约为1.6kHz。这能有效抑制射频干扰。3.2 数字接口设计与单片机通信的两种方案TC7135的输出需要被读取和处理通常有两种方案专用驱动芯片方案和单片机直读方案。方案一专用驱动芯片方案适用于纯硬件显示这是最传统、最稳定的方案。使用ICL7211或类似的4½位LCD/LED驱动芯片。TC7135的位驱动信号D1-D5直接连接到7211的对应位驱动BCD输出B1-B8连接到7211的数据输入。7211会自动将动态扫描信号转换为静态的段码输出直接驱动显示屏。这种方式完全无需软件干预稳定可靠但灵活性差无法进行数据处理。方案二单片机直读方案适用于智能仪表这是目前更主流的方案利用单片机的IO口和中断资源来读取数据。硬件连接将TC7135的STROBE引脚连接到单片机的一个外部中断引脚如INT0。将D5个位驱动连接到另一个IO口或中断引脚作为帧同步信号。将B1、B2、B4、B8四根数据线连接到单片机的任意4个IO口如P1.0-P1.3。软件流程初始化IO口开启外部中断。单片机检测到D5的下降沿表示一个转换周期结束新数据帧开始启动读取流程。在STROBE的下降沿中断服务程序中根据当前是D1-D5中的哪一个需要通过轮询或硬件连接判断将B1-B8上的数据读取并存储到对应的万、千、百、十、个位缓冲区中。一帧数据5位BCD码极性收集完毕后进行数据处理如求平均、校准、送显示等。实操心得单片机读取的关键是时序同步。STROBE脉冲很窄约0.5个时钟周期必须用中断来捕获。建议使用D5作为帧起始标志因为它的顺序是固定的。在软件中可以做一个状态机根据检测到的位驱动顺序来存储数据这样更稳健。对于STM32等单片机还可以利用定时器捕获模式来精确测量反积分时间即TDE从而实现更高精度的计算但这需要更复杂的编程。4. 完整±2V量程数字电压表电路设计实例下面我们整合所有模块设计一个完整的、由±5V供电、测量±2.000V直流电压的电路并采用STM32F103C8T6作为主控。4.1 电源模块设计输入9V DC适配器。5V生成使用LM7805线性稳压器输入接9V输出5V为数字部分和基准源供电。-5V生成使用ICL7660电荷泵芯片将5V转换为-5V为TC7135的V-供电。模拟/数字地分离在电源入口处用磁珠或0Ω电阻将模拟地AGND和数字地DGND单点连接。4.2 模拟前端与TC7135核心电路输入保护与滤波IN HI前端串联一个1kΩ/0.25W的电阻和自恢复保险丝并联双向TVS管如SMBJ5.0A到地防止过压。之后接RC滤波器R1kΩ C0.1μF。TC7135外围CINT: 0.47μF CBB电容计算值附近选取标称值。RINT: 100kΩ 0.1%精密金属膜电阻。CAZ: 1μF CBB电容。CBUF: 0.47μF CBB电容。COM: 通过一个10μF钽电容和0.1μF陶瓷电容并联去耦到地作为模拟地参考点。基准电压源U1: REF5025ID2.5V基准。R1: 15kΩ, 5ppm/°C。R2: 10kΩ, 5ppm/°C。U2: OPA2188精密运放接成电压跟随器输出VREF1.000V至TC7135的REF HI。时钟电路使用74HC04门电路搭建一个120kHz的晶体振荡器为CLK IN提供稳定时钟。也可以使用单片机定时器输出PWM作为时钟源便于调节。4.3 单片机接口电路数据线TC7135的B1, B2, B4, B8分别接STM32的PA0, PA1, PA2, PA3配置为上拉输入模式。控制线STROBE 接 STM32的PB0EXTI0 下降沿中断。D5个位驱动接 STM32的PB1普通输入用于帧同步判断。R/H 接 STM32的PB2置高电平连续运行模式。显示使用一个0.56英寸的4½位共阴LED数码管通过STM32的IO口扩展如74HC595串转并驱动或者直接使用SPI接口的LED驱动芯片如TM1639。4.4 软件流程图与关键代码片段// 变量定义 volatile uint8_t digit_index 0; uint8_t bcd_data[5] {0}; // 万千百十个 uint8_t polarity 0; // STROBE中断服务程序 void EXTI0_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line0) ! RESET) { // 读取当前BCD码 uint8_t raw GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) | (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) 1) | (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2) 2) | (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3) 3); // 判断当前是哪一位简化版通过轮询D5状态和计数 // 更稳健的做法是将D1-D5也接入IO通过状态判断 static uint8_t phase 0; // ... 此处应有判断位驱动的逻辑 ... // 假设通过某种方式确定了当前是第 digit_index 位 if(digit_index 5) { bcd_data[digit_index] raw; digit_index; } else if(digit_index 5) { // 读取极性位POL引脚 polarity GPIO_ReadInputDataBit(GPIO_POL_PORT, GPIO_POL_PIN); digit_index 0; // 一帧数据就绪可以设置标志位供主循环处理 data_ready_flag 1; } EXTI_ClearITPendingBit(EXTI_Line0); } } // 主循环中处理就绪的数据 if(data_ready_flag) { data_ready_flag 0; int32_t value 0; // 将BCD数组转换为整数值 value bcd_data[4] bcd_data[3]*10 bcd_data[2]*100 bcd_data[1]*1000 bcd_data[0]*10000; if(polarity 0) { // POL低电平为负 value -value; } // 根据校准系数计算实际电压Voltage (value / 10000) * 2.000V float voltage (value / 10000.0) * 2.000; // 送显示或上传... }5. 调试要点、常见问题与性能提升技巧电路搭建完成后调试是验证设计和发现问题的关键步骤。5.1 上电调试步骤先测电源确保±5V电压准确稳定纹波小于10mV。再测基准测量REF HI引脚对COM的电压应为精确的1.000V±0.1mV。这是所有测量的基石。观察积分波形用示波器探头×10档高阻抗观察积分器输出引脚CINT。你应该看到一个周期性的三角波一段固定斜率的上升或下降紧接着一段固定斜率的下降或上升最后一段平坦的自动调零阶段。波形应干净无剧烈振荡或过冲。无波形检查时钟是否正常电源连接芯片是否损坏。波形饱和顶到电源轨积分电容CINT可能太小或输入超量程。减小输入电压或增大CINT。波形斜率不对检查积分电阻RINT和输入电压是否准确。检查数字输出用逻辑分析仪或示波器同时抓取D5、STROBE和B1波形。应看到D5为低电平时STROBE脉冲期间B1-B8上有稳定的BCD码。5.2 常见故障排查表现象可能原因排查方法显示值全零或乱跳时钟信号异常用示波器检查CLK IN引脚是否有稳定方波频率是否正确。测量值固定不变STROBE/D5连接错误单片机未正确读取检查硬件连接用逻辑分析仪确认时序检查单片机中断配置。测量值有固定偏差参考电压VREF不准用6位半万用表测量VREF实际值调整分压电阻或更换基准源。测量值跳动大噪声大电源纹波大模拟地噪声输入滤波不足检查电源去耦电容每个电源引脚就近接104和10uF电容优化布局模拟部分远离数字部分加强输入RC滤波。测量负电压显示为正极性标志POL读取错误或逻辑反检查POL引脚连接和单片机读取逻辑TC7135的POL低电平负输入。积分波形有台阶或毛刺自动调零电容CAZ或缓冲电容CBUF不良更换为高品质CBB电容检查焊接是否良好。5.3 精度校准与性能提升技巧软件校准设计两点校准法。输入端接精确的1.900V标准源读取转换值AD1接-1.900V标准源读取AD2。则实际电压计算公式可修正为V Gain * AD Offset其中Gain和Offset通过两点标定计算得出。将这两个系数存储在单片机的Flash中。过采样与滤波TC7135转换速度慢但噪声低。可以连续读取N次如16次转换结果然后求平均值。这能有效将分辨率提高log2(N)/2位。例如16次平均可将理论分辨率从1/20000提升约2位。降低热电动势影响在输入回路中避免使用不同金属的连接如铜和焊锡尽量保持连接点温度一致。使用低热电势的继电器或开关进行量程切换。屏蔽与布局将TC7135、积分电容、基准源、输入滤波器等模拟部分用金属屏蔽罩覆盖并单点接地。信号线尽量短远离时钟和数字走线。6. TC7135在现代电子设计中的定位与选型思考尽管面对Σ-Δ ADC如ADS1256等高性能集成方案的竞争TC7135及其双积分原理并未过时。它的核心优势在于极高的性价比、优异的抗工频干扰能力和无需复杂编程即可实现的高分辨率。适用场景低速高精度直流测量实验室基准电压测量、高精度温度传感器如Pt100读数、电子秤。强工频干扰环境工业现场靠近电机、变频器的仪表盘。教学与原理验证作为理解ADC原理、模拟与数字接口的绝佳教学平台。电池供电的便携设备双积分ADC在积分阶段可以关闭部分电路功耗相对较低。不适用场景高速动态信号测量如音频信号、振动信号分析。多路快速巡检转换速率太低。追求极简电路外围元件较多布局布线要求高。选型替代建议如果追求更高集成度和数字接口可以考虑TI的ADS123224位Σ-Δ它集成了PGA和参考源通过SPI输出抗干扰能力同样优秀。如果只需要3½位或4位精度ICL7106/7107是更简单廉价的选择。如果系统已有高性能单片机可以评估单片机内置ADC通过过采样和软件滤波能否达到要求这往往是最经济的方案。掌握TC7135更像是掌握了一种设计哲学——用速度换取精度和抗干扰性。在纷繁复杂的电子世界里这种看似“笨拙”却极其稳健的方法依然是解决许多实际测量难题的利器。当你需要测量一个缓慢变化、但要求绝对稳定的电压时不妨回头看看这个经典的设计它可能会给你带来意想不到的可靠与精准。