锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

智能车竞赛技术报告 | 节能信标组 - 中南民族大学 - 双子星

时间:2022-09-05 01:30:01 13a13ad感应传感器led节能灯用滤波电容振荡极限状态传感器12v470uf固态电容陶瓷电阻全系列5w二极管模块2sk1941

学 校:中南民族大学
队伍名称:双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星双子星
参赛队员:李双???
卢星???
欧阳水清欧阳水清
带队教师:吴嘉 蓝加平?

第一章


??全国大学生智能汽车竞赛是以基于培训、注重参与、鼓励探索、追求卓越为指导思想,鼓励创新科技竞赛活动,旨在促进高校素质教育,培养大学生综合知识应用能力,倡导理论联系实际、务实的学习风格和团队合作人文精神,为优秀人才创造条件。

??在本次比赛中,节能信标要求模型运行的能源来自无线接收线圈感应电流提供的电能和自制的无线接收系统。我们选择自制车模,使用 PCB车模板的整体骨架采用3D无线充电系统采用恒功率控制方案,采用同步整流技术,Buck 同步整流降压技术,理想的二极管技术,最终实现恒功率控制无线接收系统,实验过程中达到峰值效率 73.6%。

??在车模主控部分,我们采用了英飞凌公司TC212作为控器,212使用总钻风摄像头作为信标位置信息获取的重要传感器。TPS61088 和 TPS63070 稳压电源芯片完成车模的电源管理部分。采用集成电机驱动芯片,提高能量密度,降低能量密度 PCB 面积。

??在这份技术报告中,我们小组通过对小车设计制作整体思路、电路、算法、调试、车辆参数的介绍,详尽地阐述了我们的思想和创意,具体表现在电路的创新设计,以及算法方面的独特想法,而对程序具体参数的调试也让我们付出了艰辛的劳动。

??在准备比赛的过程中,我们的团队成员涉足控制、模式识别、传感技术、汽车电子、电气、计算机、机械等学科。这种训练极大地促进了我们的知识整合和实践能力的培养。这份报告体现了我们的努力和智慧,是我们共同努力的结果。我衷心感谢学校和老师。

第二章 体设计方案


??本章主要简要介绍了智能汽车系统的整体设计理念和各模块的作用。

2.1 总体方案的选择

??根据规则要求,我们在本次比赛中使用自制车模TC212系列芯片用于控制恒功率无线充电和智能汽车运行ADS软件开发在开发环境中进行。

??传感器采用陀螺仪加速度计集成模块 ICM20602年,通信采用闭环控制算法获取相应数据,并通过编码器实时测速 PD 进行差速控制,实现三轮车沿预设路径准确转向,完成速度闭环控制。此外,还增加了五向按钮和显示屏作为输入输出设备的参数调试和信息显示,无线模块传输调试数据。 TC212

▲ 图 2-1 系统框图

2.2 各模块设计

??智能上述总体方案,智能汽车包括无线充电模块、电源模块、主个模块
??模块、
电机驱动模块、传感器模块和人机交互模块。

??1. TC212主控模块:作为整个智能汽车的大脑,根据控制算法采集电感传感器、编码器等传感器信号,做出控制决策,驱动电机完成智能汽车的控制。
??2. 传感器模块:是智能车的“眼睛”,可以通过一定的前瞻性,提前感知前方的赛道信息,为智能车的“大脑”做出决策提供必要的依据和充足的反应时间。
??3. 无线充电模块:通过程序控制实现恒功率充电,为超级电容储能。
??3. 电源模块:为整个系统提供合适而又稳定的电源。
??4. 电机驱动模块:输出主控模块 PWM 信号驱动电机完成智能汽车的加减速控制。
??5. 人机交互模块:主要用于智能汽车系统的参数调试和汽车状态显示。

第三章 模机械系统


??模具的机械结构是整车的基础,它代表了硬件结构的稳定性,影响了汽车的性能,对汽车的性能影响最大。特别是对于自制节能车,既要保证结构的稳定性,又要考虑能耗。因此,在设计整个软件架构和算法之前,必须对整个模型车的机械结构有全面清晰的认识,并在实际调试过程中不断提高结构的稳定性。本章将主要介绍智能模型车的机械结构和调整方案

