无线充电组别国一队:浙江工业大学

article/2025/9/23 3:22:42

一、前言

  大家好,我们是来自浙江工业大学智能车无线充电组鸿泉RUSH队。很荣幸受到达尔闻和英飞凌的邀请,分享我们的作品。

  我是雷双铭,我在队伍中主要负责图像处理和控制部分;
  我是王景可,主要负责控制和机械结构部分;
  我是林永权,主要负责硬件部分;

▲ 图1.1 参赛队伍队员

▲ 图1.1 参赛队伍队员

  作为无线充电组别,节能非常重要,因此为了尽量减轻车身重量,使得充一次电可以跑得更快更远,我们将主控和驱动集成在一起形成了一体板。并且我们在机械结构上也做出了不少的改变。

二、LED灯板演示

  大家看一下,这里是我们的LED灯板,总共有15个LED灯。由于选用的超级电容最大电压仅有12V,所以我们仅对于12个LED灯进行控制,即从右到左亮灯的个数等于电容的电压。

▲ 图2.1 车模上12个LED灯

▲ 图2.1 车模上12个LED灯

  去带动这些LED的是英飞凌的LED驱动芯片,TLD2331-3EP,它是一颗集成了三通道LED控制芯片,每个通道最大电流可达80mA,输出电流可设定,简单来说可以作为一个恒流源来驱动LED灯。且拥有故障保护和过载保护。

  TLD2331的三个控制端口L1,L2,L3,连接了电阻R2,R3,R5。 当低电平时有电流输出,所以将它们连接到单片机引脚,DJMP及控制输出低电平,TLD2331有电流输出。TLD2331这三个通道通过设置R2,R3,R5的阻值,可以输出不同的电流,达到各自控制的效果。

▲ 图2.2 LED控制电路图

▲ 图2.2 LED控制电路图

  从英飞凌的官网上,我们知道TLD2331 LED驱动芯片是属于英飞凌LITIX Basic+LED驱动器系列。是可以直接做汽车电池高压线性LED驱动。 Basic+这个系列包含1到3通道,可以组合设计内置PWM调光,据说精度能达到2%,业界领先的水平,并且还可以进行诊断故障处理。这些功能我们这次没有用到。希望有机会可以体验一下。总之,LITIX Basic+ 系列器件的功能是非常强大的,除了汽车照明,还有很工业场合能用到。

▲ 图2.3 TLD2331芯片功能

▲ 图2.3 TLD2331芯片功能

三、英飞凌器件介绍

  接下来给大家分享一下我们作品中用到的英飞凌器件。优先介绍一下爱我们使用的主控芯片 TC264DA。 TC264芯片是由英飞凌公司研发的一款高性能、低功耗的微控制器。核心架构基于两个独立的32位TriCore CPU,芯片配备ARM Cortex-M4 内核,单核主频高达200MHz,容量高至2.5MB的ROM以及240KB的RAM,并且都带有ECC,专为满足极高的安全标准,同时大幅提高性能额设计。

▲ 图3.1 控制CPU型号

▲ 图3.1 控制CPU型号

  我们使用了芯片自带的Flash,来进行参数的调整和存储,使用SPI总线将图像存入SD卡中,利用DMA实现摄像头图像采集,利用GTM实现PWM控制电机,以及用到了多个IO口和ADC等模块。

  然后对于恒功率充电的MOS管,我们用到了IRLR3410,该MOS管的漏极电压高达100V,漏极电流可以达到17A,导通电阻进位0.1欧姆,阈值电压进位2V。

▲ 图3.2 电机驱动

▲ 图3.2 电机驱动

  对于电机驱动芯片,我们用了IR2104,运用两片IR2104s型半桥驱动芯片,能够组成完好的直流电机H桥驱动电路,而且IR2104s功能完善,不易损坏。

四、硬件结构介绍

  在硬件部分的无线充电接收方面,我们参考了博特开源的恒功率充电方案,并在他的基础上做了更细致的优化。

  首先是电感线圈的绕制,我们希望实现接收电路有最大的接收功率,无线充电接收高接收线圈和谐振电容串联谐振,为了能让线圈与电容更加匹配充电频率,我们按照计算的电感值绕制了充电线圈。在绕制电感时,我们将误差控制在了0.5微亨以内,以确保接收效率尽可能高。对于绕制的线圈大小,则是配合了车模底盘大小,发射线圈大小与检测板位置进行了相应设计。

▲ 图4.1 无线电能接收线圈

▲ 图4.1 无线电能接收线圈

  机械结构方面,小车的论据、重心和重量的分布对于节能至关重要。我们将编码器齿轮位置做出了调整,使其传动更加顺滑。将主板和充电板的位置往后和往下放,使得小车的重心尽量向后。同时为了达到更好的省电效果,我们还利用配重块进行了重心检测,最终将重心确定在了一个合适的位置。之后将主板,充电板,TFmini编码器等位置进行了修正。

