失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【博客大赛】使用LM2677制作的3V至24V数控可调恒压源

【博客大赛】使用LM2677制作的3V至24V数控可调恒压源

时间:2024-04-03 21:55:34

相关推荐

【博客大赛】使用LM2677制作的3V至24V数控可调恒压源

/BLOG_ARTICLE_3013105.HTM

LM2677,是TI公司生产的高效率5A开关buck稳压器,由于它内部具备的lowON-registerDMOS功率开关,

使得它能够驱动大电流负载。LM2677有+3.3V、+5V、+12V和AJUSTABLE四个版本,

其中AJUSTABLE的输出范围是1.2V~37V,使用它可以做一个可调的恒压源。

官方手册中给出的AJUSTABLE典型应用电路如下:

在上图中,R1固定为1K,选择不同的R2值,就能得到不同的输出电压。

VOUT=VREF*(R1+R2)/R1其中VREF=1.21V。

如果需要得到14.8V的输出,那么R2选择11.23KΩ就可以了。

要制作一个手动可调的恒压源,将R2换成一个电位器即可。

用户拧动电位器,使其有效阻值变化,LM2677的输出也会随之变化。

LM2677的内部工作原理,是使用VOUT反馈到FB端的电压,与参考电压VREF比较,构成一个负反馈网络。

VOUT反馈到FB的电压,可以直接使用电阻来实现(如使用电位器),

也可以使用运算放大器构成的电路(如方案一),

实际上,只要是能将VOUT反馈到FB端的任何方式,都可以实现调节功能,

比如使用AD采集VOUT,然后使用DA反馈到FB。

J1是+28V电源输入接口。也可输入不大于40V的任意电压,(输出电压会稍低于输入电压)。

输入非+28V电压,也会获得正确的输出电压,但结果由设计保证,不做测试。

因为这块电路板有数字部分和模拟部分,所以布线的时候需要把地平面分开,

数字部分的+5V/GND在U1处单点共地(为什么不在电源入口J1处单点共地呢?

因为LM2596的输出+5V在U1处输入数字部分,在这个地方共地,电源构成的环路最小)。

电感附近不建议放置信号线,所以IC3(LM2677)的6号引脚以及IC1(LM2596)的4号引脚上面的线,

都离电感较远。数字部分的地平面采用reliefconnect,模拟部分的地平面采用directconnect,

因为数字部分的电流较小,而模拟部分的大电流可能会烧坏焊盘的leader。

这种方案,需要使用AD和DA芯片,看起来是最复杂。但是由于数控方案本身需要UART

(或其他通讯协议)的功能而必须使用MCU,而目前的MCU集成了AD和DA部分,

所以反而在电路实现上最为简单。

(32位CORTEX-M3的ARM异军突起,使得集成AD和DA的单片MCU价格也在二十元以下,

而使用8位MCU配合DA和AD芯片的成本,已经超过了前者。

虽然使用前者强大的32位处理功能,来实现单一的电压调节,实在是有点浪费啊-_-~~~)

图中,VOUT经过R14和R16分压之后,输入至AD采样,结果经过运算之后,

转换出相应的DA值,经过R13,反馈到FB上。

使用R11连接+24V,这样即使DAC_OUT失效,输出也会保持在很低的安全电压下。

D4的作用是将DAC_OUT电压钳位在+3.3V上,保护DA输出引脚。

只要DAC_OUT能够以正确的比例反映ADC_IN的值,那么这个负反馈网络就构建成功。

OFF引脚具备内部上拉,如果悬空则芯片会一直工作。

加上R17下拉到地,使得MCU未工作时LM2677处在关断状态。

大电流器件的说明(这一小节的内容,参看LM2677的用户手册更好哈~~)

LM2677可提供5A的负载电流,它的外围功率器件也必须达到至少5A负载能力,

而且在大电流开关稳压器的应用中,器件的选择上还有其他一些要十分注意的地方。

(虽然关于器件的选择理由,这一部分内容在用户手册中十分晦涩,但是读懂了之后会获益良多~~

作为数字电路设计偏多的人,这一部分俺已经看了多遍,可还是在半懂不懂之间~~)

