毕设 STM32的智能电表系统(源码+硬件+论文)


0 前言

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

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

🚩 毕业设计 STM32的智能电表系统(源码+硬件+论文)

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

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

🧿 项目分享:见文末!

在这里插入图片描述

1 主要功能

本设计由STM32单片机核心板电路+交流电压电流检测模块电路+WIFI模块电路+指示灯电路组成。

  • 1、通过电压互感器和电流互感器别检测交流电压和交流电流值,

  • 2、手机APP和WiFi模块互联后,可以实时显示交流电压、交流电流、功率和电量实时显示在手机上。

  • 3、当功率超过200W时,继电器自动断开。功率不超过200W时,可以手动控制继电器的开关。

  • 4、手机和WiFi模块连接后,手机上显示计时时间。

本系统具体框图如下图所示:

在这里插入图片描述

2 硬件设计(原理图)

在这里插入图片描述

3 核心软件设计

在这里插入图片描述

篇幅有限,不过多复述详细设计细节

关键代码

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。

//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);//设置校准寄存器
}

4 实现效果

在这里插入图片描述

5 最后

包含内容

在这里插入图片描述

🧿 项目分享:见文末!

前言: 是德科技(NYSE:KEYS)是全球领先的电子测量公司,通过在无线、模块化和软件解决方案等领域的不断创新,为您提供全新的测量体验。是德科技专注于测量技术,旨在帮助科学家、研究人员和工程师精准和充满信心地应对最严苛的测量挑战。 越来越多的工程师开始选择是德科技示波器,因为它们能够帮助您: 利用屡获殊荣的示波器执行测试,从而加速将您的产品推向市场。这些示波器可以提供最快的更新速率、最深的存储器、独特的电容触摸屏,以及最广泛的示波器软件选件 利用可以信赖的测量生产出性能最高的产品。这些测量由具有业界领先信号完整性的示波器和最广泛的示波器探头提供 通过在一台主机中集成多种仪器以及轻松进行升级,实现最低的拥有成本 同时本文重点介绍了基于单片机STM32控制、Android显示的便携式数字示波器的毕业设计 数字示波器毕业设计概述: 基于单片机STM32控制的、并在Android上进行显示的便携式数字示波器。STM32单片机是一款性价比非常之高的处理器,最高时钟可达72M,完全能满足本设计的要求。采用Android设备作为显示平台,是本设计最大的一个特点。本设计的基本思路是,由单片机对ADC采样到的数据进行处理,再通过蓝牙把波形数据发送到Android设备上进行显示。同时由于Android设备都采用触摸屏,因此示波器的参数可以很方便的通过触摸屏进行设置。本设计采用Android设备取代液晶屏,并使用蓝牙进行数据传输,充分利用了Android设备的硬件资源。 由于A/D转换器的输入范围一般都比较小(低于2Vpp),不可能直接测量几十伏甚至是几百伏的信号。而且由于A/D转换器的分辨率有限,对于幅值很低的信号测量误差将会很大甚至是无法测量。所以在输入级必须要设计一个程控放大电路,以现实对信号进行不失真的处理,而后再送至A/D数模转换器,以达到A/D数模转换器的输入要求。基于本设计便携小巧的宗旨,和电路复杂度的考虑,本设计使用专用PGA芯片AD603,可以通过MCU来控制AD603的基准,进而实现不同放大倍数的调节。该电路优点是控制比较简单,且增益调节范围大,外围电路简单。缺点是成本稍微偏高。 AD603它是美国ADI公司的专利产品,是一个低噪、90MHz带宽增益可调的集成运放,如增益用分贝表示,则增益与控制电压成线性关系,压摆率为275V/μs。管脚间的连接方式决定了可编程的增益范围,增益在-11~+30dB时的带宽为90Mhz,增益在+9~+41dB时具有9MHz带宽,改变管脚间的连接电阻,可使增益处在上述范围内。该集成电路可应用于射频自动增益放大器、视频增益控制、A/D转换量程扩展和信号测量系统。 AD603封装引脚图: Android示波器电路原理图 电路城语:此资料为卖家免费分享,不提供技术支持,请大家使用前验证资料的正确性!如涉及版权问题,请联系管理员删除! 附件包含以下资料:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值