tag 标签: 恒压源

相关帖子
相关博文
  • 热度 33
    2016-6-1 18:18
    1654 次阅读|
    1 个评论
    由第一张图能够看出来,当负载电流在 200mA 时, +2V~+24V 都能获得不错的波形。虽然指令值切换瞬间,有超调的存在,但是不严重,可以接受。 当负载在 500mA 时,虽然可以在 +2V~+24V 全量程调节,但是在 +12V~+16V 这一段上会出现噪声极大,电感啸叫的情况。在当负载超过 1A 时, +14V 以上的电压就调不上去了。所以,能够在 40mA~3A 的负载电流下,进行数字调控,性能还能可接受的,就只有 +3V~+10V 这一段。 (好吧 ~ 理想很丰满,现实很骨感 ~~~~~ 当负载电流从小到大变化时,其中出现的一段噪声极大,电感啸叫的区间,应该和电感 / 电容 / 负载构成的电路谐振频率有关,因为更小与更大的负载电流下都能够获得良好的波形。至此,剩下的工作就只有 MCU 的其他功能实现了,比如 RS485 和 RS232 的编程,电位器手动控制,以及 MCU 温度反馈等等 ~ ) 总结,使用 LM2677 制作的这个恒压源,比起使用运放的方案,硬件成本更低,噪声稍大,调节速度稍逊,适用于不方便使用 PWM 调制的电阻性负载。
  • 热度 25
    2016-6-1 17:58
    1218 次阅读|
    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
    1334 次阅读|
    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失去了调节能力。不论指令电压给了多少,输出电压都几乎等于输入电压。而加大负载之后,输出电压会调节到指令电压位置。
  • 热度 25
    2013-11-12 11:40
    1511 次阅读|
    0 个评论
    程控电源的技术和应用远比多少工程师们想象的复杂。在过去的近一年中,老赤脚医生的博客上已经用了数十篇关于这方面的文章。今天,我们回到基础点,就是根据测试要求,迅速从大量的产品资料中迅速找到可能适合我们的产品 当您需要使用程控直流电源对被测器件 ( DUT ) 供电时 ,会 有众多电源厂商的产品可供选择。为缩小选择范围 ,选择最适合您需要的电源,就需要更为有效地查阅 电源的技术资料。尽管在技术资料中,电源的基本信息雷同,但您会注意到,不同电源厂商提供的技术指标说明是不完全一样的。为确保获得最合适的技术指标,您最好对被测器件需要的电源需有所了解。当然,首先是被测器件最大的输入电压、电流和功率。当然,还需要考虑是否需要动态的输入电压, 以及输入电压的精度范围。 之后,就需要考虑一下电源的测量能力了,如静态和动态的电流及电压,输出功率、测量精度等等。    在确定了被测器件的电源要求后 , 您就可以仔细阅读技术资料中的电源技术指标 , 从而找出符合您需求的电源产品。您很有可能会考虑以下技术指标: 直流输出额定值 显示了电源的最大电压、电流和功率。确保您的直流输入要求在上述数值范围内。 输出噪声 描述了夹杂在直流输出电压的交流成分 , 通常用峰峰值电压和真有效值电压表示。如果被测器件对噪声敏感 , 您必须选择低噪声电源。 负载调整率(也称为负载效应) 显示了静态输出电压随负载电流而变化的情形。如果您不希望被测器件的输入电压随电流而发生变化,就需要选择具有低负载调整率的电源。 负载瞬时恢复时间 是指在负载电流发生变化时,输出电压恢复到设定范围内所需要的时间。如果被测器件对输入电压短期显著变化非常敏感 , 那么就需要选择负载瞬态恢复时间较短的电源。 源调整率 ( 也称为源效应)。 显示了静态输出的电压随交流输入电网电源变化的情形。如果您不希望被测器件的输入电压随交流电网电压波动而发生变化,那么可以选择源调整率较低的电源。 编程精度 显示了静态输出电压与编程设定值的差异。如果您想要精准地控制被测器件中的输入电压,那么可以选择编程精度较低的电源。 测量精度 显示了电压或电流的静态测量结果与实际输出值的差异。如果您想要非常精确地测量被测器件的输入电压或电流,那么可以选择测量精度较高的电源。 关于以上提到的所有这些参数的详细描述,在我以往的博客文章中都有描述: 程控电源技术与应用指南( 4 ) - 纹波和噪声 程控电源技术与应用指南( 5 ) - 超低纹波和噪声的精确测量方法 程控电源技术和应用指南( 9 ) - 负载效应和源效应 程控电源技术和应用指南( 10 ) - 瞬态响应(上篇) 程控电源技术和应用指南( 10 ) - 瞬态响应(下篇) 用电源精确测 量电流 - 程控电源技术和应用( 15 ) 如何确认电源精度 - 程控电源技术和应用指南( 16 ) 动态电流和电压的测量 - 程控电源技术和应用( 17 )
  • 热度 28
    2013-3-7 17:18
    2771 次阅读|
    7 个评论
       很多次有工程师给我提出这样的问题 : 安捷伦是否能提供可编程恒流源; 为什么有的时候电源输出会出现不稳定的状态等等。在这篇文章中,我就来谈谈电源的输出特性。     在所有情况下,理想的恒压电源的输出阻抗应该为零。如 图 1 所示,即无论负载吸取的电流如何变化,电压都应始终保持为常数。     在所有情况下, 理想的恒流电源的输出阻抗应为无穷大。如 图 2  所示,理想的恒流电源通过改变输出电压, 来适应负载电阻的改变,其量值正好保持输出恒定的电流。     安捷伦几乎所有的可编程电源的输出, 即可工作于恒压( CV )模式, 也可工作在恒流( CC )模式。但在某种不确定的条件下,电源可能既不在 CV , 也不在 CC 模式, 而处于非调整状态。        图 3 显示的是 该电源输出的工作模式。电源的工作点分别在斜线  R L = R C 的上方或下方。 这条线表示的是负载恰好工作在设定的输出电压和输出电流位置。 当负载 R L R C 时,这时负载的工作电流低于设置值的点, 电压主导了输出, 此时电源处于恒压模式。 点 1 处的负载电阻值要高于 R C ,输出电压即为设置的电压,而输出电流则要小于设置的电流。在这种情况下,电源为恒压模式,而设置电流则成为了限制电流。    当负载 RLC 时,这时负载实际电压要低于设置的电压,电流主导了输出。此时电源处于恒流模式。此时,点 2 处负载的电阻值要低于Rc, 输出电压就会低于设置电压,而输出电流等于设置的电流, 电源处在恒流模式,设置电压则成为了作为限制电压。         在一些极端情况下, 电源可能会进入既非 CV、  也非 CC 的工作模式,它就处于非调整状态。此种模式的输出往往是不可预期的。非调整模式的出现原因,可能是供电的交流电源电压低于规范值的结果。非调整条件可能在瞬间出现。例如,当编程输出非常高的电压跳变时,输出电容器或大的电容性负载会用最大的设定电流充电。在输出电压上升期间,电源即处于非调整模式。在电源从CV转换的CC状态的过程中,如果这时输出端短路,在转换过程中也可能产生短暂的非调整状态. 因此, 引发 UNR 的可能原因包括: 1.    电源存在内部故障。 2.  交流输入电压低于规定范围。 3.    负载电阻是 RC,它的阻值变化导致电源在 CV 和 CC 之间来回切换(参见图 1)。 4.     当输出端并联时,电源输出受到其它的电流源的影响。 5.     输出在 CV 和 CC 之间来回切换。这种频繁切换会导致短暂的 UNR。      关于电源的恒压和恒流工作模式,可以从以下的两个视频材料中,看到实际的演示:    视频 1 – 视频讲解: http://v.youku.com/v_show/id_XMzc0MTE1Nzcy.html?f=17488112        视频 2- 视频演示: http://v.youku.com/v_show/id_XMzczNzY1NDky.html?f=17488112       程控电源技术和应用指南(1)–线性程控电源的工作原理 程控电源技术和应用指南(2)–程控开关电源的工作原理 程控电源技术和应用指南(3)- 恒压和恒流输出模式 程控电源技术与应用指南(4)- 纹波和噪声 程控电源技术与应用指南(5)- 超低纹波和噪声的精确测量方法   程控电源技术和应用指南(6)- 减小电源到被测件的噪声     程控电源技术和应用指南(7)- 电源的串联和并联