此块电路板在上电时有打火现象,通过直流电源观察到,启动电流超过了3A的阈值,

可以清晰的听到直流电源继电器的声音。过了启动瞬间之后,电流会立刻降低到10mA以下。

从前设计的电路板,使用LM2596作为电路板稳压芯片,并使用220uF的输入电容,

+12V输入电压,打火情况几乎可忽略不计,它引起的电流冲击也不会造成器件的破坏,

所以也没有做消除打火的措施。而这块电路板打火现象非常严重,

调试工具USB/RS232转换线也跟着不正常。所以增加消除打火的电路就变得非常必要了。

打火现象主要是由于输入电容太大引起的。LM2677的输入电容2200uF。

消除打火,就是要给电容预充电(pre-charge)。

以下灰色字体的内容来自维基百科的pre-charge词条:

“Pre-chargeofthepowerlinevoltagesinahighvoltageDCapplication

isapreliminarymodewhichcurrent-limitsthepowersourcesuchthat

acontrolledrisetimeofthesystemvoltageduringpowerupisachieved.”

“Whenahigh-voltagesystemisdesignedappropriately

tohandletheflowofmaximumratedpowerthroughitsdistributionsystem,

thecomponentswithinthesystemcanstillundergoconsiderablestress

uponthesystem‘powerup’.Insomeapplications,theoccasiontoactivate

thesystemisarareoccurrence,suchasincommercialutilitypowerdistribution

whichistypicallyonalmostallofthetime.

Yetinothersystemssuchasinvehicleapplications,

activationwilloccurwitheveryindividualuseofthesystem.

Whenalonglifeofthecomponentsandahighreliabilityofthehighvoltagesystem

isneeded,thenapower-upmethodwhichreducesandlimitsthepower-upstressisrequired.”

pre-charge可以限制电流输出,并在power-up时控制板上电压的上升时间,

虽然一个设计得很好的high-voltage系统能够承受power-up的冲击,但是需要经常启动的系统,

比如车辆应用,需要提高器件寿命和可靠性时,使用pre-charge就很必要。

“In-rushcurrentsintocapacitivecomponentsareakeyconcerninpower-upstresstocomponents.

WhenDCinputpowerisappliedtoacapacitiveload,thestepresponseofthevoltageinputwill

causetheinputcapacitortocharge.Thecapacitorchargingstartswithaninrushcurrentandends

withanexponentialdecaydowntothesteadystatecondition.

Whenthemagnitudeoftheinrushpeakisverylargecomparedtothemaximumratingofthecomponents,

thencomponentsstressistobeexpected.

ThecurrentintoacapacitorisknowntobeI=C(dV/dT):

thepeakinrushcurrentwilldependuponthecapacitorCandtherateofchangeofthevoltage(dV/dT).

Theinrushcurrentwillincreaseasthecapacitancevalueincreases,andtheinrushcurrentwill

increaseasthevoltageofthepowersourceincreases.

Thissecondparameterisofprimaryconcerninhighvoltagepowerdistributionsystems.

Bytheirnature,highvoltagepowersourceswilldeliverhighvoltageintodistributionsystem.

Capacitiveloadswillthenbesubjecttohighinrushcurrentsuponpower-up.

Thestresstothecomponentsmustbeunderstoodandminimized.”

In-rush电流(浪涌电流)是电容的关键参数。电容充电始于in-rushcurrent,结束于指数级衰退。

电容的电流为I=C(dV/dT),因此电容的容值越大,电源电压的上升趋势越大,inrush电流也会越大。

从上表看出,如果输入电容11000uF,电源电压在10ms内升至+28V,inrush电流会到31A。

而LM2677的输入电容为2200uF,inrush电流约为6.2A。

“Thefunctionalrequirementofthehighvoltagepre-chargecircuitis

tominimizethepeakcurrentoutfromthepowersourcebyslowingdown

thedV/dToftheinputpowervoltagesuchthatanew‘pre-chargemode’iscreated.

Ofcoursetheinductiveloadsonthedistributionsystemmust

beswitchedoffduringthepre-chargemode.

Whilepre-charging,thesystemvoltagewillriseslowlyandcontrollably

