ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

模拟开关芯片详解:从CD4066/4051引脚到应用电路设计

模拟开关芯片详解:从CD4066/4051引脚到应用电路设计 模拟开关芯片这东西干硬件的迟早要碰到。有人把它当普通继电器用有人把它当成74LS157那种数字多路选择器用其实都不太对。模拟开关是CMOS工艺做的电压控制开关核心价值是能传输模拟信号也能传数字信号但重点在“模拟”两个字上。这篇文章想聊的就是常用模拟开关芯片的引脚、功能和应用电路包括CD4066、CD4051这些老牌型号也顺带说说TS5A23157、DG419这类低压低阻开关。不管你是做多路传感器采集、音频切换还是想用一颗芯片扩展MCU的ADC通道看完这部分内容基本都能直接上手画板、写代码、调信号。1. 模拟开关芯片到底是什么搞懂原理才能看懂引脚1.1 从内部结构看懂为什么引脚是“双向”的很多新手拿到CD4066的第一反应是信号从这边进从那边出那输入端和输出端分别接哪里其实模拟开关的通道引脚基本不区分方向。原因是它内部不是一个机械触点或三极管开关而是一个CMOS传输门由一只NMOS管和一只PMOS管并联组成控制信号和它的反相信号分别接两个管的栅极。控制端为高电平时两个管子同时导通信号无论从哪一边进来都能从另一边出去控制端为低电平时两个管子同时截止通道就断开。正是因为这种双向导通特性模拟开关芯片的引脚命名才会出现IN/OUT、A/B、Y/X这类看似模棱两可的写法。实际用的时候正接反接都能工作这也让它比普通逻辑门芯片灵活很多。但灵活归灵活和ULN2803这类达林顿驱动芯片完全不是一回事后者是单向的输出只能用来灌电流不能像模拟开关那样双向传输信号。把这两类芯片搞混是很多原理图翻车的起点。1.2 和机械开关、数字多路选择器相比赢在哪儿如果只是简单通断机械开关也能做导通电阻还能做到毫欧级。但机械开关体积大、速度慢、有机械寿命而且很难用单片机去直接控制。模拟开关则没有机械触点不存在抖动和磨损控制端直接接GPIO或逻辑信号就能切换速度快体积小非常适合在电路板上做信号路由。数字多路选择器比如74LS157、74HC4051这种“49码”以外的选择器虽然也叫选择器但内部是纯数字逻辑门处理的信号只能是高电平或低电平没法把连续的模拟电压完好传过去。模拟开关则不一样它传的是电压量本身。比如CD4051的公共端输出可以是处于VEE到VDD之间任何一个电平值只要不超出电源范围它都能把这个电压传到选中的通道上。这是它和数字选择器最本质的区别。1.3 引脚功能背后必须看懂的五个参数很多人只看引脚图不看参数结果板子做出来信号不对回头查才发现是参数选型的问题。模拟开关芯片的引脚就那么几个但决定它能不能用的是以下几组关键参数导通电阻Ron开关导通时通道之间的等效电阻。CD4066这类老芯片在5V供电时Ron可能有几百欧低压低阻开关如TS5A23157可以做到几欧甚至零点几欧。Ron会影响信号衰减尤其后端负载阻抗低的时候特别明显。导通电阻平坦度RflatRon会随着流过开关的电压变化而变化这个变化量就是平坦度。音频信号如果经过一个Ron变化很大的开关会产生失真所以音频场景要格外关注这个参数。漏电流开关断开时通道上仍然会有V级以下的微小电流。普通场景可以忽略但如果你用开关去切换一个高阻抗信号源比如光电二极管输出漏电流可能直接变成测量误差。带宽模拟开关不是理想导线高频信号通过时会有衰减。低速传感器信号完全没问题但如果你要切视频信号或者高速数字信号就得专门看带宽。电源电压范围与信号范围这是最容易踩坑的。模拟开关能传输的信号电压不可能超过VDD和VEE的边界。想传负电压就必须给VEE接负电源而不是把VEE接地。2. 常用模拟开关芯片引脚功能逐脚拆解2.1 CD4066最经典的四路单刀单掷开关CD4066应该是很多人的入门型号。它一个芯片里集成了四个独立的单刀单掷模拟开关工作电压范围很宽3V到15V都行。虽然性能不算优秀但胜在引脚简单、电路好搭、价格便宜非常适合做实验和原型验证。以常见的DIP-14封装为例它的引脚功能是这样的引脚号名称功能1IN/OUT A开关A的一个通道端2OUT/IN A开关A的另一个通道端3OUT/IN B开关B的一个通道端4IN/OUT B开关B的另一个通道端5CONTROL B开关B控制端高电平导通6CONTROL C开关C控制端高电平导通7VSS负电源/地8CONTROL C开关C控制端高电平导通9IN/OUT C开关C的一个通道端10OUT/IN C开关C的另一个通道端11OUT/IN D开关D的一个通道端12IN/OUT D开关D的另一个通道端13CONTROL D开关D控制端高电平导通14VDD正电源每个开关都完全独立控制端接高电平导通、接低电平断开。需要注意两点控制端绝对不能悬空否则内部栅极电位漂移可能导致开关状态不定通道上的信号电压也必须保证在VSS到VDD之间超过上限会出现削波低于下限甚至会内部保护二极管导通。2.2 CD4051/CD4052/CD4053多路复用开关的地址逻辑如果通道太多单个SPST就不够用了。这时候要用带地址选择的多路复用开关。CD4051是最常见的8路模拟多路复用器相当于一个单刀八掷开关。它有一个公共端八个通道端还有一个三位二进制地址口A、B、C和一个禁止端INH。CD4051的功能真值表如下INH为高电平时所有通道全部关断INH为低电平时由CBA的组合决定选通哪个通道INHCBA选中的通道1XXX全部断开0000X00001X10010X20011X30100X40101X50110X60111X7CD4052是双四路复用开关适合切换立体声音频这类需要同时切换两路信号的场景。CD4053则是三重二路复用开关内部有三个独立的单刀双掷开关适合三路信号同步切换。这系列芯片有VDD、VSS、VEE三个电源引脚。单电源应用时VEE要和VSS一起接地负电压信号场景则要给VEE接负电源。很多人第一次用CD4051时把VEE悬空结果信号一进来就被内部二极管钳位输出波形直接“削脚”这就是没弄清楚VEE作用导致的典型问题。2.3 低压低阻开关TS5A23157、DG419这类怎么选引脚老式CD40系列虽然用起来顺手但在3.3V供电的低功耗系统里Ron偏大、电平兼容性也不够好。这时候就得看低压模拟开关。以TS5A23157为例这是一颗双路单刀双掷开关内部每一路都有COM公共端、NO常开端、NC常闭端外加独立的选择控制引脚。控制信号为低电平时COM和NC连通控制信号为高电平时COM和NO连通。它的供电范围大概在2.3V到5.5VRon典型值只有零点几欧非常适合音频切换、电源路径切换、低阻抗信号路由。DG419这类SPDT开关同样很常见常用在音频输出切换或者正负信号通道选择中。因为封装小、引脚少具体引脚排列不同厂家会有一点点差异用之前一定以数据手册为准。我自己的习惯是先在PDF里搜“Pin Configuration”或“Pin Functions”把引脚图截图下来贴到原理图旁边再开始画封装避免最后封装对不上。2.4 引脚命名里最容易看走眼的几个地方模拟开关芯片的引脚命名有规律但坑也不少。通道端有时标IN/OUT有时标A/B有时标COM/NO/NC。SPDT开关里NO和NC的含义最容易搞反NO是Normally Open默认断开控制后导通NC是Normally Closed默认导通控制后断开。如果原理图上标的是“S1/S2”这种名称你就得去数据手册里看它到底对应哪个通道不要凭直觉接。电源引脚命名也有讲究。同一个芯片可能出现VDD、VCC、VSS、VEE、GND等多种写法。VDD和VCC都指正电源VSS一般指数字地或最低电平VEE则专门用来接负电源。在CD405x系列里VEE的作用尤其重要负信号能不能通过开关完全取决于它。还有一个容易忽略的点未用的控制引脚或通道引脚不能简单悬空。控制端悬空会让开关状态随机漂移通道端悬空在某些高阻抗场景下会引入噪声。我的做法是不用的控制端根据设计需求固定接高或接地不用的通道端最好通过一个10k电阻连到地这样既能避免噪声耦合又不至于增加太多漏电。3. 典型应用电路设计从接线到调通的完整套路3.1 用CD4051扩展STM32的ADC采集通道做单片机采集最常遇到的问题就是ADC通道不够用。尤其像STM32F103C8T6这种小封装芯片ADC引脚本来就不多还要兼顾其他外设。用一个CD4051做8路模拟量扩展是性价比很高的做法。电路其实很简单CD4051的VDD接3.3VVEE和VSS接地公共端接STM32的ADC引脚8个通道分别接8路传感器输出。地址线A、B、C接单片机的三个GPIOINH直接接地让芯片一直处于使能状态。需要注意的是CD4051在3.3V供电时导通电阻偏大可能到几百欧。如果传感器输出阻抗很高建议先用运放做一级电压跟随器再进通道否则Ron会和后级输入阻抗分压造成ADC读数偏低。实际的代码控制也简单void mux_select(uint8_t ch) { if (ch 7) ch 0; // 假设地址线A/B/C分别接PC0/PC1/PC2 GPIOC-BRR 0x0007; // 先全部清零 GPIOC-BSRR (ch 0x07); // 按通道号置位 delay_us(5); // 等传输门完全导通 } uint16_t read_adc_channel(uint8_t ch) { mux_select(ch); ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5); ADC_SoftwareStartConv(ADC1); while (!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)); return ADC_GetConversionValue(ADC1); }地址切换后加一个延时再启动ADC转换这一点很重要。模拟开关从地址稳定到通道完全导通需要一点时间虽然很快但对高精度采集来说这微秒级的稳定时间能避免采到切换瞬间的毛刺。3.2 用CD4066做音频信号路由音频信号切换是模拟开关的经典应用。双声道场景下可以用两颗CD4066或者直接用CD4052做双四路切换。如果只是简单选择两路音源串到功放输入端那用两颗CD4066就够了。音频路径上建议加耦合电容隔离直流分量。虽然模拟开关本身能传直流但音频系统里前后级直流工作点未必相同硬切过去容易产生爆音。耦合电容放在开关的前后两端具体位置根据前后级的输入输出阻抗来定通常用1uF到10uF的电容比较稳。控制端动作引起的爆音也是常见问题。如果CLK或GPIO的电平跳变太快开关瞬间导通会让输出端直流跳变产生“咔哒”声。解决思路有两个一是在控制线上串联一个RC低通让开关缓慢导通RC时间常数选几十毫秒二是选用带先断后合功能的开关确保切换过程中不会出现短暂的双路同时导通。如果电路里用的是普通CD4066没有先断后合特性那就得靠控制逻辑保证同一时刻只有一个开关导通。3.3 程控增益放大器和采样保持电路模拟开关另一个常见的用途是切换运放反馈网络实现程控增益。比如一个反向放大器的反馈电阻本来固定现在用两个开关分别选通两个不同的反馈电阻就能让增益从一个档位切到另一个档位。这里有个关键点开关的Ron是串联在反馈支路里的。如果反馈电阻是100kRon是10Ω那增益误差只有万分之一完全不用管。但如果反馈电阻只有1kRon 10Ω就会带来1%的误差对高精度电路来说不可接受。解决办法要么选Ron足够小的开关要么把开关放在反馈环路内部让运放的环路增益来抑制Ron带来的误差。后者在很多仪表放大器设计里都能看到前提是开关的漏电流足够小。采样保持电路也离不开模拟开关。开关导通给保持电容充电开关断开瞬间内部电荷会有一部分注入到保持电容上导致保持电压跳变这就是电荷注入效应。选型时不能只看Ron还要看电荷注入量。如果电路里对采样精度要求高尽量选Q电荷注入值小的专用采样开关普通CD4066这类老芯片并不适合。3.4 Type-C和数字信号切换的边界提醒有些朋友看到模拟开关能切换信号就想拿去切USB、HDMI这类高速数字线结果发现信号眼图乱成一团。这不是开关坏了而是普通模拟开关的带宽和寄生参数扛不住高速差分信号。举个例子Type-C接口的SBU1/SBU2引脚在扩展坞里有时会用来切换模拟音频或副卡信号这种功能用普通模拟开关没问题因为传输的是低频模拟信号。但USB 3.x的高速差分数据线必须使用专门的高速模拟开关比如TS3USB系列这类芯片会把差分阻抗、串扰、带宽都做到位。普通CD4051的带宽也就几十兆赫兹切USB 2.0都有点勉强更别说USB 3.x了。所以选型前先搞清楚信号性质是直流、音频这类低频模拟信号还是上百兆的差分数字信号。前者用模拟开关绰绰有余后者必须走专用高速开关这是很多人踩过坑之后才明白的事。4. 选型与调试我踩过的坑和排查清单4.1 为什么信号过了模拟开关就明显衰减这是咨询最多的问题之一。现象是输入信号正常输出幅度变小甚至接近零。先不要怀疑芯片烧了大概率是导通电阻和后级负载分压了。CD4051在5V供电时Ron可能有几百欧如果后面直接接一个50Ω的负载输出几乎没有电压。解决办法是在开关输出端加一级高输入阻抗的运放缓冲器或者直接选一颗Ron足够小的低压开关。还有一种情况是输入信号电压已经接近VDD或VSS此时内部传输门导通不完全Ron急剧增大表现出来就是信号顶部被“压扁”这是电源范围设计的问题只能通过调整供电电压或信号范围来解决。4.2 多通道切换时出现串扰和毛刺多路采集系统经常遇到这样的问题切换通道之后读到的数据里面混着上一个通道的残余信号或者切换瞬间有尖峰脉冲。串扰的来源主要有三块PCB走线之间的寄生电容、电源耦合、控制信号的跳变干扰。针对寄生电容模拟通道走线要短通道之间最好加一条地线隔离。针对电源耦合每个电源引脚旁边都放一个0.1uF的陶瓷电容并且尽量靠近芯片引脚。针对控制信号跳变地址线和控制线不要和模拟走线平行长距离共走如果实在避免不了可以在控制线上串一个小电阻来抑制边沿跳变速率。还有一个容易被忽略的细节CD4051这类芯片在地址切换时如果逻辑输入有毛刺可能出现某个瞬间选通了两个通道。对数据采集系统而言切换通道后必须有一个稳定延时再启动ADC别着急立刻读。我常年在代码里加5到10微秒的延时实测下来数据稳定很多。4.3 控制端电平与MCU引脚不匹配3.3V单片机控制5V供电的CD4066看起来没什么问题实际上可能让开关一直处于不确定状态。CD4000系列芯片的输入高电平阈值较高5V供电时VIH大概在3.5V左右3.3V的GPIO输出刚好卡在临界点上温度一变或者电压波动一下就导不通了。遇到这种情况最简单的方式是让模拟开关和单片机用同一个电源电压比如都工作在3.3V。如果必须用5V供电那就加一个电平转换电路或者选择74HC4051这类对TTL电平兼容性更好的芯片。上板前先查数据手册里的VIH和VIL不要想当然觉得“3.3V输出肯定算高电平”。4.4 芯片引脚认不清的急救方法有些国产芯片型号后缀多数据手册又不规范引脚图看着费劲。这时候别急着硬画封装我一般会用万用表的通断档做一个小判断确认芯片实物到底哪个引脚是通道端。方法很简单给芯片接好电源控制端先接地模拟开关应该处于断开状态这时通断档测两个通道引脚应该不响然后把控制端接到VDD再测同一个开关的两个引脚如果通了蜂鸣器就会响。通过这种方法你可以快速锁定公共端和通道端的位置。注意模拟开关导通时Ron可能较大万用表通断档有时候不会响那就换电阻档量一下能测到几十到几百欧的阻值也说明是通的状态。4.5 常用模拟开关选型速查表型号通道结构电源范围典型Ron适合场景CD4066四路SPST3V~15V几十到几百欧低频信号通断、面板控制、简单切换CD4051八路复用3V~15V,VEE可接负压百欧级多路传感器采集、模拟量扩展CD4052双四路复用3V~15V,VEE可接负压百欧级双声道音频切换CD4053三重二路复用3V~15V,VEE可接负压百欧级RGB、三路同步切换TS5A23157双路SPDT2.3V~5.5V零点几欧音频、低阻抗信号、电源路径切换DG419单路SPDT双电源供电低Ron音频、正负信号选通选型的时候先问自己三个问题信号频率高不高信号幅度在哪个范围导通电阻能不能接受。低速传感器和音频用CD40系列完全够低电压低阻抗系统就上TS5A23157这类低压开关。没有万能芯片只有合不合适的芯片。模拟开关看着不起眼但实际应用里的小细节特别多。我个人最深的体会是很多故障并不是芯片不行而是电源范围、逻辑电平和Ron这三个地方没有提前算清楚。只要你把这几个参数摸透再复杂的信号切换电路也能稳稳跑起来。下次再看到一份引脚图先别急着接线花五分钟把数据手册里的等效电路和参数确认一下能省掉后面一整天的排查时间。
返回列表