发作品签到
专业版

多通道RC遥控器测试板【彩色丝印】

工程标签

5.4k
0
0
4

简介

作为一名Rcer,为了让"亲爱的队友们"不使用XBOX,PS2甚至富斯等不同协议的遥控器,能用上酷炫,适配,多通道的遥控器为此设计了一款基于彩色丝印的多通道智能RC遥控器。同时还是我的第二板彩色丝印☺

简介:作为一名Rcer,为了让"亲爱的队友们"不使用XBOX,PS2甚至富斯等不同协议的遥控器,能用上酷炫,适配,多通道的遥控器为此设计了一款基于彩色丝印的多通道智能RC遥控器。同时还是我的第二板彩色丝印☺

开源协议

GPL 3.0

创建时间:2023-02-01 18:53:47更新时间:2023-08-21 09:51:49

描述

7fAdscnMj7szO7NxnL9FZOr1gYyhB28woGgncWK8.pngAk2xFPqZP2c6WIp95V9Gw2I95LW7MShESRa33HKa.png

项目介绍:

作为Rcer,同为嵌硬组的一员,设计一款功能富足,手感丝滑,操作流畅,甚至能够拿出面来都觉得很酷的遥控器是最低要求,通过分析项目相关需求,为此设计了此Vol1.0版本的Rc遥控器。

Vol2.0 Vol3.版本的遥控器将进行外观外壳重新设计,同时采用Rtos操作系统+状态机编程来调试外设发送机Demo,接收机待23RC比赛结束后开源(附上一张2.0丑丑的图)

reoztA4il2664sFqTiKKzV1jquqKvoU93UNrkZAu.png

 

——Ps:本项目软件硬件100%由个人完成调试。但因软件能力远远不足俺队嵌软队员,故调试好硬件和写好所有外设的裸机调试demo代码便交由嵌软队员进行上车调试。Df2cn4SVQHbyqceYHnVb7MRodQ1YrYMGPKfPq1aV.png82tnHIZ0eQYi59WOa3FdT506j2xFgO3o1rpvMjch.png

项目分析:

本遥控器是一款基于STM32F4平台的多功能遥控器

配置:

(一)主控: 采用STM32F405RGT6主控 主频:168Mhz  储存空间:1M  FLASH  数据RAM: 192K SRAM,选择此款主控的原因为其基于高性能的Arm Corter-M4,频率高,上Rtos系统对于系统延时以及相应协议层速率支持Up.同时支持FPU浮点单元计算,对于摇杆误差值的滤波算法计算非常便捷。且足够大的RAM对于多线程多状态处理编程DMA开辟内存缓冲区有较为支持的好处。

 

(二)通信: 采用双通信模块,利用NRF24L01+Lora(Lora经过前一板的调试发现出了点小Bug后delete) 故只单通信,采用2.4G无线通信模块 选购大功率500mW 高性能PA+LNA模块,该模块对比低功率的同款模块优势是非常明显的,经过实测:其隔墙通信质量明显提高,同时空中速率可调,目前最远可以实现1Km的通信距离。

 

(三)显示:0.96寸4PIN I2C OLED显示屏,IO口占用小,减少资源占用比,同时已设计基于u8g2的UI界面,同时封装好相关API函数用于User的调用,对于UI界面的设计,目前主流的为LVGL和U8g2,LVGL用在LCD会比较多,u8g2占用内存少,对于小屏幕OLED是非常友好的,同时库内函数操作简单,调用方便。

 

(四)通道:28个物理通道,分别为18个模拟通道和10个开关通道,其中包含:4个摇杆通道,4个二段钮子开关通道,2个三段钮子开关通道,2个电位器旋钮通道,4个按键通道,2个开关复位通道

 

(五)菜单:上,下,左,右,加,减,确认,退出8个菜单按键拟支持,同时对按键采用状态机编程算法——经典的Switch-case法。搭配U8g2实现层层递进的指针切换多级菜单,目前实现到三级菜单。高效实现按键消抖,同时对于长短按的状态切换用状态机编程来码的优势是可以通过状态的一层一层切换。

 

(六)外设:外加USB转串口通信的矩阵键盘模块,进行双MCU双机通信,通过8个IO口控制16个按键,并实现硬件消抖+软件消抖,此矩阵键盘外加模块为上一个demo预实现的功能,此板已Delete,仅增添了IMU&陀螺仪经典的MPU6050,实现体感遥控的操作,通过手拿遥控改变姿态来控制。 

 

(七)供电:采用2S锂电池进行供电,内置5V1A充电管理电路,同时支持Power_Charge切换回路,支持Type-c供电&锂电池供电,同时通过Charge即可切换充放电Mode,自带防反接,防止Xh2.54正反公插带来的炸板问题。

 

