【一个按钮一个LED】用STM32F030单片机实现苹果充电器的定时装置

devtools/2025/1/23 15:00:42/

文章目录

  • 前言
  • 一、要实现的功能
    • 1、循环定时
    • 2、倒计时
    • 3、指示灯提示
    • 4、使用场景
  • 二、实现方法
    • 1、使用方法
    • 2、电路设计
  • 三、程序代码和成品
    • 1.定时中断子程序
    • 2.键值处理
    • 3.主函数
  • 总结


前言

笔者前几年买苹果手机、IPAD配的适配器是A1443型号,这种5V1A,USB-A口、小功率的适配器,苹果官网上已经不卖了。笔者手里还有2、3个,它们至今仍然发挥作用:可以继续给手机、平板充电;也可以给其他电子设备充电;笔者现在经常用它做嵌入式设备的调试电源。
在这里插入图片描述

笔者家中还有一台IPad4,因为系统太老,已经不能畅快地刷剧、购物、打游戏了,现在将它封在相框中,只运行一个音乐播放软件,和相册幻灯片,它已经成为了笔者书柜中一个摆件——可以播放音乐和放照片的电子相框。

即使不怎么用,也有充电需求:

想到这里,笔者想用设计一个定时装置,让适配器给老IPad实现间断充电,让老平板就像从前一样:随用随充,充满了即停止;


一、要实现的功能

笔者这次分享的设计,是一种简单的定时开关电路板,功能简单、制造容易、成本低廉。电路板供电由适配器提供,操作方式是一个轻触开关,一个LED指示灯,由大功率MOS管开关充电回路。这个电路板的具体功能如下:
在这里插入图片描述

1、循环定时

循环周期为24小时,可以选择1小时、2小时,或3小时的开启时间,到时后自动关闭开关,第二天同一个时刻重新开启,循环往复;

2、倒计时

开启一段时候后关闭,有三种时间可以选择,1小时、2小时,或3小时,关闭后操作按钮可以重新启动计时;

3、指示灯提示

用一个LED提示当前的工作状态,通过观察闪烁的快慢和次数,确定当前工作模式,既简洁又容易识别;

1小时2小时3小时
循环定时慢速亮灭1次慢速亮灭2次慢速亮灭3次
倒计时快速亮灭1次快速亮灭2次快速亮灭3次

4、使用场景

1、做间歇充电的时间管理器

如图所示,给IPAD或者陈列展示的电子设备,实现无人值守充电:每天固定充电那么一段时间,让设备总有电用,同时避免不间断充电对电池的损害;

给鱼缸、绿植定时开启光源:有规律的光照可以让鱼儿、绿植生长更加良好,用循环定时功能可以实现让光源每天固定的时候开启和关闭;
氛围灯开关:书柜、书橱一般安装有灯条,如果在傍晚到临睡前这段时间里亮起,氛围最为和谐,可以设定合适的时间段,每天固定时候开启和关闭,能减少操作的麻烦;

2、做一次性的、延时开关的场景

已经给手机、电动车充了电,临出门时忘记拔掉电源,过长的充电时间是危险隐患,可以用倒计时充电的功能,事先设定好开关时间,倒计时结束后自动断电;

如用紫外灯给感光材料做曝光时,曝光时间过长会导致定影失败,用定时器就可以精确把控曝光时间。

在这里插入图片描述

二、实现方法

1、使用方法

如图,这是定时器开关实物,使用方法如下:
在这里插入图片描述
在这里插入图片描述

1、将其与适配器组合,另一头接充电线接到IPAD,若线不够长,可以接USB延长线

2、按动按钮,定时器开关接通,适配器给平板充电,接通后可见红灯亮起。接通时间结束后断开,并在24小时内重复接通,循环往复;

3、按一次,接通1小时、关断23小时;按两次,接通2小时、关断22小时;按三次,接通3小时、关断21小时;从按第四次开始,接通、断开时间组合重复配置;按完按钮即刻开始计时,在计时过程中按按钮,将重新计时;

4、长按按钮,切换为倒计时功能模式,按一次,接通1小时;按两次,接通2小时;按三次,接通3小时;从按第四次开始重复时间配置;按完按钮即刻开始计时,在计时过程中按按钮,将重新计时,时间结束后关闭开关,再长按按钮重新启动开关。

5、黄色指示灯闪烁表示定时模式和计时时间配置组别,闪烁次数表示定时时间;快速闪烁表示当前处于倒计时模式;慢速闪烁表示处于循环定时模式;均匀快速闪烁表示倒计时结束。

视频展示了三个时间的切换动作,和两种模式的切换动作:

