硬件调试遇到的问题
硬件测试
万用表
万用表蜂鸣器篇:
遇见的问题:调试的时候,刚开始32部分正常正常,后面运行了一会,发现单片机输出不正常,最后用蜂鸣器档打单片机的3.3V和GND,发现蜂鸣器响,于是觉得板子坏了,3.3V和GND连接在一起了。但是板子PCB是外包打印的,一般不可能坏
问题原因:蜂鸣器档会响的根本原因是两脚之间的电阻太小,而电阻为0(即短路)是一种特殊的情况。后面再打3.3V跟GND之间发现是电阻太小,只有10几欧,于是换了一个芯片,解决了,而不是板子…为了验证这一点,我用一个82欧的电阻进行蜂鸣档的测试,发现电阻为82欧,蜂鸣器还是会响,100欧好像不会…
摇表
遇见的问题:在进行上电测试的过程中(需要上到1000V),发现上到400V,系统发出了电流滋滋滋的声音。经检测,发现是爬电,所谓爬电是指,当两级之间电位太高,导致表面流过大电流。
问题原因:控制在合理的爬电距离。
电平
总线的本质就是导线(电线),总线的作用就是用于计算机不同部件之间进行数据传输。总线就是导线,其传输数据的本质就是传递某个确定幅值的电信号,只是我们习惯于常用高电平代表1,低电平来代表0.总线本质传递的是电信号,而不是数据。
TTL电平和CMOS电平是数字电路中国常见的两种信号电平
TTL电平采用双晶体管作为开关元件,具有高响应速度、噪声干扰抑制能力强的优点。其输出电平为0V或5V,其中0V代表逻辑低电平,5V代表逻辑高电平。
CMOS电平采用NMOS和PMOS构成的互补对称结构作为开关元件,功耗低、可靠性好等优点。其输出电平为0V或Vdd(供电电压),其中0V代表逻辑低电平,Vdd代表逻辑高电平,且Vdd可以根据具体应用需求调整。
TTL电路的传输速度较快,因此能够实现高频率的操作;而CMOS电路由于输出信号需要时间来稳定(自举电路),因此不适用于高频率应用。
器件
贴片电阻、贴片电容、引脚电容(有极性和无极性)、磁珠、共模电感
电阻103表示什么意思?电容104表示什么意思?
答:电阻103表示1010的三次方K,电容104表示1010的四次方pF,电容100表示10*10的0次方。电阻 前两位为有效数字,第三位为指数;电容和电阻一样,前两位有效位,第三位为指数。钽电容标有竖线的一极是正极,电解电容标黑的一极是负极。普通电容无极性。
Q:三种电容有何不同?为什么同一种电容有很多封装?
答:钽电容属于电解电容的一种,但它不像普通电解电容使用电解液,钽电容使用的金属钽。两者电容作用相同,只是无极性电容最大值为22uF,而电解电容可以更高。封装不同是为了适用不同场合。
磁珠的作用是什么?
磁珠等效电阻:
答:数字电路对电源干扰严重,所以在有数字电源、模拟电源混合的电路中(如需要用到运算放大器,ADC等需要考虑电源设计),需要考虑模拟电源,数字电源的地之间需要接磁珠。
Q: 磁珠和0欧电阻的区别:磁珠等效于电阻串电感,与电感同原理,那为什么要用磁珠而不是电感?那为什么0欧电阻可以替代磁珠?
电感有内阻,但内阻不为0,磁珠等于DCR欧电阻并电感并电容。两者不一样。此外,
电感和磁珠都可以滤波,但机理不一样,电感将电能转化为磁能,磁能通过两种方式影响电路,一种是重新转换为电能,表现为噪声,一种是向外辐射表现为EMI(电磁干扰),而磁珠是将电能转化为热能,是耗能元件,对电路无干扰。
磁珠对高频信号有衰减作用,而0欧电阻在所有频带都可以衰减,在高频时,交流电能大,磁珠损耗的热能大,产生大压降,而0欧电阻既可以很好的降低EMI,又不会产生大压降。
共模电感:抑制共模干扰
**Q:什么是差模信号,什么是共模信号?什么是差模干扰,什么是共模干扰?什么是单端信号?什么是差分信号?**电阻桥在平衡时有什么特点?
答:单端信号是指:两根信号线中,有一根表示信号0,(没有信号),另一根是真正的信号线,极性单一,抗干扰能力弱;差分信号是指:两根信号线上都表示信号,且极性相反。因两根线受到的干扰大致相同,在信号合成单端信号时,采用的是差值,干扰会被抵消。长距离传输多采用差分信号;差模信号是两根线之间的信号差值,即两根线上信号有差别,也就是差分信号;共模信号是同一个条件下的信号,即两根线上信号无差别。电桥平衡时输出为0,即两个公共端电压之差为0;共模干扰就是指两条信号线与地之间的干扰信号,差模干扰就是两条信号线间的干扰信号。
放大、滤波
放大和滤波的顺序需要注意什么?
答:当接收到的信号,噪声远远大于所需信号幅度,则现需要进行滤波,然后再放大。因为如果先对信号进行放大,接收到的噪声幅度较大,放大器将输出饱和;当接收到的信号和噪声幅度很小,则需要先放大,再滤波。因为如果先滤波再放大,则可能在滤波过程中引入其他干扰使信号畸变。
什么是滤波器?无源滤波器和有源滤波器有什么区别?
答:对电路中特定频率进行有效去除的电路称为滤波器。区别:1、使用运放组成的滤波器叫有源滤波器,普通R、L、C组成的滤波电路称为无源滤波电路。2、无源滤波电路只能滤波,有源滤波可以既可以滤波也可以放大电压。
电压跟随器的作用是什么?
答:电压跟随器有两个作用:1.缓冲隔离:常用于中间级,以隔离前后电路,消除它们之间的影响;2.加在功放前面,使功放能够更好工作。
怎么计算高通、低通、带通滤波器的截止频率?通带电压增益和电压增益有什么区别?
答:三种滤波器截止频率fH=1/2πRC(RC是振荡回路的值);通带电压增益是输出端与输入端的电压之比,有源滤波器的电源输入引脚与通带电压增益中的输入端电压不是一个概念。
各种二极管
发光二极管:
阳极接Vcc,阴极接Gnd,UI在LED的安全范围内,LED会导通;
阳极接Gnd,阴极接Vcc,电阻无穷大,LED断路,过压/过流会损坏器件;
肖特基二极管:
阳极接Vcc,阴极接Gnd,UI在LED的安全范围内,二极管会导通;
阳极接Gnd,阴极接Vcc,电阻无穷大,过压/过流会损坏器件
32单片机部分
晶振部分
遇到的问题:用到的晶振参数如图所示,然后打晶振两端的波形不是正弦波,也就是没有起振,
解决办法:后面查了资料发现这里的两个陶瓷电容选择大了,一般建议在15pF~22pF。
**无源晶振和有源晶振的区分 **:无源晶振自身没有起振电路,需要外接RC振荡电路,以及电源;有源晶振内部有RC振荡器,只需要外接电源就可以起振。
ADC
比较器和ADC转换器的关系:ADC有很多实现方式,其中并联比较器型是速度最快且原理最简单的一种。
并联型ADC原理是①首先对所选待测电压范围通过n个电阻分压将电压分成n份,作为比较器的基准电压(阈值)②用比较器进行待测模拟信号和阈值的比较③通过触发器、锁存器保存比较器的输出④通过优先编码器,实现多位m到少位n的互转m=2^n,于是可以得到模拟电压的大小了;可以通过增加比较器及其对应的触发器、锁存器的个数达到增大ADC的转换精度。
逐次逼近型ADC原理是①首先对所选待测电压范围电压分成2份,作为比较器的基准电压(阈值)②用比较器进行待测模拟信号和阈值的比较③根据比较的结果对分辨率中最高位MSB进行置1或者清0④根据待测模拟信号是大于(或者小于)阈值,再将阈值调整至原处3/4(1/4)进行比较,对分辨率中次高位进行置1或者清0⑤如此循环,直到最低位LSB也确定。
∑-Δ型ADC、积分型ADC
分辨率:用nbit表示,代表将参考范围的电压分成2^n份,分辨率越高,精度越高。能将待测模拟信号测得越准确。
采样率:代表一个周期的采样次数。采的越多,越接近原待测模拟信号。
Boot0、Boot1启动
遇到的问题:在进行下程序时,老是报错程序下不进去,最后在网上查找了资料发现,如果要向CPU重新下载程序,就应该让Boot0=0,Boot1=1;如果单片机内部有程序,并且需要系统执行单片机内部的程序,就应该让Boot0=1,Boot1=1.
问题原因:这里先介绍一点概念,①程序应该是放在ROM内的,其特点就是Read Only,STM32将其ROM的分为了很多块,一块为Flash,一块为系统存储器,Flah比系统存储器的速度更快,所以一般将程序放在flash中。②ROM中有一块程序是专门存放Bootloader的程序的,系统一上电会执行这段程序,其作用就是引导程序到flash中。
所以在SYSCLK的第四个上升沿会锁存Boot脚状态,如果Boot0=1,就引导片上SRAM的code/系统存储区的code到flash并保存到flash。当Boot0=0时,系统直接就运行flash程序。
我们知道,flash是rom的一种,其特点就是不易修改,那么如果我们要修改MCU内部程序怎么办呢?此时我们的程序是被写入了SRAM中,只要将Boot0拉高,Boot1拉高,bootloader就会引导SRAM的程序到Flash中并将其保存。
电力电子部分
开关电源和LDO的区别
LDO是线性电源,内部相当于滑动变阻器,效率低,但是纹波小,只能降压。
开关电源利用器件开通特性,效率高,但是纹波大。升降压。
MOSFET
mosfet三个工作区域:截止区域、饱和区域、线性区域;
当mosfet做开关使用时,在截止区和饱和区跳变。
自举电路:调试的时候,上小电的时候,系统很稳定,能够正常运行,让系统工作在要求电压下,系统出现输出就不正常,系统输出没有。经检测,发现逆变器后的波形不对,以为是管子坏了,就去打mosfet管子,发现没坏。再检测发现驱动也没坏,于是用温枪打的时候,发现二极管温度很高,然后换了一个耐压高的,系统就能正常工作了。
Nmosfet如何判断好坏:
全桥逆变中通常用到自举电路,自举电路由自举二极管、自举电容等构成。
自举电容的值选取:Cboost>=10*Cg=Qg/(5V-Vdiode);其中,Qg是需要在NMOS的Datasheet中找。Cboost不能太小,太小了,不能开通NMOS,也不能太大,NMOS不能完全打开。
二极管有哪些种类:
普通二极管:整流、续流。正向电压导通,加反向电压,产生反向电流,使电流为0,缓慢截止。
肖特基二极管:正向导通电压小,反向加电压时,反向电流大,能快速截止二极管。(开关速度更快)
快恢复二极管:肖特基性能好,但是反向耐压值低(100V以内),快恢复性能虽不如肖特基,但是耐压值很高。(>1000V)
TVS(瞬态电压抑制二极管):消除尖峰电压、静电等。当有尖峰电压来时,TVS电阻会变得很小,把后面电路短路,保护电路。
自举二极管耐压值的选取:二极管耐压要高于电源电压Vds可能充入的最高电压,这里自举二极管一般选快恢复二极管。
Buck电路
Buck电路输出电压不是直流:调试的时候,发现Buck输出芯片输出的一路电压不是恒定的直流电,而是呈现出图示的波形。这与我们在课程学习时,知道的Buck电路输出电压情况不符合,因为我们第一直觉就是认为只要按照上图搭建好Buck电路,输出就是直流电,且满足:Uo/Uin=Ton/T
解决办法:后面查了资料发现buck输出恒定直流电且输出满足上述关系式的条件是:电感电流是连续的,即Buck工作在CCM模式。上述波形显示Buck未工作在连续模式。
那么如果回路电流工作在其他模式,怎么让它工作在连续模式呢?通常为了使回路电流连续,需要串联一个L值较大的电感,若L取值太小,那么回路电路就可能为0,出现断续。但是L的值过大会影响系统动态响应,那应该怎么选取这个电感的值呢?
知识补充
根据流过电感的电流是否连续,将Buck工作状态分为三种:CCM(连续模式)/DCM(断续模式)/BCM(临界模式),一般来讲,希望Buck工作在CCM模式,以实现输出电压恒定
CCM:
根据伏秒积定理可知,流过电感的电流增量始终和流过电感的减少量相等,即当电路处于稳定状态时,开关开通时加在线圈两端的电压*开通时间=开关关断时加在线圈两端的电压关断时间,正伏秒值等于负伏秒值。
(Uin-Uo)*Ton=(Uo+Ud)*Toff
(Uin-Uo)Ton=UoToff(同步buck、忽略二极管压降Ud=0)->Uo/Uin=Ton/T
如何选取合适的电感值、电容值,以保证回路电流在连续状态呢
计算电感值的方式:
如果已知纹波△IL
①根据电感电流增量计算L:(Uin-Uo)=Lx(△IL/Ton)->L=(Uin-Uo)xTon/△IL
②根据电感电流减量计算L:Uo=Lx(△IL/Toff)->L=UoxToff/△IL(同步Buck)
如果纹波△IL未知
根据△IL=(0.2-0.4)xIo(Io=电感平均电流IL)
①根据电感电流增量计算L:△IL=(Uin-Uo)xTon/L;->△IL=(0.2-0.4)xIo;->L=(Uin-Uo)xTon/((0.2-0.4)xIo)
②根据电感电流减小量计算L:△IL=UoxToff/L;->△IL=(0.2-0.4)xIo;->L=UoxToff/((0.2-0.4)xIo)
除了上述电感取值需要注意以外,还需要考虑电感峰值电流和饱和电流
一般来讲,为了更好的引导磁力线的走线,通常在电感周围加入了磁芯,电流很小时,磁芯不会饱和,电感值是个常数,但是随着电流的增大,磁芯会慢慢的趋于饱和,磁芯越趋于饱和,电感的值就不再恒定,反而会减小,这会进一步加剧电流的增大,UL=(△IL/L)。当电感值衰减了30%的值时,定义此时流过电感的电流为饱和电流。==一般来讲,要求电感峰值电流小于饱和电流,且留有一定裕量。==即ILp=IL+△IL/2>IL饱和
计算电容值的方式:
Buck电路中,电容的作用是维持负载两端电压恒定,即电感输出给负载的能量减小时,电容就需要向负载输出能量,保持负载两端能量恒定。即输出电容电流的变化就是电感电流的变化(你增大时我减小,我减小时你增大)
如果已知纹波△Uc:
电容两端电荷变化量:△Q=1/2xT/2x△IL/2;->△Q=Cx△Uc;->C=△Q/△Uc
即综上所述:①想要得到输出电压为直流电,且满足Uo/Uin=Ton/T;->②需要使Buck工作在CCM模式;->③需要电感/负载/回路电流一直连续;->选择合理的电感值;->选用合理的电容值
详细链接:https://zhuanlan.zhihu.com/p/407550425
DCDC/Buck负载是重载还是轻载的判断方法:重载->电感电流变化很大->电阻阻值比较小/电感值大;轻载->电感的电流变化比较小->负载阻值大/电感值小
模拟电路部分
运算放大器
集成电路是一种将管和电路结合的器件,其内部把晶体管、二极管、场效应管、电阻、电容、电感及其连接线组合在一起构成特定功能(放大、积分、微分、求差…)。
运算放大电路输出没有放大:在调试的时候,当给运算放大器一个8M的载波信号时,发现运算放大器的输出比输入还减小了,运算放大器不是放大的吗?为什么没有放大反而减小了?
解决办法:运算放大器选型不对,重新选择了一款运放并替换,就行了。
运算大常用参数:
①差模信号放大倍数Aod:=△Uo/△(Up-Un)(dB);对于运放器件而言,有用的信号就是差分信号。分贝dB=20lg(Avd)
②共模抑制比Kcmr:=Aod/Aoc(dB);差模信号放大倍数/共模信号放大倍数,希望这个值越大越好,差模信号是有用信号,是两个信号线的差值,共模信号是两根线共同收到的干扰呀之类的信号,希望有用信号清晰。
③输入电阻Rid、输出电阻Ro:输入电阻Ri越大越好,越大,则运放工作的电流要求就越小,要是Ri
很小,则要求输入电流很大,对运放工作要求增高;要求Ro越小越好,希望运放输出尽可能传递给后一级,而不是在放大这里就消耗很多。
④失调电压Uio:一般来讲,没有差分输入,就没有放大输出,但实际情况,没有输入也有输出,此值将输出电压调为0。
⑤最大差模输入电压Uidmax:最大差模输入电压。
⑥带宽:当输入信号频率在运放的范围内,能正常放大,当f大于某一个点,输入信号不但不会增大,还会减小。
⑦转换速率/压摆率:某一个时间之内,输出电压能变化多大幅值。如果压摆率跟不上输入信号。SR=2xpixfxUop(输出电压峰值)。
常用运放型号
①:通用:LM324;②:中等性能:TL系列;③:高精度:OP系列;④高速:LM318,AD;