飞思卡尔电磁组检测设计

合集下载

基于飞思卡尔芯片电磁引导智能车设计

基于飞思卡尔芯片电磁引导智能车设计

基于飞思卡尔芯片的电磁引导智能车设计飞思卡尔智能车竞赛是由教育部高等自动化专业教学指导分委员会主办的全国大学生智能汽车竞赛。

所使用的车模是一款带有差速器的后轮驱动模型车,由组委会统一提供。

比赛跑道为表面白色,中心有0.1 mm~0.3mm直径的连续漆泡线作为引导线,其中漆泡线通有100ma交流电流。

比赛规则限定了跑道宽度50cm和拐角最小半径50cm。

飞思卡尔智能车竞赛一、硬件设计1.电磁传感器对于电磁组来说,传感器的选择是尤为重要的,最原始的办法用线圈产生磁场的办法去切割跑到上的磁场来检测道路信息,开始因为线圈的缠绕是有要求的,电感的大小也是有要求的,漆泡线的粗细也是有要求的,基于上面的问题,我们实验没有成功。

后来,围绕传感器做了很多的实验,做了两个传感器:一个是用三极管做放大的,另一个是用运放做放大的,但结果用运放成本高,运放要双电源而且一般的放大器频带窄满足不了要求,所以选择用三极管做放大。

在距离导线50mm的上方放置垂直于导线的10mh 电感,为了能够更加准确测量感应电容式的电压,还需要将上述感应电压进一步放大,一般情况下将电压峰峰值放大到1v~5v左右,就可以进行幅度检测,所以需要放大电路具有100倍左右的电压增益(40db)。

最简单的设计,可以只是用一阶共射三极管放大电路就可以满足要求。

2.速度传感器车模的驱动力来源于一个直流电动机,为了能很好地控制车模的速度,我们引入了闭环控制系统,这就需要车体能实时地或者尽可能快地了解到速度变化,从而对驱动的电压电流进行调整,尽可能快地达到设定速度并且稳定在设定速度上。

从往届的参赛队伍经验得知,使用一个增量编码器能很好地解决以上问题,终选择了欧姆龙的180线增量型光电编码器。

这款编码器为2相输出。

在实际的测试中,让单片机每10ms返回一次传感器的值,当车模在1米/秒左右速度时能返回60~70多个脉冲,当大于2.5米能返回170多个脉冲,反复测试反馈准确,稳定。

飞思卡尔智能车 电磁组 技术报告

飞思卡尔智能车 电磁组 技术报告
#defineZSPEED130//100
//#define K10
//#define Kp 1;//PID的//#define Kd 1;
#include <hidef.h>
#include <stdio.h>
#include <math.h>
#include <MC9S12XS128.h>
3.1.3
考虑到适当增加力臂来提高舵机的灵敏度和为了赛车布局的的紧凑,采取了如图3.2所示的安装方法。
图3.2舵机安装结构
3.1.4
采用接插件与焊接结合的方式连接传感器、主控板、编码器、电机驱动电路、电机、赛道起始检测等单元,既考虑可靠性,又兼顾结构调整与安装的便利性。具体安装结构如图3.3所示,
图3.3主控板安装结构
[6]卓晴.基于磁场检测的寻线小车传感器布局研究[J].清华大学.2009
[7]杨延玲.载流直导线的电磁场特性分析[J].山东师范大学.2007
[8]王毅敏.马丽英等.一种改进的数字PID控制算法及其在励磁系统中的应用电网技术[J].1998
[9]高金源,夏洁.计算机控制系统[M].清华大学出版社.2007
本校积极组队参加第六届“飞思卡尔”杯全国大学生智能汽车竞赛。从2010年底着手准备,历时半年多,经过不断试验设计,最终设计出较为完整的智能赛车。在赛区比赛中获得了较好的综合性能和成绩。
在本次比赛中,采用大赛组委会统一提供的竞赛车模,采用飞思卡尔16位微控制器MC9S12XS128作为核心控制单元,构思控制方案及系统设计,进行包括机械结构的调整与优化,硬件的设计与组装、软件控制算法的编写与改进等过程(小车上的具体方案模块有传感器信号采集处理、控制算法及执行、动力电机驱动、转向舵机控制等)从而实现小车智能化的识别道路,最终实现智能化竞速。

第八届飞思卡尔智能车电磁组技术报告华德思源队

第八届飞思卡尔智能车电磁组技术报告华德思源队
1.1 大赛简介........................................................................................................ 1 1.2 智能车系统介绍............................................................................................ 2 1.3 章节安排........................................................................................................ 3 第二章 智能车机械调校..........................................................................................5 2.1 前轮调整........................................................................................................ 5 2.2 舵机固定........................................................................................................ 8 2.3 降低虚位........................................................................................................ 9 2.4 差速调整........................................................................................................ 9 2.5 齿轮啮合...................................................................................................... 10 2.6 调整重心...................................................................................................... 10 2.7 零件制作...................................................................................................... 11 第三章 智能车硬件系统........................................................................................13 3.1 单片机最小系统.......................................................................................... 13 3.2 电源模块...................................................................................................... 14 3.3 传感器模块.................................................................................................. 15

飞思卡尔电磁组

飞思卡尔电磁组

