智能小车控制系统设计.DOC

上传人:天*** 文档编号:909885 上传时间:2018-11-06 格式:DOC 页数:6 大小:159KB
下载 相关 举报
智能小车控制系统设计.DOC_第1页
第1页 / 共6页
智能小车控制系统设计.DOC_第2页
第2页 / 共6页
智能小车控制系统设计.DOC_第3页
第3页 / 共6页
智能小车控制系统设计.DOC_第4页
第4页 / 共6页
智能小车控制系统设计.DOC_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、智能小车控制系统设计ARM 控制模块设计EasyARM615 是一款基于 32 位 ARM 处理器,集学习和研发于一体的入门级开发套件,该套件采用 Luminary Micro(流明诺瑞 )公司生产的 Stellaris 系列微控制器 LM3S615。本系统设计是以 EasyARM615 开发板为核心,通过灰度传感器检测路面上的黑线,运用 PWM 直流电机调速技术,完成对小车运动轨迹等一系列的控制。同时利用外扩的液晶显示器显示出各个参数。以达到一个简易的智能小车。本文叙述了系统的设计原理及方法,讨论了 ISR 集成开发环境的使用,系统调试过程中出现的问题及解决方法。据观察,普通的玩具小车一般需

2、要在外加条件下才能按照自己的的设想轨迹去行驶,而目前可借助嵌入式技术让小车无需外加条件便可完成智能化。在小车行驶之前所需作的准备工作是在地面上布好黑线轨迹,设计好的小车便可按此黑线行驶,即为智能小车。其设计流程如下:1、电机模块采用由达林顿管组成的 H 型 PWM 电路。PWM 电路由四个大功率晶体管组成,H 桥电路构成,四个晶体管分为两组,交替导通和截止,用单片机控制达林顿管使之工作在开关状态,根据调整输入控制脉冲的占空比,精确调整电机转速。这种电路由于管子工作只在饱和和截止状态下,效率非常没。H 型电路使实现转速和方向的控制简单化,且电子开关的速度很快,稳定性也极强,是一种广泛采用的 PW

3、M 调整技术。具体电路如下图所示。本电路采用的是基于 PWM 原理的 H 型驱动电路。该电路采用 TIP132 大功率达林顿管,以保证电动机启动瞬间的 8 安培电流要求。2、传感器模块灰度测量模块,是一种能够区分出不同颜色的的电子部件。灰度测量模块是专为机器人设计的灰度传感器。例如:沿着黑色轨迹线行走,不偏离黑色轨迹线;沿着桌面边沿行走,不掉到地上,等等。足球比赛时,识别场地中灰度不同的地面,以便于进行定位。不同的物体对红外线的反射率不同,黑色最低,白色最高;它通过发射红外线并测量红外线被反射的强度来输出反映物体颜色的电压信号,有效距离 3-30 毫米。其技术规格如下:探测距离 3-30mm工

4、作电压 5V输出电压 0-3.3V输出量模拟量输出(输出电压和探测物体颜色有关)已知灰度传感器的输出电压为 0-3.3V,所以可通过 ARM615 开发板上的ADC 模块转换成数字信号,最后通过不断测试得出黑线与白线的大概参数值,完成对小车传感器部分的设计。在本次设计中选择二个灰度传感器,其实现效果与布局如下所示。EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P00 39P01 38P02 37P03 36P04 35P05 34P06 33P07 32P20 21P21 22P

5、22 23P23 24P24 25P25 26P26 27P27 28PSEN 29ALE/P 30TXD 11RXD 10U189S521 2U1A74LS041 2U2A74LS041 2U3A74LS04R1RES2D1LEDS1SW-PBIN1IN2Q1Q2Q4R410KR510KA -+MG1MOTOR SERVOR21KR31KVCCQ3 Q5Q6Ug1 Ug23、LCD 显示模块12864 点阵型 LCD 是小型系统中很常用的显示器,目前常用的的主控芯片有 KS0108、ST7920 等。KS0108 是三星公司的产品,与 HD61202 控制器完全兼容,不带字库、不支持串口。S

6、T7920 是台湾矽创电子公司生产的中文图形控制芯片,自带字库、支持 4 位、8 位并行、2 线、3 线串行接口方式点阵型液晶因为能显示较丰富的信息,所以现在运用越来越广泛。在本次设计中我们所用的为 WINSTAR 的 WG12864A 系列的液晶显示器,其显示原理与 KS0108 相同。本次设计中 WINSTAR 的 WG12864A 系列的液晶显示器引脚分配与功能定义如下:像 LCD12864 这种二值屏幕,我们习惯于用 1 个字节表示连续的 8 个点,1 的对应位被点亮,0 的对应位不亮,所以对图形的操作最基本的手段就是位操作。 根据此原理,编写了 12864 库函数,主要函数如下:vo