3.1 选择智能车型

??考虑到能耗问题,我们在自制车型时尽量减轻车身重量,所以使用PCB作为汽车骨架,大量使用3D作为汽车轮毂等连接件的打印件。

3.2 安装摄像头

??对于摄像头的安装,我们采用活扣结构,方便调车时微调摄像头角度,用碳棒辅助固定摄像头,减少抖动。

3.3 安装速度传感器

??我们选择了传统的速度传感器编码器,便于直接安装。当前速度可以通过齿轮与车轮齿轮耦合来读取。

3.4 无线充电线圈和超级电容安装

??无线充电线圈放置在前部,超级电容放置在前部PCB车尾身后。

3.5 整体模型结构

▲ 图 3-1车模展示

3.6 主要技术参数

第四章 线充电接收系统


4.1 选择接收方案

??方案1:恒功率无线接收
??这种方法,在 LC 谐振和整流后,需要恒功率控制,最后连接到超级
电容器的两端。

▲ 图 4-1 恒功率控制

??方案二:LCC网络补偿接收

??为了适应负载的波动,经常使用LCC电路补偿形式。它可以维持负载变化发送线圈中的电流恒定,从而提高了系统的稳定性。此时并不用采用恒功率控制,在LCC网络之后接入整流电路,最后直接输入超级电容两端。

  经过测试和对比,我们发现,方案一虽然电路较为复杂,需要有电路功率检测电路和控制电路,但是它对环境的变化不敏感,不需要考虑线圈放置的位置和高度,其总体效率会比方案二高。

  方案二少了恒功率控制部分的电路,但是它需要很精确地匹配谐振电容、补偿电感和补偿电容。同时线圈放置的位置和高度也影响着接收功率。考虑到理想状态下的接收情况,
  对两种方案进行理论计算,

  采用5节50F超级电容串联,计算得到10V电压所需时间的理论值。对于方案一:𝑊𝑊=𝑃𝑃𝑃𝑃;𝑊𝑊=12𝐶𝐶𝑈𝑈2 接收功率为50W时可得,t=10s。对于方案二:𝑄𝑄=𝐶𝐶𝐶𝐶;𝑄𝑄=𝐼𝐼𝐼𝐼接收电流为5A时,可得,t=20s。综合考虑,采取方案一。

4.2 整流方案选取

  在通过LC谐振得到的发射端的电能后,并不能够直接使用,因为此时谐振得到的是正弦交流电。在正式进行充电前,还需要对该交流电进行整流。

  当使用SK1010二极管进行整流时,无论是全桥整流还是全波整流,二极管都有导通压降,这是整流损耗的主要来源之一。通过对比市面上的同步整流二极管,我们选用东科系列同步整流芯片,该芯片内阻小,耐压值高,可以很好的替代SK1010。即我们采用东科系列同步整流芯片搭建全桥整流电路。

4.3 主控和功率采样

  我们采用TC212作为无线充电接收的主控芯片,采集电压方面,使用最简单的分压电阻电路,同时在整流电路之后,以及单片机的 ADC 引脚旁,加入陶瓷电容进行滤波,降低电源纹波的同时,也降低了 ADC 的采样噪声。

  采集电流方面,使用AD8217芯片,它只需要一个外部的采样电阻,就可以把电流信号转化为电压信号,使用单片机的 ADC 采样,就可得到电流数据。

▲ 图 4-3 电流采集电路

4.4 恒功率电路

  在使用经典的半桥控制电路的基础上,采用双路Buck驱动恒功率充电,降低输出电压的纹波,提高效率。

▲ 图 4-4 Buck 斩波电路

▲ 图 4-5 充电接收PCB3D正面图

▲ 图 4-6 充电接收PCB3D反面图

 

第五章 控主板部分电路


5.1 主控

  我们使用竞赛要求的英飞凌单片机中最节能的一款单片机TC212,能满足多种外设读写需求,也能带动我们所使用的算法。

