学做智能车--电磁探究篇
本文将系统阐述如何做好电磁车前期的硬件与软件准备工作
硬件部分
认识电感
工字电感
感应赛道交变磁场,产生感应电动势,后续电路通过对感应电动势进行一些列的选频、放大、检波,得到稳定信号并输入到单片机对赛道信息进行识别,对电机发出加减速、舵机直行拐弯的指令。
电感是电磁车的眼睛,赛道中漆包线流过的微弱的电流与电感产生电磁感应,产生的感应电流经过运放放大,最后传给单片机的AD采集口,即可获取赛道信息。
电感分布探究
基本的分布认知
电感水平左右放置,漆包线与电感垂直的时候产生的感应电流最大,在赛道上 从左至右移动电感,电感上面感应电流应该是先逐渐变大,再逐渐变小。
电感安装时要注意相邻两个电感切忌安装过近,至少要有两厘米的距离,否则会产生互感现象,具体现象就是过十字的时候车身会产生振动,严重的会导致十字直接冲出赛道。
深入的探究分布
电感排布方案是制约电磁智能车竞赛成绩的关键因素之一,下面我们就深入地探究下,如何确定一个好的电感排布方案。
一.双水平电感排布方案
如上图,这种双电感平行排布的方案是电磁车结合赛道采用的电感排布的最基本的方案,此方案也可以使得电磁车简单地循迹,但效果并不太理想。
当小车如上图,将水平两端电感对称放置时,此时小车也应该处于赛道电磁线中心位置,左右两边电感正常情况下应相差不大,即差不多相等。即在直道行驶时可以保持良好的采集数据获取,通过计算分析两端电感数值,就可以判断出小车与赛道中心线的偏离方向及偏差量,从而做出相应的方向控制。
但双电感排布也有弊端,如在弯道情况下,不能很好地采集到数据,没有办法精确地计算出偏差量,只能大致从数值中推测出小车的偏移方向。
如上图,水平电感并没有跟赛道上的电磁线有很好的角度(粗色指赛道电磁线)
二.八字形电感排布方案
八字形电感排布同样也可以跟双水平电感一样,在直道行驶时保持良好的采集数据获取,通过计算分析两端电感数值,判断出小车与赛道中心线的偏离方向及偏差量,从而做出相应的方向控制
并且在弯道情况下,与赛道电磁线呈很好的角度,获取赛道信息更精确。
但是前面说到,双水平电感在直道行驶有很好的优势,在这里八字形电感恰好在弯道行驶有很好的优势,不如把两者结合起来排布,使得电磁车在赛道上获取的信息更准确更充分,这就衍生出了第三种方案。
三.双T形电感排布方案
这种方案结合了两者优点,能够充分捕捉赛道上信息,通过采集每个电感的数值,加以合理处理,便可以解算出电磁车所在的赛道位置,能够很好的控制电磁车在赛道上行驶。
除了上图所示排布方案,也可以使用下图的排布,道理皆一样。
验证理想结果
认知了电感的作用,知道了电感如何排布,下面我们就要做最后的硬件方面的测试,看是否呈现理想结果。
首先前提: 1.有设计好的运放板 2.电感排布按上述策略对称排布好 3.调用库函数,学会ADC采集
这里主要简略讲下,如何判断理想结果:
粗糙地操作方法就是,用显示屏显示出每个电感的采集数值,将小车放置赛道电磁线中间,左右匀速摆动小车,观察数值是否呈规律变化,有无大的跳变,如果呈均匀变化趋势,则粗略判断可以稳定地采集数据
更加直观地方法就是,采用上位机(下图所用上位机为山外上位机),将每个电感的采集数值通过蓝牙传输到上位机上,采用波形显示观察,观察波形是否平滑,是否上下对称。(具体操作如上所讲)
这里上位机显示的电感为何如此之小?这里是我将采集到的电感数值做了归一化处理,下文会接着讲到。
软件部分
采集滤波
简单地一个adc采集获取电感的数值是远远不够,采集到的信息可能是不准确的,需要采集多次,通过各种滤波算法处理才能得到一个较好的数值,这样用起来才可靠。网上的滤波算法有很多这里我就不再啰嗦描述,大家感兴趣的可以去我的博客下载中心去下载。
在这里我只贴出一种算法,给大家简单地描述下:
for(num = 0; num < 10; num++){i = adc_once(ADC1_SE9,ADC_12bit); j = adc_once(ADC1_SE9,ADC_12bit); k = adc_once(ADC1_SE9,ADC_12bit); // B1-4//2.取中值if (i > j){tmp = i; i = j; j = tmp;}if (k > j) tmp = j;else if(k > i) tmp = k; else tmp = i;sum+=tmp;}AD_VAL4=sum/10;sum=0;
如上图这里所用的滤波算法就是中值平均滤波法
方法就是:相当于“中值滤波法”+“算术平均滤波法”,连续采样10次,去掉一个最大值和一个最小值,最后再算术平均。
优点:融合了两种滤波法的优点, 对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。
缺点:测量速度较慢, 比较浪费 RAM(不过对于智能车所使用的MCU,问题不是太大)
归一化处理
很多一开始的小白,在做电磁这一部分时,可能并不太知道归一化,只是通过上面的滤波算法处理后,就用解算出来的电感数值,开始写控制算法,这样导致的结果就是,调出来的车可能容错率不高,适应性不强,换个场地,因受赛道各种因素的影响可能需要不停地调原有设定好的电感值,对整个程序框架影响还是挺大的。
这里我给大家通俗地讲述下到底归一化该怎么处理。
这里我们以一个电感采集为例,就把他命名为AD1,接下来的代码都是表示对AD1电感采集到的数值进行处理。
首先第一步,我们还是先通过滤波算法对AD1电感采集到的数值进行滤波处理:
//AD1------------------------------------------------------------------------------------- for(num = 0; num < 10; num++){i = adc_once(ADC1_SE8,ADC_12bit); j = adc_once(ADC1_SE8,ADC_12bit); k = adc_once(ADC1_SE8,ADC_12bit); //B0-3//2.取中值if (i > j){tmp = i; i = j; j = tmp;}if (k > j) tmp = j;else if(k > i) tmp = k; else tmp = i;sum+=tmp;}AD_VAL1=sum/10; sum=0;
然后,我们需要把AD1电感放置在能够使其数值呈现最大的位置处,读出采集到的最大值是多少,如下图我采集到的就是4095,这里我们引入一个最大值,也引入一个最小值(最小值默认设置为0)。
int AD_val_1_min=0;
int AD_val_1_max=4095;
接着,对刚才滤波后的电感数值进行限幅处理
//限幅if(AD_VAL1>AD_val_1_max) AD_VAL1=AD_val_1_max
再然后,进行归一化处理,引入归一化后的电感数值ad_VAL1
//归一化ad_VAL1=100*(AD_VAL1 - AD_val_1_min)/(AD_val_1_max-AD_val_1_min);
经过以上步骤处理,就可以把原先电感AD1采集到的数值给限制在0~100之间,电感数值随着赛道的改变就不会变的很大,因为本来给定的范围就很小,利用归一化处理得到的电感数值进行控制解算,会使得电磁车的适应场地能力更强。
以上就是我对电磁车前期准备工作的讲述,对于电磁车采集到的数据如何处理更高效,怎么实现更好的控制,这些我会在控制策略一篇中,结合摄像头的控制策略一并讲解,希望这些系列对萌新来说有所帮助!谢谢大家观阅!
本文图片摘自逐鹿智能车队培训会ppt
关于电感排布探究部分图文参考 浙江工业大学,有关《电磁智能车电感排布方案》的文献,作者: 陈国定,张晓峰,柳正扬 (浙江工业大学 信息工程学院)
如有错误,请批评指正
码字不易,你的支持是我创作的最大动力,给个点赞关注下吧
学做智能车--电磁探究篇相关推荐
- 《学做智能车——卓晴》学习笔记(1)——智能汽车智能控制器方案设计
差速器: 汽车差速器能够使左.右(或前.后)驱动轮实现以不同转速转动的机构.主要由左右半轴齿轮.两个行星齿轮及齿轮架组成.功用是当汽车转弯行驶或在不平路面上行驶时,使左右车轮以不同转速滚动,即保证两侧 ...
- 智能车电磁组——岔路
智能车电磁组--岔路 一.电感排布 二.岔路判定 三.入岔路 三.岔路内寻迹 四.出岔路 一.电感排布 电感排布方案可参考:学做智能车–电磁探究篇 二.岔路判定 岔路的处理很大程度上影响着电磁车的整体 ...
- 智能车电磁组——基本控制篇
智能车电磁组--基本控制篇 前言 滤波 什么是滤波 常见的软件滤波 1. 限幅滤波(又称程序判断滤波法) 2. 算术平均滤波法 PID控制 什么是PID控制 舵机控制 电机控制 目标速度的设置 前言 ...
- 第十七届智能车越野硬件篇——无刷电机驱动
无刷电机驱动硬件篇 电机驱动板工作单元规划 器件选型及原理图绘制 电源部分 电流检测 栅极驱动及功率电路 PCB绘制注意事项 前言 十七届智能车已经结束了,又是一届电子人的青春啊,睡赛道,通宵死磕,调 ...
- 17届智能车-电磁组比赛心得一
目录 前言 一.电磁车的电感排布方案 二.如何调整电感的ADC数值+滤波方法 三.电磁四轮车的一些基础控制算法 1.差比和算法+方向环 2.电机的速度环控制算法 小结 前言 2022年由于疫情的缘故, ...
- 【手把手教你做智能车】第三节-Jlink驱动安装_下载第一个例程到系统板
飞思卡尔智能车系列教学视频教程 手把手教你做智能车:第三节-Jlink驱动安装_下载第一个例程到系统板 视频教程观看地址:http://v.youku.com/v_show/id_XNzkwNTYyO ...
- 第六届CUIT校级智能车电磁组竞赛
第六届CUIT校级智能车竞赛 作为一名大一新生,小白报名参加了电磁循迹的四轮组竞赛.小白在写这篇博客的时候呢,马上就要进行比赛了,前前后后花了差不多一月的时间准备这次比赛,在这里对整个调试的过程进 ...
- 跟hoowa学做智能路由
hoowa的新浪博客:http://blog.sina.com.cn/hoowasun 跟hoowa学做智能路由(一):我们来动手吧! http://www.leiphone.com/news/201 ...
- 飞思卡尔智能车—电磁循迹(节能组)
飞思卡尔智能车-电磁循迹(节能组) 详细参赛要求请以智能车官方为准,此文章仅分享本人参赛经验,开源硬件电路设计,供大家学习! 电磁循迹部分设计思路: 电感采集电磁信号,放大,整流,滤波,AD采集 电磁 ...
- 智能车电磁组——环岛处理
智能车电磁组--环岛处理 一.电感排布 二.圆环思路 1.入环 (1)预圆环 (2)入环 2.环岛内 3.出环 (1)预出环 (2)出环 三.代码部分 1.入环 2.圆环内寻迹 3.出环 一.电感排布 ...
最新文章
- 【IEEE】2020 年AI's 10 To Watch名单新鲜出炉!MIT韩松、方飞、张含望等华人入选!...
- ExtJS Model数据实体模型
- Generate Java objects for FpML using JAXB and Maven: The Easy Way!
- 【svn】设置过滤文件
- 上学是穷人的出路吗?
- delphi 复制文件 强制覆盖_网传美国选这三家中国橱柜企业为反倾销强制应诉人...
- c# asp.net 修改webconfig文件 配置
- 这就是搜索引擎 (豆瓣).html 1.index 第1章 搜索引擎及其技术架构 1 第2章 网络爬虫 12 第3章 搜索引擎索引 36 第4章 索引压缩 76 第5章 检索模型与搜索排序 99
- 芯片介绍:CC2530
- delphi与python_python和delphi哪个好
- java u0000_Java-从字符串中删除\ u0000
- 兔子生兔子java_用Java编程计算兔子生兔子的问题
- 【DaVinci Developer专题】-32-Mode(Switch) Declaration Group中Alphabetic和Explicit的区别
- [渝粤教育] 中国地质大学 计算机会计理论与实务 复习题
- python根据日期算星期几_python根据日期返回星期几的方法
- IT 行业有前景么?
- 使用高德SDK开发安卓地图应用软件
- 设置win7文件夹背景和图标
- (转)blackrock的阿拉丁系统与风险管理
- linux ps与top 命令下wa,hi,si,st等及 VSZ,RSS,VIRT,RES,等关键字含义详解!
热门文章
- QCon-小布助手对话系统工程实践
- “窗体”工具栏控件和“控件工具箱”控件基础
- 学员管理系统(完整版)
- 自动化测试全流程总结
- html明月几时有古诗,古诗词赏析|苏轼《水调歌头·明月几时有》
- idea 查询项目代码行数_idea统计代码行数Statistic的步骤详解
- java 英文月份_java SimpleDateFormat处理英文3位字母月份时的注意事项
- cocos2dx 精灵增加触摸事件
- paperwhite3翻页_Kindle vs. Paperwhite vs. Voyage vs. Oasis:您应该购买哪种Kindle?
- Deepin 系统没有 Times New Roman 等微软字体