withpower-upcurrentneverexceedingthemaximumallowed.

Asthecircuitvoltageapproachednearsteadystate,thenthepre-chargefunctioniscomplete.

Normaloperationofapre-chargingcircuitistoterminatepre-chargemode

whenthecircuitvoltageis90%or95%oftheoperatingvoltage.

Uponcompletionofpre-charging,thepre-chargeresistanceisswitched

outofthepowersupplycircuitandreturnstoalowimpedancepowersourcefornormalmode.

Thehighvoltageloadarethenpoweredupsequentially.”

既然电容通常不方便修改,那么就可以通过减慢dV/dT来减小inrush电流。

当pre-charge进行时,不能接通感性负载,如电机。当到达operation电压的90%或者95%时,

pre-charge就可以终止。终止后,可以将pre-charge电阻短接,以减少功耗。

“Thesimplestinrush-currentlimitingsystem,

usedinmanyconsumerelectronicsdevices,isaNTCresistor.

Whencold,itshighresistanceallowsasmallcurrenttopre-chargethereservoircapacitor.

Afteritwarmsup,itslowresistancemoreefficientlypassedtheworkingcurrent.”

最简单的pre-charge电路,是使用一个NTC热敏电阻。

启动时,它的温度较低,阻值较大,用来给电容充电;随着温度升高,阻值变小,用来通过工作电流。

也有使用继电器的pre-charge方案,它能完全短接pre-charge电阻,从而最大限度的减少功耗。

考虑到继电器的硬件成本和功耗,LM2677这个电路还是采用了NTC热敏电阻的方案。

那剩下的工作,就是选择合适的NTC电阻了。

以下灰色字体的内容来自/news_content-79990.html:

“滤波电容的大小决定了应该选用多大尺寸的NTC。对于某个尺寸的NTC热敏电阻来说,允许接入的滤波电容的大小是有严格要求的,

这个值也与最大额定电压有关。在电源应用中,开机浪涌是因为电容充电产生的,因此通常用给定电压值下的允许接入的电容量来

评估NTC热敏电阻承受浪涌电流的能力。对于某一个具体的NTC热敏电阻来说,所能承受的最大能量已经确定了,根据一阶电路中

电阻的能量消耗公式E=1/2×CV2可以看出,其允许的接入的电容值与额定电压的平方成反比。简单来说,就是输入电压越大,

允许接入的最大电容值就越小,反之亦然。”

“NTC热敏电阻产品的规范一般定义了在220Vac下允许接入的最大电容值。假设某应用条件最大额定电压是420Vac,

滤波电容值为200μF,根据上述能量公式可以折算出在220Vac下的等效电容值应为200×4202/2202=729μF,

这样在选型时就必须选择220Vac下允许接入电容值大于729μF的型号。”

“电子产品允许的最大启动电流值决定了NTC热敏电阻的阻值。假设电源额定输入为220Vac,内阻为1Ω,

允许的最大启动电流为60A,那么选取的NTC在初始状态下的最小阻值为Rmin=(220×1.414/60)-1=4.2(Ω)。”

“产品正常工作时,长期加载在NTC热敏电阻上的电流应不大于规格书规定的电流。

根据这个原则可以从阻值大于4.2Ω的多个电阻中挑选出一个适合的阻值。当然这指的是在常温情况下。

如果工作的环境温度不是常温,就需要按下文提到的原则来进行NTC热敏电阻的降额设计。”

“电源设计中使用NTC热敏电阻型浪涌抑制器,其抑制浪涌电流的能力与普通电阻相当,

而在电阻上的功耗则可降低几十到上百倍。对于需要频繁开关的应用场合,电路中必须增加继电器旁路电路

以保证NTC热敏电阻能完全冷却恢复到初始状态下的电阻。在产品选型上,要根据最大额定电压和滤波电容值选定产品系列,

根据产品允许的最大启动电流值和长时间加载在NTC热敏电阻上的工作电流来选择NTC热敏电阻的阻值,同时要考虑工作环境的温度,适当进行降额设计。”

最大工作电流>电源回路工作电流

标称电阻值R≥1.414*E/Im;E为线路电压,Im为浪涌电流