▲ 图 5-1 TC212

5.2 外设

  我们为我们的车模设计了足够其完成比赛的所有所需的外设,例如陀螺仪、无线串口、OLED显示屏、蜂鸣器以及编码器等。

▲ 图 5-2 主要外设

5.3 电源管理

  在这里先介绍不同电源的特点,电源分为开关电源和线性电源。线性电源利用半导体器件本身的特性调整电压,一般是降压输出。由于是以器件本身消耗能量的方式得到输出,故效率较低,60%以下的转化率很常见,输出功率的线性电源体积一般比开关电源大。纹波很小。开关电源利用电感电容充放电的特性配合场管或者三极管开关,异步传输电压电流,实现电能传输,电路结构不同可以实现升压或降压。转换效率高,高的可达90%以上,但是还是有一定的电路损耗,100%转换效率现在不可实现。但是相对线性电源要节能。转换的开关频率会产生一定纹波。对比我们会发现,开关电源具有效率高、损耗小、既可以降压也可以升压的优点,因此更适用与节能组。

  电源模块的设计对于节能组来说非常重要。由于节能车的电能来自无线电能发射线圈,然后储存于超级电容中,无论是在充电还是放电过程中,系统的输入电压都是宽范围输入的,不是恒定值,因此,一定需要电源芯片将电压升压或降压到恒定值,同时为了能够提高超级电容里电能的使用率,电源模块的转换效率要尽可能的高,输入电压范围要尽可能的宽,最低输入电压尽可能的低。

  经过多方面的筛选, 综合我们的需求,同时为了简化电路设计,尽可能利用电容里的电能,整个系统只使用一路 3.3V 和一路 12V 共两路电源。3.3V 电源使用 TPS63070 升降压芯片,最低输入电压 2V,用于给单片机及所有外设供电。

▲ 图 5-3 TPS63070 应用原理图

  12V 电源使用 TPS61088 升压芯片,其最大输出电流为 13A,最低输入电压
  2.7V,适合给电机供电。同时,在 12V 输入端,并联一个 390uF 的固态电解电容,防止电机启动瞬间掉压严重,影响其他电路。

▲ 图 5-4 TPS61088 应用原理图

5.4 电机驱动

  使用传统的驱动芯片+外置 MOSFET 结构,虽然损耗不高,但是封装很大,非常占面积。而使用集成 MOSFET 的芯片,芯片封装小,能控制瞬间峰值电流,虽然内阻稍高,但使用的空心杯电机电流并不大,收益要大于损耗。

▲ 图 5-5 DRV8871 应用原理图

 

第六章 件系统


  统软件设计分为两大部分:无线充电部分和车模运行部分,下面对这两大部分分别作出说明。

6.1 无线充电

  利用一块 TC212芯片来控制充电过程,通过采集输入电压,输入电流与输出电压三个物理量来观测充电的过程,恒功率控制采用增量式 PI 控制,将给定功率与实际功率的差值作为偏差,输出量为 BUCK 电路的 PWM 占空比。

6.2 车模运行控制

  节能信标小车运动控制的程序可以分为两大类:一是需要精确时间周期执行的,如传感器信号采集、各种运动控制(速度环、转向环),这部分在中断服务程序中实现;另一类不需要精确的执行时间,如 OLED 屏的显示、按键的控制等,放在主程序中完成。这两类任务通过全局变量实现相互通信。

6.2.1 状态机的使用

  随着智能车竞赛元素和任务的多样化,状态机的思想变得尤为重要,它能使你的代码逻辑清晰明了,很容易找到 bug 所在,可拓展性较好。框架写好后,新增的元素只用多加一个状态量和一句 case 语句就好。在正常状态下会有找灯、减速灭灯、灭灯和各种错误状态的判断,使得逻辑严谨清晰。

