由于不需要建立复杂的数学模型,大部分PID控制器靠良好的PID系数整定就能工作的很好。而STM8S103F属于很小的8位单片机,它开发简单便捷、价格适宜,是一种非常好用的单片机。本文中我们运用STM8S103F3来制作一个稳定简单的升压电路。
STM8S103F3是一种TSSOP20封装很小的8位单片机,具有价格低、外设多、开发方便、以及宽工作电压等优点,平均只要1块多就能买一片。这里我们要用到3个定时器、一个UART串口、一个I2C串口、一个SPI串口、一个10位16通道的高速AD,还有看门Doge等。几乎每一个IO口都有自己的外部中断,内部具有多个始终源。
这里暂时只用了两个定时器和ADC。IM1这个高级16位定时器用于产生固定频率可变占空比的PWM波,通过一个引脚进行输出TIM4这个普通8位定时器用于隔一段时间进行PI运算,从而稳定输出电压ADC中的4通道(AIN4)用于检测输出电压,而3通道(AIN3)用于提供一个参考电压,约0.6-0.7V,这个电压利用二极管正向导通压降产生的。
使用参考电压是因为ADC出来的结果是一个整数,还需要乘以单片机电源电压再除以2的10次放才是真正的电压。单片机的供电可能不稳定,如果没有这个参考,那可能会造成输出不稳定。
电路图
运行时配置好定时器TIM1 TIM4还有ADC即可。然后在TIM4中定时运行PID算法。初始化TIM1,由主时钟直接驱动不分频,把它弄成向上计数模式:
TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, DUTYCYCLE_RESOLUTION, 0);
然后把输出通道1配置成PWM模式,高电平有效,同时开启反向的输出,可以给同步整流的管子用wTIM1_OC1Init (TIM1_OCMODE_PWM1,TIM1_OUTPUTSTATE_ENABLE,TIM1_OUTPUTNSTATE_ENABLE,0,TIM1_OCPOLARITY_HIGH,TIM1_OCPOLARITY_HIGH,TIM1_OCIDLESTATE_RESET,TIM1_OCIDLESTATE_RESET);
启动定时器和PWM输出
TIM1_CtrlPWMOutputs(ENABLE);
TIM1_Cmd(ENABLE);
设置占空比为1/320
TIM1_SetCompare1(1);
初始化TIM4,由64次分频的主时钟驱动,当计数到达255的时候触发一次中断。
TIM4_TimeBaseInit(TIM4_PRESCALER_64, 0xFF);
上来就得触发一次更新事件还有中断,让TIM4_PRESCALER_64生效。
TIM4_SetCounter(0xFF);
TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
开总中断
rim();
开TIM4
TIM4_Cmd(ENABLE);
本电路设计中的PWM频率计算方法及结果如下:STM8中的主时钟为16MHz。本制作中让STM8全速工作:CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1),也就是说驱动TIM1的预分频器的频率为16MHz,没有进行分频。当计数到320时自动重装计数器的值,得出PWM频率=16MHz/320=50KHz, PWM的分辨率为100/320%。
(编者按:本文为电源网论坛网友“尤小翠”原创分享,本文观点仅代表个人。)
声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。
小编推荐:预测控制?一种CRM Totem pole PFC的实现方法 | 20-09-07 12:01 |
---|---|
电路设计篇之Buck电源设计该如何深入学习 | 19-11-14 10:42 |
干货|BUCK/BOOST电路原理(建议收藏) | 19-06-26 11:12 |
BOOST升压原理如此简单! | 19-05-31 13:57 |
详解无桥Boost PFC电路的验证及EMI实例分析 | 19-01-11 10:07 |
微信关注 | ||
技术专题 | 更多>> | |
2024慕尼黑上海电子展精彩回顾 |
2024.06技术专题 |