材料常数B值越大,残余电阻越小,温升越小

时间常数与耗散系数的乘积越大,热容量越大,抑制浪涌电流的能力也越强

能否不加pre-charge电路,而通过缓慢升高电源电压来避免inrushcurrent呢?

当然可以。如果使用直流电源,那缓慢的拧动输出旋钮就行。如果是使用开关电源,那还是算了吧。

下图是5V10A的开关电源的输出波形(空载),它可是在10ms内就从0V升到了+5V。

理论分析很麻烦,但是结论通常都很简单。通常确定最大工作电流和标称阻值之后,就能选定NTC的型号。

在LM2677的应用中,最大工作电流需要>5A,标称电阻值需要R≥(1.414*28/7)=5.656Ω。

NTC6D-20、NTC8D-20、NTC10D-20都是不错的选择,使用时串在电源线正极上即可。

开关稳压芯片的最大负载电流,实际使用的时候往往达不到技术手册上的标称值。比如LM2677的标称最大负载电流是5A,

但是实际上往往到不了4A,再增大负载时,输出电压会被拉下来。这是为什么呢?难道是芯片买到假货了吗?

并联输出电容,能够稍微的增大负载能力,因为并联降低了输出电容的ESR,也减轻了在电容上的损耗。

可是,这个措施能带来的改进,实在是很小。LM2677的输出电容,即使并联了5个,

能够提高的负载能力也不过不到0.2A而已。其实switchregular能否到达标称负载能力的关键,

在于它的thermalmanagement。散热有那么重要么?散热就是有那么重要!

在/forum/reviews/lm2596-dc-dc-step-down-modules-load-testing/

这个论坛中也提到类似的问题:使用3A的regularLM2596时,当负载电流为2.5A时,不到一分钟,输出电压就会被拉下来。

LM2677输入+28V电流4A时,输入功率112W,热功率112W*8%=8.96W,因此需要15.29cm2*6.72=137cm2的面积。

LM2677的TO263背板过孔不用太大(12mil),但是要很多。

散热片加在LM2677的bottom比加在top要好。从图上来看,散热片的面积不用很大,覆盖exposedpad即可。

(要达到标称的5A负载,在器件的选择和散热的处理上,都要狠下功夫。目前这块电路板,调整过输出电容、输出电感、

钳位二极管,修改过散热措置,但是能达到的最大负载电流只有3.8A(输出电压5V情况下),

而且随着输入输出压差的减小,最大负载电流也会减小~~更深的研究,就留给各位感兴趣的童鞋吧~~)

使用数字控制来实现LM2677的模拟控制,最简单的程序实现方案莫过于,使用ADC的值乘以相应的比例,给出DAC的值。

这种方案里,没有算法,没有数字PID,ADC采到什么,DAC就给出什么。简单,直接,有效。

程序需要实现以下步骤:

在定时器中断服务程序中,采集10次voltageOut的值,做平均值滤波;使用voltageOut,计算实际比例的LM2677输出(mV);按照指令中的理想输出,计算理想的等效反馈电阻resFeed;根据理想的等效反馈电阻resFeed和实际的反馈电阻,计算应有的反馈电压;根据反馈电压,计算并给出对应的DAC值;启动下一次ADC;

增量式数字PID算法的用途非常广泛,几乎能想到的控制,都可以用它来实现,最常见的如直流电机的速度闭环。

对于LM2677的电路来说,设定值就是用户输入的理想输出电压,输出值就是LM2677的实际输出电压,

控制量就是加在LM2677反馈引脚上的DAC输出值。LM2677的MCU程序需要实现的功能就是,

采集LM2677的实际输出电压,和用户输入的理想输出电压比较,根据比较出来的偏差,

调整LM2677反馈引脚上的DAC输出值,直到使实际输出电压等于理想输出电压。

100us的调节时间,用定时器TIM2的溢出中断来实现,但是PID调节的计算并不在中断服务程序中。

TIM2_IRQHandler仅仅做了一件事情,就是启动一次ADC扫描。扫描完成之后,ADC的数据会经由DMA通道传输到指定地址的数组中,