6.2.2 速度环控制

  速度环控制就是使车模按设定的速度匀速行驶,但是因为车模本身只具有一个执行机构,即两个主控马达,因而就涉及到马达的复用问题,为了保持车模的三轮速度,速度环控制则采用大约 5ms 一个周期,这样的方法就可以使速度即可控。速度控制中采取的也是经典的 PI 控制,通过编码器测定小车速度,然后与设定速度比较产生误差,在误差的基础上进行 PI 运算。而对于三轮车来说,速度的改变是由当前状态决定,所以我们将速度环运算得到的结果平滑限幅处理之后直接速度环的控制直接输出给电机,对于小车姿态的控制有利。

6.2.3 转向环控制

  转向环控制是确保小车能正确沿着赛道运行的关键,将摄像头采集的数据处理后获得的偏差作为转向环控制的误差,采用 PD 控制器实现转向闭环控制。车模本身具有很大的转动惯量,在转向过程中会出现车模转向过冲现象,微分控制能很好的消除车模在方向控制中的过冲。同时我们的微分控制量也使用转向轴角速度量,结合了基于误差和误差变化率的模糊 PD 控制,使得转向更加顺滑。

▲ 图6-1典型的模糊控制框图

  这里我们参考当前误差和误差变化量,得到不同的转向环 P 值,对转向环进行控制。代码如下:
  New_dir = Offset.LocOffset;

  D_dir = Offset.LocOffset-Offset.OffsetData[2]; if(D_dir100 > 10)
  D_dir = 0.1;
  else if(D_dir
100 + 10 < 0)
  D_dir = -0.1;
  Dp = Fuzzy_Update(&Direct_P0,New_dir100,D_dir100);//得到模糊 P 值 DirectPOut = Offset.LocOffset*Dp;
  DirectD = Dp *D_Ratio;
  DirectDOut = DirectD D_dir - 3GYRO_Real.Z; Direct_Parameter = DirectPOut + DirectDOut;

  对于三轮小车,转向是由两轮差速实现的,所以转向环的输出应该是两轮需要的差速。直接将转向环输出量叠加到左右电机输出上即可,代码如下:

  Motor.PWM_OUTL = Theory_Duty - Direct_Parameter; Motor.PWM_OUTR = Theory_Duty + Direct_Parameter;

6.2.4 信标寻灯策略

  通过摄像头回传的图像,根据亮起的位置确定信标灯的位置。通过计算位 置与重心的距离,计算俩轮差速的偏差量,以此寻找信标灯。若回传图像中没 有亮起的信标图,则认定为丢图现象,控制小车转圈寻灯,直到图像中出现信 标灯的图像。
  代码如下:

void Seek_Beacon (void) 
{ 
         
  uint8 tm=0; 
  uint8 nr=0; //行 
  uint8 nc=0; //列 
   
  dotcnt=0; 
  for (nr = 1; nr < LCDH - 1; nr++) 
  { 
         
    for (nc = 1; nc < LCDW - 1; nc++) 
    { 
         
      // 188*120分辨率下,有两个连续白点,则认为是可能的信标灯 
      if ((Bin_Image[nr - 1][nc] + Bin_Image[nr + 1][nc] + Bin_Image[nr][nc + 1] + Bin_Image[nr][nc - 1] > 1)) 
      { 
         
          dothang[dotcnt]=nr;     // 记录所有的白点水平方向方位,也就是左右偏差 
          dotlie[dotcnt++]=nc;    // 记录所有的白点水垂直向方位,也就是远近 
      } 
    } 
  } 
  if(dotcnt) // 发现有白斑 
  { 
         
      sumlie=0,sumhang=0;         // 清除上次的结果 
      for(tm=0;tm<dotcnt;tm++) 
      { 
         
          sumlie+=dotlie[tm];     // 所有白点左右偏差值求和 
          sumhang+=dothang[tm];   // 所有白点上下偏差值求和 
      } 
      sumlie =sumlie/dotcnt;      // 灯的左右中心点 
      sumhang=sumhang/dotcnt;     // 灯的远近中心点 
  } 
  return; 
} 
 

