stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

这篇具有很好参考价值的文章主要介绍了stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


0 前言

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 基于stm32的便携用电功率统计系统

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:4分

1 简介

使用单片机设计一款功率测试仪,外观不限,要求可显示电压、电流、功率,且输入最大功率100W以上。

2 主要器件

  • INA220电源
  • stm32g030f6p6主控芯片
  • OLED屏幕模块

3 实现效果

器件构造
stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机,单片机

stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机,单片机

stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机,单片机

检测手机充电器的功率、电流、电压大小
stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机,单片机

stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机,单片机

图为60W充电器,可见检测精确率还是较高的。

4 设计原理

主要框架图
stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机,单片机

4.1 降压电路

降压部分为MCU、INA220、OLED屏等提供3.3V电源,由于整个系统消耗的电流最大不会超过60mA,低负载下普通的DC-DC变换器效率较低,所以最好选择带burst、skip、pfm等轻载节能功能的芯片,这里用的是立创商城买的RY9320AT6,上/下管内阻100/50mΩ,频率500k,正常工作是PSM模式,轻载进入PFM模式。而且一片只要1块5,性价比超高。实测5V供电时只需要从VUBS获取9mA电流,而在大部分快充的9-12V区间只需要4mA左右电流,大大降低了测量误差。

4.2 接口部分

A口使用5PIN定制接口,用于测试小米、OPPO的快充以及QC等使用普通A口的快充,Type-C接口主要用于测试PD快充。这种A口实际上是把USB3.0的GND脚复用成了私有协议的识别脚,并且VBUS和GND加宽。理论上直接用USB3.0接口也能识别,但USB3.0接口过不了太大电流有风险。母座立创商城就有,公头立创商城的一直没货,从淘宝买的。Type-C直接立创商城找个大电流的就行,注意不要用只有6PIN的那种“大电流”,因为少一对VBUS和GND。

4.3 主控

主控使用stm32g030f6p6,体积小,性能较高。大概是目前stm32里最便宜的一款了,淘宝只要2-3块,凑个红包可能就一两块。g030系列可能是因为使用了更先进工艺,一块晶圆能切出更多的die,性能更强的同时甚至比f030系列还便宜。

主控原理图
  stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机,单片机

4.4 OLED模块

原理图
stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机,单片机

5 部分核心代码

IDE使用STM32CubeIDE,固件库使用HAL库,初始化代码使用STM32CubeMX生成。

多级菜单

key_table table[30]=
{
    {0,0,0,1,(*fun0)}, //第0层,显示主界面

    {1,4,2,5,(*fun1)}, //第一层,显示【亮度设置】、快充、数据记录、返回
    {2,1,3,6,(*fun2)}, //第一层,显示亮度设置、【快充】、数据记录、返回
    {3,2,4,9,(*fun3)}, //第一层,显示亮度设置、快充、【数据记录】、返回
    {4,3,1,0,(*fun4)}, //第一层,显示亮度设置、快充、数据记录、【返回】

    {5,5,5,1,(*fun5)}, //第二层,亮度设置

    {6,8,7,10,(*fun6)},//第二层,快充层下显示【QC 2.0】、QC3.0、返回
    {7,6,8,11,(*fun7)}, //第二层,快充层下显示QC 2.0、【QC3.0】、返回
    {8,7,6,2,(*fun8)},  //第二层,快充层下显示QC 2.0 、QC3.0、【返回】

    {9,9,9,3,(*fun9)}, //第二层,数据记录

    {10,10,10,6,(*fun10)},   //第三层,快充QC 2.0
    {11,11,11,7,(*fun11)},//第三层,快充QC 3.0

主函数循环

 while (1)
  {
      OLED_Refresh();//刷新显存
      if(time_1s_ok)
      {
          time_1s_ok=0;
          voltage     = INA220_GetVoltage();
          current     = INA220_GetCurrent();
          power       = INA220_GetPower();
          energy_temp = energy_temp + power*0.00027777;
          energy      = energy_temp;

          if(power!=0&&mem_addr_base<0xE00)
          {
              HAL_I2C_Mem_Write(&hi2c1,0xA0,mem_addr_base,I2C_MEMADD_SIZE_16BIT,(u8*)ina220_data,4,100);
              mem_addr_base=mem_addr_base+4;
          }
      }
      /*******************find index****************************/
      if((key_enter==1)||(key_up==1)||(key_down==1))
      {
          if(key_up==1)
          {
              func_index=table[func_index].up;    //up
              key_up=0;
          }
          if(key_down==1)
          {
              func_index=table[func_index].down;    //down
              key_down=0;
          }
          if(key_enter==1)
          {
              OLED_Clear();
              func_index=table[func_index].enter;    //enter
              key_enter=0;
          }

      }
      if(key_back==1)
      {
          key_back=0;
          if(oled_on==1)
              oled_on=0;
          else
              oled_on=1;
      }
      current_operation_index=table[func_index].current_operation;
      (*current_operation_index)();//执行当前操作函数
      HAL_Delay(10);
  }
}