▲ 图4.2 车模机械结构

▲ 图4.2 车模机械结构

  另外我们还用到了 TFmini模块测距,进行坡道的辅助检测。对于车模选择方面,起初我们使用了实验室常见的F车作为比赛车模,但调试到最后发现,F车因为重和轮距最短的原因比较不节能,因此在省赛前十多天,我梦刚染的G车模,最后发现在相同速度下,G车跑的距离比F车远了几乎一倍。

  此外在调试无线充电的过程中,还要不断完善充电方案,以避免炸板的情况发生。

▲ 图4.3 车模上的传感器

▲ 图4.3 车模上的传感器

  同时对于通电影响很重要的则是接收线圈和发射线圈之间的位置,那么如何将车稳稳的停在充点点是很重要的一点。我们的停车方案使用的一个检测板进行定位,这个检测板我们对他的灵敏度进行了调整,并且它在线圈的边缘有着特殊的电压变化。根据不同的变化作为停车的多个状态,即可稳稳的使车停住。

五、软件部分

  在软件部分我们同时使用了TC264的两个CPU,由于CPU0相交于CPU1性能偏弱,所以我们仅仅将它用于恒功率充电控制和检测充电点,以及灯板显示电压。而性能较强的CPU1我们则将它用于,图像处理、电气控制和人机交互。

▲ 图5.1 CPU中的两个处理核

▲ 图5.1 CPU中的两个处理核

  此外如何使小车在短时间内完成比赛,充电点的选择也释放重要的。我们的方案是对赛道进行记忆并智能选取,在赛道上第一次发车时,我会设定一个较低的速度,是小车在循迹过程中记录每一个充点电的位置,和到达充点电视的能量损失,这样在后续发车时即可根据记录的赛道数据来选择合适的补电位置。且可以根据赛道数据进行速度规划,是小车快速的完赛。

▲ 图5.2 车模上的人机交互部分

▲ 图5.2 车模上的人机交互部分

  除此之外,充电的速度也是很重要的,首先是充电方案的选择。我没蓝N鉶多个方案的对比后,选择了可调性高的恒功率充电。我们参考了博特开源的充电方案与卓晴老师发的几篇关于充电的文章。设计了较为合理的前馈控制加PID控制。 在PID控制方面,我们尝试了各种PID,例如变积分、一般位置式、积分分离等。最终经过测试,在积分分离PID下跳出的参数得到的充电曲线。其中包括采集到的电容电压、充电电流、谐振电压、充电时间、充电功率等在时间轴上的曲线更为理想。所以我们最终选择了前馈能量公式加变积分PID控制的恒功率充电过程。

▲ 图5.3 充电过程中的PID控制

▲ 图5.3 充电过程中的PID控制

  通过调节Kp,Ki,Kd实现了较为理想充电控制。

  接下来如何在软件上使小车节能也是很繁琐要的。我们队电机控制是速度环与方向环的并级控制。对于速度环,我们将其调整为缓慢的达到目标速度。且对其积分作用进行限幅,而转向环则是很快地达到目标速度,这样可以使得小车在运行过程中会随着典雅的下降有着不同的速度。经过测试发现这样可以很好的节能。

▲ 图5.4 停在赛道上充电

▲ 图5.4 停在赛道上充电

  最后是图像处理。在单片机采集图像信号后需要对其进行处理,以提取主要的赛道信息,同时由于十字弯、起点线等赛道元素的存在,以及光线远处图像不清晰灯的干扰,都会是采集所得到的图像效果大打折扣,因此在软件上必须做到排除染扰因素,对赛道进行有效识别,并尽可能提供多的赛道信息供决策使用。

▲ 图5.5 赛道中的坡道

▲ 图5.5 赛道中的坡道

  在图像信号处理中我们提出的赛道信号主要包括:赛道两侧边沿点位置,赛道边沿点附近的原始像素、赛道类型。由于摄像头自身的特性,图像会产生梯形变形以及桶形失真,尤其是在摄像头的上下左右各个角落处,桶形失真和梯形失真会有叠加。导致图像畸变更加严重。因此在数据采集时只选择采集半幅图像,也就是中心上下附近的图像,这样采集所得到图像几乎不存在桶形失真。

▲ 图5.6 摄像头采集到图像失真

▲ 图5.6 摄像头采集到图像失真

六、结束语

  智能车竞赛作为教育部倡导的大学生科技A类竞赛之一,同时也是中国高等教育学会列为的含金量最高的大学生竞赛之一,所以选择智能车竞赛作为培养大学生的创新意识、实践能力和团队协作能力是一个非常好的选择。

  在智能车竞赛中, 我们可以获得很多的专业知识和算法思想,但这些都需要我们花费时间去慢慢学习和体会,所以智能车竞赛,并不是一个可以一蹴而就的比赛。应以完成智能车各组别相应的任务为目标,在这个过程中,最重要的是个人的坚持与态度,无关技术和能力。有响应的时间付出,就能有相应的回报。

