tag 标签: 数控

相关博文
  • 热度 33
    2016-6-1 18:18
    1669 次阅读|
    1 个评论
    由第一张图能够看出来,当负载电流在 200mA 时, +2V~+24V 都能获得不错的波形。虽然指令值切换瞬间,有超调的存在,但是不严重,可以接受。 当负载在 500mA 时,虽然可以在 +2V~+24V 全量程调节,但是在 +12V~+16V 这一段上会出现噪声极大,电感啸叫的情况。在当负载超过 1A 时, +14V 以上的电压就调不上去了。所以,能够在 40mA~3A 的负载电流下,进行数字调控,性能还能可接受的,就只有 +3V~+10V 这一段。 (好吧 ~ 理想很丰满,现实很骨感 ~~~~~ 当负载电流从小到大变化时,其中出现的一段噪声极大,电感啸叫的区间,应该和电感 / 电容 / 负载构成的电路谐振频率有关,因为更小与更大的负载电流下都能够获得良好的波形。至此,剩下的工作就只有 MCU 的其他功能实现了,比如 RS485 和 RS232 的编程,电位器手动控制,以及 MCU 温度反馈等等 ~ ) 总结,使用 LM2677 制作的这个恒压源,比起使用运放的方案,硬件成本更低,噪声稍大,调节速度稍逊,适用于不方便使用 PWM 调制的电阻性负载。
  • 热度 23
    2016-6-1 17:58
    1498 次阅读|
    0 个评论
    如何达到最大负载电流 开关稳压芯片的最大负载电流,实际使用的时候往往达不到技术手册上的标称值。比如 LM2677 的标称最大负载电流是 5A ,但是实际上往往到不了 4A ,再增大负载时,输出电压会被拉下来。这是为什么呢?难道是芯片买到假货了吗? 并联输出电容,能够稍微的增大负载能力,因为并联降低了输出电容的 ESR ,也减轻了在电容上的损耗。可是,这个措施能带来的改进,实在是很小。 LM2677 的输出电容,即使并联了 5 个,能够提高的负载能力也不过不到 0.2A 而已。其实 switch regular 能否到达标称负载能力的关键,在于它的 thermal management 。散热有那么重要么?散热就是有那么重要! 在 http://www.eevblog.com/forum/reviews/lm2596-dc-dc-step-down-modules-load-testing/ 这个论坛中也提到类似的问题:使用 3A 的 regular LM2596 时,当负载电流为 2.5A 时,不到一分钟,输出电压就会被拉下来。下面这段话来自名为 ptricks 的跟帖: “I use quite a few of these switchers (the chip itself not the boards) every month and they are solid performers if you follow the data sheet.There is a lot of those for sale on ebay and I never buy them because of the way they implement the heat sink is only good for low current loads, the recommended size is 2oz copper and at least 2 square inches. The inductor used also isn't ideal , at high currents a torroid is best. They also do not include the filtering of the output to remove switching noise.” 下面这段话来自名为 sleemanj 的跟帖: “I believe those converters are "rated" to handle 10 Watts Power Output, not 10 Watts of heat dissipation. If you add a (large)  heatsink  you can take that to 20 Watts Output I believe. You are pumping 30 watts out of that poor wee board, without any heatsink at all, not even a itty bitty one. I'm surprised it lasted as long as it did .” 以下内容来自 TI 公司的 Application Report  Therma l  Design   By   Insight,   Not   Hindsight : “ With only natural convection (i.e. No airflow), and no heat sink, a typical two sided PCB with solid copper fills on both sides, needs at least 15.29cm2(2.37in2) of area to dissipate 1 watt of power for a 40 ° C rise in temperature. Adding airflow can typically reduce this size requirement by up to half. To reduce board area further a heat sink will be required. ” “ A typical 12 mil diameter thru hole via with 0.5 oz copper sidewalls has a thermal resistance of 261 ° C/Watt. Place as many thermal vias as will fit underneath the exposed pad to form an array, with 1mm spacing. Connect the vias to as many layers of copper as possible to spread the heat away from the package and to the PCB surface where it can transfer to the ambient air. For many DC-DC converters the exposed pad is electrically connected to ground and thus, the internal ground layer and the bottom ground layer are usually the most convenient copper planes for heat transfer. The thermal resistance is significantly lowered by having as solid a bottom layer ground as possible. ” LM2677 输入 +28V 电流 4A 时,输入功率 112W ,热功率 112W*8%=8.96W ,因此需要 15.29cm 2 *6.72=137 cm 2 的面积。 LM2677 的 TO263 背板过孔不用太大( 12mil ),但是要很多。 “ Maintain a copper ground plane on either the top or bottom copper layer with as few breaks as possible to create a heat spreader on the PCB. Spreading the heat across the PCB provides a low impedance path to the surface of the PCB and improves convective heat transfer. Traces perpendicular to the heat flow will create high impedances(speed bumps) for the heat and create hot spots(traffic jams). If traces through the copper heat spreader are unavoidable try to make them run parallel to the heat transfer, which flows radially from the heat source. ” 如果用于散热的地平面,一定要被切割,那么就平行于热力线发散的方向来走线。 “ The thermal resistance to the top of the package is considerably higher because of the plastic interface. ” “ A heat sink on top of the package is connected in series with the high thermal impedance of the plastic making the heat sink less effective. A heat sink on the bottom of the board is connected in series with the low thermal impedance of the exposed pad and the relatively low thermal impedance of the vias making the heat sink more effective. ” 散热片加在 LM2677 的 bottom 比加在 top 要好。从图上来看,散热片的面积不用很大,覆盖 exposed pad 即可。 (要达到标称的 5A 负载,在器件的选择和散热的处理上,都要狠下功夫。目前这块电路板,调整过输出电容、输出电感、钳位二极管,修改过散热措置,但是能达到的最大负载电流只有 3.8A (输出电压 5V 情况下),而且随着输入输出压差的减小,最大负载电流也会减小 ~~ 更深的研究,就留给各位感兴趣的童鞋吧 ~~ )
  • 热度 25
    2016-6-1 17:58
    1234 次阅读|
    0 个评论
    数字PID方案(一) 使用数字控制来实现LM2677的模拟控制,最简单的程序实现方案莫过于,使用ADC的值乘以相应的比例,给出DAC的值。这种方案里,没有算法,没有数字PID,ADC采到什么,DAC就给出什么。简单,直接,有效。 程序需要实现以下步骤: 在定时器中断服务程序中,采集10次voltageOut的值,做平均值滤波; 使用voltageOut,计算实际比例的LM2677输出(mV); 按照指令中的理想输出,计算理想的等效反馈电阻resFeed; 根据反馈电压,计算并给出对应的DAC值; 启动下一次ADC; 指定值 voltageSet 采样间隔 采样时间 采样与操作 时延 负载 采样次数 备注 18V 1ms ≈80us ≈1ms 1k 14 有R11 反馈引脚有PVCC上拉电阻的MCU复位输出波形; 复位MCU时,输出电容放电,电压缓慢下降,此时voltageFeed先变成了+1.5V(+3.9V分压); voltageFeed下降为0,再进入工作阶段; 不为+3.3V是因为钳位二极管本身还有压降; 去掉反馈引脚有PVCC上拉电阻后,voltageFeed引脚不再被上拉到+1.5V(+3.9V分压);   18V 1ms ≈80us ≈1ms 1k 14 无R11 正常工作时的波形; 几乎为锯齿波,周期为40ms; 取前n毫秒的voltageOut做平均,锯齿波幅值会变大; n越大,幅值越大; 取平均值其实是一种滞后的调节,输出已经变化了,但是给定值以没有变化的情况作为参考; 18V 100us ≈40us ≈100us 0.015A 10   波形已经相当平稳了; 说明100us的调节时间优于1ms; 输出约+15V; 18V 100us ≈40us ≈100us 0.92A 10   噪声非常大; 输出约+15V; 18V 100us ≈40us ≈100us 2.5A 10   2.5A负载电流,波形很平稳; 输出约+14V; 取200us的调节时间,波形和100us差不多; MCU知道voltageOut为+14V,但是电阻确定之后,反馈的比例也就确定了,误差并不能自动消除;
  • 热度 25
    2016-6-1 17:57
    1338 次阅读|
    0 个评论
    数字PID方案(二) 数字控制方案(一)算法简单,实现直观,而且在 100us 的调节周期下,已经能够获得很平稳的输出了。可是现在还是想让调节更智能一些。因为使用方案(一),即使 MCU 知道当前采集到的输出值并不正确,但是它没有途径去更改,因为它走的是一条单行道。指令给的是多少,反馈引脚加的就是多少,执行方案(一)的 MCU 会想,反正我按照指令去执行了,即使结果不正确,也不关我的事了。 如果要根据输出来调整输入,就需要引入数字 PID 方案。这就引出了数字控制方案(二),它采用了增量式的数字 PID 算法。增量式数字 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 ; 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失去了调节能力。不论指令电压给了多少,输出电压都几乎等于输入电压。而加大负载之后,输出电压会调节到指令电压位置。
  • 热度 30
    2013-12-26 17:06
    3641 次阅读|
    6 个评论
    图1 DC-DC开关稳压电路由于其高效率、大电流的优点被广泛使用。可调DC-DC可以通过调节反馈分压电阻来调节输出电压。图1是常用DC-DC降压稳压芯片LM2596-Adj的典型应用电路,通过调节R1和R2就可以得到所需输出电压。 有时候我们需要动态调节输出,最简单的方法就是把电阻换成电位器,通过手动调节的方式,动态调节输出电压。 然而,在系统应用中,电源电压调节必须要实现数字控制,就是我们常说的数控开关稳压电源。很多新手都懂得使用单片机、DAC、DC-DC电路,当要做一个数控开关稳压电路的时候,往往想到使用数字电位器。可是,数字电位器往往成本高、分辨率有限、噪声大、不常用等缺点,用到数控稳压电路里就不太理想。 如果我们能够设计出一种可以用电压调节输出的开关稳压电路,然后用DAC来控制调节电压,那么就很容易实现。问题是我们不可能自己重新设计一个DC-DC,如果能把现成的DC-DC集成芯片,通过修改外围电路的方式,来实现用电压来控制输出,那么问题就得到解决。下面,我还是以LM2596-Adj为例,看看怎样把LM2596-Adj改装成可数控的开关稳压电源。 图2 图2就是把LM2596-adj改装成电压控制的DC-DC电路。与图1电路不同的是,这里的反馈回路串入了一个运放,该运放组成一个比较电路,把电阻R1、R2的分压反馈信号与设定电压Vset进行比较,然后运放输出的调整电压通过一个二极管反馈到LM2596的FB脚。由于反馈信号加在运放的同相输入端,到达FB引脚的反馈信号极性没有改变,在整体来看还是负反馈,所以输出电压同样可以稳定。再根据运放的“虚短虚断”,运放的输入电压V+ = V- ,也就是说输出电压:Vout = Vset(1+R2/R1)。 相对于图1,输出电压公式中芯片内部的Vref变成了外部可控的Vset,相当于把芯片的内部基准电压“移”到了外部,通过DAC可以很方便地调节Vset。 电路中运放电源加入了-5V负电压,目的是使运放可以输出达到Vref(1.235V)+ VD1(0.7V)左右,使得输出电压可以稳定,D1和R5是为了确保不让运放输出的负电压反馈至FB引脚。如果把运放换成宽电压的轨对轨运放,则负电压和D1、R5可以去掉。 该电路本人亲测可用,缺点是由于反馈通路多了一个运放,造成信号的一些延时,反馈信号的相位裕度变小,所以输出电压的纹波会有所增大,不过整体性能还是不错的。不知道选用带宽较高的运放会不会有所改善。
相关资源