DMA1_Channel1_IRQHandler是DMA中断,当需要扫描的ADC通道都转换完成之后,DMA中断被触发,在这里进行PID运算。

void TIM2_IRQHandler( void ){if ( TIM_GetITStatus( TIM2, TIM_IT_Update ) != RESET ){TIM_ClearITPendingBit( TIM2, TIM_IT_Update );auu.dmaFlag = TRUE;adc_startScan( );}}void DMA1_Channel1_IRQHandler( void ){if ( DMA_GetITStatus( DMA1_IT_TC1 ) != RESET ){DMA_ClearITPendingBit( DMA1_IT_TC1 );if ( auu.dmaFlag == TRUE ){auu.dmaFlag = FALSE;regular_pid( );}}}

PID为数字增量式,

buu.vol_set是用户给定的输出电压值,

buu.vol_out为实际采回来的输出电压值,

auu.voltageOut为ADC的运算结果,

auu.voltageFeed为DAC的给定结果。

struct __pid{int32_t vol_set;int32_t vol_out;int32_t vol_feed;int32_t vol_preError;int32_t vol_preDError;int32_t vol_P;int32_t vol_I;int32_t vol_D;int32_t deadline;};struct __pid buu;uint8_t regular_pid( void ){int32_t i = 0;int32_t error_t, derror_t, dderror_t;for ( auu.voltageOut = 0, i = 2; i < ADC_NUM; i++ )auu.voltageOut += adcResult[ i ];auu.voltageOut /= ( ADC_NUM - 2 );auu.voltageOut = ( auu.voltageOut * ( VOUT_RES_H + VOUT_RES_L ) / VOUT_RES_L )* ( 3300 / 4 ) / ( 4096 / 4 );buu.vol_set = auu.voltageSet;buu.vol_out = auu.voltageOut;error_t = buu.vol_set - buu.vol_out;derror_t = error_t - buu.vol_preError;dderror_t = derror_t - buu.vol_preDError;buu.vol_preError = error_t;buu.vol_preDError = derror_t;if ( !( ( error_t < buu.deadline ) && ( error_t > -buu.deadline ) ) )buu.vol_feed += buu.vol_P * derror_t + buu.vol_I * error_t / 100+ buu.vol_D * dderror_t / 100;auu.voltageFeed = buu.vol_feed / 1000;auu.voltageFeed = 3114 - auu.voltageFeed;if ( auu.voltageFeed > 3114 + 980 )auu.voltageFeed = 3114 + 980;if ( auu.voltageFeed < 3114 - 980 )auu.voltageFeed = 3114 - 980;DAC_SetChannel1( auu.voltageFeed );return 0;}

这是一个很典型的增量式数字PID算法,error_t是误差,derror_t是误差之差,dderror_t是误差之差的差。

通过PID运算buu.vol_feed之后,乘以相应的比例,给出DAC的值。

理想情况下,输出电压会以一个缓慢的趋势到达指令值。实际情况是,这“一个缓慢的趋势”与负载大小有关系,负载大,则趋势快;

负载小,则趋势慢。所以在不同的负载电流下,需要不一样的PID参数值。

(调节PID参数,是一件吃力不讨好的事情,枯燥无趣,而且很难掌握一个绝对的规律。

所以才会有那么多人去研究更高级的PID算法,比如神经网络、模糊数学、马尔可夫算法等等~~~

尼玛用好控制理论真是一门很不简单的工作~~~~)

三个PID参数分别为buu.vol_P、buu.vol_I、buu.vol_D。

不同的参数会获得不同特性的输出。经过调试,发现如果使用下面的参数表,会获得相当不错的波形。

这几张张表中都没有0A负载电流的情况,是因为负载太小时PID失去了调节能力。

不论指令电压给了多少,输出电压都几乎等于输入电压。而加大负载之后,输出电压会调节到指令电压位置。

总结,使用LM2677制作的这个恒压源,比起使用运放的方案,

硬件成本更低,噪声稍大,调节速度稍逊,适用于不方便使用PWM调制的电阻性负载。

如果觉得《【博客大赛】使用LM2677制作的3V至24V数控可调恒压源》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。