6.2.5 能量管理策略

  本届竞赛节能信标组的比赛要求,车模所有能量均来源于无线发射装置,这就要求车模必须统筹速度和能耗两个因素。相对于其他组别而言,速度不再占主导地位。车模在运行过程中电机耗能占总能耗的主导地位,我们控制设定速度的变化率,尽可能减少速度调节带来的能量消耗,同时对小车的转向环控制参数不断改进,避免车模在转向过程中的抖动,一定程度上减少了能耗。针对车模能耗方面,程序方面有所作为的可能并不多,其应主要从车模重量、车模形状以及硬件简易程度来大幅度降低车模能耗。

 

第七章 发工具与系统调试


7.1 调试工具介绍

7.1.1 OLED 介绍

  为了方便调试,我们特意给我们的小车装了一块液晶 OLED 屏和五向开关,在液晶上可以显示一些重要的数据比如电磁识别参数、速度档选择、PID 控制参数、方案选择、调试选择等等,使得小车在静态观察和动态选择跑的方式上非常便利,如图 7-1 所示,按键的控制,配合液晶我们就可以现场调节任何一个参数,而不必每次通过下载修改代码来调节参数。这个模块相较于拨码开关灵活性强,可修改的参数多范围也更大。

▲ 图 7-1 OLED 界面图

7.1.2 无线串口模块介绍

  为了能得到小车的动态参数,我们利用无线串口模块实时发送数据,并通过上位机来分析数据,使我们更加准确的观察数据变化,从而找到参数整定的一般规律。

7.1.3 虚拟示波器介绍

  虚拟示波器是一个比较简洁、好用的上位机,我们可以将无线串口传回来的数据显示在虚拟示波器上,更直观的观察数据变化,方便对赛道元素的电感值特征的寻找,如图 7-2 所示。

▲ 图 7-2 虚拟示波器界面

7.1.4 在线仿真调试

  英飞凌 系列可支持在线仿真调试,在ADS安装路径安装对应版本仿真驱动后选择对应芯片型号即可进行在线仿真,在线仿真调试可支持代码单步运行、变量信息查看和断点调试等,极大方便了对于程序 Bug 的查找和纠正。

▲ 图 7-3 在线仿真界面

7.2 调试方法介绍

7.2.1 速度环调试

  对于电机速度调节我们首先取了一个大概的估计值 I,然后 P 取为零,观察,如果出现来回的振荡则说明 I 比较小,可以扩大 I 直到能够单独靠 I 就可以保持稳定速度一小段时间,然后开始振动此时说明 I 基本上进入参数范围了。开始加 P 把振动消去。此时 PI 均进入了范围。PI参数的进一步调整。在刚刚的基础上面观察抗干扰能力,给他一个外力,如果恢复设定速度的时间过长,说明I不够大,需要继续加I,反之,则是稳定PI参数。

7.2.2 转向环调试方法

  基本的思路是不断增加 P,出现能快速恢复为止。如果出现过冲现象则需要增加 D 来消除。但是这个只是大概的,更细的工作需要在车模运行过程中来具体观察,以具体情况来解决问题。可以借助无线串口模块来辅助调节。

 

第八章


  学三年一晃而过,三年里参加很多的学术科技竞赛,依托于学校的实验室,参与了很多的创新训练项目,学到了很多的专业知识,为自己的发展打下了良好的基础。在大学里面的历练是我们人生中很重要的一个过程,我们学习到了很多之前没有过的科学知识。对自己的学习能力也进一步提升了,我们自己的学习能力也在不断加强。在整个车模的设计过程中,我们遇到了许多困难,也解决了许多困难。最终,经过了半年的忙碌,我们成功完赛了。

  在车模的制作过程中,我们的小车经常出现一系列问题。由于阳光原因经常冲出赛道;TPS61088经常烧毁,导致主板出现一系列问题;由于是自制车模,经常出现器件在调试过程中出现掉落现象。在一次又一次的改进中,我们的车模日益完善。

  在这份技术报告中,我们体现了以下方面。在电路方面,我们以模块形式分类,在最小系统、主板、电机驱动等模块分别设计,经过不断实验,最后决定了我们最终的电路图。在程序方面,我们使用C 语言编程,利用比赛推荐的开发工具调试程序,经过小组成员不断讨论、改进,终于设计出一套比较通用稳定的程序。在这套算法中,我们结合路况调整车速,做到直道加速、弯道减速,保证在最短时间内跑完全程。

  比赛无极限,追求无止境。在已经取得的调试结果之上,我们仔细观察,认真思考,对于发现的问题,逐步完善控制方案,突破现有观念的限制,寻求更先进更完美的方案,在比赛规定的技术范围之内,追求卓越。在不断地改进与实验中,收获的不仅是最终的比赛成绩,而且还有自己动手的能力和勇于探索的精神。

 

