用Attiny13制作Boost电路
本帖最后由 希岩 于 2020-8-10 12:34 编辑制作简单升压Boost电路
在舵机驱动板、步进电机驱动和功放电路中通常会用到12V电源,但手头只有3.7V锂电池怎么办?一种办法是将锂电池串联起来,这种方法需要3个相同的电池。不想串联怎么办?那就制作一个简单的升压电路吧。Boost电路,即升压电路,其原理比较容易理解。如下图所示,详细工作原理这里不介绍,自己去网上查,资料很多。简单说就是开关闭合时,通过给电感充电,电感储存电能,断开开关,电感自感电压叠加到电源两端,使得电压升高。
需要设计的参数是:输入电压Vi=3.7V,输出电压Vo=12V,输出最大电流为1A,电流纹波10%,电压波动10%。根据输入输出的关系,可得占空比为70%。通过PWM控制开关S的启闭,PWM频率影响选择参数的大小,一般PWM频率越高,所需电感和电容越小。手头买了ATtiny13A直插的单片机,只有八个引脚,采用ISP编程,个头非常小,FLASH只有1kb。支持两路PWM,本以为PWM速度可以很高,没想到采用内部9.6MHz RC振荡器时最大才37.5KHz,实在是非常慢的。根据公式计算可得滤波电容不小于15.4uF,计算可得电感值不小于15uH。综合考虑手头元件,选择了16V 2200uF电容和100uH的电感。加上电压反馈,电路原理图如下所示。
电路比较简单,只加入了比例反馈调节,未使用PID调节。加入反馈调节后,输出端开路情况下能够不过压,仍然稳定在12V。同时,有负载时也能够保持较好电压稳定性。下图是实际的电路
当然这离不开可编程控制器的软件设计。软件设计也比较的简单,这里给出全部程序。当然,Boost电路经常用专用芯片。//注意将option中target选为attint13A
#include<iot13Av.h>
#include<AVRdef.h>
unsigned intadcValue;
//初始化定时器------------------------------------------------------------
voidInit_PWM(void)
{TCCR0A=0b10000011; //普通方式
TCCR0B=0b00000001; //预分频1,计时6.67us,page68
OCR0A=180;
}
//初始化控制器------------------------------------------------------------------
//初始化时钟-------------------------------------------------------------------
voidInit_Clock(void)
{OSCCAL =0x51; //时钟矫正至9.6Mhz,page22
//CLKPR = 0x80; //时钟分频器使能CLKPR_CLKPCE
//CLKPR = 0x00; //系统时钟8分频,p24(0>1;1>2;...8>256)
}
voidInit_ADC0(void)
{ADMUX=0x01; //通道1,右对齐
ADCSRA = 0b11000001; // ADC使能,ADC开始转换,ADC单次转换,分频因子为128
DIDR0=0x04;
}
//-----------------------------------------------------------------------
voidInit_Port(void)
{ DDRB = 0x01;
PORTB = 0x00; //PB0设为输出,其它为输入
}
//选择内部标定的RC振荡器9.6Mhz
voidInit_devices(void)
{Init_Clock();
Init_Port();
Init_PWM();
}
//ADC处理函数,电压微调
voidAdcSample(void)
{
ADCSRA|=0x40; //开始一次转换
adcValue=0;
while(ADCSRA&0x40);
adcValue=ADCL;
adcValue|=ADCH<<8;
if((adcValue<800)&&(OCR0A<184))OCR0A++; //电压不低于8.4V
elseif((adcValue>890)&&(OCR0A>0)) OCR0A-=5; //电压不超过13V
}
//-----------------------------------------------------------------------------
void main(void)
{ unsigned chari,j;
CLI(); //清中断
Init_devices(); //初始化设备
for(i=0;i<250;i++)
for(j=0;j<250;j++); //延迟
Init_ADC0();
while(1)
{
AdcSample();
}
}
我的天,图片怎么全跑下面去了,编辑起来真麻烦 极限情况下输入平均 3A,峰值能有 5-6A,这个电感目测用料很足 t3486784401 发表于 2020-5-28 15:44
极限情况下输入平均 3A,峰值能有 5-6A,这个电感目测用料很足
:lol:lol哈哈哈 楼主试试学会使用图床 ino 发表于 2020-7-9 22:00
楼主试试学会使用图床
整了:lol
页:
[1]