自寻迷宫小车(3)_第1页
自寻迷宫小车(3)_第2页
自寻迷宫小车(3)_第3页
自寻迷宫小车(3)_第4页
自寻迷宫小车(3)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 基于MSP430单片机技术应用之智能小车制作报告题目:全向驱动自主壁障智能小车指导教师:赵建老师小组成员及年级:唐超群 大三、 熊世军 大三 学校及院系:西安电子科技大学 机电工程学院 测控技术与仪器专业作品完成时间:2008年9月15日(注:摘要、作品简介、系统实现部分由熊世军完成,其余部分由唐朝群完成) 摘要本论文介绍的四轮驱动智能小车,采用MSP430单片机控制系统,利用创意之星的套件组装了一辆小车,运用机电一体化技术,包括机械学、电子学、计算机技术、自动控制、人工智能等知识,在向小车上的电路板输入程序后,实现小车的完全自主走完迷宫。 AbstractThe four-wheel dr

2、iven intelligent car introduced in this thesis uses MSP430 as control system, which is built up from external member of the Star of Originality provided by Beijing Universal Pioneering Robotics. Co. Ltd. This car uses electromechanical integration technology, including mechanics, electronics, comput

3、er technology, technology of automatic control, artificial intelligence etc. The intelligent car would drive out of labyrinth completely on itself after the program is downloaded into its controller.1 作品简介(设计目标,详细指标要求) 我们的智能小车是在MSP430单片机的基础上,通过3路传感器采集信息,经过信号处理后交给单片机进行判断。单片机将控制4路电机和4舵机进行相应动作来完成自主壁障功能

4、。设计目标:(1) 设计直流伺服电机驱动电路,设计舵机驱动电路以及信号采集电路;(2) 从硬件层面上组建一个完整的小车控制系统;(3) 编写完整、合理、智能的控制程序指标要求:(1)供电电源:+6V D C±5; (2)直流伺服电机:6V ;(3)舵机 :+6V(4)红外传感器:+3.3V1 方案设计1.1 理论分析智能小车设计核心在于信号采集和小车动作的逻辑控制。传感器选型、安装和程序的编写是我们成败的关键。智能小车的驱动结构主要由4个伺服电机和4个舵机组成。4个伺服电机主要用于小车转速控制。4路舵机分别控制车轮的方向。传感器选的是红外光电传感器,分别安装在车身的前端和左右两侧。控

5、制程序下面将作介绍。1.2 选用TI器件的依据,选型理由,所选TI器件详细介绍MSP430单片机是一款低功耗、高速的、16位的微控制器。因此它可以满足我们的对控制精度的要求。该机器人选用MSP430F149型号的处理器作为主控制芯片。F149内部含有60KB FLASH ROM和2KB RAM,6个8位并行端口,且两个8位端口有中断能力,具有3个捕获/比较寄存器的16位定时器Timer_A,和具有7个捕获/比较寄存器的位数可设置的定时器Timer_B,USART以及ADC等片内外设。1.3 设计方案论证每个车轮配备一个电机、一个舵机,方便分别控制4轮速度和方向。以3个传感器为眼睛来分别观察前、

6、左、右的障碍情况。其中前面的红外传感器优先级级别最高,当前面的传感器没有检测到障碍物时小车前进,前进的过程中当检测到左边或者右边有障碍物时,小车相应的右转或左转。此时左右传感器未检测到时,小车右转;当此时前面的传感器检测到障碍物,同时左侧传感器也检测到障碍物右侧没有检测到障碍物时,小车右转;当此时前面的传感器检测到障碍物,同时右侧传感器也检测到障碍物左侧没有检测到障碍物时,小车左转。3路数据产生8种情况我们一一编写相应动作。仅这些还不够,还需补充一些记忆功能。程序判断时不仅考虑当前情况还需结合以前情况。最终达到小车的自主智能控制。2 系统实现2.1 硬件设计,包括:2.1.1 系统框图,在框图

7、中需标明TI器件在系统中的位置和作用; 前面的传感器为检测到障碍物时智能小车前进红外传感器扫描遇到障碍物时转向90度2.1.2 不同功能单元之间的接口设计;电源模块产生两路电源,一路通过稳压芯片LM1117产生3.3V电压,供给控制器模块;另一路为5V,供给舵机执行模块。控制接口是由MSP430F149的P4口引出,经过三极管反相隔离,向舵机控制模块提供控制信号。2.1.3 硬件设计注意事项及窍门(如运放的滤波,稳定性,ADC的模拟,参考电压的处理,PCB设计的小技巧)LM1117芯片的外界滤波电容应该紧靠芯片输入输出端放置;在复位芯片的电源和地之间以及舵机控制接口的电源和地之间各放置一个10

8、00uF的电容,以防止舵机工作时产生的共地干扰影响系统正常工作;在控制器模块和舵机执行模块之间加入三极管进行隔离,并在控制接口电源和地反向放置一个二极管,防止大电流流入MSP430芯片,并为电流提供泄流回路;PCB布线时,加粗电源线,并进行两面覆铜,以使系统工作稳定;其中电路中的485模块,直流电机,JATG接口原理图分别如下图所示:其中的PCB板图如下:2.2 软件设计,包括:2.2.1 软件流程,软件设计思路及技巧(如对ADC,DAC给出数字端驱动方式的详细介绍,系统后端进行补偿的技巧), 系统初始化动作参数设置调用电机、舵机控制函数设置定时器并等待中断上图是控制软件的流程图。 2.2.2