(八)控制:采用MCU内部12位高精度ADC对双航模摇杆进行电压采样,同时为美国手,1油门摇杆,1 方向摇杆,对于全局坐标系X,Y做了硬件滤波的简易处理,同时对于软件处理,实测转化为0-3V3范围内的电压值的拟合线性曲线漂移大概为每50-100个数据内有误差在200mV以内的偏差值,采用的滤波算法为——均值滤波算法, 该算法简单,同时处理到小数点后1位对于舵轮底盘的操作也是非常丝滑的。

 

(九)预警:采用BJT开关电路对无源蜂鸣器进行控制,实现低电压,危险预警,低电量等告警指示,同时预加入上电吡哔响功能,用来提示所有外设复位完全,所有外设准备就绪,可以开始操作的指示。

 

(十)监测:附带四路LED驱动电路,通过三串电阻的锂电池电压采集电路对锂电池电压进行采集,实现电量监测处理,通过四路LED进行四档电量显示,可以通过UI界面可以显示当前电池电量以及对应监测指示

 

图①:基于STM32F405RGT6的Rc遥控器思维导图

y9ONQ0M7seQWRBMJu9O64Vr0RcpW7Gmgjq6cajPI.png

原理图设计说明

PS:本原理图仅供参考,同时将不重点强调每一个模块电路的电路设计,较为简单,各种外设主要是软件Demo的撰写。本次原理图说明主要强调Power电源&PowerCharge电路的电路设计以及注意事项。

NgO4QRQi984teIImJYw3XCnI5NNXnJK07roJErJG.png

①Power&Charge&USB

AUOOvriQ29spdvtPcb1hf1IxB61LFETXmUwoCZmO.png

①此为电源输入以及电源切换部分,向上拨的时候Vbus没有接入,此时Vbat作为供电端,经过低压差LDO为负载供电,当向下拨的时候,断开BAT,同时BAT接入BAT_CHG为Charge引脚充当2S锂电池充电引脚。此时向下拨可以接入Type-c此时USB-c作为供电端,同时也可以为整体电路进行供电,同时为锂电池进行充电。

IcPyCl9xYKcS5vaZnRmqmAlDQTWCQVx2rZ6Ynz2c.png

②不具备边充边放的意思为不支持为锂电池充电的同时,用锂电池进行放电,但支持Typec接入的时候通过Typec进行供电,以另一层面实现了边充边放,Type-c接入充电的时候必须断开锂电的Charge回路,即开关向下拨,此时接入CS5090E的BAT引脚进行供电。同时以下对CS5090E进行Datasheet解析.

9r60LEJ69l8EPAIMWbe1dWWxGHGtF4c28c2GNliG.png

③6Pin Type-c通过开关来切换锂电Mode或充电Mode的两种模式,采用主充电管理IC:CS5090E 为2S锂电池进行平衡充电。下面通过其datasheet介绍一下其主要特性。

来自国产的一家双节锂电池升压充电IC,支持Vin=5V,最大1.5A充电电流,集成大功率开关MOS,减少功耗,转换效率高,开关频率500KHZ,内置四个环路来控制充电过程,恒流CC环路,恒压CV环路,搭配温度调节环路,支持LED充电状态指示,包含电路保护功能:输出过压保护,短路保护,输入欠压保护,IC集成PESD可耐2KV高压击穿。68AH54fOxNdxdnwwyc0Tb3NjGYPtEzJf3h9Cryg7.png

④引脚定义

BjuRQ6D1GpDNTtxrOW1u1gst2tcps7el2X7PKcHU.png

⑤典型电路应用图

fTmOAyaHrLtHaV2f0I3arRCrfor6nLDxpkm0b1Ir.png

注意:根据实际自身应用需要来拓展外围无源器件电路选型

————————————————————————————

⑥例如根据电感纹波电流需控制在电感平均电流的40%,必须根据其数据手册上的计算公式,计算出所选电感的饱和电流大小在输出负载范围内大于系统工作时的电感峰值电流,以保证特征工作频率下电感的DCR和此信损耗小,保证其系统效率。

fyg5ihZAYooCg0TFrjhfYLYE2w5DpiyuniILPySf.png

⑦例如充电管理IC本身支持NTC热敏电阻过温保护功能,通过NTC引脚检测电池的温度高低,其保护工作方式为:通过NTC外接电阻到GND后,NTC_Pin固定输出20uA电流,通过电流产生的压降来判断电池的温度范围,其内部温度-电压拟合线性曲线中,内部温度过低判断点为1.43V
内部温度过高判断点为0.38V,如果不需要NTC功能,该引脚悬空。
值得注意的是:一般现在买的锂电池本身自身都带温度保护功能,其充电管理IC附加的NTC热敏保护功能只是附加项