▲ 图6.1 比赛现场

▲ 图6.1 比赛现场

  在做智能车竞赛的过程中,我们还要大胆实践自己的想法,不要害怕结果的好与坏,毕竟既然做了竞赛,就应该有一个敢于创新、敢于实践的精神,去深入竞赛的过程。这样才可以在竞赛中有更多的收获。最后智能车作为一个团队竞赛,队员间应该相互合作、分工明确,一起向着目标前进。


● 相关图表链接:

  • 图1.1 参赛队伍队员
  • 图2.1 车模上12个LED灯
  • 图2.2 LED控制电路图
  • 图2.3 TLD2331芯片功能
  • 图3.1 控制CPU型号
  • 图3.2 电机驱动
  • 图4.1 无线电能接收线圈
  • 图4.2 车模机械结构
  • 图4.3 车模上的传感器
  • 图5.1 CPU中的两个处理核
  • 图5.2 车模上的人机交互部分
  • 图5.3 充电过程中的PID控制
  • 图5.4 停在赛道上充电
  • 图5.5 赛道中的坡道
  • 图5.6 摄像头采集到图像失真
  • 图6.1 比赛现场

http://chatgpt.dhexx.cn/article/mNRes8ZL.shtml

相关文章

第十七届全国大学智能汽车竞赛竞速比赛规则

(版本:2022-6-21) 00 规则导读 参加过往届比赛的队员可以通过下面内容了解第十七届竞赛规则主要变化。如果第一次参加比赛,建议对于本文进行全文阅读。 竞速比赛共分为九个组别,每个组别在比赛环境、比赛任务、单片机平…

【c语言】矩阵乘法

【c语言】矩阵乘法 1.N*N矩阵 A[N][N]*B[N][N]C[N][N] #include<stdio.h> #define N 2 int main() {int A[N][N] {}, B[N][N] {}, C[N][N] {};printf_s("请输入矩阵A&#xff1a;\n");int i, j;for (i 0; i < N; i) {for (j 0; j < N; j) {scanf_…

C语言求矩阵的逆(伴随法)

之前介绍了C语言用代数余子式求行列式 本次开始介绍如何用公式法对矩阵求逆&#xff0c;并用C语言将其实现。 之前程序有点小bug&#xff0c;已于2022年11月29日修改。 更新&#xff1a; 伴随法只适合求低阶矩阵的逆&#xff0c;对于相对高阶&#xff08;20维以上&#xff09;对…

C语言 矩阵乘法

Description 给出m * n阶矩阵A&#xff0c;乘以n * p阶的矩阵B&#xff0c;得到一个m*p阶的矩阵C。矩阵乘法定义如下图所示。 Input 输入分为两部分&#xff1a;第一部分是三个整数m、n和p&#xff1b;后面为两个矩阵&#xff0c;分别是mn阶矩阵A和np阶矩阵B。m、n和p都不会超…

C语言矩阵库------Matrix

欢迎使用Matrix Matrix目前能实现矩阵的基本功能,例如:方阵行列式求解,矩阵的线性运算和矩阵相乘,矩阵求逆等等. 我会持续更新此库,需要的朋友可以进行下载。 V1.1版本10阶矩阵的行列式和逆矩阵求解对齐了matlab的精度&#xff0c;但是速度较慢。谨慎使用于高阶矩阵运算。 链…

使用C语言实现矩阵转置(稀疏矩阵)

目录 1.转置矩阵&#xff08;普通矩阵&#xff09; 2.转置矩阵&#xff08;稀疏矩阵&#xff09; &#xff08;1&#xff09;稀疏矩阵 &#xff08;2&#xff09;稀疏矩阵的压缩存储方式 &#xff08;3&#xff09;理论运算方法 1.转置矩阵&#xff08;普通矩阵&#xff0…

c语言矩阵

思路&#xff1a;开辟一个新的同样规格的矩阵b&#xff0c;并将其全部置1. 遍历矩阵a(原矩阵)&#xff0c;发现有0的就在b的此行此列中插入0 // // main.c // test // // Created by 神威 on 2018/9/11. // Copyright © 2018年 神威. All rights reserved. // #incl…

C语言-矩阵转置

描述 KiKi有一个矩阵&#xff0c;他想知道转置后的矩阵&#xff08;将矩阵的行列互换得到的新矩阵称为转置矩阵&#xff09;&#xff0c;请编程帮他解答。 输入描述&#xff1a; 第一行包含两个整数n和m&#xff0c;表示一个矩阵包含n行m列&#xff0c;用空格分隔。 (1≤n≤…

