圣龙扬特-AVR电子

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1085|回复: 17

移动电源烧包改造

[复制链接]

6

主题

2

好友

3315

积分

论坛元老

Rank: 8Rank: 8

UID
12
帖子
30
精华
2
注册时间
2013-2-26
在线时间
12 小时
发表于 2013-5-3 23:01:56 |显示全部楼层
本帖最后由 sunany 于 2013-5-3 23:01 编辑

    五一在家里闲暇之余,想起了我前段时间买的一个移动电源,据说是香港的专利设计,转换效率极低,给手机充电外壳可以煮鸡蛋,同时三个LED还不时的闪烁,整体充电效率估计都不到60%。心想要不就是山寨要不就是二货设计。

     心痒痒,决定把升压和充电部分更改。      

    当然,这个移动电源好处就是外形设计比较漂亮,两节18650的电芯可以拆下来、USB充电口,这样连带我18650的手电外出方便至极。

    先上PP:

   

    从图片可以看出,虽然主控板看上去极为复杂,但仔细分析无非就充电部分MCU+MOS,升压部分用了垃圾的电路(从使用的电感可见),电量显示板则用单片机的I/O口点灯实现。

4月30号下午开工(测绘原板外形及设计电路图):
    首先针对高性能的升压效率,升压用凌特尔LTC1700+MOSFET来实现,升压效率可达95%以上(实测90%)。
    第二,充电及电量显示方案有三:
    方案一:用ATmega8单片机+MOSFET设计充电,同时用单片机的I/O口配合单片机内部的10位ADC进行电量显示。
    方案二:用max1879+MOSFET设计充电,同时用LM3914N+LED硬件进行电量显示。
    方案三:用max1879+MOSFET设计充电,用Atiny13  MCU的五个I/O口配合内部ADC做电量显示。
    对比上述三种方案,从成本考虑方案一为最优选择,从难易度考虑方案二为最简,方案三则具备上述两个方案的优点。同时因为高老师上次送我tiny系列MCU的高压串行编程器,可以对tiny13的rst引脚进行编程,所以确定按方案三进行设计。

    用Altium进行电路及电路板设计:

   

    充电电路及LED显示电路PCB板设计,按原有电路板外形测绘,因单面板无法完成布局,只能整成双面板,画图示要考虑DIY的难易程度,同时考验我制板手艺的时刻到了



    5月1号上午(DIY电路板):
    首先将已设计完成的PCB电路板打印:



    硒鼓好,打印的笨清晰

    第二步:用家里的电运斗将打印的正面板转印到双面板的其中一面,完成正面转印后钻下四个定位孔,同时在打印的反面板上打四个相应的定位孔,将纸上四个孔和板上四个孔对应后粘好固定(其实体现DIY双面板水平就在对孔这一道工序)。固定完成用电运斗转印第二面。
    第三步:腐蚀电路板,将上步已转印完成的双面板放入FECL3液,加上热水腐蚀,整个腐蚀过程大概要30分钟。


   

    第四步:焊接,双面板过孔采用导线穿孔形式实现,注意走大电流处要多打几个孔。焊完后整体电路板:


   
   
51号中午:
    忙了一上午,累了
,陪娃娃玩会就睡着了,醒来是大概三点。
    开始改LED电显示的程序。原来的移动电源只带3LED,所以我那5LED有点浪费了,但又觉的每33%显示档有点太对不起我的MCU,所以突发奇想还是整成5个档位显示电亮,每个灯长亮、闪烁及熄灭分成三态,最后面一个灯闪烁时频率加大,表示电显已经危险(正好高老师送我的高压编程器没搞定,RST脚不用也不影响)。

搞定,贴上原代码:
//ICC-AVR application builder :
// Target : T13
// Crystal: 4.8000Mhz
//AuthorSunany
//Date:2013-5-1

#include <iot13v.h>
#include <macros.h>

unsigned int  ADC_data=0;
unsigned char flag_low_bat=0;

void port_init(void)
{
   DDRB  = 0b00111011;
   PORTB = 0b00111011;
}

void timer0_init(void)
{
   TCCR0B = 0x00;     //stop
   TCNT0 = 0xB4;     //set count
   TCCR0A = 0x00;
   TCCR0B = 0x03;    //start timer
}

//ADC initialize
void adc_init(void)
{
   ADCSRA = 0x00;  //disable adc
   ADMUX = (1<<REFS0);      //采用内部REF
   ACSR=(1<<ACD);           //关闭模拟比较器
   ADCSRB = 0x00;
   ADCSRA = 0b11100011;
   ADMUX |= 0x01;          //启用ADC1
}

