查看: 11562|回复: 32

[原创] 【LPC824lite项目】基于LPC824 mbed的USB电量计

[复制链接]
  • TA的每日心情
    慵懒
    2024-1-9 10:30
  • 签到天数: 325 天

    [LV.8]以坛为家I

    15

    主题

    1048

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2206
    最后登录
    2024-1-9
    发表于 2016-12-3 15:01:09 | 显示全部楼层 |阅读模式
    本帖最后由 xinchao 于 2016-12-13 16:37 编辑

    基于LPC824 mbed的USB电量计


    01.jpg

    项目介绍
    1、方案主题
      基于LPC824 mbed的USB电量计,可以用来测试手机、充电宝等USB设备的充放电电压、电流、电量。

    2、方案功能
      使用LPC824lite开发板,在mbed开发平台上实现电压、电流和电量检测的功能。

    3、关键词

      LPC824   电量计   mbed

    工作原理介绍
    1、硬件组成与介绍
      一块LPC824lite开发板,一块LCD的段码屏,自制的USB电压电流检测模块,和测试用的放电模块。

    整机电路
      如下图,USB电源输入直接用LPC824lite开发板USB接口。LCD显示屏插在开发板数字接口上,自制的USB电压电流检测模块插在电源接口和模拟接口上。

    00.jpg

    USB电压电流检测模块
      如下图,原理很简单,5V的电源用两个100K的电阻分压到一半送A0口检测,负极串了一个0.39欧姆的采样电阻,接到A1口检测。用洞洞板做的模块,USB座输出5V电源。

      PS:别问我为什么用0.39的电阻,我是不会告诉你我只有0.39电阻的。。。
    sch.JPG

    10.jpg

    测试用的放电模块
      二十多个510的电阻并联组成,大约200mA的放电电流。
    11.jpg

    2、此项目中LPC824lite的功能
      LPC824lite为整个项目的核心。

      用到的LPC824芯片的资源:ADC、GPIO、IIC、外部中断、UART等。
      用到的LPC824lite开发板上的资源有LED、按键、AT24C02、接口等。

      ADC:用了两路A0和A1,A0用于检测输出电压,A1检测采样电阻电压,计算电流。
      GPIO:显示屏用了5路GPIO输出口来控制显示。
      按键:只用了开发板上S4一个按键,程序中使用中断方式检测,分短按和长按两种模式。
      AT24C02:开发板上存储芯片,共256个字节,IIC控制,用来存储数据。
      UART:向电脑发送测试信息
      LED:用了开发板上的5个LED1-5来显示运行状态。板上其它3个LED接口和显示屏冲突没用。

    3、软件流程介绍
      这次项目用的是mbed平台,所有代码调试都是在网页上完成,第一次用,感觉很简单,上手很快。
      软件的流程比较简单,就不画流程图了:复位后完成各种初始化(串口、按键、显示屏等),读取保存的参数,然后进入主循环,主循环中每50ms做一次ADC检测,到达1秒时计算ADC的平均值,计算电压、电流和电量,并更新显示,保存数据。


      按键:按键用中断方式检测,进入中断后延时50ms后再检测一次,以防抖,然后循环检测按键的弹起,若在2秒内按键弹起,则认为是按键[短按],如超过2秒按键才弹起,则认为是按键[长按]。



      显示:开机后显示电压电流,如图,上排显示的是电压4492mV,下排显示的是电流214mA。
    33.jpg

      不要说后边显示的是乱码,那是mV和mA,用7段显示屏只能这样表示了。
      [短按]按键后切换到电量显示画面,如图,ELE 17表示电量是17mAh,下排显示的是时间,分别为时分秒。

    36.jpg


      计时器:使用mbed的Timer来计时(测试时发现个问题,详见后面)。

      断电数据保存:每秒数据更新后都会保存电量和时间两个参数,防止测量中断时再复位后可以读出参数继续测量。比如在测试充电宝放电电量时,当充电宝电放完之后系统就会断电,这样的话重新上电时就能看到充电宝放电的电量和放电时间。



    实物与演示
    1、实物图片与说明
    电压检测

      如下图所示,检测到的电压为4231mA,和用万用表测得值4.228V相比还算可以,误差不算太大。
      测试时是插到电脑USB供电的,再加上开发板5V输出电路上串了个二极管,所以输出电压只有4.2V了。。。
    21.jpg


    电流检测

      测得84mA时万用表读数79.28mA,129mA时万用表读数123.18mA,误差大约5%,还可以接受,我的采样电阻是普通电阻,换成高精度低温漂的电阻会更精确。
    22.jpg

    23.jpg


    测试充电宝放电电量
    30.jpg


    断电数据保存

    在测试中如果824复位,或者电路断开,重新上电时会读取保存的已测试时间和电量的数据。
    u.JPG


    2、演示视频和源码
    演示1:上电复位
      上电显示开机提示“LPC824”,1秒后显示电压电流。
    55.gif

    演示2:显示模式切换
      短按按键S4,显示从电压电流切换到显示电量和时间,再次短按S4再切回显示电压电流。
    66.gif

    演示3:复位电量和时间
      长按按键S4两秒,电量和时间复位从0开始重新计算。
    77.gif

    源代码: XinChao_mbed_ELE_iar_lpc824.zip (2.26 MB, 下载次数: 137)   项目调试都是在网页mbed环境下进行的,源代码导出为IAR格式,导出Keil时出错,不知道什么原因...


    发现的问题
      在计时部分刚开始做的比较简单,50ms的延时用变量计数,时间长了误差太大。后来用了mbed的Timer模块,用起来比较简单,但是发现一个问题,当Timer计时到2148秒时会出现错误,Timer返回的数会变为负数。

    pc.printf("Timer: read()=%f    read_ms()=%d  read_us()=%d\r\n", mytimer.read(), mytimer.read_ms(), mytimer.read_us());

    timer.JPG



    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-10-15 13:16
  • 签到天数: 191 天

    [LV.7]常住居民III

    11

    主题

    664

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1722
    最后登录
    2017-10-15
    发表于 2016-12-3 15:38:33 | 显示全部楼层
    谢谢分享              
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:24
  • 签到天数: 2631 天

    [LV.Master]伴坛终老

    45

    主题

    5187

    帖子

    22

    金牌会员

    Rank: 6Rank: 6

    积分
    10688
    最后登录
    2024-4-29
    发表于 2016-12-3 15:43:45 | 显示全部楼层
    计时器溢出了
    360截图20161203154049715.jpg
    360截图20161203154137033.jpg
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-1-9 10:30
  • 签到天数: 325 天

    [LV.8]以坛为家I

    15

    主题

    1048

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2206
    最后登录
    2024-1-9
     楼主| 发表于 2016-12-3 16:33:59 | 显示全部楼层

    这也算是个bug吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:24
  • 签到天数: 2631 天

    [LV.Master]伴坛终老

    45

    主题

    5187

    帖子

    22

    金牌会员

    Rank: 6Rank: 6

    积分
    10688
    最后登录
    2024-4-29
    发表于 2016-12-3 16:52:39 | 显示全部楼层
    xinchao 发表于 2016-12-3 16:33
    这也算是个bug吧

    int就32位,想要计更多的时间加个标志位吧。
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15290
    最后登录
    1970-1-1
    发表于 2016-12-3 20:35:50 | 显示全部楼层
    很不错
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-12-10 16:14
  • 签到天数: 1442 天

    [LV.10]以坛为家III

    17

    主题

    3862

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    8291
    最后登录
    2021-12-10
    发表于 2016-12-3 21:05:55 | 显示全部楼层
    很不错,顶一个。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-11-30 16:16
  • 签到天数: 206 天

    [LV.7]常住居民III

    74

    主题

    2793

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    7457
    最后登录
    2024-1-28
    发表于 2016-12-3 22:06:59 | 显示全部楼层
    东西做的不错啊
    来根华子
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-7-14 14:05
  • 签到天数: 484 天

    [LV.9]以坛为家II

    8

    主题

    854

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1991
    最后登录
    2019-7-14
    发表于 2016-12-4 00:09:45 | 显示全部楼层
    666666看来我也得试试mbed
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-17 08:07
  • 签到天数: 273 天

    [LV.8]以坛为家I

    74

    主题

    2338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7355
    最后登录
    2021-8-30
    发表于 2016-12-4 08:15:49 | 显示全部楼层
    不错,期待楼主更多的作品分享!!!!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-30 00:48 , Processed in 0.138151 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表