C语言对矩阵进行转置

对矩阵进行转置最重要的是值的交换&#xff0c;这里用到了二重数组 #include <stdio.h> #include <stdlib.h>int main() {int a[3][3]{1,2,3,4,5,6,7,8,9};//初始化一个矩阵出来int b[3][3]{0};for(int i0;i<2;i){for(int k0;k<2;k){b[k][i]a[i][k];//对矩…

C语言 - 矩阵转置

C语言 - 矩阵转置 输入NM的矩阵&#xff0c;输出它的转置矩阵。 Input 第一行为整数N&#xff0c;M&#xff08;1≤N&#xff0c;M≤100&#xff09;。 接着是一个NM的矩阵。 Output 转置矩阵。 Example Input 2 3 1 2 3 4 5 6 Example Output 1 4 2 5 3 6#include&l…

(C语言)求矩阵各行元素之和

本题来自pintia.cn 题目要求代码测试结果图PTA测试结果 题目要求 本题要求编写程序&#xff0c;求一个给定的mn矩阵各行元素之和。 输入格式&#xff1a; 输入第一行给出两个正整数m和n&#xff08;1≤m,n≤6&#xff09;。随后m行&#xff0c;每行给出n个整数&#xff0c;其间…

编写矩阵运算程序(C语言)

编写矩阵运算程序之C语言 1. 要求2 代码 1. 要求 a) 功能包括&#xff1a;矩阵加、矩阵减、矩阵乘、矩阵三角化 b) 实现方式1&#xff1a;函数的参数为&#xff1a;二维数组名、行数、列数 2 代码 #include<stdio.h> #define M 20 #define N 20 float A[M][N]; float…

C语言——矩阵转置

矩阵转置的原理&#xff1a;行元素变成列元素&#xff0c;列元素变成行元素 例如&#xff1a; 矩阵转置代码 #include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<math.h>//矩阵转置 double** Matrix_T(double** arr) {if(arrNULL)e…

C语言实现矩阵的乘法

矩阵乘法作为算法题我觉得对我来说是比较难想的&#xff0c;而且作为没学线性代数的我来说&#xff0c;这简直就是场灾难&#xff0c;在我研究了书上及网上的有关资料后&#xff0c;我觉得自己应该差不多可以理解矩阵乘法的要领了&#xff0c;希望可以帮助大家&#xff1a;其实…

C语言矩阵运算

矩阵的乘法&#xff1a; 矩阵的列数&#xff08;column&#xff09;和第二个矩阵的行数&#xff08;row&#xff09;相同时 #include<stdio.h>int main() { int a[2][4], b[4][3], c[2][3];int i, j, k, sum; printf("输入一个24的矩阵&#xff1a;\n"); fo…

c语言矩阵的乘法

矩阵的乘法&#xff1a; 两个矩阵只有在第一个矩阵的列数&#xff08;column&#xff09;和第二个矩阵的行数&#xff08;row&#xff09;相同时才有意义。一般单指矩阵乘积时&#xff0c;指的便是一般矩阵乘积。一个mn的矩阵就是mn个数排成m行n列的一个数阵。 运算规则&#x…

C语言刷题小结---矩阵篇

电影黑客帝国有很多这样的场景 用矩阵表示我们看到的一切&#xff01; 而在编程中矩阵是用数组来表示的 目前小作者还只是学习编程的初学者&#xff0c;很多知识内容都还没有学习。但相信每一个学习编程的小伙伴在做C语言方面的练习时都会遇到有关矩阵相关的题目&#xff0c;…

《C语言》矩阵问题

一.矩阵乘法 1.定理&#xff1a; 两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如A是mn矩阵和B是np矩阵&#xff0c;它们的乘积C是一个mp矩阵。 例如&#xff1a; 2.思路 1. i&#xff0c;j分别代表行和列&#xff0c;所以应该定义一个二维矩阵&…

C语言矩阵乘法

本篇内容 1&#xff09;首先介绍了矩阵乘法的基本原理&#xff1b; 2&#xff09;然后介绍了相对初阶的C语言乘法代码设计&#xff1b; 3&#xff09;最后根据C语言动态内存规划&#xff0c;提出了更加便捷、优化的代码设计&#xff0c;希望能给大家带来帮助。 更新&#xff1a…

c语言之矩阵

矩阵作为线性代数核心内容之一也是刷题人时常会遇到的一种类型。本篇博客简单介绍一下矩阵转置、上三角矩阵以及杨氏矩阵。 1.转置矩阵&#xff1a;输入m行n列的矩阵以n行m列的方式打印出来。只要将数组的行列进行交换即可&#xff0c;并不难想也不难写.&#xff08;相应练习&a…