unsigned int ADC_Convert(void)
{
   unsigned int temp1,temp2;
   temp1= (unsigned int)ADCL;
   temp2= (unsigned int)ADCH;
   temp2= (temp2<<8) +temp1;
   return(temp2);
}

unsigned int ADC_save(void) //ADC求平均
{
   unsigned char i;
   unsigned int add_data=0;
   for(i=0;i<60;i++)
    {
       add_data += ADC_Convert();
         delay_1ms();
    }
   add_data = add_data/60;
   return(add_data);
}

void LED_display(unsigned int ADC_temp)
{
   unsigned char i;
   if(ADC_temp<400)
    {
         flag_low_bat=1;
    }
   else
   {
      i=ADC_temp/5;
      switch(i)
      {
             case 0: PORTB=0b00111001; //PB1
                       flag_low_bat=0;
                       break;
           case 1: PORTB=0b00111001; //PB1
                     flag_low_bat=2;   //PB3
                       break;
             case 2: PORTB=0b00101001;//PB1,PB3
                       flag_low_bat=0;
                       break;
             case 3: PORTB=0b00101001;//PB1,PB3
                       flag_low_bat=3;  //PB4F
                       break;
             case 4: PORTB=0b00100001;//PB1,PB3,PB4
                     flag_low_bat=0;
                       break;
           defaultORTB=0b00100001;
                       flag_low_bat=0;
                       break;
         }
                  
    }
}

void init_devices(void)
{
   CLI();
   port_init();
   timer0_init();
   adc_init();
   MCUCR = (1<<SM0);  
   TIMSK0 = 0x02;     //timerinterrupt sources
   GIMSK = 0x00;
   SEI();
}

//*****************1ms中断入口函数******************//
#pragma interrupt_handler timer0_ovf_isr:4
void timer0_ovf_isr(void)
{
   static unsigned int cnt0;
   TCNT0 = 0xB4; //reload counter value
   cnt0++;
   if(cnt0==20)
    {
       cnt0=0;
         switch(flag_low_bat)
      {
            case 1ORTB^=0x02;
                   break;
            case 2ORTB^=0x10;
                     break;
            case 3ORTB^=0x08;
                     break;
            default:break;
       }
    }
}

//1ms delay function
void delay_1ms(void)      
{
   unsigned int i;
   for(i=1;i<180;i++)  
   ;  
}
         
void main(void)
{
   init_devices();
   delay_1ms();
   ADC_Convert();
   delay_1ms();
   while(1)
   {
      ADC_data=ADC_save();
      LED_display(ADC_data);
   }
}


    接下来就是装机了,LED显示这块测绘的相当准确,装进去正好,充电板那块因为选的贴片的USB口有点不一样,用刀子整了大半天才整好


   
    完成后的整机图,是不是和原来一样?



    哦错了,有点不一样,我的充电在那个USB口上方加开了个孔,用来显示充电状态的LED
    整机搞定时间:201351日下午1730

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

已有 1 人评分金钱 收起 理由
箫天 + 50 很给力!

总评分: 金钱 + 50   查看全部评分

拔剑四顾心茫然
回复

使用道具 举报

67

主题

4

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
2
帖子
340
精华
0
注册时间
2013-2-20
在线时间
349 小时
发表于 2013-5-3 23:06:58 |显示全部楼层
呀哈!sunany太强大了,加精!
回复

使用道具 举报

0

主题

0

好友

14

积分

新手上路

Rank: 1

UID
379
帖子
1
精华
0
注册时间
2013-5-3
在线时间
0 小时
发表于 2013-5-3 23:26:27 |显示全部楼层
吴哥太强大了
回复

使用道具 举报

6

主题

0

好友

508

积分

高级会员

Rank: 4

UID
61
帖子
33
精华
1
注册时间
2013-3-1
在线时间
33 小时
发表于 2013-5-4 09:04:45 |显示全部楼层
路过帮顶
回复

使用道具 举报

1

主题

1

好友

130

积分

初级会员

Rank: 2

UID
365
帖子
21
精华
0
注册时间
2013-4-17
在线时间
8 小时
发表于 2013-5-4 21:46:26 |显示全部楼层
友情帮顶,赞一个
回复

使用道具 举报

67

主题

4

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
2
帖子
340
精华
0
注册时间
2013-2-20
在线时间
349 小时
发表于 2013-5-4 22:31:34 |显示全部楼层
jerryyong 发表于 2013-5-3 23:26
吴哥太强大了

