描述
<h1><strong>1、自我/团队介绍</strong></h1>
<p>大家好,我是一名电子爱好者,在业余时间做一些自己的奇思妙想,实用性可能没有那么强,主要用于自己的调试和爱好。
希望大家能喜欢和支持。
大学期间我曾经参加过一些单片机等的比赛,虽然没有取得很优秀的成绩,但是也打下了不错的基础,为日后的兴趣爱好提供了很大帮助。
欢迎各位电子爱好者一同探讨学习。</p>
<h1><strong>2、简要介绍项目</strong></h1>
<p>本次我参加比赛的项目是自定义的:可调亮度LED。
项目实现以下功能:
i、LED分档位(共三个档位)调节亮度;
ii、LED通过PWM控制,在各档位均可无极调节亮光;
iii、锂电池管理;
iv、实现了RGB七色轮显;
v、实现可以通过SecureCRT等交互的命令软件;</p>
<h1><strong>3、描述项目详情</strong></h1>
<h6><strong>3.1、整体概述</strong></h6>
<p>** 整体概况**:基于STC的C51单片机实现了LED亮度无极调节控制以及RGB彩色变换控制,同时实现对锂电池的管理;
<strong>开发环境</strong>:
<strong>代码开发</strong>:Keil C51;
<strong>语言</strong>:C语言
<strong>代码下载</strong>:STC官网提供ISP工具
<strong>下载方式</strong>:串口@115200n81
<strong>依赖库</strong>:RTX51-Tiny 操作系统库,必须在Keil下编译;
<strong>硬件</strong>:主控:STC15系列单片机;最小系统配置:STC15 MAX(35MHz);
MOS:AO4803A 双MOS + SI2306 SOT23
锂电管理:软件方式 + AP5056充电管理</p>
<h6><strong>3.2、硬件功能</strong></h6>
<p>** 主控芯片**:STC15W408AS,实现LED、RGB的MOS驱动、实现ADC数据实时采集、实现锂电管理控制、实现串口输入输出;
<strong>LED驱动</strong>:使用MOS配合单片机的PWM输出,搭建简易的开关电源电路,实现降压输出,同时ADC连接到LED的输出电压,负反馈调节输出的电压,保证LED的供电稳定;
<strong>RGB LED驱动</strong>:通过MOS SI2306实现,颜色输出由MCU控制;
<strong>电源管理</strong>:考虑到可能会用锂电池供电,因此加入了锂电充电管理IC,同时加入锂电电压检测,是否开启充电功能等;
<strong>操作外设</strong>:提供了按键、可调电阻(旋钮型),实现固定模式的LED控制和模式调制;
<strong>外置接口</strong>:共有两个外接接口:
其中一个接口用于外接DC 5V@2A的外接电源输入和代码下载信号线;
另一接口提供了锂电接入和调试串口,锂电池可以不带保护板接入,调试串口可以直接连接到PC机,通过SecureCRT等主流调试工具进行命令行交互;</p>
<h6>3.3、<strong>软件功能</strong></h6>
<p><strong>系统适配</strong>:RTX51-Tiny软件的定时器使用的是MCU的TIMER-0,用于系统心跳,根据MCU设置的35MHz配置心跳频率,适配ROM堆栈、内部Flash空间适配、代码数据位置适配等,增加操作系统sleep入口等;
<strong>MCU配置</strong>:MCU的配置通过直接读写相关的寄存器实现,当前适配了STC独有的PCA模块、ADC模块、外设引脚映射等模块,以对应到当前的硬件设计;
<strong>配置中断</strong>:TIMER0硬中断用于RTX51-Tiny轮转调度;串口输入中断用于实时监测用户输入信息,并发送信号给任务 以完成调试和控制作用;
<strong>配置任务</strong>:初始化MCU的任务配置为0,其余如:ADC数据实时采集、外部按键扫描及控制、用户命令解析、系统状态指示、RGB控制等均以独立任务形式存在,各任务由系统调度实现;
各任务轮转调度,互相之间可以发送信号以完成,任务功能及交互信息如下:</p>
<table>
<tr>
<th>任务ID</th>
<th>任务功能</th>
<th>任务入口</th>
</tr>
<tr>
<td>0</td>
<td>初始化MCU子模块寄存器:PCA的PWM模式、ADC的模式和管脚、串口的管脚映射,初始化完成后拉起各任务,最后任务0自行退出;</td>
<td>上电复位后自动运行</td>
</tr>
<tr>
<td>1</td>
<td>系统状态指示灯控制 ,背面LED闪烁表明系统运行正常,闪烁可以在命令行实时开启、关闭;</td>
<td>由任务0在MCU初始化完成后拉起</td>
</tr>
<tr>
<td>2</td>
<td>用户命令行交互,包含命令解析和结果回显,可以控制LED亮度、档位、RGB颜色、查询ADC结果、控制RGB显示顺序和时延、系统灯状态控制等,任务执行通过串口中断实时触发;</td>
<td>由任务0在MCU初始化完成后拉起</td>
</tr>
<tr>
<td>3</td>
<td>主LED的PWM、档位等控制,根据按键档位调控、RL的旋转调节亮度,进而达到对LED的控制。LED档位是通过亮灯数量实现,LED亮度由PWM控制MOS管开关实现调节;</td>
<td>由任务0在MCU初始化完成后拉起</td>
</tr>
<tr>
<td>4</td>
<td>RGB灯控制,轮显七中颜色,颜色组合由16进制数据实现,每个unsigned char实现一种颜色组合,即RGB组合;</td>
<td>由任务0在MCU初始化完成后拉起</td>
</tr>
<tr>
<td>5</td>
<td>ADC数据实时采集及锂电池管理,当前系统共使用了5个ADC通道,包括系统供电类型、主LED供电电压、锂电电压、RL调节电压等电压的测量和记录更新;</td>
<td>由任务0在MCU初始化完成后拉起</td>
</tr>
</table>
<h1><strong>4、描述项目所面临的挑战及所解决的问题</strong></h1>
<h2><strong>面临及解决的问题</strong></h2>
<h6><strong>硬件方面</strong></h6>
<p>1、MOS驱动实现简易开关电源:STC的管脚输出能力理论上达到MOS的G需求,但实际没有达到,后期调试硬件才发现,PWM输出后LED频闪,尤其低亮度时,增加了串行的电感后解决;
2、RGB驱动:所需要的电流比理论上小,设计实现的第一版电路RGB容易烧毁;
3、RGB选用的MOS焊接时容易高温烧毁,焊接废时间;
4、外接直流电源和电池电源切换时,MCU容易闪断复位:处理器供电不稳定导致,增加电容解决;
5、稳定MCU电源时出现:使用钽电容时,电容焊接温度偏高就会断路,整板断路后加电测试电路板没有元件发烫,后续依次去掉电容发现MCU供电短路;</p>
<h6><strong>软件方面</strong></h6>
<p>1、RTX51-Tiny:适配STC和运行;
2、PWM的调试:由于PWM管脚输出电流不足,软件和硬件调试了很久;
3、命令行的实现:由于要和Shell工具交互,串口接收的数据可能有点过多,需要对按键进行处理,实现类似Linux的效果需要调试很久;
4、命令行命令解析后执行:RTX51-Tiny下的任务间没有邮箱消息队列等机制,因此需要特殊的方式去实现数据的传输和交互,命令传递后,有的可以直接写寄存器,有的需要和任务交互;
5、ADC、PWM、UART、TIMER等同时运行并各自可控;</p>
<h1>5、描述项目硬件、软件部分涉及到的关键点</h1>
<p><strong>硬件部分</strong>
管脚配置、MOS驱动(包括主LED电路和RGB电路)、
<strong>软件部分</strong>
RTX51-Tiny配置、命令行软件实现、PWM配置实现、ADC配置实现;</p>
<h1>6、项目材料清单展示</h1>
<p>i、PCB:立创EDA绘制并在嘉立创打样制板;
ii、BOM原料:淘宝上采购;
<img src="//image.lceda.cn/pullimage/bxRJEbnGuzEuQPedL1El1DwjbJ0jEujvoV4iCl4M.jpeg" alt="1.jpg">
III、焊接:人工焊接
烙铁、焊锡、焊锡膏</p>
<h1>7、项目图片</h1>
<h2>7.1、PCB上印制大赛logo图片,若无视为放弃参赛</h2>
<p><strong>立创EDA的3D模拟PCB图片如下:</strong>
<img src="//image.lceda.cn/pullimage/2caAsFSlBwtHXBkOopIuJ9aOoTMBUJmsKgs20AVb.png" alt="image.png">
<img src="//image.lceda.cn/pullimage/0I2iN5L1vY3mnT2eDYVdiEWpxlKMBdDJif1hZwvz.png" alt="image.png">
<strong>实物PCB图片如下:</strong>
<img src="//image.lceda.cn/pullimage/u50zzxQX1OoZ0y4OI4JIYZoqrqb5LO9IfAuNA8Bd.jpeg" alt="微信图片_20200712002014.jpg"></p>
<h2>7.2、项目其它图片</h2>
<p><strong>项目成品图片如下:</strong>
<img src="//image.lceda.cn/pullimage/Sm4ttDosiJe9eNRgjfX7ueBNiYgUPXahof14Zd6r.jpeg" alt="微信图片_20200712002159.jpg">
<strong>SecureCRT软件联调</strong></p>
<p><strong>界面图片:</strong>
<strong><img src="//image.lceda.cn/pullimage/2XtGWXb6l9O0In4zOi1vmNnmpZ4BzWayfJRvdsBn.png" alt="屏幕截图(21).png"></strong></p>
<h1>8、演示您的项目并录制成视频上传</h1>
<h2>8.1、视频上传大赛官网</h2>
<p>当前《自我介绍》、《项目介绍》、《功能演示&性能测试》、《更多》已上传至网站和B站。</p>
<h2>8.2、B站视频标题和链接</h2>
<p>A、<strong>视频名称</strong>:第五届立创电子设计大赛-可调LED光源-自我介绍,<strong>B站视频编号</strong>:<a href="https://www.bilibili.com/video/BV14D4y1U7mS" target="_blank">https://www.bilibili.com/video/BV14D4y1U7mS</a>
B、<strong>视频名称</strong>:第五届立创电子设计大赛-可调LED光源-项目介绍,<strong>B站视频编号</strong>:<a href="https://www.bilibili.com/video/BV1bV411z7gw/" target="_blank">https://www.bilibili.com/video/BV1bV411z7gw/</a>
C、<strong>视频名称</strong>:第五届立创电子设计大赛-可调LED光源-功能演示&性能测试,<strong>B站视频编号</strong>:<a href="https://www.bilibili.com/video/BV1j54y1e7xC/" target="_blank">https://www.bilibili.com/video/BV1j54y1e7xC/</a>
D、<strong>视频名称</strong>:第五届立创电子设计大赛-可调LED光源-更多,<strong>B站视频编号</strong>:<a href="https://www.bilibili.com/video/BV14v41117XP" target="_blank">https://www.bilibili.com/video/BV14v41117XP</a>。</p>
<h1>9、是否首次公开发布</h1>
<h2>9.1、项目之前是否发表过或获奖,请说明</h2>
<p><strong>未发表过且没有获奖</strong>。</p>
<h2>9.2、若项目是在原有基础上优化,请说明优化部分</h2>
<p><strong>优化部分</strong>:MCU对MOS的驱动和ADC数据采集的硬件设计、软件的流程设计和启动流程设计。</p>
<h1>10、开源文档</h1>
<p>当前没有开源。</p>
<h1>11、参考文献</h1>
<p>11.1、《STC15系列数据手册》;
11.2、《精通开关电源设计》;</p>
<p>点击链接了解更多详情:<a href="https://www.szlcsc.com/go/dsxq" target="_blank">https://www.szlcsc.com/go/dsxq</a></p>
评论(6)