ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:90.57KB ,
资源ID:8449453      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8449453.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Labview智能小车控制平台.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Labview智能小车控制平台.docx

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