智能车简介
飞思卡尔智能车大赛分三种赛组:
摄像头组
光电组
电磁组
调试视频
调试视频
电磁组原理概述
车模直立行走比赛是要求仿照两轮自平衡电动车的行进模式,让车模以两
个后轮 驱动进行直立行走。 在电磁组比赛中,利用 车模双后轮驱动的特点,实现两轮自平衡行走。相 对于传统的四轮行走的车 模竞赛模式,车模直立行走在硬件设计、控制软件开发 以及现场调试等方面提出了更高 的要求。
原理篇
原理篇
• 1.路径检测 • 2.直立控制 • 3.算法设计
• 路径检测的整体思路流程:
• 磁场感应 选频 放大 检波 A/D采集(单片机萨法尔定律可求得通电的导线周 围空间上某一定点的磁场强度。
• 再由法拉利定律和楞次定律可得处在该点处磁感线圈的感应 电动势大小
算法设计
• 在车模控制中的直立、速度和方向控制三个环节中,都使用 了比例微分(PD)控制,这三种控制算法的输出量最终通过 叠加通过电机运动来完成。 • (1)车模直立控制:使用车模倾角的PD(比例、微分)控 制;
• (2)车模速度控制:使用PD(比例、微分)控制; • (3)车模方向控制:使用PD(比例、微分)控制。
单 管 共 射 交 流 放 大 电 路
检波电路
• 测量放大后的感应电动势的幅值E可以有多种方法。最简单的 方法就是使用二极管检波电路将交变的电压信号检波形成直 流信号,然后再通过单片机的AD采集获得正比于感应电压幅 值的数值。
A/D输入
单片机
检测部分的系统框图
直立行走的原理
• 车模直立行走比赛是要求仿照两轮自平衡电动车的行进模式, 让车模以两个后轮驱动进行直立行走。
车模控制任务分解图
• 三个分解后的任务各自独立进行控制。由于最终都是对同一 个控制对象(车模的电机)进行控制,所以它们之间存在着 耦合。这三个任务中保持车模平衡是关键。由于车模同时受 到三种控制的影响,从车模平衡控制的角度来看,其它两个 控制就成为它的干扰。因此对车模速度、方向的控制应该尽 量保持平滑,以减少对于平衡控制的干扰

(整理)飞思卡尔智能车比赛电磁组路径检测设计方案

(整理)飞思卡尔智能车比赛电磁组路径检测设计方案

精品文档电磁组竞赛车模路径检测设计参考方案(竞赛秘书处2010-1,版本 1.0)一、前言第五届全国大学生智能汽车竞赛新增加了电磁组比赛。

竞赛车模需要能够通过自动识别赛道中心线位置处由通有100mA 交变电流的导线所产生的电磁场进行路径检测。

除此之外在赛道的起跑线处还有永磁铁标志起跑线的位置。

具体要求请参阅《第五届智能汽车竞赛细则》技术文档。

本文给出了一种简便的交变磁场的检测方案,目的是使得部分初次参加比赛的队伍能够尽快有一个设计方案,开始制作和调试自己的车模。

本方案通过微型车模实际运行,证明了它的可行性。

微型车模运行录像参见竞赛网站上视频文件。

二、设计原理1、导线周围的电磁场根据麦克斯韦电磁场理论,交变电流会在周围产生交变的电磁场。

智能汽车竞赛使用路径导航的交流电流频率为20kHz,产生的电磁波属于甚低频(VLF)电磁波。

甚低频频率范围处于工频和低频电磁破中间,为3kHz~30kHz,波长为100km~10km。

如下图所示:图1:电流周围的电磁场示意图导线周围的电场和磁场,按照一定规律分布。

通过检测相应的电磁场的强度和方向可以反过来获得距离导线的空间位置,这正是我们进行电磁导航的目的。

由于赛道导航电线和小车尺寸l远远小于电磁波的波长 ,电磁场辐射能量很小(如果天线的长度l远小于电磁波长,在施加交变电压后,电磁波辐射功率正比于天线长度的四次方),所以能够感应到电磁波的能量非常小。

为此,我们将导线周围变化的磁场近似缓变的磁场,按照检测静态磁场的方法获取导线周围的磁场分布,从而进行位置检测。

精品文档由毕奥-萨伐尔定律知:通有稳恒电流I长度为L的直导线周围会产生磁场,距离导线距离为r处P点的磁感应强度为:精品文档图 2 直线电流的磁场⎝1 4 r由此得: B =  cos⎝4 r对于无限长直电流来说,上式中⎝1 = 0 ,⎝ 2 = ,则有B = (1)。

图3:无限长导线周围的磁场强度在上面示意图中,感应磁场的分布是以导线为轴的一系列的同心圆。

电磁组_飞思卡尔

电磁组_飞思卡尔

小车代码源程序RouteTest.c#include <hidef.h> /* common defines and macros */#include <MC9S12XS128.h> /* derivative information */#include "main.h"#define uint unsigned intuint AD0,AD1,AD2,AD3,AD4,AD5,AD6,AD7,AD8,AD9,ADFULL=0; uint A0=0,A1=0,MAXTEMP0,MINTEMP0,MAXTEMP1,MINTEMP1; uint A2=0,A3=0,MAXTEMP2,MINTEMP2,MAXTEMP3,MINTEMP3; uint A4=0,A5=0,MAXTEMP4,MINTEMP4,MAXTEMP5,MINTEMP5; uint A6=0,A7=0,MAXTEMP6,MINTEMP6,MAXTEMP7,MINTEMP7; uint A8=0,A9=0,MAXTEMP8,MINTEMP8,MAXTEMP9,MINTEMP9;void RouteTest(void){while(!ATD0STAT2_CCF0); //判断通道0是否转换完成AD0=ATD0DR0;if(A0==0){MAXTEMP0=AD0;MINTEMP0=AD0;}else{if(MAXTEMP0<AD0) MAXTEMP0=AD0;if(MINTEMP0>AD0) MINTEMP0=AD0;}A0++;if(A0==LENGTH) {MAXTEMP0=MAXTEMP0-MINTEMP0;}while(!ATD0STAT2_CCF1); //判断通道1是否转换完成 AD1=ATD0DR1;if(A1==0){MAXTEMP1=AD1;MINTEMP1=AD1;}else{if(MAXTEMP1<AD1) MAXTEMP1=AD1;if(MINTEMP1>AD1) MINTEMP1=AD1;}A1++;if(A1==LENGTH) {A1=0;MAXTEMP1=MAXTEMP1-MINTEMP1;}while(!ATD0STAT2_CCF2); //判断通道2是否转换完成 AD2=ATD0DR2;if(A2==0){MAXTEMP2=AD2;MINTEMP2=AD2;}else{if(MAXTEMP2<AD2) MAXTEMP2=AD2;if(MINTEMP2>AD2) MINTEMP2=AD2;}if(A2==LENGTH) {A2=0;MAXTEMP2=MAXTEMP2-MINTEMP2;}while(!ATD0STAT2_CCF3); //判断通道3是否转换完成 AD3=ATD0DR3;if(A3==0){MAXTEMP3=AD3;MINTEMP3=AD3;}else{if(MAXTEMP3<AD3) MAXTEMP3=AD3;if(MINTEMP3>AD3) MINTEMP3=AD3;}A3++;if(A3==LENGTH) {A3=0;MAXTEMP3=MAXTEMP3-MINTEMP3;}while(!ATD0STAT2_CCF4); //判断通道4是否转换完成 AD4=ATD0DR4;if(A4==0){MAXTEMP4=AD4;MINTEMP4=AD4;}else{if(MAXTEMP4<AD4) MAXTEMP4=AD4;if(MINTEMP4>AD4) MINTEMP4=AD4;}A4++;if(A4==LENGTH) {A4=0;MAXTEMP4=MAXTEMP4-MINTEMP4;}while(!ATD0STAT2_CCF5); //判断通道5是否转换完成 AD5=ATD0DR5;if(A5==0){MAXTEMP5=AD5;MINTEMP5=AD5;}else{if(MAXTEMP5<AD5) MAXTEMP5=AD5;if(MINTEMP5>AD5) MINTEMP5=AD5;}A5++;if(A5==LENGTH) {A5=0;MAXTEMP5=MAXTEMP5-MINTEMP5;}while(!ATD0STAT2_CCF6); //判断通道6是否转换完成 AD6=ATD0DR6;if(A6==0){MAXTEMP6=AD6;}else{if(MAXTEMP6<AD6) MAXTEMP6=AD6;if(MINTEMP6>AD6) MINTEMP6=AD6;}A6++;if(A6==LENGTH) {A6=0;MAXTEMP6=MAXTEMP6-MINTEMP6;}while(!ATD0STAT2_CCF7); //判断通道7是否转换完成 AD7=ATD0DR7;if(A7==0){MAXTEMP7=AD7;MINTEMP7=AD7;}else{if(MAXTEMP7<AD7) MAXTEMP7=AD7;if(MINTEMP7>AD7) MINTEMP7=AD7;}A7++;if(A7==LENGTH) {A7=0;MAXTEMP7=MAXTEMP7-MINTEMP7;}while(!ATD0STAT2_CCF8); //判断通道8是否转换完成if(A8==0){MAXTEMP8=AD8;MINTEMP8=AD8;}else{if(MAXTEMP8<AD8) MAXTEMP8=AD8;if(MINTEMP8>AD8) MINTEMP8=AD8;}A8++;if(A8==LENGTH) {A8=0;MAXTEMP8=MAXTEMP8-MINTEMP8;}while(!ATD0STAT2_CCF9); //判断通道9是否转换完成 AD9=ATD0DR9;if(A9==0){MAXTEMP9=AD9;MINTEMP9=AD9;}else{if(MAXTEMP9<AD9) MAXTEMP9=AD9;if(MINTEMP9>AD9) MINTEMP9=AD9;}A9++;if(A9==LENGTH) {A9=0;MAXTEMP9=MAXTEMP9-MINTEMP9;}ADFULL=ADFULL+1;}CarControl.c#include <hidef.h> /* common defines and macros */ #include <MC9S12XS128.h> /* derivative information */ #include "SetPwm.h"#include "main.h"#include "RouteTest.h"#define uint unsigned int#define uchar unsigned char#define value01L -43#define value23L -94#define value45L -90#define value67L -120#define value89L -60#define value01R 43#define value23R 90#define value45R 110#define value67R 130#define value89R 60//#define bentspeed 45//#define dirspeed 45#define valueDL -220#define valueDR 220uint SPEED;//小车速度int CARREL01=0,CARREL23=0,CARREL45=0,CARREL67=0,CARREL89=0; //小车偏移量int ERROR=4050,D_ERROR=0,LASTERROR=4050,E_ERROR=4050,ERRORREL=0; int speedrel=0;uint setspeed=60,realspeed=0;void Delay10us(uint m) //延时10us{uint u;for(;m>0;m--)for(u=0;u<38;u++);}void CarControl(void){//采样100个数据if(ADFULL==LENGTH) {ADFULL=0;//***********************************************CARREL01=MAXTEMP0-MAXTEMP1;CARREL23=MAXTEMP2-MAXTEMP3;CARREL45=MAXTEMP4-MAXTEMP5;CARREL67=MAXTEMP6-MAXTEMP7;CARREL89=MAXTEMP8-MAXTEMP9;if(CARREL01>value01R)//01右转处理{ERROR=4050+CARREL01-value01R;if(ERROR>=4100)ERROR=4100;setspeed=dirspeed;}if(CARREL23>value23R)//23右转处理{ERROR=4100+2*(CARREL23-value23R);if(ERROR>=4264)ERROR=4264;setspeed=dirspeed;}if(CARREL45>value45R)//45右转处理{ERROR=4264+6*(CARREL45-value45R);if(ERROR>=4411)ERROR=4411;setspeed=40;}if(CARREL67>value67R)//67右转处理{ERROR=4411+6*(CARREL67-value67R);if(ERROR>=4600)ERROR=4600;setspeed=bentspeed;}//以上是右转弯处理//******************************************************************* ******//以下是左转弯处理if(CARREL01<value01L)//01{ERROR=4050+CARREL01-value01L;if(ERROR<=4000)ERROR=4000;setspeed=dirspeed;}if(CARREL23<value23L)//23{ERROR=4000+3*(CARREL23-value23L);if(ERROR<=3886)ERROR=3886;setspeed=dirspeed;}if(CARREL45<value45L)//45{ERROR=3886+4*(CARREL45-value45L);if(ERROR<=3794)ERROR=3794;setspeed=(dirspeed+bentspeed)/2;}if(CARREL67<value67L){ERROR=3794+8*(CARREL67-value67L);if(ERROR<=3600)ERROR=3600;setspeed=bentspeed;}D_ERROR=D_ERROR+ERROR-LASTERROR; //误差累积计算 if(D_ERROR>valueDR || D_ERROR<valueDL ) {ERRORREL=D_ERROR;}LASTERROR=ERROR; //保存前一次误差E_ERROR=ERROR+ERRORREL; //叠加误差累计值if(E_ERROR>4600) E_ERROR=4600;if(E_ERROR<3600) E_ERROR=3600;PWMDTY23=E_ERROR;ERRORREL=0;//PWMDTY01=bentspeed;//**************速度控制*************************realspeed=(xishu+1)*speed;speedrel=setspeed-realspeed;if(speedflag==0){if(speedrel<=-10 && (E_ERROR>4400 ||E_ERROR<3800)){PWMDTY45=90; //反转迅速减速PWMDTY01=0;}else{PWMDTY45=0;PWMDTY01=setspeed;}}else{PWMDTY01=setspeed;PWMDTY45=0;}}}Main.c#include <hidef.h> /* common defines and macros */#include <MC9S12XS128.h> /* derivative information */#include "RouteTest.h"#include "CarControl.h"#include "SetPwm.h"#define uint unsigned int#define uchar unsigned char//#define dirspeed 60uint STOPCAR=0,speed,speedsum=0,xishu=0,flag=0,jishi=0; uint bentspeed=0,dirspeed=0;uint speedflag=0;void Delay10(uint m) //延时10us{uint u;for(;m>0;m--)for(u=0;u<38;u++);}void Delay(int k) //延时k*1ms{int u;for(;k>0;k--)for(u=0;u<3998;u++);}//总线时钟设置void setbusclock(void){SYNR = 0x02;REFDV = 0x01;while (!(CRGFLG&0x08));CLKSEL =0x80;}/*****************************************************功能:时基中断初始化,实现5ms中断500us进行一次测速。

飞思卡尔智能车电磁组分区算法介绍

飞思卡尔智能车电磁组分区算法介绍

飞思卡尔智能车电磁组分区算法介绍写在之前的话:1、⽬前我是⼀名在校学⽣,这也是我第⼀次写博客,不周之处,请多谅解;2、此算法并⾮原创,借鉴⾃⼭东德州学院第⼋届⽩杨队(PS:个⼈看法,对于⼀些⼈把别⼈的开源东西改头换⾯⼀下就说是⾃⼰的原创⾏为⼗分鄙视);3、对于此算法的理解和说明并⾮纸上谈兵,算法已经被我运⽤到了⼩车⽐赛中并取得好的成绩(具体就不多说了,⽐赛时车莫名其妙坏了,⽐赛前调试的速度绝对能进国赛,⽐较遗憾),总之这算法是我尝试过的最好的算法;4、这⼀次所介绍的只是路径算法和⼀些知识普及,后⾯有时间会介绍其余部分算法及许多好的思路(舵机电机控制思路(不只是简单的PID),双车策略);5、希望对于这⽅⾯有涉及的⼈能与我联系并交流或指出不⾜之处。

---------------------------------------------------------------分割线-----------------------------------------------------------------------------⼀、没有这⽅⾯了解的可以看看 飞思卡尔智能车分为三组:摄像头、光电、电磁,我做的是电磁车,三种车队区别在于传感器的不同,所以获得路径信息的⽅法也不⼀样,摄像头和光电识别的是赛道上的⿊线(⽩底赛道),⽽电磁车则是检测埋在赛道下的通⼊100mh电流的漆包线,摄像头和光电采⽤的是摄像头和ccd作为传感器,电磁则是⽤电感放在漆包线周围,则电感上就会产⽣感应电动势,且感应电动势的⼤⼩于通过线圈回路的磁通量成正⽐,⼜因为漆包线周围的磁感应强度不同,因此不同位置的电感的感应电动势就不同,因此就可以去确定电感位置;因此在车⼦前⾯设置了50cm的前瞻,电感布局如下(怎么发不了图⽚):分为两排,前排3个,编号0,1,2(前期还加了两个竖直电感⽤来帮助过直⾓弯,后来改为了⼋字电感);后排2个,编号3,4;现在车⼦获得了不同位置的感应电动势的⼤⼩了,但这些值是不能处理的:1、感应电动势太微弱;2、是模拟信号,信号太微弱就放⼤它;这就涉及到模拟电路的知识了,就不多说了(因为要把这讲完到PCB绘制的篇幅就⾜够写另开⼀号专门写这些⽅⾯来(PS:题外话(我的题外话⽐较多)):放⼤部分外围你设计的再好也抵不过⼀个更好的芯⽚,有两个例⼦,⼀个是我⾃⼰的:之前⽤的是NE5532,但是效果不理想,加了好多什么滤波,补偿,都⽤上,没⽤,软件⾥处理后⾯再说,后来⼀狠⼼换了AD620,感觉像是春天来了,因为它是仪⽤放⼤器,还有就是贵。

飞思卡尔智能车-电磁传感器与实践

飞思卡尔智能车-电磁传感器与实践

电磁传感器与实践
电磁传感器与实践
由毕奥-萨伐定律有: 0 I B 4 r
其中u为真空磁导率:
所以不难想象磁场强度 非常的弱,难以使用测 磁场的方式检测。
电磁传感器与实践
我们有很多测量磁场的方法,磁场传感器 利用了物质与磁场之间的各种物理效应:磁电效 应(电磁感应、霍尔效应、磁致电阻效应)、磁 机械效应、磁 光效应、核磁共振、超导体与电 子自旋量子力学效应。 我们选取最为传统的电磁感应线圈的方案。 它具有原理简单、价格便宜、体积小(相对小)、 频率响应快、电路实现简单等特点,适应于初学 者快速实现路经检测的方案。
电磁传感器与实践
从上面检测原理可以知道,测量磁场核心是检测线圈的感应电动 势 E 的幅 值。电磁传感器的设计主要包括:感应线圈的选择、信号 选频放大、整流与检测等几个方面,将会涉及到电磁场与波、高频、 模电等相关学科的知识点,这里不再详细的给出各个方案的具体论证 过程,直接给出电路设计系统框图:
电磁传感器与实践
电磁传感器与实践
对于实际传感器摆放位置的说明: 1、水平方向两个平行的线圈
2、水平方向两个内八字的线圈
电磁传感器与实践
3、水平方向两个垂直的线圈 4、水平和竖直方向两个线圈
电磁传感器与实践
使用色环电感制作的传感器:
电磁传感器与实践
使用多排传感器:
电磁传感器与实践
当然传感器的安装方法还有非常多的方法,要靠我们自 己去探索实验,在寻找时,也是一种乐趣,当找的更好 的方法时,你会感到一种满足 感! 由于本人的水平有限,PPT中可能有不少漏洞,有不全 面的地方,详细内容可以参照《智能小车设计指导》第 二版,本人已上传到QQ群的共享文件中。
h h Ed E1 E2 2 2 2 h 为两传感器之间的距离 x为其中一个传感器到中间导线的距离

第五届飞思卡尔智能车电磁组程序

第五届飞思卡尔智能车电磁组程序

第五届飞思卡尔智能车电磁组获奖程序MC9S12XS128单片机、用前置线圈检测磁感线、用无线蓝牙采集数据、干簧管检测起跑线磁铁。

#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions */#include <stdio.h>/****************************************************************************** ******一·全局变量声明模块******************************************************************************* ******/typedef unsigned char INT8U;typedef unsigned int INT16U;typedef int INT32;typedef struct {INT8U d; //存放这一次AD转换的值}DATA;/****************************************************全局变量声明区*****************************************************/DA TA data[6]={0}; //全局变量数组,存放赛道AD转换最终结果INT8U a[6][8]={0}; //全局变量用来存放赛道AD转换中间结果INT8U cross0,cross1; //记录十字叉线#define LED PORTA_PA7#define LED_CS PORTA_PA0byte START ;INT16U dianji0;//用来存放上次电机转速PWM,来判断是否减速#define duojmax 9200 //向左转向最大值#define duojmid 8400 //打在中间#define duojmin 7600 //向右转向最小值#define duojcs 8000;#define dianjmax 1200#define dianjmin 10#define dianjmid 600static INT8U look=0,look1=0;int road_change[100]={0}; //判断赛道情况数组int roat_change0;int *r_change0; //指向数组最后一位int *r_change1; //指向数组倒数第二位int sum_front=0,sum_back=0; //分别存储数组前后两部分的和INT16U waittime=0;INT8U choise; //读拨码开关数值/******************************速度测量参数定时********************************/#define PIT0TIME 800 //定时0初值:设定为4MS 测一次速度,采一次AD值#define PIT1TIME 1390 //定时1初值:设定为7ms定时基值/*******************************脉冲记数变量*******************************/ static INT16U PulseCnt;//最终的脉冲数/******************************电机PID变量*********************************/float speed_return_m ;struct {int error0;int error1;int error2;int speed;int chage;float q0,q1,q2,Kp,Kd,Ki;}static SpeedPid;/********************************速度变量设定*******************************/ INT8U speedmax ; //直道加速INT8U speedmin ; //急转弯刹车INT8U speedmid ; //弯道内部限速INT8U speedaveg ; //INT8U breaktime ; //刹车时间////////////////////////////////////////////////////////////////////////////#define speederror_min 2 //允许的最小误差static int NowSpeed;static int speed_control; //存储pid输出值static int speed_return;/*******************************舵机PID参数******************************/struct{int error0;int error1;int error2;int chage;float Kp,Kd,Ki;}PositionPid;int change;static INT16U angle_left [52]={8550,8562,8574,8586,8598,8610,8622,8634,8646,8658,8670,8682,8694,8706,8718,8730,8 742,8754,8766,8778,8790,8802,8814,8826,8838,8850,8862,8874,8886,8898,8910,8922,8934,894 6,8958,8970,8982,8994,9006,9018,9030,9042,9054,9066,9078,9090,9102,9114,9126,9138,9150,9 150};static INT16U angle_right[52]={8250,8238,8226,8214,8202,8190,8178,8166,8154,8142,8130,8118,8106,8094,8 082,8070,8058,8046,8034,8022,8010,7998,7986,7974,7962,7950,7938,7926,7914,7902,7890,787 8,7866,7854,7842,7830,7818,7806,7794,7782,7770,7758,7746,7734,7722,7710,7698,7686,7674,7 662,7650,7650};static INT16U *angle_l=angle_left ,*angle_r=angle_right;static INT16U angle_control=duojmid; //舵机PWM最终控制量static INT16U angle_control0=duojmid;static INT16U angle_control1=duojmid;static INT16U break_pwm=0;INT16U angle_return;/****************************lcd液晶显示变量定义**************************/#define LCD_DATA PORTB#define LCD_RS PORTA_PA4 //PA6#define LCD_RW PORTA_PA5 //PA7#define LCD_E PORTA_PA6 //PA7INT8U start[]={"WELCOME TO LZJTU"};INT8U date[]={"2011-3-15 TUS"};INT8U time[]={"00:00:00"};INT16U Counter=0;INT8U Counter0=0,select=0,min=0;INT8U Counter1=0;INT8U LCD_choice;/**************************标志变量区*************************************/INT8U stop_flag=0;INT8U start_flag=0;INT8U backflag=0;INT8U AD_start ;INT8U zhijwan=0 ;INT8U shizi=0;/****************************************************************************** ******二·初始化函数模块******************************************************************************* ******//**************************************************************1. 芯片初始化--------MCUInit()**************************************************************/void MCUInit(void){//////////////////////////////////////////////////////////////////////////////////////////// ********总线周期计算方法******** //// fBUS=fPLL/2 //// fvoc=2*foscclk*(synr+1)/(refdv+1) //// PLL=2*16M*(219+1)/(69+1)=96Mhz /////////////////////////////////////////////////////////////////////////////////////////////////CLKSEL=0X00;PLLCTL_PLLON=1; //锁相环控制SYNR = 0X40|0X05;REFDV =0X80|0X01;POSTDIV=0X00;while( CRGFLG_LOCK != 1); //等待锁相环时钟稳定,稳定后系统总线频率为24MHz CLKSEL_PLLSEL = 0x01; //选定锁相环时钟PLLCTL=0xf1; //锁相环控制//时钟合成fpllclk=2*foscclk*(synr+1)/(refdv+1)//synr=2;refdv=1;外部时钟foscclk=16mb//fpllclk=48mb 总线时钟24mb// CRGFLG=0x40; //时钟复位控制// CRGINT=0x00 ; //时钟复位中断使能// CLKSEL =0xc0; //时钟选择//COPCTL =0x00;// ARMCOP =0x00; //看门狗复位// RTICTL =0x00; //实时中断}/**************************************************************2. AD转换初始化--------ADCInit()**************************************************************/void ADCInit(void){A TD0CTL1=0x00;A TD0CTL2=0x40; //0100,0000,自动清除使能控制位,忽略外部触发//转换结束允许中断,中断禁止A TD0CTL3=0xA4; //0100,0100,转换序列长度为4;FIFO模式,冻结模式下继续转换A TD0CTL4=0x05; //00001000,8位精度,PRS=5,ATDCLOCK=BusClock(24mb)/(5+1)*2,约为2MHz,采样周期位4倍AD周期A TD0DIEN=0x00; //输入使能禁止}/**************************************************************3. PWM初始化--------PWMInit()**************************************************************/void PWMInit(void) //PWM初始化{//总线频率24mb//1. 选择时钟:PWMPRCLK,PWMSCLA,PWMSCLB,PWMCLKPWME=0x00; //PWM通道关闭PWMPRCLK=0x01; //00010011时钟源A=BusClockA/2=48M/2=24MB;//低位clockA:01,45;高位clockB:23,67 时钟源B=48/1=48MBPWMSCLA =2; //ClockSA=ClockA/2/2=24MB/4=6MBPWMSCLB =2; //ClockSB=ClockB/2/2=12MBHzPWMCLK =0xFF; //通道均级联,均用SA,SB ,且都为6MB//2. 选择极性:PWMPOLPWMPOL =0xff; //电机正反转寄存器(PWMPOL)起始输出为高电平//3. 选择对齐方式:PWMCAEPWMCAE=0x00; //输出左对齐//4.PWMCTL PWM控制寄存器PWMCTL=0xF0; //01,23,45,67通道都级连,输出风别由1,3,5,7口控制//5. 使能PWM通道; PWME//6. 对占空比和周期编程//周期计算公式:输出周期=通道时钟周期*(PWMPERX+1)//占空比:=(PWMPERYX+1)/(PWMPERX+1)//开始时刻应使舵机打直,电机不转//1.通道45用来控制舵机PWMPWMPER45=60000-1; //PWM01=6MB/(60000)=100HzPWME_PWME5 =0; //舵机PWM通道开//2.通道23用来控制电机PWM1,通道01用来作为电机PWM2PWMPER23=1200-1;//电机正转PWM周期初始化。

第七届全国大学生“飞思卡尔”杯智能汽车竞赛电磁组直立行车参考设计方案(版本2.0)官方方案2.0

第七届全国大学生“飞思卡尔”杯智能汽车竞赛电磁组直立行车参考设计方案(版本2.0)官方方案2.0

第七届全国大学生“飞思卡尔”杯智能汽车竞赛电磁组直立行车参考设计方案(版本2.0)目 录目录 (2)图表索引 (3)一、前言 (7)二、原理篇 (9)2.1直立行走任务分解 (9)2.2车模直立控制 (11)2.3 车模角度和角速度测量 (19)2.3车模速度控制 (26)2.4车模方向控制 (33)2.6车模直立行走控制算法总图 (36)三、电路设计篇 (37)3.1整体电路框图 (37)3.2 DSC介绍与单片机最小系统 (39)3.3倾角传感器电路 (42)3.4电机驱动电路 (44)3.5速度传感器电路 (45)3.6电磁线检测电路 (46)3.7 角度计算电路 (50)3.8 车模控制电路全图 (55)四、机械设计篇 (57)4.1车模简化改装 (57)4.2传感器安装 (59)4.3注意事项 (63)五、软件开发篇 (64)5.1软件功能与框架 (65)5.2 DSC的硬件资源配置 (68)5.3主要算法及其实现 (69)六、车模调试篇 (82)6.1 调试参数 (82)6.2调试条件 (85)6.3 桌面静态参数调试 (91)6.4 现场动态参数调试 (101)6.5 方案改进与车模整体水平提高 (101)七、结束语 (102)附录: (103)图表索引第一章图1- 1 电磁组车模直立运行模式 (7)图1- 2参考设计方案内容 (8)图1- 3 车模制作路线图 (9)第二章图2- 1 车模控制任务分解 (10)图2- 2 车模倾角会引起车速速度变化 (10)图2- 3 三层控制之间相互配合 (11)图2- 4 保持木棒直立的反馈控制 (12)图2- 5 通过车轮运动保持车模直立 (12)图2- 6 车模简化成倒立的单摆 (13)图2- 7 普通单摆受力分析 (13)图2- 8 不同阻尼力下的单摆运动 (14)图2- 9 在车轮上的参照系中车模受力分析 (14)图2- 10 车模控制两个系数作用 (16)图2- 11 车模运动方程 (16)图2- 12 加入比例微分反馈后的系统框图 (17)图2- 13 电机在不同电压下的速度变化曲线 (18)图2- 14 加速度传感器原理 (19)图2- 15 MMA7260三轴加速度传感器 (20)图2- 16 车模运动引起加速度信号波动 (21)图2- 17 实际测量MMA7260Z轴信号 (21)图2- 18 车模运动引起加速度Z轴信号变化 (22)图2- 19角速度传感器及参考放大电路 (22)图2- 20 角速度积分得到角度 (23)图2- 21 角速度积分漂移现象 (23)图2- 22 通过重力加速度来矫正陀螺仪的角度漂移 (24)图2- 23 双加速度传感器获得车模角加速度 (25)图2- 24 角度控制框图 (25)图2- 25 电机速度检测 (26)图2- 26 车模倾角给定 (27)图2- 27 车模倾角控制速度中的正反馈 (28)图2- 28 车模倾角控制分析 (29)图2- 29 车模运动速度控制简化模型 (29)图2- 30 增加微分控制后的系统 (30)图2- 31 改进的微分控制 (30)图2- 32 车模角度和速度控制框图 (31)图2- 33 速度角度控制方案的改进 (32)图2- 34 改进后的速度和角度控制方案 (32)图2- 35 检测道路中心电磁线方式 (33)图2- 36 通过电机驱动电压的差动控制控制车模方向 (34)图2- 37 检测车模转动速度的陀螺仪 (34)图2- 38 电感线圈的偏角影响感应电动势 (35)图2- 39 车模方向控制算法 (35)图2- 40 车模运动控制总框图 (36)第三章图3- 1 直立车模控制电路整体框图 (39)图3- 2 56F8013内部资源示意图 (40)图3- 3 F8013最小系统电路 (41)图3- 4 F8013最小系统电路实物 (42)图3- 5 陀螺仪、加速度传感器电路 (43)图3- 6 车模倾角传感器电路实物图 (43)图3- 7 双电机驱动电路 (44)图3- 8单极性PWM、双极性PWM (45)图3- 9 两片33886组成的电机驱动电路 (45)图3- 10 速度传感器电路 (46)图3- 11 基于三极管的电磁信号放大检波电路 (47)图3- 12 基于三极管的电磁放大检波电路实物图 (48)图3- 13 使用R-R运放进行电磁信号放大检波 (49)图3- 14 LMV358放大检波输出波形 (49)图3- 15 基于LMV358放大检波电路实物图 (50)图3- 16 双加速度测量角速度电路 (51)图3- 17 双加速度计测量角度波形图 (51)图3- 18 简化角速度电路 (52)图3- 19 实测车模角速度信号波形 (52)图3- 20 角度信号处理电路 (53)图3- 21 不同角速度比例情况下输出波形 (53)图3- 22 角度计算环节的传递函数 (54)图3- 23 一个运算放大器实现角度计算 (54)图3- 24 不同P1阻值对应的输出波形 (55)图3- 25 简化的角度和角速度处理电路 (55)图3- 26 车模控制电路全图 (56)第四章图4- 1 完整的C型车模底盘 (57)图4- 2 简化后的C型车模底盘 (57)图4- 3 使用热熔胶固定电机支架与车模底盘 (58)图4- 4 去掉后轮之后的车模底盘 (58)图4- 5 电机引线转接板 (59)图4- 6 使用复合胶水固定光电编码盘 (59)图4- 7 固定好的光电码盘和光电检测管 (60)图4- 8 电磁传感器支架 (61)图4- 9 车模组装全图 (64)第五章图5- 1 主程序框架 (65)图5- 2 中断服务程序 (66)图5- 3 任务中断时间波形 (67)图5- 4 算法框图中与控制相关的软件函数 (70)图5- 5 控制函数调用与参数传递关系 (71)图5- 6 程序中变量命名规范 (72)图5- 7 电机死区补偿 (78)第六章图6- 1 调试车模参数复杂而关键 (82)图6- 2 需要调整的参数和相关的单位 (84)图6- 3 车模运动坐标定义 (85)图6- 4 电源检查 (86)图6- 5 单片机串口通信 (86)图6- 6 PWM信号输出 (87)图6- 7 采集电机光电码盘信号 (87)图6- 8 陀螺仪、加速度传感器AD采集信号 (88)图6- 9 车模静态参数调整桌面 (88)图6- 10车模动态参数调试场地 (89)图6- 11 监控软件界面 (89)图6- 12 无线遥控开关 (90)图6- 13 无线通信模块进行参数监控 (90)图6- 14 F8013内部FLASH应用划分 (91)图6- 15 需要整定的传感器参数 (91)图6- 16 车模保持垂直静止 (92)图6- 17 测量加速度传感器的极值 (92)图6- 18测量陀螺传感器比例因子,角度补偿回路断开 (93)图6- 19 几种不同陀螺仪比例因子角度输出 (94)图6- 20 车模控制参数 (95)图6- 21 角度参数调整过程 (96)图6- 22 速度参数调整过程 (97)图6- 23 方向参数调整过程 (98)图6- 24 角度补偿时间常数调整 (99)图6- 25 Z轴附加信号分析 (100)图6- 26 死区常数调整 (100)附录图7- 1 参考设计方案视频截图 (103)图7- 2 参数整定与调试指南 (104)图7- 3 软件控制算法全图 (106)图7- 4 参考方案电路全图 (107)第一章、前言为了提高全国大学生智能汽车竞赛创新性和趣味性,激发高校学生参与比赛的兴趣,提高学生的动手能力、创新能力和接受挑战能力,智能汽车竞赛组委会将电磁组比赛规定为车模直立行走,如图1- 1所示。

第五届飞思卡尔智能汽车竞赛电磁组设计参考方案

第五届飞思卡尔智能汽车竞赛电磁组设计参考方案

第五届全国大学生智能汽车竞赛20KHz 电源参考设计方案(竞赛秘书处技术组版本1.0)第五届全国大学“飞思卡尔杯”智能汽车竞赛新增加了“电磁组”。

根据比赛技术要求,电磁组竞赛,需要选手设计的智能车能够检测到道路中心线下电线中20KHz交表电流产生的磁场来导引小车沿着道路行驶。

在平时调试和比赛过程中需要能够满足比赛技术要求的20KHz的交流电源驱动赛道中心线下的线圈。

本文档给出了电源设计参考方案,参赛队伍可以根据这些参考设计方案自行设计制作所使用电源。

一、 电源技术指标要求:根据《竞赛比赛细则》附件三关于电磁组赛道说明,20KHz电源技术要求如下:1、驱动赛道中心线下铺设的0.1-0.3mm直径的漆包线;2、频率范围:20K±2K;3、电流范围:50-150mA;下图是赛道起跑区示意图,在中心线铺设有漆包线。

图1 竞赛跑道起跑区示意图首先分析赛道铺设铜线的电抗,从而得到电源输出的电压范围。

我们按照普通的练习赛道总长度50,使用直径为0.2mm漆包线。

在30摄氏度下,铜线的电阻率大约为 0.0185欧姆平方毫米/米。

计算可以得到中心线的电阻大约为29.4欧姆。

按照导线电感量计算机公式:42ln0.75()lL l nHd⎛⎞=×−⎜⎟⎝⎠。

其中l, d的单位均为cm。

可以计算出直径为0.2mm,长度50米的铜线电感量为131微亨。

对应20KHz下,感抗约为16.5欧姆。

可以看出,线圈的电感量小于其电阻值。

由于导线的电感量与铺设的形状有关系,上述计算所得到的电感量不是准确数值。

另外,我们可以在输出时串接电容来抵消电感的感抗。

所以估算电源电压输出范围的时候,我们不再特别考虑线圈的电感对于电流的影响。

为了方便设计,我们设计电源输出电压波形为对称方波。

由于线圈电感的影响,线圈中的电流为上升、下降沿缓变的方波波形。

如下图所示图2 线圈驱动电压与电流示意图对于电阻为29.4欧姆的赛道导线,流过100mA的电流,电压峰值应该大于3V。

飞思卡尔智能车大奖赛(电磁组2)软件控制系统设计与开发开题报告

飞思卡尔智能车大奖赛(电磁组2)软件控制系统设计与开发开题报告

飞思卡尔智能车大奖赛(电磁组2)软件控制系统设计与开发1、背景介绍全国大学生“飞思卡尔”杯智能汽车竞赛组委会提供一系列标准的汽车模型、直流电机和可充电式电池,参赛队伍要依靠符合大赛要求的元器件,制作能够自主循迹的智能车,在规定的跑道上自主循迹行驶。

其设计内容涵盖了控制、模式识别、程序算法、传感技术、汽车电子、电子电路、计算机、机械、能源等多个学科的知识[1]。

实际上,作为全球首屈一指的嵌入式电子解决方案供应商,飞思卡尔半导体从1994年起便与国内大学在技术培训应用研究方面的合作,目前汽车及标准电子产品分部已在清华、复旦大学、深圳大学、电子科技大学及同济大学建立了嵌入式处理器开发应用研究中心(简称MAC),自2000年又逐步在北航,浙江大学等学校建立了教学实验中心(简称MTC)。

大量的大学生,通过参加竞赛,为飞思卡尔先进的产品及开发工具获得专业培训,取得实际操作经验,为自身公司的发展起到重大的作用。

2000年智能车比赛首先由韩国汉阳大学承办开展起来,每年全韩国大约有100余支大学生队伍报名并准予参赛。

随着赛事的逐年开展,不仅有助于大学生自主创新能力的提高,对于高校相关学科领域学术水平的提升也有一定帮助,最终将有助于汽车企业的自主创新,得到企业的认可。

这项赛事在韩国的成功可以证明这一点。

同时,飞思卡尔公司开始协办国大学生"飞思卡尔"杯智能汽车竞赛。

首先,竞赛在各个分赛区进行报名、预赛,各分赛区的优胜队将参加全国总决赛。

每届比赛根据参赛队伍和队员情况,分别设立线性CCD组、摄像头组、电磁组、创意组等多个赛题组别。

全国大学生智能汽车竞赛一般在每年的10月份公布次年竞赛的项目和组织方式,并开始接受报名,次年的3月份进行相关技术培训,7月份进行分赛区竞赛,8月份进行全国总决赛。

飞思卡尔全国大学生竞赛,至今已举办10届,正是因为有如此优点于一身,得到了众多高校和大学生的欢迎,也逐渐得到了企业界的极大关注[2]。

第五界飞思卡尔总结(电磁组)

第五界飞思卡尔总结(电磁组)

电磁组技术总结:总的来说:小车设计应该遵循以下原则:硬件越简单越好,小车越轻越好,牢记机械结构要调好,轮子摩擦力要做足,程序要跟上和考虑小车状况。

经过最终的结论是:小车的机械结构非常重要!!!一、小车的机械结构可以分为以下几方面考虑:1、小车整体的重心:实践证明,小车要达到比较好的平均行驶性能,重心适当靠前!简单的确定方法是:用手踮起连接杆连接柱,如果小车靠前倒则证明重心是向前的。

改造小车重心:可以适当改变电池的摆放位置,可以适当放置细小的东西来加重。

但是最好的方法是在不加重的基础上改造,折中过弯和直道影响。

动态重心:广技师今年的小车做的比较好,尤其是动态调节重心,如图:在过弯时利用舵机来改变重心左右移动,可能会使得小车车盘挨到赛道,增加摩擦力,所以过弯可以很快很稳!!!!但不建议抄杂,要有自己的方法!2、车轮摩擦力问题:轮子摩擦力是越大越好的!新轮胎的摩擦力肯定比旧轮胎的摩擦力要大,但要改造一下:把新轮胎中间的那条凸出的黑条用剪甲钳剪平,使得轮胎整体平齐;还要适当用牙刷或者旧轮胎打磨以下,用牙刷+牙膏刷得5次左右,就可以在比赛中用上了。

以上是经验之谈!当在平时试车的过程中,如果程序正常,发现过弯老是滑出界,一是赛道问题,而是轮胎太旧的问题,这点要注意!3、要适当为小车减肥!车上能减的车部件尽量减,例如尾翼部分。

4、舵机臂长问题:不易过长,一般有3~5cm就可以了,过长摆力会减弱。

以上三点是比较重要的,其它机械结构调整可以参见《智能车底盘与机械结构设计》。

这里不再啰嗦。

二、小车硬件部分:在做电磁组的硬件时主要是传感器和驱动!传感器部分:值得参考的《电磁组车模设计》一文,里面有很详细的电路介绍和策略实现方法!!!1、电磁信号采集:LC振荡原理,出来的是正弦波,然后思路是把正弦波放大,然后整流或者检测峰值(推荐采用峰值检测)!放大电路可以用运放或者官网的推荐电路。

如果采用运放,是可行的,但是成本会比较高电路复杂,而且速度没有三极管快,但是放大可以放到比较大,注意失真问题!-5V电源解决方案:以上电路为一个线性度非常好的小信号放大,仅供参考,但是推荐官网电路,简单明了!另外,官网电路中:建议可调电阻最终用固定电阻代替!因为可调电阻一体积大,二里面结构其实是一个电感,是一个集成滤波器,但这点建议可能夸张了一点!建议后面的R3C4的参数不宜设得太大,会造成一定的延时,0.1uF+(10K<R4<50k).建议三极管+5V这里加滤波电容,最好组合10uF+104(一般而言,只要104+比104大100倍的电容组合滤波,滤波效果就能达到)。

飞思卡尔智能车电磁组技术报告

飞思卡尔智能车电磁组技术报告

第十届“飞思卡尔”杯全国大学生智能汽车竞赛技术报告摘要本文以第十届全国大学生智能车竞赛为背景,介绍了基于电磁导航的智能赛车控制系统软硬件结构和开发流程。

该系统以Freescale半导体公司32 位单片机MK60DV510ZVLQ100为核心控制器,使用IAR6.3程序编译器,采用LC选频电路作为赛道路径检测装置检测赛道导线激发的电磁波来引导小车行驶,通过增量式编码器检测模型车的实时速度,配合控制器运行PID控制等控制算法调节驱动电机的转速和转向舵机的角度,实现了对模型车运动速度和运动方向的闭环控制。

同时我们使用集成运放对LC选频信号进行了放大,通过单片机内置的AD采样模块获得当前传感器在赛道上的位置信息。

通过配合Visual Scope,Matlab等上位机软件最终确定了现有的系统结构和各项控制参数。

实验结果表明,该系统设计方案可使智能车稳定可靠运行。

关键字:MK60DV510ZVLQ100,PID控制,MATLAB,智能车第十届全国大学生智能汽车邀请赛技术报告目录第一章引言 (5)第二章系统方案设计 (6)2.1系统总体方案的设计 (6)2.2系统总体方案设计图 (6)电磁传感器模块 (7)控制器模块 (7)电源管理模块 (7)编码器测速模块 (7)舵机驱动模块 (8)起跑线检测模块 (8)人机交互模块 (8)测距模块 (8)第三章机械结构调整与优化 (8)3.1智能车前轮定位的调整 (8)主销后倾角 (9)3.1.2主销内倾角 (9)3.1.3 前轮外倾角 (10)3.1.4 前轮前束 (10)3.2 舵机的安装 (11)3.3编码器安装 (12)3.4车体重心调整 (12)3.5传感器的安装 (13)3.6测距模块的安装 (14)第四章硬件电路设计 (15)4.1单片机最小系统 (15)4.2电源管理模块 (16)4.3电磁传感器模块模块 (17)4.3.1 电磁传感器的原理 (17)4.3.2 信号的检波放大 (18)4.4编码器接口 (19)4.5舵机驱动模块 (20)4.6电机驱动模块 (20)4.7人机交互模块 (21)第五章控制算法设计说明 (22)5.1主要程序流程 (22)5.2赛道信息采集及处理 (23)5.2.1 传感器数据滤波及可靠性处理 (23)5.2.2 位置偏差的获取 (25)5.3 控制算法实现 (27)5.3.1 PID算法原理简介 (27)5.3.2基于位置式PID的方向控制 (31)5.3.3 基于增量式PID和棒棒控制的速度控制 (31)5.3.4 双车距离控制和坡道处理 (33)第六章系统开发与调试 (34)6.1开发环境 (34)6.2上位机显示 (35)6.3车模主要技术参数 (36)第七章存在的问题及总结 (37)7.1 制作成果 (37)7.2问题与思考 (37)7.3不足与改进 (37)参考文献 (38)附录A 部分程序代码 (39)第十届全国大学生智能汽车邀请赛技术报告第一章引言随着科学技术的不断发展进步,智能控制的应用越来越广泛,几乎渗透到所有领域。

基于电磁场检测巡线智能车系统的设计

基于电磁场检测巡线智能车系统的设计

基于电磁场检测巡线智能车系统的设计本文介绍了基于飞思卡尔32位微控制器的基于电磁场检测巡线智能车系统。

针对比赛的具体情况,我们建立了赛车、赛道和自主控制系统的基本模型,给出了理论分析、仿真计算、在线调试的基本开发方法,在比较各种算法的性能特点后,我们确定最终方案,并完成了智能车的制作和调试。

本系统以M4系列微控制器K60为核心,软件平台为IAR EWARM开发环境,车模为组委会统一提供的E车模。

论文介绍了整个智能车系统的硬件和软件设计开发过程。

使用K60作为主控芯片,用安装在车头的电感来检测赛道信息,用陀螺仪和加速度计检测小车姿态,用光电编码器检测车模速度,用干簧管检测起跑线信息。

整个系统的工作原理是由磁感应传感器采集赛道信息并经放大处理,与陀螺仪和加速度计采集的车模姿态信息和光电编码器采集的车模速度信息一起送给单片机,通过程序设计控制优化算法,控制电机的转速以达到车模在赛道上的稳定高速行驶。

关键字:智能车K60 循迹速度1.1 概述随着现代科技的飞速发展,人们对智能化的要求已越来越高,而智能化在汽车相关产业上的应用最典型的例子就是汽车电子行业,汽车的电子化程度则被看作是衡量现代汽车水平的重要标志。

同时,汽车生产商推出越来越智能的汽车,来满足各种各样的市场需求。

第十一届“恩智浦”杯全国大学生智能汽车竟赛就是在这个背景下举行的。

比赛要求在大赛组委会统一提供的竞赛车模,我们选择了飞思卡尔微控制器K60为核心控制单元的基础上,自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法及执行、动力电机驱动等,最终实现能够自我识别路线,并且可以实时输出车体状态的智能车控制硬件系统。

本文先从总体上介绍了智能车的设计思想和方案论证,然后分别从机械、硬件、软件等方面的设计进行论述,重点介绍了芯片的选择和路径识别的方法,接着描述了智能车的制作及调试过程,其中包含本队在制作和调试过程中遇到的问题及其解决方法。

整体结构框图如图1-1 所示:图 1.1 整体结构框图1.2 整车设计思路本组电磁车使用山外K60作为核心控制单元,使用多传感器大前瞻进行巡线控制,并且检测起跑线。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为了能够更加准确测量感应电容式的电压,还需要将上述感应电压进一步放 大,一般情况下将电压峰峰值放大到 1-5V 左右,就可以进行幅度检测,所以需 要放大电路具有 100 倍左右的电压增益(40db)。最简单的设计可以只是用一阶 共射三极管放大电路就可以满足要求,如下图所示:
+5V
20kHz 频率
R1 510k
1-100
长波通讯
> 30kHz
10-6-10-3
赛道中心导线周围 0.5 米范围 20kHz
10-4-10-2
比赛选择 20kHz 的交变磁场作为路径导航信号,在频谱上可以有效地避开 周围其它磁场的干扰,因此信号放大需要进行选频放大,使得 20kHz 的信号能 够有效的放大,并且去除其它干扰信号的影响。
为了验证 RLC 选频电路的效果,我们对比了在有和没有谐振电容两种情况 下的电感输出的感应电压。在导线中通有 20kHz 左右,100mA 左右方波电流, 在距离导线 50mm 的上方放置垂直于导线的 10mH 电感,使用示波器测量输出电 压波形。如下图 12 所示。
电流参考波形
电感10mH感 应 电 压 距离h=5cm 电感L=10mH
图 1:电流周围的电磁场示意图
导线周围的电场和磁场,按照一定规律分布。通过检测相应的电磁场的强度 和方向可以反过来获得距离导线的空间位置,这正是我们进行电磁导航的目的。
由于赛道导航电线和小车尺寸 l 远远小于电磁波的波长 λ ,电磁场辐射能量 很小(如果天线的长度 l 远小于电磁波长,在施加交变电压后,电磁波辐射功率 正比于天线长度的四次方),所以能够感应到电磁波的能量非常小。为此,我们 将导线周围变化的磁场近似缓变的磁场,按照检测静态磁场的方法获取导线周围 的磁场分布,从而进行位置检测。
是并联谐振电容。上述电路谐振频率为:
f0
=

1 LC
。已知感
应电动势的频率 f0 = 20kHz ,感应线圈电感为 L = 10mH ,可以计算出谐振电容
的容量为:
( ) C
=
( 2π
1
)f0 2
L
=

1 × 20 ×103
3 ×10 ×10−3
ቤተ መጻሕፍቲ ባይዱ
=
6.33 ×10−9
(F)
通常在市场上可以购买到的标称电容与上述容值最为接近的电容为 6.8nF, 所以在实际电路中我们选用 6.8nF 的电容作为谐振电容。
线圈
引脚
磁性 10mH 材料
运动方向
L
h
模型车
电流/100mA 赛道中心线
图5 双水平线圈检测方案
为了讨论方便,我们在跑道上建立如下的坐标系,假设沿着跑道前进的方向
为z轴,垂直跑道往上为y轴,在跑道平面内垂直于跑到中心线为x轴。xyz轴满足 右手方向。
假设在车模前方安装两个水平的线圈。这两个线圈的间隔为L,线圈的高 度为h,参见下图5所示。左边的线圈的坐标为(x,h,z),右边的线圈的位置(x-L,h,z)。 由于磁场分布是以z轴为中心的同心圆,所以在计算磁场强度的时候我们仅仅考 虑坐标(x,y)。
在下面所介绍的检测方法中,我们选取最为传统的电磁感应线圈的方案。它 具有原理简单、价格便宜、体积小(相对小)、频率响应快、电路实现简单等特 点,适应于初学者快速实现路经检测的方案。
通电导线周围的磁场是一个矢量场,场的分布如图四所示。如果在通电直导 线两边的周围竖直放置两个轴线相互垂直并位于与导线相垂直平面内的线圈,则 可以感应磁场向量的两个垂直分量,进而可以获得磁场的强度和方向。
个感应线圈,计算两个线圈感应电动势的差值:
Ed
=
E1
− E2
=
h2
h +
x2

h2
h + (x − L)2
下面假设 L = 30cm ,计算两个线圈电动势差值 Ed 如下图所示:
Ed/ V
0.2
0.15
0.1
0.05
0
-0.05
-0.1
-0.15
-0.2
-5
0
5
10
15
20
25
30
35
x/cm
图 8 感应电动势差值 Ed 与距离 x 之间的函数
感应电动势的方向可以用楞次定律来确定。
由于本设计中导线中通过的电流频率较低,为 20kHz,且线圈较小,令线圈
中心到导线的距离为 r ,认为小范围内磁场分布是均匀的。再根据图 3 所示的
导线周围磁场分布规律,则线圈中感应电动势可近似为:
E = − dΦ(t) = k dI = K dt r dt r
由于线圈的轴线是水平的,所以感应电动势反映了磁场的水平分量。根据公
式(2)可以知道感应电动势大小与
x2
h + h2
成正比。
车模前进 方向
赛道
y
z
中心
x
(x,h)
L
水平线圈
h
交变电流
导航 电线
x
(100mA)
(x-L,h) 水平线圈
0
Y
z
线圈
L h
X
I/100mA
x
0
图6 感应线圈的布置方案
假设 h = 5cm,
从上图可以看出,当左边线圈的位置 x = 15cm 的时候,此时两个线圈的中 心恰好处于跑道中央,感应电动势差值 Ed 为0。当线圈往左偏移, x ∈ (15,30) , 感应电动势差值小于零;反之,当线圈往右偏移, x ∈ (0,15) ,感应电动势大于 零。因此在位移 0 ∼ 30cm 之间,电动势差值 Ed 与位移 x 是一个单调函数。可以 使用这个量对于小车转向进行负反馈控制,从而保证两个线圈的中心位置跟踪赛
道的中心线。通过改变线圈高度 h ,线圈之间距离 L 可以调整位置检测范围以及
感应电动势的大小。
三、电路设计原理 从上面检测原理可以知道,测量磁场核心是检测线圈的感应电动势 E 的幅
值。下面将从感应线圈、信号选频放大、整流与检测等几个方面讨论电路设计的 问题,最后给出电路设计系统框图和实际电路。
1、感应磁场线圈: 检测线圈可以自行绕制,也可以使用市场上能够比较方便购买的工字型
感知地球磁场的方向,从而发明了指南针。但是对于磁场定量精确的测量以及更 多测量方法的发现还是在二十世纪初期才得到了突飞猛进的进展。
现在我们有很多测量磁场的方法,磁场传感器利用了物质与磁场之间的各种 物理效应:磁电效应(电磁感应、霍尔效应、磁致电阻效应)、磁机械效应、磁 光效应、核磁共振、超导体与电子自旋量子力学效应。下面列出了一些测量原理 以及相应的传感器:
可以使用 LC 串并联电路来实现选频电路(带通电路),如下图所示:
电路示意图
L
C Vo
谐振 电容
感应 线圈
电感 内阻
等效电路图
R0/10Ω
Vo
L/10mH E
C/6.8nf
感应电动势
图 11:RLC 并联谐振电路
上述电路中,E 是感应线圈中的感应电动势,L 是感应线圈的电感量,R0 是
电感的内阻,C
放大,放大倍数一般要大于 100 倍(40db)。 (2) 噪声多:一般环境下,周围存在着不同来源、不同变化频率的磁场。
如下表所示:
表 1:典型的环境磁场强度范围
磁场环境
磁场性质
磁场强度(高斯)
家用电器周围一米范围
50Hz
10-3-10-2
地表面地球磁场
恒定
0.2-0.5
工业电机和电缆周围十米范围 50Hz
55μs
线圈感应电压 160mVpp
55μs
电流参考波形
电 感 1 0 m H感 应 谐 振 电 压 距离h=5cm 电感L=10mH 电容C=6.8nF
线圈感应谐振电压 55μs 300mVpp
55μs
(A)没有谐振电容时感应电压输出 (B)有谐振电容时感应电压输出 图 12:测量感应线圈两端的感应电压。
L1
C1
10mH 6.8nF
C2/104
R2 5.1k
C3/104
放大输出
T1
Vout
1815 D1
β>150
图 13:单管共射交流放大电路
电磁组竞赛车模 路径检测设计参考方案
(竞赛秘书处 2010-1,版本 1.0)
一、 前言 第五届全国大学生智能汽车竞赛新增加了电磁组比赛。竞赛车模需要能够通
过自动识别赛道中心线位置处由通有 100mA 交变电流的导线所产生的电磁场进 行路径检测。除此之外在赛道的起跑线处还有永磁铁标志起跑线的位置。具体要 求请参阅《第五届智能汽车竞赛细则》技术文档。
x
∈ (−15,
+15)cm
,计算感应电动势
E
=
h2
h +
x2
随着线圈水平位
置 x 的变化取值,如下图所示:
感应电动势
0.22
0.2
0.18
0.16
0.14
E/V
0.12
0.1
0.08
0.06
0.04
0.02
-15
-10
-5
0
5
10
15
x/cm
图 7 线圈中感应电动势与它距导线水平位置 x 的函数
如果只使用一个线圈,感应电动势 E 是位置 x 的偶函数,只能够反映到水平 位置的绝对值 x 的大小,无法分辨左右。为此,我们可以使用相距长度为 L 的两
)

对于无限长直电流来说,上式中θ1
=
0
,θ2
=
π
,则有
B
=
μ0 I 4π r

图 3:无限长导线周围的磁场强度
相关文档
最新文档