人人范文网 范文大全

智能小车嵌入式系统设计分析

发布时间:2020-03-03 08:53:32 来源:范文大全 收藏本文 下载本文 手机版

前言

智能小车是在动态不确定环境下对人工智能的考验,是以各种工控目的为载体的高科技对抗,是培养信息、自动化领域科技人才的重要手段,同时也是展示高科技水平的生动窗口和促进科技成果实用化和产业化的有效途径。智能小车的研究融入了机器人学、机电一体化技术、通讯与计算机技术、视觉与传感器技术、智能控制与决策等多学科的研究成果,反映出一个国家信息与自动化技术的综合实力。所以本论文对智能小车的研究意义重大。

- 0

一、总体设计方案

1.总体方案

智能小车可在自主行驶和人工控制两种模式之间切换,并实现自动避障。 通过PWM输出驱动步进电机来实现小车的行驶,改变PWM的周期、占空比、正反则可以实现前进、后退、转弯、加速、减速等行为。通过红外探头检测前方障碍实现自动避障。外接红外线接收器,可以通过自制的红外线遥控来控制小车的行为。

2.平台选取

EasyARM1138开发板

开发板搭载Luminary LM3S1138芯片,为32位ARM Cortex – M3内核(ARM v7架构),50Mhz运行频率。拥有7组GPIO,可配置为输入、输出、开漏、弱上拉等模式。4个32位Timer,每个都个拆分为2个独立子定时器。6路16位PWM,通过CCP管脚能产生高达25Mhz的方波。

自制车架

- 23456789 SYSCTL_SYSDIV_10); // 分频结果为20MHz */

TheSysClock = SysCtlClockGet(); // 获取系统时钟,单位:Hz

}

int main(void) { jtagWait(); /* 防止JTAG失效,重要! */

SystemInit();

IR_Int_Init();

while(1) { if(IR_flag == 1) { IR_flag = 0; for(a = 18 ; a

if (IR_code_8 == 101) { SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); // 使能GPIOD端口

GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE , GPIO_PIN_0); // 设置PD0为输入类型 //forword GPIOPinWrite(GPIO_PORTD_BASE , GPIO_PIN_0 , 0x00); // PD0输出低电平 }

IR_code_8 = 0;

//switch(IR_code_8) //{ //case /*00000*/101:SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); // 使能GPIOD端口

// GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE , GPIO_PIN_0);

// 设置PD0为输入类型 //forword //

GPIOPinWrite(GPIO_PORTD_BASE , GPIO_PIN_0 , 0x00); // PD0输出低电平 //case /*0000*/1101://back //case /*0000*/1000://left //case /*0000*/1010://right //case /*0000*/1001://stop //case /*000*/10100://level_1 //case /*000*/10101://level_2 //case /*000*/10110://level_3 //default : //} //IR_code_8 = 0; } } }

/**************************************************************** ** Function name: GPIO_PORT_F_ISR

- 12

消除中断 不正 if(gap >=10 && gap =2 && gap =40 && gap

if(start_flag

&& //code_flag和start_flag均为1 { IR_code_32[i] = data; i++;

if(I >= 32) { IR_flag = 1; break; } } } } //} GPIOPinIntClear(IR_PORT,ulStatus); //- 14 ** Descriptions: 延时100us ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 ** Created by:

张伟杰

** Created Date: 2014.05.18 ****************************************************************/ void Delay_100_us(void) { unsigned ulValue;

SysTickPeriodSet(600); SysTickEnable(); do { ulValue = SysTickValueGet(); } while(ulValue > 0);

SysTickDisable(); }

3.红外探头模块

#include #include #include #include #include #include #include #include #include #include #include #include “LM3S1138_PinMap.H”

/* 定义按键 */ #define KEY_PORT SYSCTL_PERIPH_GPIOG #define KEY_PIN GPIO_PORTG_BASE , GPIO_PIN_5 #define keyGet() GPIOPinRead(KEY_PIN)

#define IR_PORT SYSCTL_PERIPH_GPIOF #define IR_PIN GPIO_PORTF_BASE , GPIO_PIN_1

// 定义全局的系统时钟变量

unsigned long TheSysClock = 12000000UL; unsigned IR_flag = 0; unsigned long IR_code_32[32]; unsigned long IR_code_8 = 0; unsigned a;

int Time_Get( ); void Delay_100_us( );

/**************************************************************** ** Function name: jtagWait ** Descriptions: 防止JTAG失效,KEY=PG5 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 ** Created by:

张伟杰

** Created Date: 2014.05.15 ****************************************************************/ void jtagWait(void) { SysCtlPeripheralEnable(KEY_PORT); /*

使能KEY所在的GPIO端口 */ GPIOPinTypeGPIOInput(KEY_PIN); /* 设置KEY所在管脚为输入 */ if ( keyGet() == 0x00 ) { /* 如果复位时按下KEY,则进入 */ for (;;); /* 死循环,以等待JTAG连接 */ } SysCtlPeripheralDisable(KEY_PORT); /* 禁止KEY所在的GPIO端口 */ }

/**************************************************************** ** Function name: IR_Int_Init ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 ** Created by:

张伟杰

** Created Date: 2014.05.18 ****************************************************************/ void IR_Int_Init(void) { SysCtlPeripheralEnable(IR_PORT); GPIOPinTypeGPIOInput(IR_PIN); GPIOIntTypeSet(IR_PIN,GPIO_LOW_LEVEL); GPIOPinIntEnable(IR_PIN);

IntEnable(INT_GPIOF); IntMasterEnable(); }

- 181920212223 SysTickPeriodSet(600); SysTickEnable(); do { ulValue = SysTickValueGet(); } while(ulValue > 0);

SysTickDisable(); }

三、程序调试

调试PWM信号时,由于板上晶振为6Mhz,装载值和匹配值最大为65535,可以设置出需要的周期和占空比。如

TimerLoadSet(TIMER0_BASE , TIMER_BOTH , 60000); TimerMatchSet(TIMER0_BASE , TIMER_A , 6000); 则对应的周期为6Mhz / 60K = 100Hz,占空比为0.6K / 6K = 1/10。配置PWM前要先配置GPIO口,定义为PWM输出,并选择Timer的输出模式为16位PWM,经过三重配置才能正确输出PWM信号。 红外接收器解码过程重点是对红外码内间隔时间的判断。调试红外码时应当设当地设置flag帮助多个判断。当引导码时间参数符合标准时flag1置1,接收到正确的红外码,进入下一步。当用户码每个间隔符合标准的时间间隔时flag2置1,表示该一位码正确,进入一下步。当接收到32位数据后flag3置1,表示红外码结束,开始进行解码。解码部分用case语句进行判断。红外码用数组储存,使用的时候会方便一点。例如: for(a = 18 ; a

四、小结

本次课内实验把我带进了ARM的领域,通过动手编程和小组讨论,让我对项- 25

智能小车设计

智能小车设计

智能小车设计

智能小车跟随系统的设计与制作分析

智能小车设计报告

智能小车设计报告

嵌入式智能万年历设计

基于CMOS的智能小车视觉系统的设计

嵌入式系统智能快递柜设计研究论文

智能小车设计实验指导书

智能小车嵌入式系统设计分析
《智能小车嵌入式系统设计分析.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档