本帖最后由 lcdi 于 2022-8-31 23:06 编辑
【N32G430开发板试用】+可调电源模块设计历程
@安小芯
@安小芯
电子设计中经常需要不同的电压,所以调压简直是最常见最常需要的部分了。
从需求上来说,大的高性能的有实验室电源,小的有LDO微芯片稳压。但通常电路中的电压变换都是为了满足各种实际需要,比较固定,调节起来需要更换电阻,不是那么方便。
所以就想设计一款可以数控调节的电源板。
目标是低成本高效率,简易,紧凑,数控调节。
刚好遇到N32G430试用活动,这款芯片是国民技术新推的低成本高性能芯片,参数优异,看起来很适合目标应用,所以在此记录设计历程。
设计思路:
可调电源追求低成本高效率,只能是DCDC,为了方便使用,输入输出只要满足一定范围(初始设计为3~20V,较常用的范围),就应该正常使用。那么需要既能降压也能升压才行。
较有优势的是两种结构,sepic和buck-boost。
sepic结构较简单,但是效率也低,要用2个电感,成本高点,中间电容也有要求,当然在微小功率应用中也可以考虑,所以sepic备用。
为了效率考虑,首要选择是4管buck-boost方案,通常是4个NMOS,但是上端的NMOS需要自举升压才能驱动,mcu直驱是不行的,增加了成本和复杂性。所以改成了简化的版本,上端MOS用PMOS,这里就造成一个问题,后面实验中才发现。
为了更为简化设计,先设计为非同步整流,如图:
电感L3上的电流也需要监测,以便控制PWM并做安全保护,大电压上的微小电压差的检测比较难,使用现成的电流放大器是一个选择,但是频宽不够,只有几十k。而PWM设计频率要在100K以上,因此自己设计了2级差分放大器。
但这种放大电路对电阻精度要求较高,不过本设计不需要太精确的测量,可能通过软件测试校准即可适用。
调节方面力求简化,不涉及GUI,只使用串口通讯完成电压电流设置和测量监控。为了方便使用,使用printf方式,不过例程里面只有printf,还需重定义scanf函数,添加fgetc函数即可:
int fgetc(FILE* f)
{uint8_t ch;
while (USART_Flag_Status_Get(USARTx, USART_FLAG_RXDNE) == RESET)
;
ch=USART_Data_Receive(USARTx);
return (ch);
}
这样就可以使用scanf函数接收上位机传来的数据啦。(当然这个函数是阻塞型的,这样设计会造成等待,不过对于本设计主要就是等待上位机的指令,所以尚可。)
(提示:如果程序上有多线程的需要,那么不应该设计需要等待的函数。)
结果:
后续实验中发现PMOS驱动范围太窄,导致输入电压范围不够,不满足要求。因为3401这类管子GS只能承受20V压差(一般MOS管也都是这样的),使用时要留较大余量,否则很容易烧掉,使用时限制为15V以内。不满足要求。并且DCDC需要提高开关频率,GS上的跨接电阻为了快速关断,只能取较小值,但是导通时电流将比较大,MCU的管脚吸入电流不能支持。以上图的数值也难以支持到15V。
如果要改上端为NMOS,需要驱动芯片,这样小mos管就浪费了,选用大电流mos管更能发挥功率提高性能,这样也需要谨慎设计过流保护过压保护,一众电路都变得更为复杂,成本上升。而且完全由mcu软件控制pwm想要实现buck-boost,软件会相当复杂,难度较高。不适合低成本模块的应用。
所以这个方案现在准备放弃了。
设计过程中使用了N32G430芯片的几部分功能。首先是高主频的设计才能够支持高频率的PWM调节,DCDC的PWM频率越高,电感体积和成本越低,电流可以增大。
然后调好串口,调试更为方便,满足本设计需要。PWM部分取例程修改即可。ADC选择TIMTrigger_AutoInjection这个例程修改更好,里面也包含了PWM2路输出,刚好符合需要。整合串口部分即可。
N32G430整体使用起来顺利正常,方便直接,例程也容易学习理解,感受非常棒。
不过因为硬件设计不合适,经过考量和取舍,接下来将改为控制专用buck-boost芯片,经过比对选型,选择SC8721芯片(之前不选择它,一是因为成本高些,二是工作范围没有更大。),有符合目标的电参数性能,较低的成本,完善的保护,设计上应该也比较简单。只需I2C控制即可。内置也有电流放大器。
所以接下来修改设计,新版将推翻前面的软硬件设计重新来过。
sc8721电路:
pcb:
目前待调试,期待能够及时完善,以作为参加立创竞赛的项目~~。
|