发作品签到
专业版

#第九届立创电赛#温湿度检测仪

工程标签

156
0
0
0

简介

基于STM32G303F6P6的低功耗温湿度检测仪,通过TM1616驱动芯片驱动数码管显示,采用盛思锐传感器SHT40温湿度传感器进行数据采集,使用两节7号电池进行供电。

简介:基于STM32G303F6P6的低功耗温湿度检测仪,通过TM1616驱动芯片驱动数码管显示,采用盛思锐传感器SHT40温湿度传感器进行数据采集,使用两节7号电池进行供电。

开源协议

Public Domain

(未经作者授权,禁止转载)
创建时间:2024-07-09 07:39:43更新时间:2024-07-30 08:45:11

描述

一、项目功能介绍

基于STM32G303F6P6的温湿度检测仪,通过TM1616数码管驱动芯片驱动六位共阴极数码管显示温湿度,采用盛思锐传感器SHT40进行温湿度数据采集,使用两节7号电池进行供电。(因为手头刚好有这些元器件所以直接更换了原本的驱动内容,芯片引脚更少而且刚好用一下新买的数码管驱动芯片)

二、硬件部分

原理图与官方例程相似;
原理图.png
1.数码管驱动改用TM1616,TM1616是LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动等电路。
由芯片时序可知,数码管驱动可以采用SPI协议,就无需自己写模拟时序,经实测SPI速率最大可达8Mbits/S。
image.png
由芯片引脚可知可驱动四位七段数码管,无法驱动数码管的小数点DP位。因为SEG引脚P管开漏输出,GRID引脚N管开漏输出,所以仅驱动共阴极数码管。
image.png
2.因为使用多个一位式共阴数码管,引脚多走线多,可以采用下面将段码先串联然后接入驱动IO(仅个人经验,合理性有待验证,使用暂未发现问题)
image.png
3.因数码管驱动无法点亮小数点DP位,所以将MCU剩余IO用到数码管DP位驱动,小数点位仅需拉高IO即可。

三、软件部分

STM32有三种低功耗模式:
睡眠模式:Cortex-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行;
停止模式:所有时钟都已停止。
待机模式:1.8V内核电源关闭。

1.软件最早使用功耗最低的待机模式,通过PA0外部唤醒。(但因为进入低功耗前忘记延时进入导致程序无法继续下载,然后擦除了整个寄存器,之后程序就无法正常唤醒了...)

  __HAL_RCC_PWR_CLK_ENABLE();/* 使能电源时钟 */
  if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET)//检查并检查系统是否从待机模式恢复
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);
  HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);/* 使能KEY_UP引脚的唤醒功能 */ 
  __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF);/* 需要清此标记,否则将保持唤醒状态 */ 
  HAL_PWR_EnterSTANDBYMode();/* 进入待机模式 */ 

2.然后使用功耗次低的停止模式,通过PA0外部中断唤醒。

  HAL_SuspendTick(); //关闭 tick 中断,防止唤醒睡眠状态的 MCU
  HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);/*进入停止模式*/
  SystemClock_Config();//恢复时钟

3.也可以使用睡眠模式。

  HAL_SuspendTick(); //关闭tick中断,防止唤醒睡眠状态的MCU
  HAL_PWR_EnterSLEEPMode(PWR_SLEEPENTRY_WFI);//进入睡眠模式
  HAL_ResumeTick();//恢复tick中断计时

四.演示效果

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
演示视频.mp4
0
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航