• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

STM8单片机制作的3-4V升5V的Boost电路

上大学之后忙成了Doge 很少来论坛转悠最近稍微空闲于是就鼓捣了一个简易的升压电路 可以用于移动电源

STM8S103F3素一种TSSOP20封装(很小的QwQ)的8位单片机, 具有价格低|外设多|开发方便(有固件库)以及宽工作电压等优点,平均只要1块多就能买一片的这货里面有3个定时器,一个UART串口,一个I2C串口,一个SPI串口,一个10位16通道的高速ADC(由于封装用不到16通道),还有看门Doge等, 几乎每一个IO口都有自己的外部中断, 内部多个始终源,简直用不完的赶脚啊

 

这里暂时只用了两个定时器和ADC:TIM1这个高级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%

 

PID素怎么撸的:PID素一种广泛应用的控制算法, 据说其历史有100多年了?(雾优点素不需要建立复杂的数学模型, 世界上大部分PID控制器靠良好的P I D系数整定就能工作的很好这里只用到了PI,其实为了快速响应,还是应该加上D的,不过窝时间少啪麻烦没加, 有兴趣的同学可以试试看Kp和Ki得从小往大调,保证不震荡的情况下最快速调节就好,程序里面的没有什么问题了

最后发资料包:

MobileCharger.zip

哦对了,如果要测试的话需要把STM8S103F的OptionalByte修改下,OptionalByte掌控IO口的功能复用,具体的操作如下:在STVD中点Tools菜单中的Programmer,然后按如下设置

 

 

全部回复(24)
正序查看
倒序查看
2014-10-15 19:23
龙大师之作必顶!
0
回复
IGBT2010
LV.8
3
2014-10-15 22:40
顶一下!!
0
回复
2014-10-15 23:37
高手之作!我也跟着顶一下!!
0
回复
2014-10-16 13:29
翠翠你来了,好久不见!  推荐到社区经典.
0
回复
mvip
LV.3
6
2014-10-16 16:04

一直在搞stm32,没弄过stm8。谢谢分享

这么便宜的单片机值得用用

0
回复
mvip
LV.3
7
2014-10-16 16:12

刚下载文件看了下,问一下用的是什么编程环境。

我只用过keil和IAR和ADS

0
回复
尤小翠
LV.7
8
2014-10-16 18:17
@mvip
刚下载文件看了下,问一下用的是什么编程环境。我只用过keil和IAR和ADS

素STVD

对于STM8 用IAR也可以 不过IAR窝用不习惯...

0
回复
尤小翠
LV.7
9
2014-10-16 18:23
@电源网-娜娜姐
翠翠你来了,好久不见! 推荐到社区经典.
QwQ 感动>_<
0
回复
75482758
LV.6
10
2014-10-17 10:00
谢谢分享
0
回复
gwp001
LV.1
11
2014-10-17 15:27
@75482758
谢谢分享
0
回复
wangshujun
LV.8
12
2014-10-18 20:52

精神可嘉

不过

1、vcap是一个内部的稳压器,挺稳定的,可以用作参考电压

2、这种小boost现在趋势都是弄到500k以上的了,还是用专用芯片吧,单片机去修改设定值比较好

0
回复
wangshujun
LV.8
13
2014-10-18 20:53
@尤小翠
素STVD对于STM8用IAR也可以不过IAR窝用不习惯...
iar个人感觉要比stvd好用得多,而且16k以下的版本是完全免费的
0
回复
hbzjcjw
LV.10
14
2014-10-20 08:36
@电源网-娜娜姐
翠翠你来了,好久不见! 推荐到社区经典.
不要占我小徒弟的便宜哟
0
回复
2014-10-20 11:40
@hbzjcjw
[图片]不要占我小徒弟的便宜哟
 我有么 我有么,我不承认。
0
回复
尤小翠
LV.7
16
2014-10-20 23:00
@wangshujun
精神可嘉不过1、vcap是一个内部的稳压器,挺稳定的,可以用作参考电压2、这种小boost现在趋势都是弄到500k以上的了,还是用专用芯片吧,单片机去修改设定值比较好

现在用Vcap了 效果也不错呢

这个想做个同步整流的移动电源 最好还能加上充电功能ORZ

0
回复
wangshujun
LV.8
17
2014-10-21 16:35
@尤小翠
现在用Vcap了效果也不错呢这个想做个同步整流的移动电源最好还能加上充电功能ORZ

换f030吧,贵了一块多,资源要好不少,48兆主频,对于电源还是太低了

关键是开发环境用keil,简单容易上手

0
回复
lee40039
LV.1
18
2014-10-23 11:25
先顶!!!不知道楼主这个最大电流5V多少A。能达2A吗?
0
回复
尤小翠
LV.7
19
2014-10-24 07:57
@wangshujun
换f030吧,贵了一块多,资源要好不少,48兆主频,对于电源还是太低了关键是开发环境用keil,简单容易上手
f030素STM32了吧QwQ
0
回复
wangshujun
LV.8
20
2014-10-24 14:05
@尤小翠
f030素STM32了吧QwQ
对呀,2.3一个,和stm8s003外形差不多,调试要占用2个io,boot固定占用一个io,不调试的话少一个io,调试的话少两个io,其他各方面指标都占优势
0
回复
wheelzhou
LV.9
21
2014-10-24 18:59
@wangshujun
对呀,2.3一个,和stm8s003外形差不多,调试要占用2个io,boot固定占用一个io,不调试的话少一个io,调试的话少两个io,其他各方面指标都占优势
只能看懂硬件电路部分,软件的,不懂
0
回复
2014-10-29 17:28
@wheelzhou
只能看懂硬件电路部分,软件的,不懂
以后软硬通吃 是大趋势了
0
回复
aninstone
LV.4
23
2014-12-30 02:29
好东东
0
回复
Johnny4c
LV.1
24
2017-08-14 23:38

太厲害了,看得我這入門者是非常崇拜呢。

不過,想請教一下,按這電路的設計,能夠容許多大的電流呢?

0
回复
remon
LV.4
25
2017-08-25 13:19
@Johnny4c
太厲害了,看得我這入門者是非常崇拜呢。不過,想請教一下,按這電路的設計,能夠容許多大的電流呢?
MARK,厉害了!
0
回复