飞思卡尔智能车电磁组程序员成长之路未完待续.docx
《飞思卡尔智能车电磁组程序员成长之路未完待续.docx》由会员分享,可在线阅读,更多相关《飞思卡尔智能车电磁组程序员成长之路未完待续.docx(26页珍藏版)》请在冰豆网上搜索。
![飞思卡尔智能车电磁组程序员成长之路未完待续.docx](https://file1.bdocx.com/fileroot1/2022-11/27/90138f06-88b5-4c82-b283-23e1db2cc370/90138f06-88b5-4c82-b283-23e1db2cc3701.gif)
飞思卡尔智能车电磁组程序员成长之路未完待续
飞思卡尔智能车电磁组程序员成长之路
1.飞思卡尔智能车小车入门
智能汽车电磁组简介:
第五届全国大学“飞思卡尔杯”智能汽车竞赛新增加了“电磁组”。
根据比赛技术要求,电磁组竞赛,需要选手设计的智能车能够检测到道路中心线下电线中20KHz交变电流产生的磁场来导引小车沿着道路行驶。
在平时调试和比赛过程中需要能够满足比赛技术要求的20KHz的交流电源驱动赛道中心线下的线圈。
同时参赛选手需要自行设计合适的电磁传感器来检测赛道信息完成智能寻迹功能。
智能车制作是一个涵盖电子、电气、机械、控制等多个领域和学科的科技创新活动。
简单点来说可以将其分为硬件电路(包括电源、MUC控制部分、电机驱动、传感器)、机械、算法三方面的设计。
电磁组在机械方面可以参照光电组的设计方案,这里不再赘述。
本设计指导只讲述20KHZ电源、电磁传感器设计方案以及部分算法。
智能车对单片机模块需求:
飞思卡尔单片机资源:
智能车程序框架:
智能车涉及到IO模块,中断模块,PWM模块,DMA模块,AD模块等。
在车模调试中还有必须的模块。
如SCI模块、定时器模块,SPI模块等。
其中还涉及到一些算法和数据的存储和搬移。
一个好程序框架对智能车的制作过程中会达到事半功倍的效果。
但是就智能车这样系统来说,如果完全专门移植一个操作系统或者写一个程序的bootload,感觉有一些本末倒置,如果有成熟的,可以借用的,那样会比较好。
2.电磁传感器的使用
20KHz电源参考设计方案:
电源技术指标要求:
根据官网关于电磁组赛道说明,20KHz电源技术要求如下:
1.驱动赛道中心线下铺设的0.1-0.3mm直径的漆包线;
2.频率范围:
20K±2K;
3.
电流范围:
50-150mA;
图2.1是赛道起跑区示意图,在中心线铺设有漆包线。
首先分析赛道铺设铜线的电抗,从而得到电源输出的电压范围。
我们按照普通的练习赛道总长度50m,使用直径0.2mm漆包线。
在30摄氏度下,铜线的电阻率大约为0.0185欧姆平方毫米/米。
计算可以得到中心线的电阻大约为29.4欧姆。
按照导线电感量计算机公式:
其中l,d的单位均为cm。
可以计算出直径为0.2mm,长度50米的铜线电感量为131微亨。
对应20KHz下,感抗约为16.5欧姆。
图2.1竞赛跑道起跑区示意图
可以看出,线圈的电感量小于其电阻值。
由于导线的电感量与铺设的形状有关系,上述计算所得到的电感量不是准确数值。
另外,我们可以在输出时串接电容来抵消电感的感抗。
所以估算电源电压输出范围的时候,我们不再特别考虑线圈的电感对于电流的影响。
为了方便设计,我们设计电源输出电压波形为对称方波。
由于线圈电感的影响,线圈中的电流为上升、下降沿缓变的方波波形。
如图2.2所示:
图2.2线圈驱动电压与电流示意图
对于电阻为29.4欧姆的赛道导线,流过100mA的电流,电压峰值应该大于3V。
考虑到赛道长度有可能进一步增加、漆包线的直径减少等原因,设计电源输出电压的峰值为6V。
在输出电流为150mA的时候,电源输出功率大约为0.9W。
电源组成:
电源电路包括振荡电路、功率输出电路、恒流控制电路以及电源等组成。
如图2.3所示。
图2.3各分部功能可以采用不同的电路实现。
下面分别给出官网电流源各模块的参考设计方案。
图2.3电源组成框图
●振荡电路
产生中心频率为20KHz的对称方波信号。
为了满足功率输出电路的需要,输出极性相反的信号,可以使用普通的555时基电路产生振荡信号,也可以使用简易的单片机产生振荡信号。
为了方便调试,信号频率能够在一定范围内进行调整。
图2.4由555时基电路组成的振荡电路
555多谐振荡器原理请大家参考数电课本,实际外围电路电路参数需要自己设定,不一定要和官方给的一样。
1815相当于一个反向器,为闭环回路提供信号源。
555电路较为简单,如果想更精确的产生20KHz当然也可以用单片机来产生所需信号,同时还可以外部连接显示接口显示当前的输出频率、输出电流的大小。
●功率输出电路
由于输出驱动信号电压、电流、频率较大,需要一定输出功率驱动跑道线圈,因此最后需要功率输出电路。
可以采用分立大功率晶体管搭建输出电路,也可以使用的电机驱动桥电路集成模块。
选择时需要注意电路的频率响应应该大20KHz,输出功率大于2W。
在制作时需要注意电路的散热。
图2.5-2.7分别给出了三种不同的功率输出电路,大家可以作为参考。
图2.5基于分立元器件的功率输出电路
图2.6由L298组成的功率输出电路
图2.7基于VMOS/IR2153功率输出电路
在图2.7电路中,IR2153一方面内部集成了类似于555的时基振荡电路以及VMOS管驱动电路。
●恒流控制
恒流电路控制输出电流在100mA左右稳定,不随着电源的变化而发生波动。
上述功率输出模块可以为负载--即赛道漆包线环路提供足够的功率,但不能控制输出电流的大小(输出电压已确定,频率确定),所以需要设计一个恒流控制电路,来调节功率输出模块电流的大小。
根据比赛规则的要求,恒流输出控制不需要特别的精确。
一般要求不高的情况下可以使用限流电阻控制电流的稳定。
也可以利用晶体管的在放大区集电极的恒流特性进行控制。
如图2.8所示:
图2.8利用晶体管进行恒流控制
晶体管可使用大功率双极性晶体管,也可以使用功率MOS管。
从电流设定稳定性和恒流特性来看,使用功率双极性晶体管更好。
电源部分提供电路中所需要的各种低压稳压电源。
保证信号振荡电路和恒流控制电路的稳定性。
可以使用一般稳压集成电路实现。
●参考设计电路
实际电路图的说明:
设计PCB时最好给C2233音频功率管留足散热片的空间,它和L298一样是电路中主要的发热器件。
555震荡电路的参数也不一定要和上图一样,可以根据公式
计算出电阻的大小,只要便于调节的参数均可。
●电源调试
输出电流调试:
调节恒流设定电位器,使得输出电流在100mA左右。
外部负载电阻在10和100欧姆的时候,都应该在50-150mA之内。
(注意:
所接负载电阻必须要是大功率的,而且要充分考虑到它的散热性,千万不能直接接上一般的直插式电阻就去测电流,会爆掉的!
水泥电阻如果有较大阻值的话可以考虑用它作为恒流源负载)实际调试时候可以空载下将电流表串入功率管集电极测量,效果是一样的。
输出频率调试:
可使用示波器或者具有频率测量的万用表测量输出电压的频率。
外接10欧姆的负载进行测量负载上电压的频率。
调节频率设定电位器使得电源频率输出在2±2kHz。
调试完毕后,使得电源在接入跑道线圈之下连续工作1个小时,电源输出的电流、频率都不会漂移出要求的范围,则所设计的电源满足要求。
●注意事项
功率管散热:
在外部负载比较小的时候,电路中功率输出晶体管、恒流控制晶体管上的功耗比较大。
特别是在整个电路的电源电压较高(比如+12V)的时候,需要对于功耗比较大的晶体管进行合理的散热,以提高电源的工作热稳定性。
串接谐振电容:
当赛道比较长的时候,赛道线圈的电感较大,可以在赛道线圈连接中通过串联电容抵消赛道线圈的感抗。
具体电容的大小可以根据实际测量赛道的电感进行匹配。
电磁组传感器及模路径检测设计参考方案:
设计原理:
电磁组比赛竞赛车模需要能够通过自动识别赛道中心线位置处由通有100mA交变电流的导线所产生的电磁场进行路径检测。
除此之外在赛道的起跑线处还有永磁铁标志起跑线的位置。
1、导线周围的电磁场
根据麦克斯韦电磁场理论,交变电流会在周围产生交变的电磁场。
智能汽车竞赛使用路径导航的交流电流频率为20kHz,产生的电磁波属于甚低频(VLF)电磁波。
甚低频频率范围处于工频和低频电磁破中间,为3kHz~30kHz,波长为100km~10km。
如图2.10所示:
图2.10电流周围的电磁场示意图
导线周围的电场和磁场,按照一定规律分布。
通过检测相应的电磁场的强度和方向可以反过来获得距离导线的空间位置,这正是我们进行电磁导航的目的。
由于赛道导航电线和小车尺寸l远远小于电磁波的波长λ,电磁场辐射能量很小(如果天线的长度l远小于电磁波长,在施加交变电压后,电磁波辐射功率正比于天线长度的四次方),所以能够感应到电磁波的能量非常小。
为此,我们将导线周围变化的磁场近似缓变的磁场,按照检测静态磁场的方法获取导线周围的磁场分布,从而进行位置检测。
由毕奥-萨伐尔定律知:
通有稳恒电流I长度L的直导线周围会产生磁场,距离导线距离为r处P点的磁感应强度为:
)
(1)
有此得:
对于无限长直电流来说,上式中
图2.11无限长导线周围的磁场强度
磁场检测方法:
我们有很多测量磁场的方法,磁场传感器利用了物质与磁场之间的各种物理效应:
磁电效应(电磁感应、霍尔效应、磁致电阻效应)、磁机械效应、磁光效应、核磁共振、超导体与电子自旋量子力学效应。
下面列出了一些测量原理以及相应的传感器:
1.电磁感应磁场测量方法:
电磁线磁场传感器,磁通门磁场传感器,磁阻抗磁场传感器。
2.霍尔效应磁场测量方法:
半导体霍尔传感器、磁敏二极管,磁敏三极管。
3.各向异性电阻效应(AMR)磁场测量方法。
4.载流子自旋相互作用磁场测量方法:
自旋阀巨磁效应磁敏电阻、自旋阀三极管磁场传感器、隧道磁致电阻效应磁敏电阻。
5.超导量子干涉(SQUID)磁场测量方法:
SQUID薄膜磁敏元件。
6.光泵磁场测量方法:
光泵磁场传感器。
7.质子磁进动磁场测量方法。
8.光导纤维磁场测量方法。
以上各种磁场测量方法所依据的原理各不相同,测量的磁场精度和范围相差也很大。
我们需要选择适合车模竞赛的检测方法,除了检测磁场的精度之外,还需要对于检测磁场的传感器的频率响应、尺寸、价格、功耗以及实现的难易程度进行考虑。
在下面所介绍的检测方法中,我们选取最为传统的电磁感应线圈的方案。
它具有原理简单、价格便宜、体积小(相对小)、频率响应快、电路实现简单等特点,适应于初学者快速实现路经检测的方案。
通电导线周围的磁场是一个矢量场,场的分布如图8.12所示。
如果在通电直导线两边的周围竖直放置两个轴线相互垂直并位于与导线相垂直平面内的线圈,则可以感应磁场向量的两个垂直分量,进而可以获得磁场的强度和方向。
图2.12导线周围的感应电磁场
导线中的电流按一定规律变化时,导线周围的磁场也将发生变化,则线圈中将感应出一定的电动势。
根据法拉第定律,线圈磁场传感器的内部感应电压E与磁场B(t)、电磁线圈的圈数N、截面积A的关系有:
感应电动势的方向可以用楞次定律来确定。
由于本设计中导线中通过的电流频率较低,为20kHz,且线圈较小,令线圈中心到导线的距离为r,认为小范围内磁场分布是均匀的。
再根据图3所示的导线周围磁场分布规律,则线圈中感应电动势可近似为:
(2)
即线圈中感应电动势的大小正比于电流的变化率,反比于线圈中心到导线的距离。
其中常量K为与线圈摆放方法、线圈面积和一些物理常量有关的一个量,具体的感应电动势常量须实际测定来确定。
双水平线圈检测方案
不同的线圈轴线摆放方向,可以感应不同的磁场分量。
我们先讨论一种最简单的线圈设置方案:
双水平线圈检测方案。
在车模前上方水平方向固定两个相距L的线圈,两个线圈的轴线为水平,高度为h,如图2.13所示。
为了讨论方便,我们在跑道上建立如下的坐标系,假设沿着跑道前进的方向为z轴,垂直跑道往上为y轴,在跑道平面内垂直于跑到中心线为x轴。
xyz轴满足右手方向。
假设在车模前方安装两个水平的线圈。
这两个线圈的间隔为L,线圈的高度为h,参见下图2.14所示。
左边的线圈的坐标为(x,h,z),右边的线圈的位置(x-L,h,z)。
由于磁场分布是以z轴为中心的同心圆,所以在计算磁场强度的时候我们仅仅考虑坐标(x,y)。
由于线圈的轴线是水平的,所以感应电动势反映了磁场的水平分量。
根据公式
(2)可以知道感应电动势大小与
成正比。
图2.13双水平线圈检测方案
图2.14感应线圈的布置方案
假设h=5cm,x∈(−15,+15)cm,计算感应电动势
随着线圈水平位置x的变化取值,如下图2.15所示:
图8.15线圈中感应电动势与它距导线水平位置x的函数
如果只使用一个线圈,感应电动势E是位置x的偶函数,只能够反映到水平位置的绝对值|x|的大小,无法分辨左右。
为此,我们可以使用相距长度为L的两个感应线圈,计算两个线圈感应电动势的差值:
下面假设L=30cm,计算两个线圈电动势差值Ed如图2.16所示:
图8.16感应电动势差值dE与距离x之间的函数
从上图可以看出,当左边线圈的位置x=15cm的时候,此时两个线圈的中心恰好处于跑道中央,感应电动势差值Ed为0。
当线圈往左偏移,x∈(15,30),感应电动势差值小于零;反之,当线圈往右偏移,x∈(0,15),感应电动势大于零。
因此在位移0∼30cm之间,电动势差值Ed与位移x是一个单调函数。
可以使用这个量对于小车转向进行负反馈控制,从而保证两个线圈的中心位置跟踪赛道的中心线。
通过改变线圈高度h,线圈之间距离L可以调整位置检测范围以及感应电动势的大小。
电路设计
设计部分
从上面检测原理可以知道,测量磁场核心是检测线圈的感应电动势E的幅值。
电磁传感器的设计主要包括:
感应线圈的选择、信号选频放大、整流与检测等几个方面,将会涉及到电磁场与波、高频、模电等相关学科的知识点,这里不再详细的给出各个方案的具体论证过程,直接给出电路设计系统框图和成熟的实际电路。
检测电路组成如图2.17所示:
图2.17检测电路系统框
图2.17中虚线部分可以看做另一种方案,即:
信号放大以后直接通过单片机AD采样,而不经过检波环节,电路框图如图2.18所示:
图2.18直接采集放大信号
说明:
黑色原理图为官网给出参数,具体的参数要根据线圈选型等实际情况自己设定,
两种方案各有优势。
倍压检波电路可以获得正比于交流电压信号有效值的直流信号,处理起来很方便。
缺点是由于电容的充放电,信号突变时有延迟,这种现象尤其在入弯时更明显,使系统的响应变慢。
而直接采集放大信号的方案则有效的克服了这一缺点,但信号处理起来没有有效值检波那种方案简单,而且对AD性能的要求也较高。
还有一种用的是检波以后再送入AD处理信号的方案,事实证明也是可行的。
下面给出两种方案的实际电路图,如图8.19和图8.20所示。
图2.19直接采集放大信号三维电磁传感器电路图
图2.20检波电路
对于实际电路图的说明:
电感线圈我们采用的是标准化的“工字型”电感线圈,这种线圈感应面积大,灵敏度好,缺点是体积较大。
实践证明这种电感线圈综合效果还不错,实际上我们只用两个水平的线圈(即图6的x轴方向)就可以完成寻迹功能,速度和稳定性达到校区水平。
缺点是互感现象严重。
不过也有很多参赛队用直插式小体积的电感(外形和一般直插式电阻一样,不过比电阻大些)。
它的一个很明显的优点就是体积小,性能没试过,鼓励大家尝试更多的选型方案。
去年比赛时我们只用到水平方向两个线圈(即图2.14中的x轴和z轴方向)。
竖直方向的线圈可以用来检测前方是否有弯道,也就是提高电磁组前瞻性的解决方案之一。
我们当时用单个竖直的传感器检测,在直道入弯处可以有30~40cm的前瞻性,但实际跑的过程中数据无法有效地利用。
加入竖直线圈以后在入弯和十字交叉时检测到的信号是相似的,因此无法区分一般弯道和十字交叉。
这样x轴方向的线圈用来判断小车偏离跑道的程度,信号再经过MCU的处理控制舵机的转向。
现在来说明z轴方向线圈的作用。
先看小车中心线与赛道重合时的情况:
为了便于说明原理,这里只考虑磁场在水平面的投影,竖直方向不予考虑。
小车在直道上的示意图如图2.21所示:
图8.21小车中心线与赛道重合时
容易的出:
磁场在水平方向的分量(x和z轴)全部落在x轴上,z轴磁场为0。
再来看小车在过弯道时的示意图,如图2.22所示。
图2.22小车在过弯道时示意图
大家可以看到只用两个水平(x轴)线圈时,过弯时两线圈检测到感应电动势的大小可能很接近,而且此时不能反映所有水平方向磁场的信息,因为水平方向(z轴)的磁场不为0!
所以这时很自然的想到了利用z轴线圈来减小传感器提取赛道信息不完整而使舵机误动作或转向延迟。
图8.23有z轴线圈时过弯示意图
图8.24U1位置两水平线圈过弯时磁部
这样通过计算x和z轴线圈的平方和就可以算出U1位置处磁场水平分量。
这相当于对信号的软件放大,而且使信号精度更高。
实际上完全可以参照杭电的传感器布局,使用一个线圈相对于x轴45°放置,就可以达到图15所示传感器布局的效果。
因为采用的是相同的电感线圈,可以认为它的电气特性完全相同。
用一个这样的线圈就可以提取整个水平方向的磁场信息。
根据官网的说明,不同方向同一位置的线圈算为一个传感器。
这个“同一个位置”没有明确的限定,靠的近一点、做在同一个板子上就可以了。
传感器的设计与调试
实物如图2.25所示:
图2.25直接放大电路实物图(正反两面)
说明:
大家可以看到,比赛时我们只用到两个线圈,竖直方向的拆掉了。
放大电路如图8.26所示:
图2.26放大电路
电路焊接完毕后,只要调节图11中可调电阻R4,使得三极管集电极电压处于2.5V左右即可。
将上述放大电路的感应电感放在通有100mA、20kHz导线周围,使用示波器观察电路的输出与输入信号,如图8.27所示:
图2.27放大电路的输入、输出波形
通过图2.27可以看出,放大电路的放大倍数大约为:
倍。
所得的电压信号可以直接连入单片机的AD转换接口进行采集就可以。
但这种方案对AD转换速率要求较高。
这样AD输入的交流信号的平均值在2.5V,变化范围在0-5V,满足单片机AD转换的需要。
检测方案
基本思路
以直接采集放大信号的传感器方案为例,赛道信号为20khz方波,在采集信号时只要保证单片机的AD采集速率大于20kHz的5-10倍,连续采集5-10个周期的电压信号(大约100数据左右),就可以直接从采集的数据中最大值减去最小值获得信号的峰峰值。
假设采集了128个数据:
𝑥𝑖,𝑥=1,2,…,128,计算信号的峰峰值𝑉𝑃−𝑃可以有下式计算:
𝑥𝑚𝑎𝑥=max(𝑥𝑖,𝑥=1,2,…,128)
𝑥𝑚𝑖𝑛=min(𝑥𝑖,𝑥=1,2,…,128)
𝑉𝑃−𝑃=𝑥𝑚𝑎𝑥−𝑥𝑚𝑖𝑛
上面计算计算方法由于只用应用了数据的最大值、最小值,所得结果容易受到噪声的影响,所以还可以通过计算数据交流信号的平均值、有效值反映信号的幅值:
上面所计算得到的,𝑥𝑎𝑣𝑒、𝑥𝑒等都与信号的峰峰值成单调关系,所以也可以用来进行计算位置差值信号。
经验体会
如果采用直接放大信号的传感器方案,要满足信号采集的需要,MUC片内AD或者外部AD的数据转换时间要能达到5us,将近1MSPS!
传统的AVR单片机已近远远不能满足需求了(最高分辨率时采样率15kSPS),msp430f149的片内AD刚好200ksps,基本满足需求,飞思卡尔MC9S12XS128转换速率达到3us,也可以胜任信号采集的需求,不过价格昂贵。
这样的话就需要外部AD来完成信号采集。
而且要考虑到线圈的个数会有多个,所以外部AD的通道数也需考虑,串行和并行看大家自己的习惯。
我们华东赛区比赛用的是AD公司的8输入串行spi通信模数转换器AD7928,转换率
1MSPS,基准电压芯片用的是AD780,总价在40元左右。
而如果采用放大检波方案的话,对AD就没有什么那么高的要求了。
不仅设计的成本大幅降低,而且软件上的复杂度也会大大降低,直观地看只需要采一次数据就可以提取当前磁场信息。
所以如果条件有限,推荐大家使用放大检波的方案,但这种方案在硬件上会复杂一些,需要的调试工作量也会大一些。
从检波二极管的选择,到滤波电路参数的计算,都需要有较高模、高频电基础。
不过这更具挑战性,更能锻炼自己的能力!
为了减轻低年级同学的设计工作量,我们也给出了已经调试过的电路,如图12所示,供大家参考。
其实不管是CCD组、光电组还是电磁组,在软件方面的基本思路是一致的。
通过传感器提取赛道信息,通过软件方面的手段计算出当前小车偏离赛道的程度记为“Δ”,要求高的话,像“飞思卡尔杯”的话再加入速度反馈,综合考虑当前速度大小和偏离赛道程度“Δ”,控制舵机的转向和电机的加减速。
有了“Δ”和速度传感器返回的值,至于当前“Δ”下舵机转多大,电机加速还是减速,加多少减多少,这就需要软件的算法来计算了。
最常见的就是PID和棒棒算法了,另外模糊控制理论在智能车控制领域也用得比较多。
算法方面校区智能车设计指导书第二版会有讲解,这里就不说了。
本指导只讲从AD提取赛道信息到得出“Δ”,以及在整个程序设计时应该注意的问题,软件整体的设计思路。
除了利用上述的𝑥𝑎𝑣𝑒、𝑥𝑒做差可以计算出Δ外,也有其他方法。
大家不必拘泥于上面的方法。
起跑线检测
关于路径检测方法,这里还想说说怎样检测起跑线。
电磁组检测起跑线的方法与光电、CCD组的不同,通过硬件即可完成,相对也比较简单,所以放在后面讲。
我们再来看看官网给的起跑线示意图,如图2.28所示:
图2.28起跑线示意图
如图2.28所示,起跑线下面均匀的放置有6个永磁体,磁体放置极性不确定。
磁体参数:
直径7.5-15mm,高度1-3mm,表面磁场强度3000-5000Gs。
磁体表面磁场强度相对赛道产生的磁场非常大(经过计算赛道磁场强度在10−3Gs数量级),完全可以不考虑小车会在非起跑线区域检测起跑线。
检测起跑线的传感器通常选用干簧管。
干簧管相当于一个磁敏开关,分为常开和常闭类型。
工作原理很简单,干簧干里面的磁性导电簧片受到足够大的磁场磁化以后相互吸合在一起来完成一次开关的动作。
电磁组要检测起跑线,只要干簧管受经过起跑线时受到的磁场作用达到一定程度就可以。
考虑到磁体极性不确定,但归纳起来就三种情况:
同侧三个磁体表面都为同极性
相邻两两磁体极性不同
只有相邻两个磁体极性相同
经过理论分析和实际测试发现:
每个磁体表面中线处磁场为0或者很小,干簧管经过单个磁体表面时不能发生动作,即存在盲区。
同名磁体中垂线上磁场为0。
两磁体中心相距2.5cm,在小车左右两