定时开关演示视频

源代码和原理图下载:
添加链接描述

2、电路设计

在这里插入图片描述

1、单片机U1是STM32F030F4P6,STM家族低端单片机,M0核心,主频48MHz,SSOP-20封装;
2、MOS管Q1是IRF7410,P沟道,用开漏方式即可驱动(实测发现还是需要一个NPN管Q2作为开漏输出才行),漏电流可达14A,对于适配器电源和平板负载,完全足够;
3、LED1是黄色,接单片机,有多种闪烁方式表示工作状态;
LED7是绿色,接电源输入,如果定时器不工作,优先检查电源是否接好;
LED3是红色,接定时器电源输出,亮起说明MOS管导通,熄灭表示MOS管截止;

4、整个电路板用适配器5V供电,用LDO芯片U5获取3.3V电源即可,不必担心用电效率问题;

三、程序代码和成品

程序为单机程序,主要用了定时器资源,源代码和原理图、生产文件请点下载链接:
源代码和原理图下载:
添加链接描述

代码解读如下:

1.定时中断子程序

定时时间1ms,在定时子程序里完成以下功能:

1、按键抖动消除的延时等待,每50ms查询一次按钮状态;
2、SecondCount 秒计数变量,加1000次记为1秒 ;
3、LED闪烁方式,先闪烁几次,然后空白一段。

代码随长,但是跳转为主,没有占用过多资源

 
uint16_t i, KEY1_time_now;
uint8_t KEY1_Count, KEY1_result, k ;
uint32_t millisecond, SecondCount ;
extern uint16_t BlinkNum, BlinkTime, BlinkCycle;
void TIM3_IRQHandler(void)
{HAL_TIM_IRQHandler(&htim3);+

http://www.ppmy.cn/devtools/152911.html

相关文章

【技巧】优雅的使用 pnpm+Monorepo 单体仓库构建一个高效、灵活的多项目架构

单体仓库(Monorepo)搭建指南:从零开始 单体仓库(Monorepo)是一种将多个相关项目集中管理在一个仓库中的开发模式。它可以帮助开发者共享代码、统一配置,并简化依赖管理。本文将通过实际代码示例&#xff0…

【Linux系统】—— 编译器 gcc/g++ 的使用

【Linux系统】—— 编译器 gcc/g 的使用 1 用 gcc 直接编译2 翻译环境2.1 预处理(进行宏替换)2.2 编译(生成汇编)2.3 汇编(生成机器可识别代码)2.4 链接2.5 记忆小技巧2.6 编译方式2.7 几个问题2.7.1 如何理…

linux下fcntl的概念和使用

fcntl 是 Linux 系统调用之一,用于执行各种与文件描述符相关的操作。它提供了对打开文件的控制,包括复制文件描述符、设置文件状态标志、获取和设置文件描述符标志等。fcntl 的功能非常广泛,可以用来实现多种不同的任务,如锁文件、…

Spring注解篇:@RestController详解

全文目录: 开篇语前言摘要概述源码解析使用案例分享代码分析使用场景优缺点分析测试用例 应用场景案例优缺点分析核心类方法介绍测试用例测试用例分析使用场景优缺点分析测试用例 小结总结文末 开篇语 哈喽,各位小伙伴们,你们好呀&#xff0c…

工作流引擎Camunda与LiteFlow核心组件对比

以下为 Camunda 7 和 LiteFlow 详细的介绍,包括它们的核心组件和用途。 1. Camunda 7 详细介绍 Camunda 7 是一个基于 BPMN 2.0 标准的企业级工作流和决策自动化平台。它被广泛应用于复杂业务流程的管理和执行,其核心目标是通过流程自动化来提升企业效…

洛谷题目 P1271 【深基9.例1】选举学生会 题解

题目传送门: P1271 【深基9.例1】选举学生会 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 前言: 大家应该都知道,这道题不是很简单吗?就一个排序,就能写完,为什么还写呢?(作者心里话&…

linux 根目录下结构

/ 虚拟目录的根的目录,通常不会在这里放置文件 /bin:存放频繁使用的命令,二进制文件,存放了很多用户级的GNU实用工具。 /boot:引导目录,存放引导文件,包含启动Linux所需的核心文件。 /dev:设…

吴恩达深度学习——如何实现神经网络

来自吴恩达深度学习,仅为本人学习所用。 文章目录 神经网络的表示计算神经网络的输出激活函数tanh选择激活函数为什么需要非激活函数双层神经网络的梯度下降法 随机初始化 神经网络的表示 对于简单的Logistic回归,使用如下的计算图。 如果是多个神经元…