考文献


[1]卓晴,黄开胜,邵贝贝.学做智能车:挑战“飞思卡尔”杯[M].北京:北京航空航天大出版社,2007.3.
[2] 卓晴.如何把大象装进冰箱[J/OL].
  https://blog.csdn.net/zhuoqingjoking97298/article/details/104120669, 2020-1-31.
[3]谢丹妮. 信标智能车运动控制设计与实现[D].湖南大学,2017.
[4]刘喜声. 同步整流在无线电能传输系统中的运用[D].上海交通大学,2015.
[5]陈宁宁.试论同步整流在电动汽车无线充电中的运用[J].科技视界,2017(08):168.
[6]刘东星,吴金波,吕思杨.基于 LTC4359 理想二极管的冗余供电电路设计[J].信息通信,2019(04):51-53.
[7] 贺军巍集成多传感器的智能车设计与编队控制,哈尔滨,哈尔滨工程大学,2018
[8] 张坤,赵韩.基于参数调节的SS补偿电动汽车无线充电系统
[9] 邓钧君,用于电动汽车的车载充电机高效率谐振变换器研究
[10]刘树林,刘健,寇蕾,钟久明.Buck DC/DC 变换器的输出纹波电压分析及其应用[J].电工技术学报,2007(02):91-97.
[11]开关电源设计 第 2 版[M].电子工业出版社,2005:469.

■ 附录A 核心代码

