智能小车嵌入式系统设计分析.docx
- 文档编号:1831847
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:24
- 大小:146.87KB
智能小车嵌入式系统设计分析.docx
《智能小车嵌入式系统设计分析.docx》由会员分享,可在线阅读,更多相关《智能小车嵌入式系统设计分析.docx(24页珍藏版)》请在冰豆网上搜索。
智能小车嵌入式系统设计分析智能小车嵌入式系统设计分析前言智能小车是在动态不确定环境下对人工智能的考验,是以各种工控目的为载体的高科技对抗,是培养信息、自动化领域科技人才的重要手段,同时也是展示高科技水平的生动窗口和促进科技成果实用化和产业化的有效途径。
智能小车的研究融入了机器人学、机电一体化技术、通讯与计算机技术、视觉与传感器技术、智能控制与决策等多学科的研究成果,反映出一个国家信息与自动化技术的综合实力。
所以本论文对智能小车的研究意义重大。
目录一、总体设计方案.21.总体方案.22.平台选取.23.可行性论证.3二、软件编码.31.PWM模块.32.红外线接收模块.83.红外探头模块.16三、程序调试.25四、小结.25一、总体设计方案1.总体方案智能小车可在自主行驶和人工控制两种模式之间切换,并实现自动避障。
通过PWM输出驱动步进电机来实现小车的行驶,改变PWM的周期、占空比、正反则可以实现前进、后退、转弯、加速、减速等行为。
通过红外探头检测前方障碍实现自动避障。
外接红外线接收器,可以通过自制的红外线遥控来控制小车的行为。
2.平台选取EasyARM1138开发板开发板搭载LuminaryLM3S1138芯片,为32位ARMCortexM3内核(ARMv7架构),50Mhz运行频率。
拥有7组GPIO,可配置为输入、输出、开漏、弱上拉等模式。
4个32位Timer,每个都个拆分为2个独立子定时器。
6路16位PWM,通过CCP管脚能产生高达25Mhz的方波。
自制车架车轮用步进电机精确控制,步进电机用放大电路驱动,受PWM信号控制。
锂离子电池给放大电路和开发板供电。
车架前方有红外探头,通过即时返回数据进行判断实现自动避障。
开发板外接红外线接收头,实现红外线人工控制。
编程开发平台IAREmbeddedWorkbenchIAR是LM3S系列适配的开发平台之一,适合用C语言和库函数进行编程,操作简单,较易上手。
3.可行性论证LM3S1138芯片的资源比较丰富,自带Timer产生PWM方波。
智能小车的速度要求低于步进电机的最高速度,并能通过步进电机实现精准控制,每个脉冲转动一个固定角度,因此步进电机适合作为驱动。
红外线控制通过芯片对突发接收的信号进行解码,获取红外遥控的控制信息,红外解码使用流行的方案。
车架前方装有四个探头,四路信号的触发顺序可作为障碍判断的依据。
二、软件编程1.PWM模块#include#include#include#include#include#include#include#include#include#include#include“LM3S1138_PinMap.H”/*定义按键*/#defineKEY_PORTSYSCTL_PERIPH_GPIOG#defineKEY_PINGPIO_PORTG_BASE,GPIO_PIN_5#definekeyGet()GPIOPinRead(KEY_PIN)/定义全局的系统时钟变量unsignedlongTheSysClock=12000000UL;/*Functionname:
jtagWait*Descriptions:
防止JTAG失效,KEY=PG5*inputparameters:
无*outputparameters:
无*Returnedvalue:
无*Createdby:
张伟杰*CreatedDate:
2014.05.15*/voidjtagWait(void)SysCtlPeripheralEnable(KEY_PORT);/*使能KEY所在的GPIO端口*/GPIOPinTypeGPIOInput(KEY_PIN);/*设置KEY所在管脚为输入*/if(keyGet()=0x00)/*如果复位时按下KEY,则进入*/for(;);/*死循环,以等待JTAG连接*/SysCtlPeripheralDisable(KEY_PORT);/*禁止KEY所在的GPIO端口*/*Functionname:
Timer_0_Init*Descriptions:
初始化Timer0*inputparameters:
无*outputparameters:
无*Returnedvalue:
无*Createdby:
张伟杰*CreatedDate:
2014.05.15*/voidTimer_0_Init(void)SysCtlPeripheralEnable(CCP0_PERIPH);/*使能CCP0所在的GPIO端口PB0*/GPIOPinTypeTimer(CCP0_PORT,CCP0_PIN);/*配置CCP0管脚为PWM输出*/SysCtlPeripheralEnable(CCP1_PERIPH);/*使能CCP1所在的GPIO端口PF6*/GPIOPinTypeTimer(CCP1_PORT,CCP1_PIN);/*配置CCP1管脚为PWM输出*/SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);/*使能定时器模块*/TimerConfigure(TIMER0_BASE,TIMER_CFG_16_BIT_PAIR|TIMER_CFG_A_PWM|TIMER_CFG_B_PWM);/*配置定时器为双16位PWM*/TimerControlLevel(TIMER0_BASE,TIMER_BOTH,false);/*控制PWM输出反相*/*Functionname:
Timer_0_Level_1*Descriptions:
左右轮一档*inputparameters:
无*outputparameters:
无*Returnedvalue:
无*Createdby:
张伟杰*CreatedDate:
2014.05.15*/voidTimer_0_Level_1(void)/TimerPrescaleSet(TIMER0_BASE,TIMER_BOTH,99);/*设置预分频值*/TimerControlLevel(TIMER0_BASE,TIMER_BOTH,true);TimerLoadSet(TIMER0_BASE,TIMER_BOTH,60000);/*设置定时器初值,AB均为50Hz*/TimerMatchSet(TIMER0_BASE,TIMER_A,6000);/*设置TimerA的PWM匹配值*/TimerMatchSet(TIMER0_BASE,TIMER_B,6000);/*设置TimerB的PWM匹配值*/TimerEnable(TIMER0_BASE,TIMER_BOTH);/*使能定时器计数,PWM开始输出*/系统初始化voidSystemInit(void)SysCtlLDOSet(SYSCTL_LDO_2_50V);/设置LDO输出电压SysCtlClockSet(SYSCTL_USE_OSC|/系统时钟设置,采用主振荡器SYSCTL_OSC_MAIN|SYSCTL_XTAL_6MHZ|SYSCTL_SYSDIV_1);/*SysCtlLDOSet(SYSCTL_LDO_2_75V);/配置PLL前须将LDO电压设置为2.75VSysCtlClockSet(SYSCTL_USE_PLL|/系统时钟设置,采用PLLSYSCTL_OSC_MAIN|/主振荡器SYSCTL_XTAL_6MHZ|/外接6MHz晶振SYSCTL_SYSDIV_10);/分频结果为20MHz*/TheSysClock=SysCtlClockGet();/获取系统时钟,单位:
Hzintmain(void)jtagWait();/*防止JTAG失效,重要!
*/SystemInit();Timer_0_Init();/*定时器初始化*/Timer_0_Level_1();for(;);2.红外接收器模块#include#include#include#include#include#include#include#include#include#include#include#include“LM3S1138_PinMap.H”/*定义按键*/#defineKEY_PORTSYSCTL_PERIPH_GPIOG#defineKEY_PINGPIO_PORTG_BASE,GPIO_PIN_5#definekeyGet()GPIOPinRead(KEY_PIN)#defineIR_PORTSYSCTL_PERIPH_GPIOF#defineIR_PINGPIO_PORTF_BASE,GPIO_PIN_1/定义全局的系统时钟变量unsignedlongTheSysClock=12000000UL;unsignedIR_flag=0;unsignedlongIR_code_3232;unsignedlongIR_code_8=0;unsigneda;intTime_Get();voidDelay_100_us();/*Functionname:
jtagWait*Descriptions:
防止JTAG失效,KEY=PG5*inputparameters:
无*outputparameters:
无*Returnedvalue:
无*Createdby:
张伟杰*CreatedDate:
2014.05.15*/voidjtagWait(void)SysCtlPeripheralEnable(KEY_PORT);/*使能KEY所在的GPIO端口*/GPIOPinTypeGPIOInput(KEY_PIN);/*设置KEY所在管脚为输入*/if(keyGet()=0x00)/*如果复位时按下KEY,则进入*/for(;);/*死循环,以等待JTAG连接*/SysCtlPeripheralDisable(KEY_PORT);/*禁止KEY所在的GPIO端口*/*Functionname:
IR_Int_Init*Descriptions:
初始化IR端口和中断*inputparameters:
无*outputparameters:
无*Returnedvalue:
无*Createdby:
张伟杰*CreatedDate:
2014.05.18*/voidIR_Int_Init(void)SysCtlPeripheralEnable(IR_PORT);GPIOPinTypeGPIOInput(IR_PIN);GPIOIntTypeSet(IR_PIN,GPIO_LOW_LEVEL);GPIOPinIntEnable(IR_PIN);IntEnable(INT_GPIOF);IntMasterEnable();/系统初始化voidSystemInit(void)SysCtlLDOSet(SYSCTL_LDO_2_50V);/设置LDO输出电压SysCtlClockSet(SYSCTL_USE_OSC|/系统时钟设置,采用主振荡器SYSCTL_OSC_MAIN|SYSCTL_XTAL_6MHZ|SYSCTL_SYSDIV_1);/*SysCtlLDOSet(SYSCTL_LDO_2_75V);/配置PLL前须将LDO电压设置为2.75VSysCtlClockSet(SYSCTL_USE_PLL|/系统时钟设置,采用PLLSYSCTL_OSC_MAIN|/主振荡器SYSCTL_XTAL_6MHZ|/外接6MHz晶振SYSCTL_SYSDIV_10);/分频结果为20MHz*/TheSysClock=SysCtlClockGet()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 小车 嵌入式 系统 设计 分析
