微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 基于STM8S103F3的简易Boost电路设计

基于STM8S103F3的简易Boost电路设计

时间:12-06 来源:互联网 点击:

由于不需要建立复杂的数学模型,大部分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%。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top