为基于微控制器(MCU)的嵌入式设计减少物料清单(BOM)成本和尺寸是首要设计考虑因素之一。在带有开关转换器的8位MCU设计中实现这些设计目标的途径之一,是采用高频时钟输出来驱动这些开关转换器,而不是采用传统的低频脉宽调制(PWM)输出。这种技术可以减少开关转换器中电感器容量大小,从而降低BOM成本和电路板空间需求。
开关转换器通常在嵌入式系统中被用于有效提升或者降低电压。这些转换器使用电感器来存储和传递能量到系统中的负载。电感器周期性接通以便把电能转换进电感器的磁场。当电源被关断时,电感器的能量被传送到负载。这些转换器通常由PWM信号来控制接通和断开,并且这一信号特性能够影响转换器的输出特性。
例如,下面让我们来考虑一个升压型转换器,它是输出电压高于输入电压的开关转换器。
连续模式
通常,升压转换器运行在“连续”模式。这意味着,转换器中电感器存储的能量在开关周期之间并未完全释放(比如:电感器放电流未达到零)。用于确定连续模式升压变换器输出电压的公式是相当简单的:
其中,Vo等于输出电压,Vi等于输入电压,D等于占空比。在这种情况下,输出电压可以通过简单的改变开关元件的PWM占空比来调整。然而,该模式有一点需要注意:电感器必须足够大,以存储在其充电和放电循环中系统所需的能量。这意味着开关频率越慢,电感器充电和放电的时间越长,因此需要更大容量的电感器。当然,电感器容量越大也就越昂贵,所以一般开关转换器设计倾向于更高的开关频率而不是更低的开关频率。
然而,更高开关频率所带来的好处也有上限。当开关频率升高时,电路中开关元器件(通常是MOSFET)和电感器内的损耗也会增加,因此一旦这些损耗达到限制,那么开关频率也就达到了上限。
一些8位MCU,例如Silicon Labs的C8051和EFM8器件,有能力使用片内可编程计数器阵列(PCA)模块产生可变占空比的PWM输出,这意味着它们能够很好地驱动运行于连续模式下的升压转换器。然而,的PWM频率通常低至95.7kHz(快内部振荡器通常为24.5MHz,然后被256分频后用于8位PWM),按照开关转换器标准来看这是相当慢的。这也意味着,通常用于控制连续模式下开关转换器的8位MCU需要相对容量加大、且昂贵的电感器。
可用的在线计算器能够帮助开发人员确定在连续模式下升压转换器所需的组件大小,例如。
例如,我们假设下面的设计需求:
Vin= 3V
Vout= 12V
Iout= 20mA
开关频率 = 95.7kHz
为了在75%占空比下运行开关转换器,我们需要147μH的电感器。
非连续模式
连续模式的替代模式是“非连续”模式,其中电感器电流在开关循环的放电周期中被允许完全释放。这种方法会使输出公式复杂化:
其中,L是电感值,Io是输出电流,T是开关周期(开关频率的倒数)。正如你所看到的,该公式更复杂,同时它仍然包含占空比作为依赖项,而且它引入了额外的依赖项,甚至采用固定占空比时,我们也能够使用它生成预期的输出。例如,所有的其他条件不变,如果我们成比例地降低T和电感器容量L,那么输出特性将保持不变。这意味着我们可以使用任意的占空比,然后增加开关频率以减小电感器容量大小和成本。
此外,在这种模式下PCA有一项有用的特性:频率输出生成。在这种模式下,能够产生50%占空比的频率输出,在正常条件能够达到SYSCLK的一半或者12.25MHz。由于之前提及的开关损耗的因素,开关转换器通常不会运行于如此高的频率,典型的运行频率范围在100kHz至4MHz。在更合理的3.062MHz开关频率下(24.5MHz SYSCLK被8分频),我们能够重做之前的示例,这使用非连续模式,并且采用50%的固定占空比:
Vin= 3V
Vout= 12V
Iout= 20mA
开关频率 = 3.062MHz
占空比 = 50%
这,所需要的电感器大小减小到2.04μH!在相同输出特性条件下,这仅是连续模式下PWM示例中所需电感容量大小的1/72。
除了电感容量~2.2 μH对比~150μH之外,其他方面也具可比性:
SRN4026-151M : 150 μH,220mA: $0.18 @1000 : 4mm x 4mm
MLZ2012A2R2M: 2.2 μH,210mA: $0.058 @1000 : 2mm x 1.25mm
正如你所看到的,这一更小容量的电感导致BOM成本减少了12.2美分,或减少68%。封装面积也减小了11.5mm2或72%。
示例电路和固件
作为概念证明,我们已经开发了相关的电路和固件。在前面的例子中,电路的特征是静态。只要输入电压为3V,负载在12V下持续消耗20mA电流,那么MCU仅需要输出一个3.062MHz方波给开关电路,保持稳定的输出。如果负载在12V下的耗电流小于20mA,那么输出电压将连续增加直至达到平衡。由于没有任何形式的反馈机制,如果负载变化,我们不能确定输出电压。
在下面的电路,电压分压器允许MCU去测量输出电压,因此形成反馈回路,这使得我们能够在运行时调整输出的行为。调整输出电压能够通过这样的方式:在输出电压太高时禁止频率输出,当输出电压太低时重新使能它。此外,一个仿真负载由R4和LED构建,并被连接到电压输出上:
固件针对EFM8BB1 MCU而写,但是只要具有PCA模块和带窗口比较特性的模数控制器(ADC),它可以移植到任意8位MCU上。PCA配置输出通道0到P0.1引脚,输出频率3.062MHz。ADC配置在P0.3引脚,采样率300kHz,使用定时器3溢出来触发转换。ADC也被配置为使用窗口比较特性,仅仅当ADC采样值落入预期的电压范围之外时才触发中断。所有配置完成后,整个反馈环路被包含在ADC中断处理函数(ISR)中:
SI_INTERRUPT(ADC0WC_ISR, ADC0WC_IRQn)
{
uint16_t sample;
//清除窗口比较中断标志位
ADC0CN0_ADWINT = 0;
//存储ADC采样值
sample = ADC0;
if (sample > MAX_COUNTS)
{
//禁止PWM
P0MDOUT &=~P0MDOUT_B1__BMASK;
//设置LT值,清除GT值
ADC0LT = MIN_COUNTS;
ADC0GT = 0xFFFF;
}
else if (sample {
//使能PWM
P0MDOUT |=P0MDOUT_B1__PUSH_PULL;
//设置GT值,清除LT值
ADC0LT = 0;
ADC0GT = MAX_COUNTS;
}
}
如果ADC测量值大于ADC0GT值或者小于ADC0LT值,那么中断被触发。如果测量值在这个范围内,那么不会发生任何事情。一旦进入ISR,如果测量值超过了预期的值,那么频率输出被禁止。如果它小于预期值,那么频率输出被重新使能。通过把端口配置为开漏模式输出而被有效禁止,因此引脚被电阻器R1拉低,进而关闭MOSFET Q1。
ADC代码中定义的MAX_COUNTS代表9.5V,MIN_COUNTS代表8.5V。这有效的限制输出电压在8.5-9.5V。
下面示波器图像显示了采用该代码的电路输出信号。
通道1是输出电压。通道2是施加到电路BOOST引脚的频率输出。正如你所看到的,当电压低于8.5V时,固件激活频率输出;当电压大于9.5V时,频率输出被禁止。
在实践中,使用窗口比较模式的ADC需要极少的CPU开销。在我们的测量电路中,CPU在ISR中大约仅有12 μs的活跃时间,每8.9ms两次。总的CPU开销大约是0.14%。减小输出电容导致需要更高频率更新,即输出电压需要更少时间充电到限值,少时间放电到限值。
下面是BOOST引脚连接到MCU的电路:
下面是BOOST引脚断开时的电路:
在这种情况下,输出电压会下降至Vin,这时不能达到点亮LED所需的要求。
总结
开关转换器通常被用于嵌入式应用中,去有效转换电压到其他值。这些开关转换器经常通过带有可变占空比的PWM信号去控制转换器的输出特性。然而,对于大多数MCU来说,生成可变占空比PWM信号的能力被限制在相对的低频率,因此需要使用更大的电感器。作为替代,高频、固定占空比的时钟频率输出能够显著降低电感器容量大小,减少BOM成本和电路板空间需求。