|
本帖最后由 shoot_123 于 2013-5-16 22:00 编辑
最近移动电源市场火爆,小研究一下移动电源,感觉略有收获,于是乎与众位一起探讨。像移动电源这样的消费类电子产品,成本当然是考虑的第一因素,目前方案冒似不少,集成IC的,MCU+分立元件的,不过对于我们电子爱好者而言,DIY是我们最大的兴趣,当然首选后者。说到MCU,性价比最大,且功能强大的非LGT莫属,于是乎就用了LGT MCU的方案。
移动电源是一个集储电,升压,充电管理于一体的便携式设备。
先说充电管理,简单理想的充电器
当然这种没法用在我们的移动电源上面,现在到处都是带USB的小火牛,当然从这里取电最方便,还可从电脑取,USB出来5V,再过一个二板管的压降刚好。如下图:
对锂电池的充放电管理当然用专用的电芯管理IC,如下图:
十分高效方便,市面上有很多电源管理IC,用法都大相径庭,用哪款都差不多,这次偶用了S8261,MOS管用了两片8205A并联,如下图:
两片并联保证足够的充放电电流。
接下来是升压输出部分:
市面升压IC也很多,偶用了G5177A
1.在VIN=3.3V,VOUT=5V/1A效率达到92%;
2.空载电流低到0.2mA;
3.输出ShutDown功能;
4.内置软启动电路来抑制输入浪涌电流;
5.内置电流补偿环路来保证源电压效应和负载效应;
Duty,因此在此处电感感量建议用2.2uH。
6.内置过流和短路保护;
5.2A时,输出表现为打嗝输出。
7.内置过温保护;
其功能很强大,在这面向大家说段关于升压IC的插曲,因本人是第一次用这个东东,升压IC的纹波噪声的干忧非常大,初次布线没经验,打头回板回来那个纹波大呀,几乎没法用。所以在这给广大有兴趣的朋友在这里要小心了,布线的时候看好厂家布线建议说明等,(布局布线很重要地)偶们DIY者都是前仆后继地,小困难阻挡不了偶们。先上这部分原理图:
小弟不材,在布这个电路出来纹波依有几十个mV.
下来该说到LGT单片机了,
AD,内部1%精度RC,用来做移动电源绰绰有余了。
LGT内部输入阻抗是20K,所以用如下电路来采集电池电压:
LGT的poweroff模式静态功能是35UA,高电平唤醒,唤醒电路如下:
4组电量显示如下图:
到这里硬件部分基本就结束了,电路如有不足之处或有改良之处的请各位指点指点哈。
关于软件部分,大部分都大同小异,在这里贴出AD采集和休眠唤醒这部分的吧,给大家借鉴,同时也欢迎拍砖。
AD采集部分
u16 DrvADC_Convers(u8 vref,u8 channel)
{
u16 retval;
ADCSRA = 0; //disable ADC
DIDR0 = 0;//|= (1 << channel); //disable digital port
ADMUX = ((vref << 6) | channel);
ADCSRA |= (1 << ADEN) | (1 << ADPS0) | (1 << ADPS1); //enable ADC
NOP();
NOP();
NOP();
NOP();
NOP();
/*dummy read*/
ADCSRA |= (1 << ADSC) | (1 << ADPS0) | (1 << ADPS1); //enable conversion
while(!(ADCSRA & (1 << ADIF)));
ADCSRA |= (1 << ADIF); //clear ADC interrupt flag
retval = ADCL;
retval |= (ADCH << 8);
/*availably read*/
ADCSRA |= (1 << ADSC) | (1 << ADPS0) | (1 << ADPS1); //enable conversion
while(!(ADCSRA & (1 << ADIF)));
ADCSRA |= (1 << ADIF); //clear ADC interrupt flag
retval = ADCL;
retval |= (ADCH << 8);
return retval;
}
然后是滤波,滤波方法很多,多采些数,去最大最小取平均,如想再稳定,再取几组这样的平均值再来平均。
这是休眠和唤醒部分:
/*****************************************************************************
** Function name : Mcu_Power_Off
** Descriptions :
** parameters : None
** Returned value :
*****************************************************************************/
void Mcu_Power_Off(void)
{
PMCR |= (1 << RC1KEN);
while((RTCSR & (1 << WREN)) !=0x80);
RTCSR |= (1 << PWEN);
while((RTCSR & (1 << WREN)) !=0x80);
RTCSR |= (1 << POWOFF);
}
//**********************************************放在main开始处
void Mcu_Power_Up(void)
{
// 判断是否从POWER OFF模式唤醒
if(RTCISR & (1 << WKUF))
{
PMCR |= (1 << RC1KEN);
delay_us(500);
RTCSR = RTCSR & 0xfe;
while((RTCSR & (1 << WREN)) !=0x80);
RTCSR &= ~(1 << PWEN);
}
}
到此就结束了,完整的电路图和代码因版权等种种原因就不方便贴出了。欢迎感兴趣者一起来讨论。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|