OLED屏使用硬件I2C驱动,直接调用HAL库中的HAL_I2C_Mem_Write()即可实现大量显存的连续写入。 该函数原本是用于读写eeprom的,但其它需要写入两个地址的应用同样可以使用。

//刷新显存
void OLED_Refresh(void)
{
    u8 i;
    for(i=0;i<8;i++)
    {
    OLED_WR_Byte(0xb0+i,OLED_CMD); //设置行起始地址
    OLED_WR_Byte(0x00,OLED_CMD);   //设置低列起始地址
    OLED_WR_Byte(0x10,OLED_CMD);   //设置高列起始地址
    HAL_I2C_Mem_Write(&hi2c2,OLED_ADDRESS,0x40,I2C_MEMADD_SIZE_8BIT,&OLED_GRAM[i][0],128,100);
    //写入显存
    }
}

INA220的读写由于也要写入两个地址,所以同样可以直接使用HAL_I2C_Mem_R/W()函数读写,这样就不用另外花时间去实现。 但由于INA220中的寄存器是16位的,该函数只能读写u8,所以要手动把两个u8合成一个u16。文章来源地址https://www.toymoban.com/news/detail-835949.html

//INA220初始化
void INA220_Init(void)
{
u8 CFG[2] = {0x27,0xff}; //配置寄存器0x21D7
u8 CAL[2] = {0x20,0x00}; //校准寄存器0x5000,1ma/bit

HAL_I2C_Mem_Write(&hi2c1,INA220_ADDR,CFG_REG,I2C_MEMADD_SIZE_8BIT,&CFG[0],2,100);//设置配置寄存器
HAL_I2C_Mem_Write(&hi2c1,INA220_ADDR,CAL_REG,I2C_MEMADD_SIZE_8BIT,&CAL[0],2,100);//设置校准寄存器
}

5 最后

到了这里,关于stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机毕设分享 基于STM32单片机的老人防摔倒报警系统 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(71)
  • 毕设开题分享 STM32的wifi照明控制系统 - 智能路灯(毕设分享)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(93)
  • stm32毕设分享 stm32人体健康状态检测系统(项目开源)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月07日
    浏览(51)
  • stm32毕设分享 STM32智能饮水机控制系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月05日
    浏览(41)
  • stm32毕设分享 火灾报警系统设计与实现

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目 基于单片机的火灾报警系统设计与实现 大家可用于 课程设计 或 毕业设计 🧿 项目分享: https://gitee.com/sinonfin/sharing 火灾是指在时间或空间上失去控制的燃烧所造成的灾害。在各种灾害中,火灾是最经常、最普

    2024年02月04日
    浏览(56)
  • 毕设分享 stm32与openmv的目标跟踪系统

    文章目录 0 前言 课题简介 设计框架 3 硬件设计 4 软件设计 判断被测物体所在区域 5 最后 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师

    2024年02月12日
    浏览(42)
  • 毕设分享 基于STM32的毕业设计题目项目汇总 - 100例

    🥇 更新单片机嵌入式选题后,不少学弟学妹催学长更新STM32和C51选题系列,感谢大家的认可,来啦! 以下是学长亲手整理的STM32相关的毕业设计选题,都是经过学长精心审核的题目,适合作为毕设,难度不高,工作量达标,对毕设有任何疑问都可以问学长哦! 学长整理的题

    2024年02月12日
    浏览(46)
  • 毕设开题分享 STM32坐姿疲劳提醒系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月18日
    浏览(48)
  • 毕设开题分享 stm32智能语音垃圾分类系统(项目开源)

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目 毕业设计 stm32智能语音垃圾分类系统(项目开源) 大家可用于 课程设计 或 毕业设计 🧿 项目分享: https://gitee.com/sinonfin/sharing 学长设计的系统主要使用 stm32单片机为基础设计并开发一个智能垃圾桶系统。该系

    2024年01月23日
    浏览(81)
  • stm32毕设分享 stm32实现车牌识别系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包