xULeZEFpD05QsPRUlZXvyO2ItWzuQalKq6msKM6U.png(充电指示)

CS5090E布线布局推荐:
①充电管理IC特别容易带来EMI电磁干扰,故必须对其做好EMC电磁兼容方案的设计,根据Datasheet中建议,其大功率开关管高频开关信号产生的干扰,需在LX引脚中增加RC一阶滤波网络,能够有效的降低开关信号的辐射。

poLzIyla8KUFMr6bAIlgxwEW9K76vbBGJPtPwU7E.png

②PCBA 注意事项:
(1)电源走线尽可能的宽,能够铺全铜和阻焊层开窗更是好的选择,且单独从电源走线为CS5090E供电
(2)此为典型的BOOST升压模块其主要的电流环路应尽可能包围圈小,走线短而粗
(3)LX引脚走线尽量短,以减少EMI,将RC一阶滤波电路靠近引脚,电源端的输入电容应尽可能的靠近芯片放置,且底部的散热片是功率地PGND,应与整板铺全铜相连,而尽可能的扇孔

 

PCB设计说明

PS:本PCB首次采用圆弧布线的方式进行单路布线,整体布局布线一眼看上去不是很好看,对大家带来的困扰,稍作原谅。本板采用2层板进行设计,对于Pcb不再过多介绍,主要是对于操作手对于每个功能外设的手感体验需要恰当符合我们的布局设计,增强操作体验,铺铜透明度为30%,其他模块的走线不作过多解释,主要是对于电源部分的布局布线将也将不特此摘出。

6ayPc8X7Nz8ZS1B7S0FY0xfnCRqPnIpZI2BEXc78.png

 

软件说明

Ps: 代码部分可能写的不是很好,当然没有我队伍的软件大佬写得好,欢迎批评指正!而且只调试外设Demo,且仅适用于无操作系统裸机代码,FreeRtos待完善后开源

①U8g2代码块API (GD32F450兼容F429)

U8g2_Init

q8Cz9KoH3XqZRYkq9gfuVjFTG3VRy4Axu6ivP2Hu.png

U8g2_Progress进度条

3m48SWsep2lvzbStiWm9UH8Mg2zyO6M8blKFY1eg.png

u8g2_绘制电池图标

jkD0V2L9lUmhF0njBlaAFu6ItU0eLLehcHuEG4dI.png

u8g2_主界面绘制包含电池电量显示UI,进度条以及相关参数信息显示HNwnL6zg8IJrYZRmpe5aV69hrwfjW5lAkVu8Q9Bl.pngIzTixhnaJU4eYQgeg3cjF0OaE9DS5lfuesQO5hTU.png

u8g2_三级菜单界面API:

RjZUQLlew8yyINFfZC00kcsSSiDaguqGWpiOi9HC.pngopaeY33JHe9SB0WDHdpVzrq3pKAqmd4l2nv0TxMU.png

u8g2_通过按键索引值来处理多级菜单的子菜单

W1NnRrmXBWjZKKTuR58vILT8rJ0Ru4wa4CtUZksE.png

Main函数:变量定义页

b6tQg34b5d00OhUMooK3CsuxAU7gGrGB4HZTyNkO.png

HARDWARE文件夹部分:

mlqZmnzapfQAmDORg2I2vXnlGJ25OYquRLlpHURD.png

 

调试日记:

WNdeAMFRHARg6EuIkuJ5YfY31SNMwMM9jmAADrZ6.pngXhXXqt9NxYxUbO2Hs25EnipEtKRJ9bv8pBsy26uP.png

!!!!!!!!!!!!各种外设Demo已经附入附件里面!!!!!!!!!!!!!!                                                      以下只介绍重点外设

 

24L01.c

gB3MUUsY1sLZ84MTnb06VTyyJ4uvNlx2j9elnuzi.png

TIM3_IRQHandler()

4yXed3gZIbAoU0yrBu0wyNjfvaBeGyPH9XmoFnow.png

Mode.c

kXkN74jkwT5kGwWu064RcmVzrz2up39A3zUEBDq3.png

Lora.c

NhIZTG6Z5SfhzjuBkBowaFFfIgVDcId6VgxJVaEJ.png

tbYJtvqf0irEdbPXKBIjLBJMdjX5zsldhGonEQ6G.png

KEY.c

deLDJx7QYozxXoDWH377yBWEuxOYjuFYOrCX3cTA.png

SPI.c

35qFI60GCb1zLGkmlwWZQumrlwWwQ29JK4MDlOzm.png

EXTI.c

bqUVIZf4t12wBlx22OG8kvd4DiQsDNzk5is9gHO4.png

设计图

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

BOM

暂无BOM

附件

序号文件名称下载次数
1
u8g2.zip
577
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

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

底部导航