9、 MSP430的相应软件设置,程序设计,内部电路的应用技巧(内置ADC,DAC,比较器等的使用),及低功耗实现等;MSP430的初始化程序如下:void PWM_Init(void) /舵机初始化 unsigned char i; Sys_PWMDataAccount();/根据舵机旋转角度PWMangle和舵机速度PWMspeed这两个量计算舵机控制量 for(i=0;i<8;i+) PWMbuffi = PWManglei; void Sys_Init() /系统初始化 WDTCTL=WDTPW+WDTHOLD; /停止看门狗 P4DIR |= BIT4; /P4.4输出 P4OUT

10、 |= BIT4; /P4.4输出高电平,使得LED亮,持续一段时间后熄灭,用来标志系统复位。 BCS_Init(); PWM_Init(); P4OUT &= BIT4; /P5.4输出低电平,使得LED熄灭 P2DIR |= 0X0ff; P4DIR |= 0X0ff; / P4口 output TACTL = TASSEL_2 + ID_2 + TACLR; / SMCLK,4分频 up mode TACCR0=1; TACCTL0 |= CCIE; _EINT(); /开总中断 TACTL |= MC_1;该控制程序主要应用了MSP430中的TA模块。TA的初始化程序如下:TA

11、CTL = TASSEL_2 + ID_2 + TACLR; / SMCLK,4分频 up mode TACCR0=1; TACCTL0 |= CCIE; _EINT(); /开总中断 TACTL |= MC_1;TA中断程序如下:#pragma vector = TIMERA0_VECTOR_interrupt void TimerA_CCR0()unsigned char i;unsigned intTH;staticunsigned charTimerA_20msCounter = 0; /TimerA_20MS计数器staticunsigned charPWM_CH = 0;/PWM通

12、道选择计数器 PWM1-PWM8switch(PWM_CH)case0:PWM1_H;PWM2_L;PWM3_L;PWM4_L;PWM5_L;PWM6_L; PWM7_L;PWM8_L; PWMbuff0=PWMDataCount(PWMbuff0,PWMangle0,PWMvalue0); TACCR0=PWMbuff0-1; PWM_CH+;TimerA_20msCounter +;/舵机每20MS一个周期,用这个20MS周期做计数器时间片TimerA_20ms_USR1 +; if(TimerA_20msCounter >= 5) TimerA_20msCounter =0; Ti

13、merA_100ms_M1+; TimerA_100ms_M2+; TimerA_100ms_M3+; TimerA_100ms_M4+; if(TimerA_100ms_M1 >= MotoTime0)M1_T; if(TimerA_100ms_M2 >= MotoTime1)M2_T; if(TimerA_100ms_M3 >= MotoTime2)M3_T; if(TimerA_100ms_M4 >= MotoTime3)M4_T; break;case1:PWM1_L;PWM2_H; PWMbuff1=PWMDataCount(PWMbuff1,PWMangle

14、1,PWMvalue1); TACCR0=PWMbuff1-1; PWM_CH+;break;case2:PWM2_L;PWM3_H;PWMbuff2=PWMDataCount(PWMbuff2,PWMangle2,PWMvalue2); TACCR0=PWMbuff2-1; PWM_CH+;break;case3:PWM3_L;PWM4_H; PWMbuff3=PWMDataCount(PWMbuff3,PWMangle3,PWMvalue3); TACCR0=PWMbuff3-1; PWM_CH+;break;case4:PWM4_L;PWM5_H; PWMbuff4=PWMDataCou

15、nt(PWMbuff4,PWMangle4,PWMvalue4); TACCR0=PWMbuff4-1; PWM_CH+;break;case5:PWM5_L;PWM6_H; PWMbuff5=PWMDataCount(PWMbuff5,PWMangle5,PWMvalue5); TACCR0=PWMbuff5-1; PWM_CH+;break; case6: PWM6_L;PWM7_H; PWMbuff6=PWMDataCount(PWMbuff6,PWMangle6,PWMvalue6); TACCR0=PWMbuff6-1; PWM_CH+; case7:PWM7_L;PWM8_H; P

16、WMbuff7=PWMDataCount(PWMbuff7,PWMangle7,PWMvalue7); TACCR0=PWMbuff7-1; PWM_CH+;break;case8: PWM1_L; PWM2_L; PWM3_L; PWM4_L; PWM5_L; PWM6_L; PWM7_L; PWM8_L; TH = 0;for(i=0;i<8;i+)TH += PWMbuffi;TACCR0 = 19999 - TH;/产生低电平时间 20MS-TH PWM_CH = 0;break;default :break;2.2.3 如过使用了TI的模拟设计软件,如FilterPro,Swi

17、tcherPro,MDAC,TINA设计软件,给出简要应用方法 没有使用 2.24编程感想及软件设计注意事项。MSP430在上电后需延时几秒钟,等芯片稳定后再执行其他程序;该程序使用的MSP430的高速时钟产生TA的计时时钟周期,在高速时钟的设置中需要等待时钟稳定;小车的动作需要一个初始动作,所以在软件中需要产生一个初始化动作的程序。3 作品性能测试与分析。3.1 系统测试方法系统测试主要是对电机转速和控制逻辑的测试。系统测试方法首先是通过试验、分析编写出完美的控制逻辑,其次通过试验来调整合适的电机速度来保证每个动作的完整到位。3.2 测试性能概览经过反复测试和调整,小车能顺利的完成各种复杂的迷宫任务。3.3 误差分析系统误差主要来源是电机、舵机的安装误差,控制精度误差,电机转速以及转向时间误差。安装误差是由于舵机的步距角决定的,步距

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论