7、id LCD_FULL(const unsigned char *bmp);/填充一个 128*64 的图片void LCD_CLR(void);/清屏void LCD_INT(void);/初始化void Write_Data(unsigned char Rdat);/写数据void Write_Cmad(unsigned char Rcmd);/写命令void WriteMyHZ(const uchar * HZ,uchar py,uchar adrPage,int adrColumn);/显示一个汉字void Sel_Left(void);/选左屏void Sel_Right(void)

8、;/选右屏 void LCD_INT(void);4、AD 转换模块开发板上的模数转换器(ADC)是一个能将连续的模拟电压转换成离散的数字量的外设。其模块的特点是:转换分辨率为 10 位,最多含 8 个输入通道和一个内部温度传感器。此外,该模块还包含一个可编程的序列发生器(sequencer) ,无需使用控制器就可对多个模拟输入源进行采样。每个采样序列均可被灵活的编程,其输入源、触发事件、中断的发生和序列优先级都是可配置的。传统的 ADC 模块大多采用单次采样或双采样的方法收集,而StellarisADC 模块却不同,它采用的是一种基于序列(sequence-based)的可编程方法。每个采样

9、序列都是一系列完全程序化的连续(背对背)采样,这使ADC 能够从多个输入源中收集数据,而无需控制器对它进行重新配置或处理。对采样序列内的采样进行编程的操作包括对某些参数进行编程,如输入源和输入模块(差分输入还是单端输入) ,采样结束时的中断产生机制,以及指示序列最后一个采样的指示符(indicator) 。5、系统调试在 本 设 计 中 我 们 所 选 择 的 是 开 发 平 台 是 IAR EWARM 编 译 和 调 试 程序 。IAR Embedded Workbench for ARM(下面简称 IAR EWARM)是针对 ARM 处理器的集成开发环境,它包含项目管理器、编辑器、C/C+

10、编译器和 ARM 汇编器、连接器 XLINX 和支持 RTOS 的调试工具 C-SPY。在 EWARM 环境下可以使用 C/C+和汇编语言方便地开发嵌入式应用程序。比较其他的 ARM 开发环境,IAR EWARM具有入门容易、使用方便和代码紧凑等特点。设计过程中问题的解决方法:1、新建 Demo 工程后,如果按 F7 编译出现打不开#include 头文件的情况,请注意检查:demo-Debug鼠标右击options.C/C+ CompilerPreprocessorAdditional include directories 里面是否为:“$TOOLKIT_DIR$INCLuminary”如

11、果是,请将两端的引号去掉,再试试。2、在用 LM LINK 调试的时候会出现如下警告:正确的做法是一路选“否” ,然后进入正常的调试。每次用 LM LINK 进行调试都会遇到该问题。若想彻底避免警告,请采用附件里的文件“driverlib.r79”代替目录“C:Program FilesIAR SystemsEmbedded Workbench 4.0 KickstartarmlibLuminary”下的同名文件,从此不再有警告,完成!3、关于 JTAG 锁死问题现在,调试 LM3S 系列单片机一般采用 JTAG 接口。用户在使用过程中,可能会出现芯片的 JTAG 接口锁死的问题,即用 LM

12、LINK 调试器(或其它JTAG 调试器)再也无法连接的情况。一旦 JTAG 接口被锁死,则芯片一般只有报废处理。因此,在编写程序时千万要引起足够的重视,必须插入预防JTAG 失效的代码。导致芯片 JTAG 接口被锁死的原因有多种,如与 JTAG 接口复用的 GPI被占用、程序中存在定时中断(或其它中断)等等,但最常见的原因还是与JTAG 接口复用的 GPIO 被占用,从而导致上电后 JTAG 调试器来不及与芯片连接。附件 Demo 例程是个操作 GPIO 的简单示例,里面自带防止 JTAG 失效的代码,请先参考。该程序的工作原理是:将可以预防 JTAG 锁死的函数WaitJTAG()插入到

13、main()函数的第一个可执行;芯片正常复位情况下,直接运行后面的代码,即 WaitJTAG()函数不影响正常的操作;如果需要 JTAG连接,则先按住 KEY 不松手,再复位,则程序进入一个死循环里,以等待JTAG 连接。预防 JTAG 失效代码,如下程序所示。#define KEY1 GPIO_PIN_1Void Go2JTAG(void)SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); /使能 GPIO 端口 B 模块GPIODirModeSet(GPIO_PORTB_BASE,KEY1,GPIO_DIR_MODE_IN)/设置 PB1 为输入If(GPIOPinRead(GPIO_PORTB_BASE,KEY1)=0) /读写 PB1 的电平状态 while(1); /KEY1 按下程序不往下执行Int main(void) Go2JTAG();PLLSet(); /执行配置 PLL 代码

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。