ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ICL7107数字电压表DIY完全指南:从双积分原理到校准实战

ICL7107数字电压表DIY完全指南:从双积分原理到校准实战 第一次看到老式数字万用表上跳动的数字时我就在想那个屏幕背后到底藏了多少电路。后来拆开才知道真正负责测量的核心往往就是一块ICL7107——一颗诞生于上世纪、却至今还在大量使用的3位半双积分A/D转换芯片。直到今天它依然是自制数字电压表、可调电源表头、电子负载显示模块里最常见的方案。你不需要写一行程序只要照着电路接好元件通电就是一台能用的数字电压表。这篇就以ICL7107为核心把手把手做一台3位半数字电压表的完整流程——电路思路、元件取值、接线表、校准步骤和常见故障——一次讲清楚。适合电子入门玩家、仪器仪表DIY爱好者也适合想给自制电源补一块表头的人参考。1. 项目定位与整体设计思路1.1 3位半到底是什么意思“3位半”这个叫法新手第一次听会觉得很绕。其实它指的是显示器一共能显示4位但最高位不完整这一位只能显示“1”或者不显示也可以带正负号。所以满量程最大读数是1999也就是三位0到9加上最高位的1合起来叫“三位半”。放在数字电压表上如果你做的是2V量程显示范围就是-1.999V到1.999V如果你扩展成20V量程显示的就是-19.99V到19.99V。虽然屏幕上也有4位数字但是最左边那一位永远只能显示1所以不能叫4位表只能叫3位半。这个细节在买表头、看参数的时候特别容易踩坑很多卖家标的“4位”其实是“三位半”大家先记住这一点。ICL7107本身就是为3位半显示设计的内部已经集成了A/D转换、自动调零、极性判断、超量程判断和LED七段码译码输出。也就是说从模拟电压进来到最后驱动数码管显示数字中间那一大堆电路基本都在芯片里面完成了外围只需要少量电阻电容。这也是这个项目非常适合第一次做表头的人的原因你不需要碰单片机也不需要看什么软件协议焊好了就通电通电就显示。1.2 为什么选ICL7107而不是单片机方案现在随便一颗单片机都有内置ADC再配个OLED屏幕写几行代码也能做数字电压表。那为什么我还要坚持推荐ICL7107这种老芯片因为它们的定位和使用体验完全不同。首先是省事。单片机方案要先写程序、烧录、调ADC参考电压、处理显示刷新还要考虑程序崩溃的风险。ICL7107则是纯硬件干活通电即可没有软件层面的问题。其次是抗干扰。ICL7107用的是双积分转换原理对50Hz工频干扰有天然抑制能力这一点在测量电源纹波或环境复杂的场景下非常明显单片机ADC反而需要额外做滤波和屏蔽。还有一个很实际的原因ICL7107的价格非常便宜几块钱一片而且它驱动LED数码管是直接输出的不需要再加驱动芯片整体BOM成本能压到十几块钱。对想学习仪表设计的人来说通过这个项目你能理解基准电压、积分电容、模拟地、数字地这些仪表设计的基本功这些知识是通用的以后换任何ADC芯片都还会用到。所以我的建议是如果你追求快速做一个能用的表用ICL7107如果你想顺便练练嵌入式那再去玩单片机方案。这个项目的核心价值在于让你把“模拟电压变成数字显示”这件事彻底看明白。2. ICL7107工作原理与关键参数2.1 双积分转换原理通俗解读ICL7107是双积分型A/D转换器名字听起来专业原理其实不难。你可以把它想象成用固定大小的水流给一个水池灌水灌水时间固定然后关掉进水阀再打开一个已知排水速度的排水阀用秒表计时看水池多久被排空。水池里的水量越多排水时间就越长排水时间就和水量成正比。换到芯片内部这个“水池”就是积分电容。第一步在固定的时间内让被测电压通过积分电阻给积分电容充电第二步把充电回路切掉换成基准电压向反方向放电同时内部的计数器开始计时直到电容上的电压回到零点。因为放电电流是由基准电压决定的所以放电时间正比于被测电压。计数器计到的数就是最终显示的数字。这种方案最大的好处是它对抗周期性干扰特别有效。如果把第一步的积分时间设计成工频周期的整数倍正好等于50Hz电网干扰信号的好几个完整周期干扰在积分过程中会被平均掉等于天然自带了工频陷波器。所以用ICL7107做的表头接在开关电源旁边或电机附近读数一般也不会乱跳这是仅仅靠单片机ADC很难达到的效果。不过也要注意双积分转换的速度不快。ICL7107典型测量速度是每秒3次左右做静态电压显示完全够用但别指望它像示波器一样捕捉快速变化的信号。想测动态波形那是另一类ADC的领域。2.2 量程、基准电压与读数公式ICL7107显示值和输入电压、基准电压之间存在一个非常直接的关系显示读数约等于1000乘以输入电压再除以基准电压。也就是说当输入电压等于基准电压时表显示1000当输入电压等于两倍基准电压时计数达到2000溢出显示器最高位会变成1并进入超量程状态。所以ICL7107的满量程输入电压是两倍的基准电压。这个概念特别重要因为很多人只知道“基准电压决定精度”却忽略了它还决定量程。具体到实际设计如果你想让满量程是200mV基准电压就设成100mV如果你想让满量程是2V基准电压就设成1V。我们在做20V量程时通常采用“2V满量程前端10:1分压”的方案也就是说基准电压调到1V输入端子进来的20V经过分压电阻衰减成2V再送到芯片。这样显示值在19.99V以内正好覆盖常用的20V档。这种方案比分压100:1的方案更容易实现因为10:1的比例用9MΩ和1MΩ两只电阻就能得到而100:1需要9.9MΩ这种不太好凑的阻值。2.3 外围关键元件取值与选料原则ICL7107外围元件不算多但每一个都有讲究。下面是我最常用的参数直接抄作业没有太大问题。元件推荐取值作用与说明积分电阻 Rint200mV档用100kΩ2V/20V档用1MΩ决定积分电流直接影响线性度和满量程精度积分电容 Cint0.22μF CBB电容双积分核心电容必须用聚丙烯薄膜电容自动调零电容 CAZ0.47μF存储自动调零电压介质吸收必须低基准电容 Cref0.1μF减小基准电压纹波选CBB或C0G电容振荡电阻 Rosc100kΩ与振荡电容一起决定时钟频率振荡电容 Cosc100pF频率约48kHz测量速度约3次/秒段限流电阻330Ω到470Ω接在每位数码管的段输出上限制LED电流这里最值得强调的是积分电容绝对不能偷懒用普通瓷片电容。我踩过最大的坑就是图便宜用了瓷片电容结果读数一路漂换了CBB聚丙烯电容之后立刻稳定。为什么因为瓷片电容有压电效应和介质吸收电容值会随着电压和温度变化而双积分芯片对积分电容的稳定性和介质吸收特性极其敏感电容介质一“记仇”读数自然就漂。选电容时找标注CBB或者MPP的盒装薄膜电容0.22μF、63V以上就够。振荡频率也不是随便定的。用100kΩ电阻加100pF电容频率约48kHz对应每秒约3次测量。如果想降低功耗或者让显示更稳定可以把振荡电容加大但频率太低会看到数字明显闪烁一般不建议低于30kHz。3. 电路设计、完整接线与元件清单3.1 输入分压与量程扩展电路芯片本身默认的测量范围很小基准电压100mV时满量程只有200mV。想做实用的20V档就必须在输入端加分压电阻把高电压按比例衰减后送到芯片。我采用Vref1V、满量程2V、外部分压比10:1的方案。具体接法被测电压正极接到分压电阻R1的一端R1的另一端接R2和滤波电阻的公共节点R2的另一端接到信号地。R1取9MΩR2取1MΩ这样分压比正好是1/10。20V输入经过分压后是2V再经过1kΩ电阻和0.1μF电容组成的低通滤波器送入IN HI。这个滤波器能滤掉高频噪声同时还能在误接过电压时限制进入芯片的电流。在IN HI和IN LO之间我还会反并联两只1N4148二极管分别连接到V和V-。它的作用是钳位保护万一输入电压超出电源范围二极管会把电压限制在安全区间避免芯片内部ESD结构损坏。很多廉价表头省略这部分电路属于能省但别省的环节。如果你只需要做200mV的小信号测量那R1、R2整个分压网络都可以去掉直接把信号送进滤波电阻就行。做20V档时别忘了R1的耐压建议选1/4W金属膜电阻然后9013? 不是就用1000V耐压的1%金属膜9MΩ不太好买的话可以用4.7MΩ加3.3MΩ加1MΩ串联凑出9MΩ效果一样。3.2 双电源供电方案ICL7107需要双电源这是新手最容易卡住的地方。它要求V相对V-之间有一定电压同时模拟地和逻辑地要有一个合理的偏置所以单纯给一个正5V或者一个9V电池是不行的。最标准的做法是提供±5V电源即V接5VV-接-5V中间是地。供电方案我推荐用ICL7660电压反转器。只要有一路稳定的5V输入ICL7660就能输出一路-5V。具体接法5V加到ICL7660的V脚VDD? 按芯片手册在C1/C2位置接10μF钽电容在VOUT脚接10μF电容对地输出端就能得到约-5V。这个方案成本低、体积小不需要单独买双绕组变压器。如果你手头只有9V电池也可以用两节9V电池串联把连接点当地正极电池的正端接V负极电池的负端接V-这样就是±9VICL7107同样正常工作。但要注意用电池供电时数码管比较耗电两节9V叠层电池撑不了多久所以插电使用还是建议用5V电源加ICL7660。供电布局上有个细节5V和-5V的退耦电容一定要紧贴ICL7107的V和V-引脚一个0.1μF陶瓷电容加一个10μF电解电容缺一不可。数字地GND和模拟公共端COMMON不要直接大面积铺一起最好通过一只0.1μF电容在芯片附近单点相连这样能让数字部分的高频干扰不串进模拟输入端。3.3 基准、积分、时钟与显示连接我把这一堆外围连接合并到一起说因为它们都是“按网络表接线”的思路照着连就不会漏。基准电压网络从5V经过一只100kΩ电阻接到REF HIREF HI与REF LO之间接一只10kΩ多圈精密电位器REF LO接到COMMON。调节这个多圈电位器就能把基准电压调到1.000V。在REF HI与REF LO之间还要并联一只0.1μF基准电容用来稳定参考电压。积分网络BUF脚串一只1MΩ积分电阻到INT脚INT脚到COMMON之间接0.22μF积分电容AZ脚到COMMON之间接0.47μF自动调零电容。这三处连接是整个双积分电路的核心只要有一个虚焊或者脚位接错显示就会异常。时钟振荡网络OSC1和OSC2之间跨接100kΩ电阻OSC2和OSC3之间跨接100pF电容就构成振荡器。实测频率约48kHz。如果发现读数刷新偏慢或数字抖动优先检查这两个元件是否焊牢。显示网络ICL7107的段输出a到g通过330Ω电阻分别接到共阳数码管的对应段脚位输出D1到D4分别接个位、十位、百位和千位的公共阳极端子。数码管必须用共阳型不能买成共阴否则完全不亮。四位一体数码管通常有12个引脚万用表二极管档扫一下就能判断引脚定义这种方法比看数据手册更快。3.4 完整接线表与元件清单为了让大家真正“照着能焊”我把关键网络整理成一张完整的接线表相当于一份文字版电路图。焊的时候按网络逐条核对能大幅减少漏接和错接。网络名连接路径说明5V电源稳压输出→IC V、ICL7660 V、基准电阻上端、钳位二极管负极给整个电路供电-5V电源ICL7660 VOUT→IC V-、钳位二极管正极由7660产生数字地GND电源地→IC数字地脚、数码管驱动地、ICL7660 GND数字回路地模拟公共端COMIC COM→IN LO、REF LO、CAZ回地、Cint回地模拟地不要直接与GND铺同层输入正端子→R1(9MΩ)→分压点→R3(1kΩ)→IC IN HI分压衰减和滤波输入负端子-→COM/IN LO输入回路基准网络5V→R(100kΩ)→REF HIREF HI→RP(10kΩ)→REF LO→COM校准基准1.000V积分网络BUF→Rint(1MΩ)→INTINT→Cint(0.22μF)→COMAZ→CAZ(0.47μF)→COM三段标准接法时钟网络OSC1-Rosc-OSC2-Cosc-OSC3100kΩ100pF显示网络段a-g→330Ω→数码管段脚D1-D4→共阳公共端共阳管元件清单我也直接列出来方便一次买齐。类型规格数量主芯片ICL7107DIP-40封装1片数码管四位共阳0.56英寸1个精密多圈电位器10kΩ3296W1个分压电阻9MΩ可用4.7M3.3M1M串联1组分压电阻1MΩ1只积分电阻1MΩ1只滤波电阻1kΩ1只基准限流电阻100kΩ1只段限流电阻330Ω7只积分电容0.22μF CBB1只自动调零电容0.47μF CBB1只基准电容0.1μF CBB/C0G1只振荡电阻100kΩ1只振荡电容100pF瓷片1只去耦电容0.1μF瓷片若干电解电容10μF/25V2只保护二极管1N41482只电源反转器ICL76601片其他DIP-40插座、洞洞板、接线端子、外壳按需4. 实操制作与校准全流程4.1 焊接顺序与注意事项拿到套件或散件后先别急着把所有元件一股脑往板上塞。我的习惯顺序是先焊IC插座和电源走线再焊外围电阻电容最后焊数码管和接线端子。这样安排的好处是电源通路先建立起来后续测电压、找问题都方便。焊接的时候有几点值得特别注意。第一ICL7107不要直接焊在板子上一定要用DIP-40插座避免焊接高温损坏芯片也方便以后坏了直接换。第二插芯片之前先用万用表量一下IC座对应电源脚确认V对GND是5VV-对GND是-5V确认无误再插芯片。这一步能避免把芯片白白送走。第三数码管引脚比较密焊的时候用松香助焊剂焊完用万用表二极管档扫一遍引脚有没有桥连。如果你是在洞洞板上搭焊建议先把所有飞线“规划”成横平竖直再焊别图快直接飞得到处都是。尤其模拟输入线和时钟振荡线之间要尽量隔开否则读数会莫名跳动。大家在网上看到很多凌乱的表头作品能用是一回事稳定是另一回事走线、电源、模拟地这三样做好了表才能真正长期稳定工作。4.2 校准先基准后分压电路装好、显示正常之后下一步就是校准。校准的顺序非常关键我的经验是“先基准后分压”。你可以把基准想象成尺子的刻度分压电阻是放大镜。刻度不准放大镜再准也没有意义刻度准了再调放大镜才有依据。具体操作分两步。第一步把输入端短路也就是IN HI和IN LO接到一起屏幕上应该显示接近0000的数字允许正负一个字的跳动。如果显示一个很大的数值而不是0说明输入回路的失调或者接线有问题先解决这个再继续。第二步用一个稳定的标准电压源或者一台精度较高的万用表配合可调电源给输入端送一个1.000V的标准电压。然后调节10kΩ多圈电位器让屏幕显示1.000。这里要注意你输入的是分压后的1V还是输入的端子电压经过分压器衰减后的1V决定你调的是基准还是分压。最规范的做法是先不接分压网络直接把1V电压送到芯片输入端调基准电位器到显示1.000然后再接入分压网络用20V档输入一个标准的10.000V电压调节分压网络的可调电阻或更换精密配比电阻让屏幕显示10.00。如果没有高精度标准源也可以用一只TL431搭一个2.5V基准再用精密电阻分压得到1.000V配合万用表读取实际值然后按比例微调电位器。我自己的体会是校准这件事不能省也别想着一把调准多圈电位器通常需要来回调好几次调到显示器稳定后再等待几秒看是否有漂移。4.3 试运行与外壳组装校准完成之后先把表头空载运行十几分钟观察显示有没有漂移、跳字。没问题再装壳。外壳方面最省事是买一个成品仪表壳或者用3D打印外壳。面板上需要开三个孔数码管窗口、输入接线端子孔、档位开关孔。数码管固定倒是简单卡在开好的窗口上用热熔胶固定就行但要注意不要让高温胶枪碰到数码管引脚。输入端子在面板上最好用香蕉插座或接线柱方便插表笔。如果做的是20V档接线端子上会有高电压外壳一定要留出绝缘距离端子后面裸露的焊点用热缩管套住。面板上标注好量程写清楚最大输入电压避免哪天顺手接到220V上。我个人还会做一个小改动在供电输入线上串一个自恢复保险丝和电源开关。这样万一输入接错线先烧保险而不是烧芯片能省下很多麻烦。5. 常见故障排查与实用避坑指南5.1 典型故障速查表这个项目最让人心累的不是焊接而是焊接完显示不对。我这里整理了一张速查表基本覆盖了新手能遇到的绝大多数问题。现象可能原因处理方法上电完全没显示电源没接通、V-没正常输出、数码管公共端没接先量V和V-对地电压再量数码管公共阳极端电压数码管全亮、显示1---输入超量程、基准电压没建立、积分电容没接检查REF HI和REF LO之间电压检查积分网络显示0000但怎么都不变输入信号没有送到IN HI或IN HI/IN LO接反方向短接IN和IN-看是否归零检查输入滤波电阻读数反复跳动输入悬空、电源纹波大、积分电容用了瓷片输入端接一个稳定的源检查积分电容是否CBB某一段不亮或某一位不亮段限流电阻虚焊、引脚桥连、数码管引脚判断错误用万用表二极管档逐段测试数码管测量值固定偏大或偏小基准电位器没校准、分压电阻误差大重新校准分压电阻换1%精度手靠近读数就乱跳输入端阻抗太高、存在感应噪声输入线用屏蔽线输入端并联0.1μF电容长时间使用读数漂移基准电路发热、积分电容温度特性不佳换CBB电容检查基准限流电阻功率最典型的场景是显示“1---”但芯片没坏。这往往是因为REF HI、REF LO引脚上没电压或者输入的电压远远超过了当前量程。先把基准网络查一遍REF HI对COM应该在1V左右如果只有0.3V多半是电位器没调好或者100kΩ电阻开路。另一个常见坑是IN LO没有接到COMMON上。ICL7107的输入是以模拟公共端为参考的如果IN LO悬空读数会非常不稳定。解决方法是把IN LO和COMMON直接短接然后在下游输入接线时信号负极也接到公共参考点上。5.2 高手才知道的几个细节有些细节网上很多教程不会提但实际做的时候影响很大。第一个是积分电阻和积分电容的温度稳定性。芯片在工作时会微微发热如果积分电阻离芯片太近温度上升会让阻值漂移读数就会慢慢变化。我一般把积分电阻和基准分压电阻尽量远离IC或者在PCB上留出一点散热空间。第二个细节是REF LO和IN LO的关系。很多参考设计里REF LO、IN LO、COMMON这三者最后都在模拟地汇合但REF LO千万别直接接到数字地上。如果数字地上有来自数码管扫描的脉冲噪声这些噪声会直接干扰基准电压导致显示乱跳。最好的办法是模拟地和数字地在电源入口单点用0.1μF电容连接形成一个“信号地桥”。第三个细节是校准电位器的选择。基准电压校准一定要用多圈精密电位器单圈的3296? 不对3296就是多圈。用那种小蓝色玻璃釉多圈可调电阻10kΩ就行。普通单圈可调电阻很难调到精确的1.000V旋钮轻轻一动就是几十毫伏的误差最后读数差好几十个字非常折磨人。第四个细节是负极电压的纹波。如果你用ICL7660生成-5V它的输出纹波会比线性稳压器大不少。解决办法是在V-引脚对地加一个10Ω电阻串联一个100μF电解电容做RC滤波或者把7660的开关频率电容调高一些。实测下来加上这个滤波后读数稳定性有明显改善。6. 从电压表到扩展仪表下一步玩法6.1 改成电流表和温度表做成功电压表之后接下来它的变化空间很大。改成电流表最简单的方法是加一只精密分流电阻。以20V档位为例如果想做一个2A电流表可以选一只0.1Ω、1%精度、功率大于1W的锰铜电阻串在负载回路里。电流2A时分流电阻两端压降是0.2V再放大10倍还是直接? 这里要注意用2V满量程档测0.2V只有1/10的量程显示分辨率会差很多。更合理的做法是临时切换到200mV档把基准电压调回100mV然后让2A电流在0.1Ω上产生200mV压降显示正好19.99A? 不对这样满量程就是0.2V对应199.9mV显示0.1999V? 显示不大于1999所以显示0.1999? 对3位半表显示最高0.1999? 那显示不出来19.99A的整数部分。这时候如果你显示的是“199.9”代表199.9mV要把小数点改到十位就变成“19.99A”这是可以的。小数的位置由数码管的小数点引脚控制不影响转换本身。这样就能直接用这个表做0到19.99A的电流表。不过0.1Ω在几安培电流下的功率发热要算好至少2W以上的散热能力。改成温度表也不复杂。LM35温度传感器输出是10mV/℃把它接到200mV档显示的数字乘以10就是温度值。也就是说屏幕上显示100.0时实际温度约100℃? 不对100mV对应100.0? 在200mV档显示值就是毫伏值10mV/℃意味着温度100℃时输出1V超量程。所以需要接一个分压或运放衰减或者直接换2V档让显示1.000V代表100℃? 这只是对应关系的问题。具体实现时可以让LM35的输出经过一个跟随器后再衰减让温度显示更直接。扩展玩法很多但只要原理通了改起来都不难。6.2 量程自动切换与4位半升级路线如果你的表头想做得更高级可以考虑加量程自动切换。思路是在输入端接一排分压电阻用模拟开关比如CD4051根据输入电压大小自动选择不同的分压比。用一个比较器判断输入是否超过当前量程超了就切换到更大量程低了就切回更小量程。这个方案需要自己搭一点逻辑但正好可以系统地学习比较器和模拟开关的用法。想升级到4位半精度最直接的路线是换ICL7135这类4位半双积分ADC芯片。ICL7135的转换分辨率和精度更高但它的输出是BCD码需要外接译码驱动电路或者配合单片机扫描显示复杂度会高不少。对于大多数DIY场景ICL7107的3位半精度已经够用我曾经用自制表头和一台六位半台式万用表对比测量校准良好时3位半表在2V档的读数误差基本能控制在末位几个字以内这个表现放到二三十元的家用数字万用表里完全不落后。如果你从一开始就打算把表头做成一个长期放在工作台上的工具那我可以推荐一个改动把输入端子换成镀金香蕉座加一个小的拨盘开关切换200mV/2V/20V三档分压电阻全部用0.1%低温漂精密电阻。这样改进完之后这表基本可以当一个小型台式标准表用了。我自己常用的那台已经连续用了两年偶尔拿出来和校准表对一下读数依然对得上。最后再分享一点个人体会我做这个项目的最大收获不是得到了一块电压表而是明白了“仪表设计里基准和地线比什么都重要”。电压值准不准先看基准稳不稳读数跳不跳先看地线乱不乱。很多看起来玄乎的表头问题追根到底都是这两个点没处理好。你把这个I C L 7107的表头做透再去看任何ADC电路都会比别人多一份直觉。这个周末找一块洞洞板把元件排好试着焊一块吧。
返回列表