版本协议

Public Domain

标签
标准版
#第九届立创电赛#基于MC9S12XS128MAL的电磁寻迹小车

创建时间:1个月前

71 0

视频

描述

<div class="document"> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">注:* 为必填项</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong><span style="color: #0093e6;">请在报名阶段填写 ↓</span></strong></p> <span style="font-family: 宋体; font-size: 18px;">前言</span> <p><span style="font-family: 宋体;">   由于恩智浦智能车竞赛竞争激烈,再加上自身水平的不足,止步校赛,所以为弥补一下未能参加省赛的心愿,借着这次立创商城的电子设计竞赛的机会,展示一下自己的学习成果。</span></p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">* 1、项目功能介绍</h3> <hr class="horizontal-splitline normal-bold-2"> <p><span style="font-family: 宋体;">   恩智浦智能车的电磁组设计主要依赖于电磁检测技术,通过检测埋在赛道下的通入电流的漆包线来确定车辆的位置和路径。这种技术利用了电磁感应原理,即当导体在磁场中运动时,会在导体中产生感应电动势。通过检测不同位置的感应电动势大小,车辆可以确定其相对于赛道上磁性线的位置,从而实现对赛道的识别和导航。</span></p> <p><span style="font-family: 宋体;">   本项目基于</span>MC9S12XS128MAL<span style="font-family: 宋体;">(</span><span style="font-family: Calibri;">16</span><span style="font-family: 宋体;">位单片机)去开发</span><span style="font-family: 宋体;">电磁寻迹小车</span><span style="font-family: 宋体;">,</span><span style="font-family: 宋体;">基于</span>LC<span style="font-family: 宋体;">电路去检测磁感线从而获得磁感应强度,用来达到小车的寻迹功能。</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">注:主题不限,可以是解决生活/工作中的某个问题、为某个人群/场景设计的方案、毕业设计/课程设计/DIY项目/纯属炫酷项目等。主要讲一下自己通过什么手段解决了什么问题。</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*2、项目属性</h3> <hr class="horizontal-splitline normal-bold-2"> <p><span style="font-family: 宋体;">项目首次公开,且为原创</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">注:请说明项目是否首次公开;项目是否为原创;项目是否曾经在其他比赛中获奖,若有获奖则叙述获奖详情;项目是否在学校参加过答辩。</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">* 3、开源协议</h3> <hr class="horizontal-splitline normal-bold-2"> <p><span style="font-family: 宋体;">项目核心功能开源</span>80%<span style="font-family: 宋体;">以上</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">注:利他即利己,请认真阅读下述内容。</span></p> <ol style="line-height: 1.8;"> <li class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-hanging-indent-1.6em" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">拥抱开源,赋予项目无限价值。建议项目核心功能开源80%以上;</span></li> <li class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-hanging-indent-1.6em" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">2、若某一部分功能不可替代且删掉之后项目无法解决对应的问题,则这一部分实现的功能就是项目的核心功能;比如设计了一台电子负载且设计了一款上位机软件监控功率变化,则电子负载为核心功能,上位机软件为辅助功能;比如电子负载中使用了一款隔离485模块与上位机通信,则此485模块实现的通讯功能为辅助功能; </span></li> <li class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-hanging-indent-1.6em" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">项目应选择适合自己的<span style="text-decoration: underline;"><a href="/posts/98fdb2accd754af7b51990790db3b47a" target="_blank">开源协议</a></span>,若项目引用其他开源项目,应注明来源并遵循原作者的开源协议规定;原创项目推荐使用GPL3.0开源协议;</span></li> <li class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-hanging-indent-1.6em" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">直接引用开源项目的原电路或原代码实现的功能不可作为自己项目的核心功能、使用市场上通用模块直接实现的功能不可作为自己项目的核心功能。</span></li> </ol> <p style="line-height: 1.8;"> </p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #0093e6;">请在竞赛阶段填写 ↓</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*4、硬件部分</h3> <hr class="horizontal-splitline normal-bold-2"> <p>硬件部分主要分为三部分,主控制板,电机驱动板以及电磁采集信号板,均为自主设计。此外,硬件部分还包括MC9S16XS128MAL核心板,蓝牙模块,液晶模块,矩阵按键模块,干簧管模块等,此部分为淘宝购买。</p> <p>1)<span style="font-family: 宋体;">主控板</span></p> <p><img src="//image.lceda.cn/pullimage/2pUJHhkQeAAdg7WTI2MFOg5HTqG1B8cd2LSM2V07.jpeg" alt="" width="800" height="556"></p> <p><span style="font-family: 宋体;">   采用</span><span style="font-family: Calibri;">16</span><span style="font-family: 宋体;">位单片机</span><span style="font-family: Calibri;">MC9S12XS128MAL</span><span style="font-family: 宋体;">作为控制芯片,通过芯片的</span><span style="font-family: Calibri;">ADC</span><span style="font-family: 宋体;">功能进行电磁信号的采集,通过芯片的</span><span style="font-family: Calibri;">PWM</span><span style="font-family: 宋体;">功能进行电机驱动的控制等操作。</span></p> <p><span style="font-family: 宋体;">   总电源接口处采用防反二极管,确保电源接口接反不会烧主控板。电源部分采用</span><span style="font-family: Calibri;">5V</span><span style="font-family: 宋体;">稳压芯片</span><span style="font-family: Calibri;">LM2940</span><span style="font-family: 宋体;">和</span><span style="font-family: Calibri;">3.3V</span><span style="font-family: 宋体;">稳压芯片</span><span style="font-family: Calibri;">AMS1117-3.3V</span><span style="font-family: 宋体;">分别对</span><span style="font-family: Calibri;">MCU</span><span style="font-family: 宋体;">,外设以及电磁信号板进行供电,确保各个核心部件的电源稳定以及增加抗干扰能力。主控地,电磁信号采集地,电机驱动地进行单点接地处理,增强抗干扰能力。此外,通过</span><span style="font-family: Calibri;">液晶</span><span style="font-family: 宋体;">屏幕和按键进行辅助调试;采用编码器进行测速,采用干簧管进行停车,采用蓝牙进行通信调试,采用拨码开关进行比赛策略调整</span><span style="font-family: 宋体;">等。同时,预留相应的接口,其中,电磁信号采集接口,用于连接电磁信号采集板,电机控制接口,用于连接电机控制信号线,主电源接口,电机电源接口等。主控板上还留有电源指示灯,方便排查电源故障;预留电源插针接口,便于给备用的外设进行供电。</span></p> <p>2)<span style="font-family: 宋体;">电机驱动电路</span></p> <p><span style="font-family: 宋体;">采用</span>BTN7971<span style="font-family: 宋体;">集成芯片构成全桥电路,</span><span style="font-family: Calibri;">74HC244</span><span style="font-family: 宋体;">做信号隔离</span><span style="font-family: 宋体;">。</span></p> <p><span style="font-family: Calibri;">BTN7971</span><span style="font-family: 宋体;">的</span><span style="font-family: Calibri;">VS</span><span style="font-family: 宋体;">和</span><span style="font-family: Calibri;">GND</span><span style="font-family: 宋体;">分别接电源和地,</span><span style="font-family: Calibri;">INH</span><span style="font-family: 宋体;">为芯片使能端,为高电平芯片工作,</span><span style="font-family: Calibri;">IN</span><span style="font-family: 宋体;">为</span><span style="font-family: Calibri;">PWM</span><span style="font-family: 宋体;">信号输入端,</span><span style="font-family: Calibri;">IS</span><span style="font-family: 宋体;">和</span><span style="font-family: Calibri;">SR</span><span style="font-family: 宋体;">为信号监测、故障保护等,</span><span style="font-family: Calibri;">OUT</span><span style="font-family: 宋体;">接电机端口。</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/k8rSsQ5a1EL0pxTJ097bhXe5wszfE16SvgSFoea2.jpeg" alt="" width="800" height="525"><span style="font-family: 宋体;"> 布局注意要点:</span></p> <p>1.<span style="font-family: 宋体;">该</span><span style="font-family: Calibri;">BTN7971</span><span style="font-family: 宋体;">桥式方案</span><span style="font-family: 宋体;">驱动输出电流大</span><span style="font-family: 宋体;">,</span><span style="font-family: 宋体;">线路</span><span style="font-family: 宋体;">做大面积覆铜或</span><span style="font-family: 宋体;">开窗处理,增强</span><span style="font-family: 宋体;">通</span><span style="font-family: 宋体;">流能力</span><span style="font-family: 宋体;">以及</span><span style="font-family: 宋体;">利于散热;</span></p> <p>2.<span style="font-family: 宋体;">采用</span><span style="font-family: Calibri;">74HC244</span><span style="font-family: 宋体;">芯片,增强控制信号的驱动能力,同时能够对信号进行隔离,防止驱动芯片出现故障后,电流倒灌进单片机控制引脚,导致单片机损坏;</span></p> <p>3.<span style="font-family: 宋体;">板子电源接口</span><span style="font-family: 宋体;">串</span><span style="font-family: 宋体;">联二极管(</span>M7<span style="font-family: 宋体;">),起到防反接保护作用;</span></p> <p><span style="font-family: 宋体;">  使用方法:</span></p> <p><span style="font-family: Calibri;">1.VBAT</span><span style="font-family: 宋体;">为电源输入,可以接</span><span style="font-family: Calibri;">7.4V</span><span style="font-family: 宋体;">或</span><span style="font-family: Calibri;">12V</span><span style="font-family: 宋体;">锂电池。</span></p> <p><span style="font-family: Calibri;">2.OUT1~OUT4</span><span style="font-family: 宋体;">接电机控制线,无正负极之分。</span></p> <p><span style="font-family: Calibri;">3.</span><span style="font-family: 宋体;">主板的控制信号接口需要和电机驱动接口配对,即</span><span style="font-family: Calibri;">+5V</span><span style="font-family: 宋体;">,</span><span style="font-family: Calibri;">GND</span><span style="font-family: 宋体;">和四根</span><span style="font-family: Calibri;">PWM</span><span style="font-family: 宋体;">信号;注意板子间接口的连接方式(硬件做防呆处理)。</span></p> <p><span style="font-family: Calibri;">3</span><span style="font-family: 宋体;">)电磁采集电路</span></p> <p><span style="font-family: Arial;">           使用了</span>LC并联谐振电路进行选频和放大电路设计,以确保从赛道上获取的信号能够被准确地检测和处理。LC并联谐振的选频公式和选型过程,以及如何通过调整电感和电容的Q值和制造误差来优化选频精度,都是实现电磁检测的关键步骤。<span style="font-family: Arial;">此外,恩智浦智能车的电磁组还涉及到运放选型,即选择合适的运算放大器来处理微弱的模拟信号。这涉及到对不同运放芯片的性能比较和选择,以确保信号处理的准确性和稳定性。</span></p> <p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/JBkWeNPw8g3jRGoMgCJqoaqpOFC0NFfMQ6H30FOX.jpeg" alt="" width="800" height="523"><br></span></p> <p align="justify"><span style="font-family: Calibri;">1、</span><span style="font-family: 宋体;">选频电路</span></p> <p><span style="font-family: 宋体;">   赛道电磁信号</span><span style="font-family: Calibri;">20KHz</span><span style="font-family: 宋体;">,通过</span><span style="font-family: Calibri;">LC</span><span style="font-family: 宋体;">并联构成的谐振电路,滤除其他频率段的杂波,保留</span><span style="font-family: Calibri;">20KHz</span><span style="font-family: 宋体;">的信号。使用</span><span style="font-family: Calibri;">10mH</span><span style="font-family: 宋体;">工字电感,由</span><span style="font-family: 宋体;">得,</span><span style="font-family: 宋体;">。市面上没有</span><span style="font-family: Calibri;">6.33nF</span><span style="font-family: 宋体;">,采用</span><span style="font-family: Calibri;">6.8nF</span><span style="font-family: 宋体;">的校正电容。</span><span style="font-family: 宋体;">其中,工字电感的选择比较重要,需要选择品质因素较高的电感,之所以选择工字电感,主要是其大电流,小阻抗,体积小,温升低,抗干扰能力强,精度高,一致性好等特性。</span><span style="font-family: 宋体;">工字电感需要做好参数匹配,可以测试多个电感,挑选一致性较好的电感。</span></p> <p align="justify"><span style="font-family: Calibri;">2、</span><span style="font-family: 宋体;">检波电路</span></p> <p><span style="font-family: 宋体;">   电感检测到交流信号,通过运放放大,检波电路滤除负信号,将交流变成直流,单片机</span><span style="font-family: Calibri;">AD</span><span style="font-family: 宋体;">口才能检测。</span><span style="font-family: Calibri;">IN1</span><span style="font-family: 宋体;">为交流信号,当</span><span style="font-family: Calibri;">IN1</span><span style="font-family: 宋体;">的电平为正电平时(大于等于</span><span style="font-family: Calibri;">0.7V</span><span style="font-family: 宋体;">),</span><span style="font-family: Calibri;">D1</span><span style="font-family: 宋体;">导通,</span><span style="font-family: Calibri;">D2</span><span style="font-family: 宋体;">截止,</span><span style="font-family: 宋体;">;当</span><span style="font-family: Calibri;">IN1</span><span style="font-family: 宋体;">的电平为负电平(小于等于</span><span style="font-family: Calibri;">-0.7V</span><span style="font-family: 宋体;">)时,</span><span style="font-family: Calibri;">D1</span><span style="font-family: 宋体;">截止,</span><span style="font-family: Calibri;">D2</span><span style="font-family: 宋体;">导通,</span><span style="font-family: 宋体;">,但是由于电容</span><span style="font-family: Calibri;">C1</span><span style="font-family: 宋体;">的存在,输出电压不会跌太多。此时,转换后的</span><span style="font-family: 宋体;">的大小与电磁强度基本成线性关系(考虑不饱和时)。</span></p> <p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/fKoDYVKoQCSNV54GyYMaNpUkXn0xVlXKMLJX06uU.png" alt="" width="327" height="197"></span></p> <p align="justify"><span style="font-family: Calibri;">3、</span><span style="font-family: 宋体;">放大电路</span></p> <p><img src="//image.lceda.cn/pullimage/dXbCYByCVNUcQdAClffDFuIOuXEmNu9zeji17N7k.png" alt="" width="370" height="237"></p> <p align="justify"><span style="font-family: 宋体;">   同相运算放大器 增益公式:</span><span style="font-family: 宋体;">XXXX,原理就是通过调节反馈电阻</span><span style="font-family: 宋体;">调节输出增益,达到信号放大效果。本设计采用双路运算放大器芯片</span><span style="font-family: Calibri;">OPA2350</span><span style="font-family: 宋体;">,构成同相放大器,进行信号的放大,具有响应延迟低,信噪比高,抗干扰能力强等特点,电磁板增益</span><span style="font-family: Calibri;">(</span><span style="font-family: 宋体;">即放大倍数</span><span style="font-family: Calibri;">)</span><span style="font-family: 宋体;">为:XXXX</span></p> <p align="justify"><span style="font-family: 宋体;">可以通过调节</span><span style="font-family: Calibri;">RP1~RP6</span><span style="font-family: 宋体;">电位器来调节放大倍数,从而根据实际情况调节信号的强度。</span></p> <p align="justify">        针对该电路进行LTSpice<span style="font-family: 宋体;">电路仿真,</span><span style="font-family: 宋体;">通过交流电源模拟电磁正弦波信号,通过</span><span style="font-family: Calibri;">LTC6254</span><span style="font-family: 宋体;">构成放大电路,模拟二通道集成运放</span><span style="font-family: Calibri;">OPA2350</span><span style="font-family: 宋体;">,通过二极管</span><span style="font-family: Calibri;">IN5819</span><span style="font-family: 宋体;">和阻容构成检波滤波电路。其中,电磁信号频率为</span><span style="font-family: Calibri;">20KHz</span><span style="font-family: 宋体;">,根据实际电磁信号强度,电磁信号约为几十毫伏。</span></p> <p align="justify"><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/MdWnFvuH869sTs8RobT2U05SzlstipM4q9nXvO23.png" alt="" width="600" height="272"></span><span style="font-family: 宋体;">   当电磁信号较弱,比如当电磁信号为</span><span style="font-family: Calibri;">20mV</span><span style="font-family: 宋体;">时,</span><span style="font-family: 宋体;">当</span><span style="font-family: Calibri;">R</span><sub><span style="font-family: Calibri;">2</span></sub><span style="font-family: 宋体;">阻值为</span><span style="font-family: Calibri;">99K</span><span style="font-family: 宋体;">时,根据同相运算放大器的公式,幅值放大</span><span style="font-family: Calibri;">100</span><span style="font-family: 宋体;">倍。</span></p> <p><span style="font-family: 宋体;">通过检波电路和滤波电路,电路输出为直流电,如下图所示</span></p> <p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/tLK7d4518db2ZdrQVaPnMZ551fMGiCWGWVFw5tgi.png" alt="" width="584" height="455"><img src="//image.lceda.cn/pullimage/gzb2ICw06TBaRIs9zPjYGzqc70A8n6vTCB6QjU8m.png" alt="" width="600" height="448"></span></p> <p><span style="font-family: 宋体;">   通过</span><span style="font-family: Calibri;">LTSpice</span><span style="font-family: 宋体;">的波形测量函数,可以得知</span><span style="font-family: Calibri;">20mV</span><span style="font-family: 宋体;">电磁信号通过运放模块放大</span><span style="font-family: Calibri;">100</span><span style="font-family: 宋体;">倍后的直流信号有效值为</span><span style="font-family: Calibri;">1.845V</span><span style="font-family: 宋体;">,纹波为</span><span style="font-family: Calibri;">0.030V</span><span style="font-family: 宋体;">。</span></p> <p><span style="font-family: 宋体;">当电磁信号较强,比如当电磁信号为</span><span style="font-family: Calibri;">50mV</span><span style="font-family: 宋体;">时</span><span style="font-family: 宋体;">,当</span><span style="font-family: Calibri;">R</span><sub><span style="font-family: Calibri;">2</span></sub><span style="font-family: 宋体;">阻值为</span><span style="font-family: Calibri;">29K</span><span style="font-family: 宋体;">时,根据同相运算放大器的公式,幅值放大</span><span style="font-family: Calibri;">30</span><span style="font-family: 宋体;">倍.</span></p> <p><span style="font-family: 宋体;">通过检波电路和滤波电路,电路输出为直流电,如下图所示</span></p> <p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/L5v0QykcFXjufWb6BkG5H05NKflNnmBbtrBsfiGG.png" alt="" width="581" height="456"></span></p> <p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/J1OTB4RTtwmCQX2AW1o1F9HiB5GvkUIt2euAE52f.png" alt="" width="577" height="431"></span></p> <p><strong><span style="font-family: 宋体;">通过</span><span style="font-family: Calibri;">LTSpice</span><span style="font-family: 宋体;">的波形测量函数,可以得知</span><span style="font-family: Calibri;">50mV</span><span style="font-family: 宋体;">电磁信号通过运放模块放大</span><span style="font-family: Calibri;">30</span><span style="font-family: 宋体;">倍后的直流信号有效值为</span><span style="font-family: Calibri;">1.334V</span><span style="font-family: 宋体;">,纹波为</span><span style="font-family: Calibri;">0.025V.</span></strong></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong><span style="color: #95a5a6; font-size: 14px;"> 注:请前往<span style="text-decoration: underline;"><a href="https://lceda.cn/editor" target="_blank">嘉立创EDA</a> </span>生成/上传设计文件,文件完成后,相关文稿将自动生成至项目详情;这里可以详细说明您的项目实现原理和机制、注意事项、调试方法、测试方法等。推荐图文并茂的形式向别人介绍您的想法。 </span></strong></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> </p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong>*5、软件部分</strong></h3> <hr class="horizontal-splitline normal-bold-2"> <p><strong><span style="font-family: Arial;">        软件方面,电磁组利用分区算法来处理从传感器获取的模拟信号。这些算法能够根据不同位置的感应电动势大小来确定车辆的位置,进而通过</span>PID控制算法等控制车辆的行驶路径,确保在复杂环境下的稳定行驶。</strong></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong><img src="//image.lceda.cn/pullimage/iccIvzzixLkC8Z7bn8UfrjKTDX0hTAijQXmi7jQs.png" alt="" width="297" height="297"></strong></p> <p><strong><span style="font-family: 宋体;">上述头文件为相应的代码模块</span></strong></p> <p><strong><span style="font-family: 宋体;">主函数代码运行逻辑:</span><img src="//image.lceda.cn/pullimage/xGLO6pJLxvBhMnDOnsKajioyhjZyzhIhUf4K0OxG.png" alt="" width="498" height="734"></strong></p> <p><strong><span style="font-family: 宋体;">  首先,配置系统时钟,配置</span><span style="font-family: Calibri;">10ms</span><span style="font-family: 宋体;">定时器,脉冲累加器,</span><span style="font-family: Calibri;">SCI UART</span><span style="font-family: 宋体;">初始化,液晶初始化,</span><span style="font-family: Calibri;">ADC PWM</span><span style="font-family: 宋体;">初始化,按键 拨码开关初始化,干簧管初始化等。</span></strong></p> <p><strong><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/OkdiDs8ByDpTaerLEKv2LJZBjIBittXsyAWL0aUG.png" alt="" width="328" height="495"></span></strong></p> <p><strong><span style="font-family: 宋体;">   然后,进入发车前</span><span style="font-family: Calibri;">ADC</span><span style="font-family: 宋体;">整定,按键参数,发车策略,液晶显示等,必要时,可以打开蓝牙调试函数,进行蓝牙界面的调参;</span></strong></p> <p><strong><span style="font-family: 宋体;">其次,开始发车出库,进行方向控制和速度控制,最后检测到终点,倒车入库。</span></strong></p> <p><strong><span style="font-size: 24px;">1. <span style="font-family: 宋体;">速度</span><span style="font-family: Calibri;">PID</span><span style="font-family: 宋体;">控制</span></span></strong></p> <p><strong><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/dCTowH6nt00SwpgOh0QizQ4IbybpptAd6h4f1PUL.png" alt="" width="600" height="467"></span><span style="font-family: 宋体;"> 引入比例、积分、微分系数,采用增量式</span><span style="font-family: Calibri;">PID</span><span style="font-family: 宋体;">控制算法,分别定义左轮和右轮的</span><span style="font-family: Calibri;">PID</span><span style="font-family: 宋体;">控制算法,分别对左轮和右轮的</span><span style="font-family: Calibri;">PID</span><span style="font-family: 宋体;">控制器输出进行计算;算法的入口参数为:预期速度,当前速度,比例系数</span><span style="font-family: Calibri;">Kp</span><span style="font-family: 宋体;">,积分系数</span><span style="font-family: Calibri;">Ki</span><span style="font-family: 宋体;">,微分系数</span><span style="font-family: Calibri;">Kd </span><span style="font-family: 宋体;">算法返回参数为控制器</span><span style="font-family: Calibri;">PID</span><span style="font-family: 宋体;">输出计算值。</span></strong></p> <p><strong><span style="font-size: 24px;">2. <span style="font-family: 宋体;">电机转速检测和</span><span style="font-family: Calibri;">PWM</span><span style="font-family: 宋体;">控制</span></span></strong></p> <p><strong><span style="font-family: 宋体;">电机速度采集:通过脉冲累加器记录编码器的脉冲数,通过定时器采集单位时间内(</span><span style="font-family: Calibri;">10ms</span><span style="font-family: 宋体;">)电机的脉冲数,即可检测出电机的转速。</span></strong></p> <p><strong><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/e96PHwCWvCYR2MRjoc3CzC27hgEJvrgWU3gm5Tu4.png" alt="" width="268" height="85"></span></strong></p> <p><strong><span style="font-family: 宋体;">定义脉冲数量,左轮脉冲数量和右轮脉冲数量,由于单片机内部只有</span><span style="font-family: Calibri;">1</span><span style="font-family: 宋体;">个脉冲累加器,需要做测速切换,定义测速方向变量。</span></strong></p> <p><strong><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/pDxW36ZFxOYqATjyscp9ScT1AWNixSlmDsykstOO.png" alt="" width="471" height="615"></span></strong></p> <p><strong><span style="font-family: 宋体;">   测速使用</span><span style="font-family: Calibri;">10ms</span><span style="font-family: 宋体;">定时器,通过测速切换标志位,分别测量左轮和右轮脉冲数,然后改变编码器的片选信号位,即可进行编码器的使能和失能。</span><img src="//image.lceda.cn/pullimage/iEDKyITLAXm6T6oOFFBMJ9DXKcXmllefYLneiVvI.png" alt="" width="587" height="386"></strong></p> <p><strong><span style="font-family: 宋体;">定义方向</span><span style="font-family: Calibri;">PID</span><span style="font-family: 宋体;">输出,速度</span><span style="font-family: Calibri;">PID</span><span style="font-family: 宋体;">输出,期望速度,实际速度等</span></strong></p> <p><strong><span style="font-family: 宋体;">定义左右轮的</span><span style="font-family: Calibri;">PWM</span><span style="font-family: 宋体;">信号,最高速度,最低速度以及速度调节比例</span></strong></p> <p><strong><span style="font-family: 宋体;">定义发车标志位和结束标志位,定义编码器转换变量</span></strong></p> <p><strong><span style="font-family: 宋体;">其中</span><span style="font-family: Calibri;">,</span><span style="font-family: 宋体;">车轮速度</span><span style="font-family: Calibri;">=counter(</span><span style="font-family: 宋体;">脉冲数</span><span style="font-family: Calibri;">)*</span><span style="font-family: 宋体;">车轮周长</span><span style="font-family: Calibri;">(mm)/(</span><span style="font-family: 宋体;">车轮转</span><span style="font-family: Calibri;">1</span><span style="font-family: 宋体;">圈对应的脉冲数</span><span style="font-family: Calibri;">*</span><span style="font-family: 宋体;">程序周期</span><span style="font-family: Calibri;">)</span></strong></p> <p><strong><span style="font-family: Calibri;"><img src="//image.lceda.cn/pullimage/anqjNxs1L4Ia6pwfpCn5Aawkjh92gjqNumTDjo0P.png" alt="" width="600" height="250"></span></strong></p> <p><strong><span style="font-family: 宋体;">电机控制步骤:</span></strong></p> <p><strong>1、<span style="font-family: 宋体;">测速反馈:测量小车左轮和右轮的实际速度以及小车车身的实际速度</span></strong></p> <p><strong>2、<span style="font-family: 宋体;">给定预期基准速度,预期速度根据车身偏离赛道的偏差值来给定,计算公式为一个二次函数,小车速度介于</span><span style="font-family: Calibri;">Low_Speed</span><span style="font-family: 宋体;">和</span><span style="font-family: Calibri;">High_Speed</span><span style="font-family: 宋体;">之间,偏离赛道越远,小车降速越明显。</span></strong></p> <p><strong>3、<span style="font-family: 宋体;">方向控制:根据电磁偏差</span> <span style="font-family: 宋体;">计算方向</span><span style="font-family: Calibri;">PD</span><span style="font-family: 宋体;">输出值,分别计算左轮和右轮的预期速度,同时对速度进行限幅</span></strong></p> <p><strong>4、<span style="font-family: Calibri;">PID</span><span style="font-family: 宋体;">调速:根据小车预期速度和当前速度进行速度</span><span style="font-family: Calibri;">PID</span><span style="font-family: 宋体;">控制器输出的计算</span></strong></p> <p><strong>5、<span style="font-family: Calibri;">PWM</span><span style="font-family: 宋体;">控制:幅值给</span><span style="font-family: Calibri;">PWM</span><span style="font-family: 宋体;">变量</span></strong></p> <p><strong><span style="font-family: 宋体;">异常情况处理:</span></strong></p> <p><strong><span style="font-family: Calibri;">1.</span><span style="font-family: 宋体;">当小车速度失控冲出赛道,即检测不到电感值,则关闭</span><span style="font-family: Calibri;">PWM</span><span style="font-family: 宋体;">输出</span></strong></p> <p><strong><span style="font-family: Calibri;">2.</span><span style="font-family: 宋体;">干簧管停车:检测到赛道磁铁干簧管动作,则判断停车,关闭</span><span style="font-family: Calibri;">PWM</span><span style="font-family: 宋体;">输出</span></strong></p> <p><strong><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/ACQL2g5BzJd3w7DcMpElp2gtTpxdpxzFsZ5mEPbc.png" alt="" width="600" height="216"></span></strong></p> <p><span style="font-size: 24px;"><strong>3. <span style="font-family: 宋体;">方向</span><span style="font-family: Calibri;">PD</span><span style="font-family: 宋体;">控制</span></strong></span></p> <p><img src="//image.lceda.cn/pullimage/zUDD1ZmO39rSI985guw14fEQnZZ5hS8ZDpOTw9OI.png" alt="" width="600" height="303"></p> <p><span style="font-family: 宋体;">   <strong>方向</strong></span><strong><span style="font-family: Calibri;">PD </span><span style="font-family: 宋体;">主要思路:本次使用三轮小车,全车轮是万向轮,通过后轮差速达到转向的效果。通过左右电感值的偏差,作用在电机</span><span style="font-family: Calibri;">PWM</span><span style="font-family: 宋体;">控制上,即可实现差速的控制。但单纯的电感差值并不能精准地控制差速,引入方向</span><span style="font-family: Calibri;">PD</span><span style="font-family: 宋体;">算法后,赛道的偏差和趋势能够很好地计算出来,从而较为精准地控制电机差速,实现转向顺滑。</span></strong></p> <p><strong><span style="font-family: 宋体;">   代码中,区分普通赛道和圆环赛道,引入不同地</span><span style="font-family: Calibri;">PD</span><span style="font-family: 宋体;">参数变量,同时引入方向偏差和方向偏差微分变量等,实现方向</span><span style="font-family: Calibri;">PD</span><span style="font-family: 宋体;">算法。</span></strong></p> <p><strong><span style="font-family: 宋体;">特殊的元素:环岛</span> <span style="font-family: 宋体;">设置进入环岛的标志位;坡道</span> <span style="font-family: 宋体;">设置坡道标志位</span></strong></p> <p><strong><span style="font-family: 宋体;">   主要原则:一般情况下,使用</span><span style="font-family: Calibri;">4</span><span style="font-family: 宋体;">个水平电感的差比和作为偏差;</span></strong></p> <p><strong><span style="font-family: 宋体;">          在环岛时,使用</span><span style="font-family: Calibri;">2</span><span style="font-family: 宋体;">个垂直电感的差比和作为偏差。</span></strong></p> <p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/LXFtkfQ7YIHO2SX2x82y6Tf2qmfeGR6HmzbbABa5.png" alt="" width="600" height="255"><img src="//image.lceda.cn/pullimage/AX7pEUVaEb2HzXanh53rvaCmL8l6IxFwlpxtnf41.png" alt="" width="600" height="54"></span></p> <p><span style="font-family: 宋体;">   <strong>上述代码为差比和算法,通过水平电感和垂直电感分别做差除以电感总值,求得水平偏差和垂直偏差,然后存储在</strong></span><strong><span style="font-family: Calibri;">DirectionError[]</span><span style="font-family: 宋体;">里,然后对偏差进行微分,存储在</span><span style="font-family: Calibri;">DirectionError_dot[]</span><span style="font-family: 宋体;">数组里,最后存储当前偏差值,作为之后微分处理时的上一次偏差值。</span></strong></p> <p><strong><span style="font-family: 宋体;">最后通过</span><span style="font-family: Calibri;">PD</span><span style="font-family: 宋体;">算法公式计算出方向</span><span style="font-family: Calibri;">PD</span><span style="font-family: 宋体;">控制器输出,并进行限幅处理。</span></strong></p> <p><strong><span style="font-family: 宋体;">电机</span><span style="font-family: Calibri;">PWM</span><span style="font-family: 宋体;">控制代码中,电机</span><span style="font-family: Calibri;">PID</span><span style="font-family: 宋体;">控制器在基础速度上叠加方向</span><span style="font-family: Calibri;">PD</span><span style="font-family: 宋体;">控制器输出即可实现电机差速控制。</span></strong></p> <p><strong><span style="font-size: 24px;">4. <span style="font-family: 宋体;">电磁信号采集</span></span></strong></p> <p><img src="//image.lceda.cn/pullimage/u8Icj1kJL86fwYji6el12c5aL2B3xg5RjPoQS1LR.png" alt="" width="403" height="420"></p> <p><span style="font-family: 宋体;">   <strong>利用单片机内部的</strong></span><strong><span style="font-family: Calibri;">ADC</span><span style="font-family: 宋体;">,选择</span><span style="font-family: Calibri;">12</span><span style="font-family: 宋体;">位精度,采用均值滤波算法,实现模拟信号对数字信号的转换。</span></strong></p> <p><strong><span style="font-family: 宋体;">电磁采集信号归一化</span></strong></p> <p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/mpS8XEjI9yRGtk3zMasSw5rt7dpKBCYLXAYQmQAL.png" alt="" width="600" height="570"></span></p> <p><span style="font-family: 宋体;">   <strong>在</strong></span><strong><span style="font-family: 宋体;">发车前</span><span style="font-family: 宋体;">,需要对赛道的信号进行归一化处理</span></strong></p> <p><strong><span style="font-family: 宋体;">归一化</span><span style="font-family: Calibri;">---</span><span style="font-family: 宋体;">由于赛道的电磁信号源存在差异,需要对赛道的信号强度进行标定,归一化到</span><span style="font-family: Calibri;">0~1500</span><span style="font-family: 宋体;">的</span><span style="font-family: Calibri;">ADC</span><span style="font-family: 宋体;">数值之间。</span></strong></p> <p><img src="//image.lceda.cn/pullimage/ux3jlzfgeYTr7xmOB0trGoZvPDLkY4wNgyezbsPa.png" alt="" width="600" height="405"><img src="//image.lceda.cn/pullimage/cC4MrbCR9GJaGubiosE2KZUFZm0ddyGUTZeKeo0Z.png" alt="" width="544" height="336"></p> <p><span style="font-family: 宋体;">   <strong>硬件使用</strong></span><strong><span style="font-family: Calibri;">6</span><span style="font-family: 宋体;">路电感进行赛道元素的采集,</span><span style="font-family: Calibri;">4</span><span style="font-family: 宋体;">路水平电感和</span><span style="font-family: Calibri;">2</span><span style="font-family: 宋体;">路垂直电感,水平电感用于直道元素处理,垂直电感对于弯道元素比较敏感,用于弯道检测。</span></strong></p> <p><strong><span style="font-family: 宋体;">   分别采集</span><span style="font-family: Calibri;">6</span><span style="font-family: 宋体;">路电感的数值,对每路电感值进行冒泡排序,去除最小值和最大值,取平均值,从而达到软件滤波的效果。</span></strong></p> <p><strong><span style="font-family: 宋体;">最后对电感值进行取整和限幅等操作。</span></strong></p> <p><span style="font-size: 24px;"><strong>5. <span style="font-family: 宋体;">赛道元素处理(出入库、环岛、坡道、十字等)</span></strong></span></p> <p><strong>1)<span style="font-family: 宋体;">环岛识别</span></strong></p> <p><img src="//image.lceda.cn/pullimage/Yqnk0Gxuf0W7X2CoriHTPdGVDXQSNMnvJ16GZn2u.png" alt="" width="600" height="249"></p> <p><span style="font-family: 宋体;">环岛元素作为赛道较为复杂的元素,需要做识别处理,设置环岛标志为</span><span style="font-family: Calibri;">Flag_Round</span><span style="font-family: 宋体;">,普通赛道时,</span><span style="font-family: Calibri;">Flag_Round</span><span style="font-family: 宋体;">为</span><span style="font-family: Calibri;">0</span><span style="font-family: 宋体;">,当中间两个水平电感任意一个很大时,有以下情况 </span></p> <p><span style="font-family: Calibri;">1</span><span style="font-family: 宋体;">:小车经过环岛</span><span style="font-family: Calibri;">2</span><span style="font-family: 宋体;">:小车经过坡道</span></p> <p><span style="font-family: 宋体;">环岛和坡道的差异是在小车车身在赛道中间时,左右电感不会产生很大的值,而环岛左右电感任意一侧的值会很大,从而根据环岛的特征进行识别,设置</span><span style="font-family: Calibri;">Flag_Round</span><span style="font-family: 宋体;">为</span><span style="font-family: Calibri;">1</span></p> <p><span style="font-family: 宋体;">进入环岛内后,中间电感的值明显下降,从而设置</span><span style="font-family: Calibri;">Flag_Round</span><span style="font-family: 宋体;">为</span><span style="font-family: Calibri;">2</span><span style="font-family: 宋体;">;</span></p> <p><span style="font-family: 宋体;">出环岛时,左侧</span><span style="font-family: Calibri;">3</span><span style="font-family: 宋体;">电感或者右侧</span><span style="font-family: Calibri;">3</span><span style="font-family: 宋体;">电感值会较大,从而识别出环岛特征,设置</span><span style="font-family: Calibri;">Flag_Round</span><span style="font-family: 宋体;">为</span><span style="font-family: Calibri;">3</span><span style="font-family: 宋体;">,当中间</span><span style="font-family: Calibri;">2</span><span style="font-family: 宋体;">电感值明显变小且处在环岛阶段,同时左右电感偏差值较小时,则可以识别环岛切直线的状态,从而设置</span><span style="font-family: Calibri;">Flag_Round</span><span style="font-family: 宋体;">为</span><span style="font-family: Calibri;">0</span><span style="font-family: 宋体;">,从而完成环岛元素的判别。</span></p> <p><span style="font-family: 宋体;">代码中,进入环岛后进行减速处理,从而增强判别稳定性。</span></p> <p><strong><span style="font-size: 16px;">2)<span style="font-family: 宋体;">坡道的处理</span></span></strong></p> <p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/fL8cwUpb6Z3fl5glZUzWgAqqbCVBcoBPAIJc1n2B.png" alt="" width="600" height="498"></span></p> <p><span style="font-family: 宋体;">坡道元素的特征是中间两任一电感值较大(考虑入坡道小车姿势),且左右两电感值较小,即可判断坡道元素,设置</span><span style="font-family: Calibri;">Flag_Bridge</span><span style="font-family: 宋体;">为</span><span style="font-family: Calibri;">1</span><span style="font-family: 宋体;">,当判别为坡道后,进行坡道加速处理上坡,一段时间后,进行坡道减速处理下坡,即可完成坡道元素的处理。</span></p> <p><strong>3)</strong><span style="font-family: 宋体;"><strong>十字识别</strong></span></p> <p><span style="font-family: 宋体;">   电磁采集和摄像头不同,十字当作普通弯道处理即可满足要求,前提是保证好进入十字车身姿态的稳定性。</span></p> <p><strong>4)<span style="font-family: 宋体;">出库和入库</span></strong></p> <p><span style="font-family: 宋体;">   由于车库基本尺寸是定的,出库无须较多的识别,只需要先让小车走一段直线,然后再强制差速打转向即可。</span></p> <p><span style="font-family: 宋体;">   通过干簧管识别终点的磁铁,小车设置有3个干簧管,当任意两个干簧管被触发,即可确认是识别到终点(为确保干簧管由于机械震动而误触发,所以需要两个),通过中断,将停车标志位置1。出库和停车入库代码简单,见附件。</span></p> <p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/v7xedrTU1BndjIGVSSjt3rqKdGKEczTqgjJMFXy3.png" alt="" width="600" height="434"></span></p> <p><span style="font-family: 宋体;">   上述代码为环岛元素和普通赛道下的方向</span><span style="font-family: Calibri;">PD</span><span style="font-family: 宋体;">输出计算,在普通赛道下,使用</span><span style="font-family: Calibri;">4</span><span style="font-family: 宋体;">个水平电感进行处理;识别到环岛后,使用</span><span style="font-family: Calibri;">2</span><span style="font-family: 宋体;">个垂直电感进行处理;环岛内使用</span><span style="font-family: Calibri;">4</span><span style="font-family: 宋体;">个水平电感进行处理;环岛切直线使用最左和最后两个水平电感进行处理。</span></p> <p><span style="font-family: 宋体;">主要原因:水平电感即可满足普通直道和弯道,而进入环岛时,水平电感左右偏差不明显,相反垂直电感偏差较为明显,从而强化入环操作;环岛内则作为普通元素处理;出环岛时,最左和最右电感差值较为明显,而中间电感差值不大,从而用最左和最后两个水平电感进行处理,强化出环。</span></p> <p><strong>5) <span style="font-family: 宋体;">辅助调试</span></strong></p> <p>1)<span style="font-family: 宋体;">按键调参,液晶显示(用于比赛现场发车)</span></p> <p><span style="font-family: 宋体;">发车策略:比赛时,需要有快速的参数整定方法,即为发车策略,通过代码提前写好,拨码开关调节挡位和参数,比赛前会有</span><span style="font-family: Calibri;">15-30</span><span style="font-family: 宋体;">分钟的赛道调试,可以整定好几组参数,供正式比赛时使用,节省时间。</span></p> <p><span style="font-family: 宋体;">此部分代码较为简单,见附件。</span></p> <p>2)<span style="font-family: 宋体;">蓝牙调参(用于</span><span style="font-family: Calibri;">PID</span><span style="font-family: 宋体;">等参数调试调试)</span></p> <p><span style="font-family: 宋体;">   通过《蓝牙调试器》手机</span><span style="font-family: Calibri;">APP</span><span style="font-family: 宋体;">以及蓝牙模块,建立与小车单片机</span><span style="font-family: Calibri;">MC9S12XS128MAL</span><span style="font-family: 宋体;">的通信连接。通过蓝牙通信,将小车的实时参数发送到手机端,也可以通过手机端,修改相应的参数配置,达到便捷调试小车的目的。</span></p> <p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/MvtiMoxhNnq3oepxdnlSweGKgiazoCsNyqeadgS6.png" alt="" width="448" height="863"></span></p> <p><span style="font-family: 宋体;">上述代码为蓝牙发送程序,主要发送电磁采集,标志位信息,出库方向,实际速度等,仅展示部分代码。</span></p> <p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/GWPrkGDyVJQeZjEsWaV04nG8sai7u8aueJdizFJr.png" alt="" width="371" height="379"></span></p> <p><span style="font-family: 宋体;">   由于蓝牙调试器有相应的通信协议,需要定义串口发送数据堆栈和串口接收数据堆栈,</span></p> <p><span style="font-family: 宋体;">相应的通信协议结构为:</span><span style="font-family: Calibri;">1.</span><span style="font-family: 宋体;">包头 </span><span style="font-family: Calibri;">2.</span><span style="font-family: 宋体;">原数据 </span><span style="font-family: Calibri;">3.</span><span style="font-family: 宋体;">校验 </span><span style="font-family: Calibri;">4.</span><span style="font-family: 宋体;">包尾</span></p> <p><span style="font-family: 宋体;">   其中,包头为固定值</span><span style="font-family: Calibri;">0xA5</span><span style="font-family: 宋体;">,为</span><span style="font-family: Calibri;">1</span><span style="font-family: 宋体;">字节,原数据即可定义自己需要发送的数据,校验和为原数据所有字节之和的低</span><span style="font-family: Calibri;">8</span><span style="font-family: 宋体;">位,具有较为简单的校验方式,包尾为固定值</span><span style="font-family: Calibri;">0x5A</span><span style="font-family: 宋体;">,为</span><span style="font-family: Calibri;">1</span><span style="font-family: 宋体;">字节。</span></p> <p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/ClmE0zeDVwCkUA4FpqaMwbBYSW0l52zK7ZEgfdXV.jpeg" alt="" width="477" height="802"></span><span style="font-family: 宋体;">   原数据需要按照数据类型有序发送,数据类型顺序为:</span><span style="font-family: Calibri;">bool,byte,short,int,float</span></p> <p><span style="font-family: 宋体;">   代码中的数据顺序,需要与手机</span><span style="font-family: Calibri;">APP</span><span style="font-family: 宋体;">设置的数据顺序一致,避免传输过程中的混乱。</span><img src="//image.lceda.cn/pullimage/rY3hKWHqqsiZkieFpG83lY4cgDGFiwD7ngVrxF3O.png" alt="" width="365" height="547"></p> <p><span style="font-family: 宋体;">   对收发的数据结构体进行初始化</span></p> <p><span style="font-family: 宋体;">   通过串口中断函数,对蓝牙控制器发送过来的数据进行接收,注意这里有个数据包锁变量,这样,就能确保每次接收的数据都是完整的,而且不会和下次接收的数据混合。</span></p> <p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/gTPzDLXcsus8gyg5AGPQnC2G9zNzDF0WTDarR0Eo.png" alt="" width="571" height="847"></span></p> <p><span style="font-family: 宋体;">对单片机通过蓝牙接收到的数据进行解析,这里,需要注意每次接收到的数据需要进行校验对比,如果校验不对,则不进行数据的解析。</span></p> <p><img src="//image.lceda.cn/pullimage/SkNAhuJ8jysRWpcrtuysBkWWgd8Cq8d41x0WII8s.png" alt="" width="590" height="739"></p> <p>《蓝牙调试器》上位机操作流程</p> <div> <div> <p>        首先,进入专业调试界面,点击下面的加号,工程名字输入多功能时钟(自定义),点击确定,即新建了一个工程。点击工程空白的地方,出现下拉菜单,点击通信设置,此时进入数据包结构设置。</p> <p>        这里,我先补充一下通信协议的知识点。一般来说,通信协议的数据结构包括:起始字节、数据字节、校验字节和结束字节。采用起始字节和结束字节是为了发送方和接收方的通信上的同步,而采用校验字节是为了保证传输数据的准确性。</p> </div> <div> <div>        在《蓝牙调试器》里,开发者也是特别的用心,有数据包结构的说明,点击该界面右上角的问号,即可显示。根据数据包说明,我们知道起始字节,也就是包头,为固定值0xA5,而校验字节就是所有数据字节之和的低8位,结束字节,也就是包尾,为固定值0x5A。我们写程序要严格按照此通信协议严格执行。</div> </div> <div> <div>数据包结构设置界面最下面有3个选择项,我们先选择接收数据包。我们需要实时显示温湿度、空气质量、测量距离、报警状态和电机状态。由于数据包数据类型是从上至下依次发送的,所以我们要注意数据的顺序。我们在字节值中添加温度、湿度、报警状态和电机状态。由于空气质量和距离可能会超过128(这里字节是有符号的,-127~128),所以选择短整形添加进去。</div>          我们再选择发送数据包,在字节值里依次添加温度上限、温度下限、湿度上限、湿度下限、取消报警和启停电机,在短整形里依次添加空气指标和安全距离。</div> <div>         最后,选择通信模式,在通信模式设置里选择"仅操作控件时发送",这里说一下,如果选择"定时发送",由于接受频率也很高,可能会出现通信堵塞的情况,当然"不发送,仅接收"肯定不能选。后面的设置默认即可。</div> <div> <div>         此时,退出通信设置,进入编辑控件界面。为显示温度,我们可以做个文本显示数值,再做个能量槽显示比例(更直观)。点击加号,弹出添加控件框,选择文本,此时,弹出"选择要链接的数据"框,默认Receive(即接收),选择byte(字节),此时弹出刚才定义的变量数据框,选择温度即可。然后选择一个能量槽,选择温度,此时要设置能量槽上下限,下限输入0,上限输入100即可。此时关于显示温度的控件就设计完成了。湿度、空气质量、距离也一样。不过,我们可以利用"Y-T一维波形图"来实时显示距离的动态变化的趋势,绘制相关的曲线。同样的方法,链接好距离变量即可。由于我们需要设置一些阈值,这里可以通过可编辑文本来实现,这里不再阐述。报警状态和电机状态也可以通过文本实现,即0表示没有报警(或电机关闭),1表示有报警(或电机启动)(这里为了方便,统一用字节,没有用布尔类型)。取消报警和启停电机(这里是强制启动电机的)可以用开关来作为操作控件。</div> </div> </div> <p><span style="font-family: Arial;">        综上所述,恩智浦智能车电磁组的原理和技术涉及电磁检测、信号处理、运放选型以及分区算法等多个方面,这些技术的综合应用使得智能车能够在赛道上准确导航和行驶</span><span style="font-family: 宋体;">。</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">注:若您的项目涉及软件开发,请在附件上传对应的工程源码。这里可以详细说明您的软件流程图、功能模块框图、相关算法的解释或科普、源码结构、编译环境的搭建和配置、源码编译方法、程序烧录方法等。推荐图文并茂的形式向别人介绍您的想法。</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> </p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*6、BOM清单</h3> <hr class="horizontal-splitline normal-bold-2"> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">清单分为智能车总材料清单、控制板元器件材料清单、驱动板元器件材料清单、电磁信号板元器件材料清单。具体见附件。</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/LYn8wMzWUkpxhjYnJCM41xZHTIZfwzjwltmVYzhH.jpeg" alt="" width="1000" height="310"></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">注:项目涉及的BOM清单。在<span style="text-decoration: underline;"><a href="https://lceda.cn/editor" target="_blank">嘉立创EDA</a> </span>生成/上传设计文件后,BOM将自动生成至项目详情;建议包括型号、品牌、名称、封装、采购渠道、用途等内容。具体内容和形式应以表达清楚项目构成为准。 </span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*7、大赛LOGO验证</h3> <p>主控板Logo</p> <hr class="horizontal-splitline normal-bold-2"> <p style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/whiGAeBSMPbbshYNjyaslje2lzYCbFEZ3mAU5ohv.jpeg" alt="" width="800" height="482">驱动板Logo</p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/C1JFBGmu1pS1nYSToa7ArP60WFyrEL86BEv9hcAR.jpeg" alt="" width="800" height="368">电磁采集板Logo</p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/NN8hTkwEBf7ZM3DMVd3do11QXEgyKGD1mCxVa5xm.jpeg" alt="" width="800" height="70"></p> <p style="line-height: 1.8;">电池固定板Logo</p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/1UEewvps7UYWS3rmEufPqJk01t69HhUSOdn4jUuI.jpeg" alt="" width="800" height="349"></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">请上传包含大赛logo的项目图片,logo以丝印形式印刷在PCB上面。</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">点击zip下载大赛logo标识! <span style="text-decoration: underline;"><a href="https://image.lceda.cn/easyedaResource/images/d1bbfd69f9404f56901a0e7b849b7245.rar" target="_blank">(大赛标识).zip</a></span></span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">* 8、演示您的项目并录制成视频上传</h3> <hr class="horizontal-splitline normal-bold-2"> <p style="line-height: 1.8;"> </p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">视频要求:请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">视频标题:立创电赛:{项目名称}-{视频模块名称};如立创电赛:《自动驾驶》-团队介绍。</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="font-size: 14px;"><a href="/posts/de460543d4cf4dacb5f0326612455578" target="_blank">前往查看更多详情 ></a></span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> </div>

文档

BOM

暂无

附件

附件名 下载
控制板元器件材料清单.xls
驱动板元器件材料清单.xls
电磁信号板元器件材料清单.xls
智能车总材料清单.xls
工程文件.rar
电池固定板.PcbDoc

评论(1)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
立创电赛 回复
<p>不错的项目,还需要完善一下相关内容哦~</p>
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow