1、Labview智能小车控制平台基于Labview的智能小车控制平台摘要:该课程设计是基于Labview的智能汽车控制平台,该平台建立在飞思卡尔单片机及51单片机控制芯片基础上,基于Labview仿真。采用无线控制小车转向,加速,刹车系统。该设计是测控专业集单片机控制,电路,软件编程于一体的平台练习,是集测控专业所学的一门综合提高学生素质的课程设计。关键词:Labview 智能汽车 飞思卡尔单片机 测控Abstract: the course is designed based on the intelligent vehicle control platform Labview, this p
2、latform based on SCM and 51 single-chip microcomputer control freescale Labview, based on the chip. Using radiocontrol car accelerated, braking system, steering. This design is a professional sets single-chip microcomputer control, the control circuit and the software programming in one of the platf
3、orm, which is a professional knowledge of measurement to improve students comprehensive quality of the course design.Keywords: intelligent vehicle freescale microcontroller measure-control Labview一、 单片机系统的组成1改装原因:(1):市面上的游戏方向盘都是USB通信协议,用户不了解协议内容,无法用于自己控制要求。(2):USB通信优势虽然非常明显,但由于其协议复杂,且受其通信距离限制,USB信号一
4、般只能在几米的传输范围内,较串口较短,因此选择了简易可行的串口协议。2. 设计步骤:(1):了解内部工作及传感原理。拆开游戏方向盘,结果发现传感原理非常简单,仅靠变阻器和按键传递控制信号。(2):使用一款自己熟悉的单片机(AT89S52)根据硬件电路接口电路设计自己的硬件控制电路板卡。其中包括方向盘指挥输入部件和与PC机通信的串口通信模块。(3):编写自己的用户应用程序,创建自己和PC的通信协议,发挥软件编程的灵活性。3. 硬件原理图说明:(1):核心控制芯片选用AT89S52,其各接口使用情况如下图所示:0834_DI、0834_DO、0834_CLK、 0834_CS 用于AD采样的接口。
5、图(7)核心控制芯片89S52(2)AD转换及采样接口电路说明:采样电路的等效电路图图所示:图(8)AD转换油门和刹车:注:刹车和油门的机械结构将脚下力转换为对应变阻器的阻止变化,只需采样阻值大小即可判断力的大小。经测量知:刹力越大,电阻值越小。 图(9)油门和刹车等效图接口3、4之间接到游戏方向盘的刹车控制变阻器两端,相当于接一可变电阻。接口1、2之间接到游戏方向盘的油门控制变阻器两端,相当于接一可变电阻。AD_Brake和AD_Thtottle用于AD采样油门和刹车的模拟信号,R18,R19用于采样时分压。方向盘:方向盘的转向信号仍是模拟信号,用AD采样之后即可判断转动方向及幅度。接口的1
6、、2、3分别对应于三端滑动变阻器的三个端子。 图(10)方向盘等效电路 左转时1、2之间电阻逐渐变小,AD_L的分压将逐渐变大。右转时2、3之间的电阻逐渐变小,AD_R的分压将逐渐变大。AD转换电路图:AD芯片使用的是TI公司的一款8位4通道串行AD芯片,正好满足要求。与单片机的接口为SPI的接口,具体说明和使用请参考芯片资料里的TLC0834使用范例文档,也可参考该芯 图(11)AD转换电路 片厂商提供的技术文档,内含具体 操作时序。 图(12)按键电路 (3)按键接口硬件说明 按键的设计依赖于具体的硬件结构,在此给出说明。 下图为按键的设计原理(并非实际电路),由于游戏方向盘上按键单独设计
7、已经由机械结构确定,故在主控制板上只是留出对应接口(J)即可。分布在方向盘的各个按键小板原理图如下所示(GND、KEY1KEYn为留出的插槽) 该游戏方向盘上共计有19个用户按键使用(包含最中间的复位按键),具体排列如下。图(13)按键小板对应于游戏方向盘上5、6、7、8、9、10、11、12和中间的cruise(我们设为复位键)的按键。见下图: 图(13)方向盘按键对应于对应于游戏方向盘上UP、DOWN、LEFT、RIGHT的按键。见下图:图(14)UP、DOWN、LEFT、RIGHT的按键对应于对应于游戏方向盘上1、2、3、4的按键。见下图:对应于对应于游戏方向盘上左右两个的按键,在此设为
8、中断按键,方便用于处理实时信息。见下图:另外由于单片机资源较多,仍有多余的IO口6个,在此引出以便于扩展外部功能。见下图:(4)振动器驱动硬件电路为增强游戏者的手感,游戏方向盘上有两个振动器,在此给出驱动电路图及说明如下:三级管在此既作为单片机控制的开关,又充当功率放大的角色。只需给Mor1、Mor2给出高电平即可驱动负载,低电平断开。图(15)驱动电路(5)在系统编程接口 现今单片机一般都支持ISP(在系统编程),这样大大方便了单片机开发用户,在此也引出了ISP的接口规范,供参考如下:该款下载线使用的是网上非常流行的USBASP,支持USB下载和供电双功能,并且可以同时下载AT89s5x和A
9、VR单片机(Atmage16),详细可以参考网上相关资料。 图(16)系统编程图(6)串口通信硬件说明为了满足串口传输的电平规范,在此需要设计电平转换电路,电路原理来源于Maxim公司的max232芯片说明文档。图(17)串口通信电路选用主要材料清单:注:材料清单中元件除发光二极管以外均要求贴片封装。型号 封装 数量 厂商 说明AT89S52 TQFP44 12 ATMEL 单片机TLC0834 SOP-14 12 TI 8位串行AD转换芯片MAX232 SOP-16 12 MAXIM 串口电平转换芯片7805(LM7805) TO-220 12 ST 5V电源稳压芯片9013(8050) S
10、OT23 24(30) NPN三极管有极性贴片钽电容(1uF,10uF) 1206 有极性贴片电容二、 Labview控制平台的设计1. 基本界面组成(1) 串口1:用于连接单片机和PC机,作为方向盘数据传送的枢纽。(2) 串口2:用于连接PC机和无线传输模块,主要是给小车发送相关的数据,实时调整小车的状态。(3) 显示控件:本次设计至少需要显示四个参数,方向(Direction)、转角(Angle)、速度(Speed)、刹车(Brake)。(4) 全局变量、美化界面相关控件。2. 串口1的协议:(1) PC机先往51单片机发送字符“1”,作为51单片机开始发送数据的命令。(2) 51单片机发
11、送的一帧数据格式应为:Dx Ax3x2x1 Bx2x1 Tx2x1 S x x x xx:表示数据,范围为0 256,与ASCII码表一一对应。(3) D为方向标识符,后面紧跟的数据必须为0或1(对应的十六制数为30H和31H)。0为前进,1为后退,默认为0.(4) A为方向标识符,后面紧跟的第一位数是左右转标识符,取值为0或1,为为右转,1为左转。第二、三位分别为转角(Angle)的十位和个位,取值范围为0 60。(5) B为刹车标识符,后面数据的第一、二位分别为刹车(Brake)值的十位和个位,取值范围为0 30,即把刹车档分为了30档。(6) T为油门标识符,后面数据的第一、二位分别为速
12、度(Speed)值的个位和小数点后的第一位,取值范围为0.0 3.0。(7) S为传送到小车单片机的标识符,用于PC机识别该信息后向串口2发送由51单片机读取到的AD值。(8) S后面的数据均由单片机得到的AD值,具体范围见串口2的协议。3. 设计思路根据制定的协议要求:小车发送上来的数据严格遵守一定的数据格式,在实际数据前面都有一个标识符:D为方向,A为转角,B 为刹车,T为油门,因此在Labview中就必须判断发送上来的字符(串口每次只能发送一个字符内容)中是4个的哪一个标识符,后面紧跟的数据便是需要送给程序处理的。根据以上分析,在Labview的程序设计中采用并行程序的处理方式,判断从串
13、口1送上来的数据应该送到哪个控件上显示,单片机再发送标识符S,PC机收到此信息后便把处理后的数据送到串口2,把相关的数据送到小车上,小车根据收到的信息做出相应的决策。传送完一帧数据后开始下一帧数据的处理,不断循环执行。4. 界面程序图图(1) 串口1和串口2初始化图(2)方向D处理程序图(3)转角A处理程序图(4)刹车B处理程序图(5)油门T和串口2处理程序5. 前面板模型图(6)智能小车控制面板显示图三、 智能小车的控制原理1. PC机Labview程序与小车通讯协议(1)、方式::PC机Labview程序通过无线串口与小车通讯。(2)、系统串口协议内容:1、当PC机接到小车单片机发送的信号
14、“1”(数据类型为unsigned char)时,PC机便开始发送一帧数据,此时PC机的Labview程序一次性给小车发送四个数据,发送完毕后直到小车下一次发送回来的信号“1”时才再发数据。 例如发送的数据为: 0 35 70 -48 分别代表:前进/后退 油门 刹车 方向盘转角(注意顺序不能变)(3)、数据说明如下:前进/后退(DirectionFlag): 0表示前进,1表示后退(数据类型为unsigned char型),只有两种状态。 油门(ThrottleData): 数据范围0127,0表示小车速度为0,127表示速度为3.0m/s,线性递增(数据类型为unsigned char型,
15、共128档。 刹车(BrakeData): 数据范围0127,0表示未踩刹车板,小车速度为当前速度,127表示刹车板踩到底,小车停止(数据类型为unsigned char型)。 方向盘(AngleData): 数据范围-6060,-60表示小车左转60度,60表示右转60度,即左负右正,0表示正中间,小车未转向(数据类型为char型)。2. 小车模型(1)小车模型简介模型车尺寸:四轮驱动,长宽高为27017096(单位:mm)电机参数为:DC 7.2V ND380舵机参数为:IPS017伺服器电池参数为:7.2V 2000mAh(2)核心芯片采用飞思卡尔公司生产的16位单片机mc9s12xs1
16、28作为主控芯片。图(18)小车图片(3)XL105-232AP2 无线模块简介PC机与小车通讯用无线串口XL105-232AP2。XL105-232AP2 是 UART 接口半双工无线传输模块,内置天线,体积小巧,适合 100 米内的无线通讯连接。模块工作在 2400-2483MHz 公用频段 。XL105-232AP2 的各项参数如:串口速率、工作通道、产品ID等相关参数可以通过软件设置。图(19)无线串口XL105-232AP2图片3、系统框图说明: 1.为了保证数据能够有条不紊地在51单片机、PC机、飞思卡尔单片机间正常地通讯,必须有相应的协调信号,统一采用发送信号“1”来识别是否发送
17、一帧数据。2.本次课程设计需要采用双串口通讯,对于笔记本来说需要两个USB接口,其中一个转换成RS232串口,另外一个接无线传输模块。图(20)系统框图附录1:飞思卡尔智能小车程序/Main module of MKCAR 摩垦智卡#include /* common defines and macros */#include /* derivative information */#includestdio.h#includestdlib.h#includemath.h#pragma LINK_INFO DERIVATIVE mc9s12xs128b/ system & inits 系统及初
18、始化 /#define SYNE_SETTING 4#define REFDV_SEETTING 1 / PLLCLK =2*OSCCLK*(SYNR + 1)/(REFDV + 1) busclk=40M#define delay _asm nop;#define ENSPDTEST TIE_C2I = 1;#define DISSPDTEST TIE_C2I = 0;#define ENPID PITINTE_PINTE0=1;#define DISPID PITINTE_PINTE0=0; #define MOTORFORWORD PWME_PWME3=0;PWMCNT01=0; PWM
19、E_PWME1=1;#define MOTORBACK PWME_PWME1=0;PWMCNT23=0; PWME_PWME3=1;#define CARSTOP PWME=0;#define MAXSPEED 128unsigned int Receive=0;unsigned int ReceiveFlag=0;float speed,Throttlespeed,Brakespeed;unsigned char Cardata5,PreCartata5; void init_sys(byte p1,byte p2) init_CRG(p1,p2); init_interupt(); ini
20、t_port(); init_motor(); init_servo(); init_PIT(); / user i/o 串行通信函数,用于调试 / char strDisp80=hellon;/*-串口初始化*/void SciInit() unsigned int bd; bd=(unsigned int)(UL /* OSC freq */ / 2) / 9600 /* baud rate */ / 16 /*factor*/); bd+; SCI0BDH = (unsigned char)(bd8)&0x00ff); SCI0BDL = (unsigned char)(bd&0xff)
21、; /(unsigned char)(0UL /* OSC freq */ / 2) / 19200 /* baud rate */ / 16 /*factor*/); SCI0CR1=0; /*normal,no parity*/ SCI0CR2=0X2C; /*RIE=1,TE=1,RE=1*/ /SCI0CR2=0X08;/*发射端程序-单字节发送*/void SciSend(unsigned char text) / unsigned char a; /temp=SCI0SR1; /*clear flag*/ /* for(;) a=SCI0SR1; if( (a&0x40)=0x40
22、 ) break; */ while (!(SCI0SR1&0x80); /* wait for output buffer empty */ SCI0DRL=text; /*-接受部分(unsigned char型数据)*/char SciRead(void) /unsigned char temp; unsigned char result; /temp=SCI0SR1; /clear flag while(!(SCI0SR1&0x20); result=SCI0DRL; return result;/*wsl*/ void mkTasks(void) byte iSpdCar=1; st
23、atic int bDir=1; float recd_T_speed,recd_B_speed; /接收到的速度值 DisableInterrupts; init_sys(SYNE_SETTING,REFDV_SEETTING); SciInit(); EnableInterrupts ; StartSpeedTest();/ speed pid action for(;) while(ReceiveFlag) ReceiveFlag=0; / 前进和后退控制/ if(Cardata0!=PreCartata0) if (unsigned int)Cardata0)=0x30) MOTORF
24、ORWORD; else MOTORBACK; /油门和刹车控制/ Throttlespeed=(float)(Cardata1*10)/MAXSPEED)*(0.3); SetCarSpeed(Throttlespeed); if(unsigned int)Cardata20x50) CARSTOP; /方向盘控制/ if(Cardata3!=PreCartata3) if(unsigned int)Cardata3=0x3c) PWMDTY67=3750+(unsigned int)Cardata3)*30; else PWMDTY67=3750-(256-(unsigned int)Ca
25、rdata3)*30; strcpy(PreCartata,Cardata); /* 程序起点 main */ void main(void) mkTasks();/中断程序区/#pragma CODE_SEG _NEAR_SEG NON_BANKED void interrupt 20 sci_interrupt(void) / serial com interrupt/ not used CardataReceive=SciRead(); +Receive; if(Receive=4) Receive=0; ReceiveFlag=1;SciSend(1); #pragma CODE_SE
26、G DEFAULT 附录2:51单片机程序#include#include #include#define uchar unsigned char #define uint unsigned intsbit mor1=P12;sbit mor2=P13;sbit key_int0=P32;sbit key_int1=P33;sbit key_1=P00;void clk(void);uchar tlc_0834(uchar ch);void send_byte(uchar c);void init_uart(void);void delay(uint ms);void SendInformat
27、ion();void SendDirection();void SendAngle();void SendThrottle();void SendBrake();void SendToXS128();sbit adc_clk=P16;sbit adc_di=P14;sbit adc_do=P15;sbit adc_cs=P17;uchar CanRecive=0;uchar BrakeData,ThrottleData,DirectionData;/四个需发送信息。uchar BrakeDataTemp,ThrottleDataTemp , uchar AngleData1,AngleData2;char AngleData;/发送到XS128的数据/throttle:油门(0 127)/brake:刹车(0 127)/anlge:转角(-60
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1