int core1_main (void) 
{ 
         
 
  // 开启CPU总中断 
  IfxCpu_enableInterrupts(); 
   
  // 关闭看门狗 
  IfxScuWdt_disableCpuWatchdog (IfxScuWdt_getCpuWatchdogPassword ()); 
   
  // 等待CPU0 初始化完成 
  while(!IfxCpu_acquireMutex(&mutexCpu0InitIsOk)); 
   
  PIN_InitConfig(BEEPp, PIN_MODE_OUTPUT, 1); // 蜂鸣器初始化,响起 
  //电感及电池电压 ADC采集初始化 
  ADC_InitConfig(ADC7, 10000);//初始化   
  ADC_InitConfig(ADC0, 10000);//初始化    
  mutexCpu0TFTIsOk=1;         // CPU1: 0占用/1释放 TFT 
  // 电机,编码器初始化 
  MotorInit();    // 电机 
  EncInit();      // 编码器 
  // 摄像头初始化 
  CAMERA_Init(50); 
  // 定时器初始化,原始中断函数在CCU6.C中 */ 
  CCU6_InitConfig(CCU61, CCU6_Channel0, 50000);// 50ms 
  MotorCtrl(0,0);       // 关闭电机,开始充电 
  PIN_Write(BEEPp,0);   // 蜂鸣器关闭,开始确认是否需要充电 
  while(batvoltage<800)// 充电没有达到10V以上,则等待充电 
  { 
         
      // 无线充电接收电压检测,确认是否可以进入充电状态 
      chargevoltage= ADC_ReadAverage(ADC0,50) * 22 / 25;    // x/4095*3.3*100*11 
      // 电池电压检测 
      batvoltage= ADC_ReadAverage(ADC7,50) * 11 / 25;       // x/4095*3.3*100*5.7 
      if(KEY_Read(KEY1)==0) 
          break; 
  } 
  batchargeflg=0; 
  while(1)//主循环 
  { 
         
    LED_Ctrl(LED1, RVS);     // LED闪烁 指示程序运行状态 
    if (Camera_Flag == 2)    // 20ms检测一次,灯闪是100ms 
    { 
         
      Camera_Flag = 0;       // 清除摄像头采集完成标志位  如果不清除,则不会再次采集数据 
      Get_Use_Image();       // 取出赛道及显示所需图像数据 
      Get_Bin_Image(1);      // 转换为01格式数据,01原图;23边沿提取 
      Seek_Beacon();         // 通过边沿提取找到灯的重心点 
      if(dotcnt) // 发现有白斑 
      { 
         
          //beaconFlashCnt=0;  // 闪烁检测,2021取消 
          // 电机PWM,如果灯在左侧,则小车左电机为低速,右电机为高速,小车左转弯;反之则相反。 
          MotorDuty1 = MtTargetDuty + ECPULSE1 * 2 - (sumlie-93)* 40; 
          MotorDuty2 = MtTargetDuty - ECPULSE2 * 2 + (sumlie-93)* 40;// 双电机 
          if(MotorDuty1>ATOM_PWM_MAX) MotorDuty1 =  ATOM_PWM_MAX;    // 限幅 
          if(MotorDuty2>ATOM_PWM_MAX) MotorDuty2 =  ATOM_PWM_MAX;    // 限幅 
      } 
      else // 没有发现有白斑 
      { 
         
          //beaconFlashCnt++;                    // 每次(20ms)没有发现灯则加12021取消闪烁检测 
          //if(beaconFlashCnt>5)                 // 五次以上6*20=120ms没有发现灯,避开闪烁灭灯时间,则全速原地打转 
          { 
         
              MotorDuty1 =  ATOM_PWM_MAX;      // 电机PWM 
              MotorDuty2 = -ATOM_PWM_MAX;      // 双电机全速原地打转,寻找信标灯方位 
          } 
      } 
       
      MotorCtrl(MotorDuty1, MotorDuty2);       // 四轮电机驱动 
    } 
    // 检查电压 
    // 无线充电接收电压检测,确认是否可以进入充电状态 
    chargevoltage= ADC_ReadAverage(ADC0,50) * 22 / 25;    // x/4095*3.3*100*11 
    // 电池电压检测 
    batvoltage= ADC_ReadAverage(ADC7,50) * 11 / 25;       // x/4095*3.3*100*5.7 
 
    // 补充电操作 
    if((batvoltage<650)&&(chargevoltage>400))  // 电池电压低于6.5V且充电电压大约6.55V,则开始补充电 
    { 
         
        batchargeflg=1;                        // 开始充电标志置1 
        MotorCtrl(0,0);                        // 关闭电机,开始充电 
        while((batvoltage<850)&&(chargevoltage>400))             // 充电没有达到8V以上,则等待充电 
        { 
         
           // 无线充电接收电压检测,确认是否可以进入充电状态 
           chargevoltage= ADC_ReadAverage(ADC0,50) * 22 / 25;    // x/4095*3.3*100*11 
           // 电池电压检测 
           batvoltage= ADC_ReadAverage(ADC7,50) * 11 / 25;       // x/4095*3.3*100*5.7 
           PIN_Reverse(BEEPp);                 // 蜂鸣器提示充电 
           delayms(10); 
        } 
        PIN_Write(BEEPp,0);                    // 补电结束,蜂鸣器关闭 
        batchargeflg=0;                        // 充电结束标志清零 
    } 
  } 
} 
 


● 相关图表链接:

  • 图 2-1 系统框图
  • 图 3-1车模展示
  • 图 4-1 恒功率控制
  • 图 4-3 电流采集电路
  • 图 4-4 Buck 斩波电路
  • 图 4-5 充电接收PCB3D正面图
  • 图 4-6 充电接收PCB3D反面图
  • 图 5-1 TC212
  • 图 5-2 主要外设
  • 图 5-3 TPS63070 应用原理图
  • 图 5-4 TPS61088 应用原理图
  • 图 5-5 DRV8871 应用原理图
  • 图6-1典型的模糊控制框图
  • 图 7-1 OLED 界面图
  • 图 7-2 虚拟示波器界面
  • 图 7-3 在线仿真界面
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章