你是谁?你怎么知道的?
回复

使用道具 举报

13

主题

1

好友

322

积分

中级会员

Rank: 3Rank: 3

UID
217
帖子
42
精华
0
注册时间
2013-3-5
在线时间
13 小时
发表于 2013-5-5 20:54:52 |显示全部楼层
你那块升压板是之前做好的吗??  怎么不上原理图学习下!
回复

使用道具 举报

1

主题

0

好友

652

积分

高级会员

Rank: 4

UID
21
帖子
45
精华
0
注册时间
2013-2-26
在线时间
11 小时
发表于 2013-5-9 20:08:58 |显示全部楼层
升压部分上传上来学习学习
回复

使用道具 举报

1

主题

1

好友

130

积分

初级会员

Rank: 2

UID
365
帖子
21
精华
0
注册时间
2013-4-17
在线时间
8 小时
发表于 2013-5-10 19:11:20 |显示全部楼层
强人一个  必须的帮定
回复

使用道具 举报

6

主题

2

好友

3315

积分

论坛元老

Rank: 8Rank: 8

UID
12
帖子
30
精华
2
注册时间
2013-2-26
在线时间
12 小时
发表于 2013-5-11 10:54:32 |显示全部楼层
oneway 发表于 2013-5-9 20:08
升压部分上传上来学习学习

升压部份参见www.alldatasheet.com中的LTC1700嘛
拔剑四顾心茫然
回复

使用道具 举报

6

主题

2

好友

3315

积分

论坛元老

Rank: 8Rank: 8

UID
12
帖子
30
精华
2
注册时间
2013-2-26
在线时间
12 小时
发表于 2013-5-11 10:59:43 |显示全部楼层
oszp1688com 发表于 2013-5-5 20:54
你那块升压板是之前做好的吗??  怎么不上原理图学习下!

升压部份之前开的板子,呵呵
拔剑四顾心茫然
回复

使用道具 举报

6

主题

2

好友

3315

积分

论坛元老

Rank: 8Rank: 8

UID
12
帖子
30
精华
2
注册时间
2013-2-26
在线时间
12 小时
发表于 2013-5-11 11:00:58 |显示全部楼层
出差一个星期的实验,充满一次我的小米2手机充了三次还有两格的电量
拔剑四顾心茫然
回复

使用道具 举报

1

主题

0

好友

289

积分

中级会员

Rank: 3Rank: 3

UID
100
帖子
21
精华
0
注册时间
2013-3-1
在线时间
6 小时
发表于 2013-5-12 10:17:23 |显示全部楼层
强大,不知道这个18650是多大容量的,怎样算充电时间呢?
回复

使用道具 举报

0

主题

0

好友

555

积分

高级会员

Rank: 4

UID
38
帖子
11
精华
0
注册时间
2013-2-27
在线时间
5 小时
发表于 2013-5-12 22:43:14 |显示全部楼层
箫天 发表于 2013-5-4 22:31
你是谁?你怎么知道的?

他是联邦物流的,嘎嘎!
回复

使用道具 举报

1

主题

1

好友

130

积分

初级会员

Rank: 2

UID
365
帖子
21
精华
0
注册时间
2013-4-17
在线时间
8 小时
发表于 2013-5-16 17:17:22 |显示全部楼层
还能再做一套出来有偿分享下不
回复

使用道具 举报

26

主题

1

好友

3446

积分

超级版主

Rank: 8Rank: 8

UID
7
帖子
140
精华
0
注册时间
2013-2-26
在线时间
20 小时

突出贡献

发表于 2013-8-14 12:29:43 |显示全部楼层
这个牛,怪不得老大一来就射精!
回复

使用道具 举报

0

主题

0

好友

14

积分

新手上路

Rank: 1

UID
510
帖子
1
精华
0
注册时间
2013-9-24
在线时间
0 小时
发表于 2013-9-24 16:56:53 |显示全部楼层
厉害,期望以后达到这个水平,藐视一切高科技
回复

使用道具 举报

0

主题

0

好友

768

积分

高级会员

Rank: 4

UID
169
帖子
6
精华
0
注册时间
2013-3-4
在线时间
48 小时
发表于 2013-10-15 07:51:41 |显示全部楼层
强大,佩服!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|圣龙扬特-AVR电子 ( 鲁ICP备05022832号 )

GMT+8, 2020-11-30 16:47 , Processed in 0.309180 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部