智能小车控制系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能小车控制系统设计
——ARM控制模块设计
EasyARM615是一款基于32位ARM处理器,集学习和研发于一体的入门级开发套件,该套件采用Luminary Micro(流明诺瑞)公司生产的Stellaris系列微控制器LM3S615。本系统设计是以EasyARM615开发板为核心,通过灰度传感器检测路面上的黑线,运用PWM直流电机调速技术,完成对小车运动轨迹等一系列的控制。同时利用外扩的液晶显示器显示出各个参数。以达到一个简易的智能小车。
本文叙述了系统的设计原理及方法,讨论了ISR集成开发环境的使用,系统调试过程中出现的问题及解决方法。
据观察,普通的玩具小车一般需要在外加条件下才能按照自己的的设想轨迹去行驶,而目前可借助嵌入式技术让小车无需外加条件便可完成智能化。在小车行驶之前所需作的准备工作是在地面上布好黑线轨迹,设计好的小车便可按此黑线行驶,即为智能小车。其设计流程如下:
1、电机模块
采用由达林顿管组成的H型PWM电路。PWM电路由四个大功率晶体管组成,H桥电路构成,四个晶体管分为两组,交替导通和截止,用单片机控制达林顿管使之工作在开关状态,根据调整输入控制脉冲的占空比,精确调整电机转速。这种电路由于管子工作只在饱和和截止状态下,效率非常没。H型电路使实现转速和方向的控制简单化,且电子开关的速度很快,稳定性也极强,是一种广泛采用的PWM调整技术。
具体电路如下图所示。本电路采用的是基于PWM原理的H型驱动电路。该电路采用TIP132大功率达林顿管,以保证电动机启动瞬间的8安培电流要求。
2、传感器模块
灰度测量模块,是一种能够区分出不同颜色的的电子部件。灰度测量模块是专为机器人设计的灰度传感器。例如:沿着黑色轨迹线行走,不偏离黑色轨迹线;沿着桌面边沿行走,不掉到地上,等等。足球比赛时,识别场地中灰度不同的地面,以便于进行定位。不同的物体对红外线的反射率不同,黑色最低,白色最高;它通过发射红外线并测量红外线被反射的强度来输出反映物体颜色的电压信号,有效距离3-30毫米。
其技术规格如下:
已知灰度传感器的输出电压为0-3.3V,所以可通过ARM615开发板上的ADC 模块转换成数字信号,最后通过不断测试得出黑线与白线的大概参数值,完成对小车传感器部分的设计。
在本次设计中选择二个灰度传感器,其实现效果与布局如下所示。
3、LCD显示模块
12864点阵型LCD是小型系统中很常用的显示器,目前常用的的主控芯片有KS0108、ST7920等。KS0108是三星公司的产品,与HD61202控制器完全兼容,不带字库、不支持串口。ST7920是台湾矽创电子公司生产的中文图形控制芯片,自带字库、支持4位、8位并行、2线、3线串行接口方式点阵型液晶因为能显示较丰富的信息,所以现在运用越来越广泛。
在本次设计中我们所用的为WINSTAR的WG12864A系列的液晶显示器,其显示原理与KS0108相同。
本次设计中WINSTAR的WG12864A系列的液晶显示器引脚分配与功能定义如下:
像LCD12864这种二值屏幕,我们习惯于用1个字节表示连续的8个点,1的对应位被点亮,0的对应位不亮,所以对图形的操作最基本的手段就是位操作。根据此原理,编写了12864库函数,主要函数如下:
void 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);
//选右屏void LCD_INT(void);
4、AD转换模块
开发板上的模数转换器(ADC)是一个能将连续的模拟电压转换成离散的数字量的外设。其模块的特点是:转换分辨率为10位,最多含8个输入通道和一个内部温度传感器。此外,该模块还包含一个可编程的序列发生器(sequencer),无需使用控制器就可对多个模拟输入源进行采样。每个采样序列均可被灵活的编程,其输入源、触发事件、中断的发生和序列优先级都是可配置的。
传统的ADC模块大多采用单次采样或双采样的方法收集,而StellarisADC 模块却不同,它采用的是一种基于序列(sequence-based)的可编程方法。每个采样序列都是一系列完全程序化的连续(背对背)采样,这使ADC能够从多个输入源中收集数据,而无需控制器对它进行重新配置或处理。对采样序列内的采样进行编程的操作包括对某些参数进行编程,如输入源和输入模块(差分输入还是单端输入),采样结束时的中断产生机制,以及指示序列最后一个采样的指示符(indicator)。
5、系统调试
在本设计中我们所选择的是开发平台是IAR EWARM编译和调试程序。
IAR Embedded Workbench for ARM(下面简称IAR EWARM)是针对ARM处理器的集成开发环境,它包含项目管理器、编辑器、C/C++编译器和ARM汇编器、连接器XLINX和支持RTOS的调试工具C-SPY。在EWARM环境下可以使用C/C++和汇编语言方便地开发嵌入式应用程序。比较其他的ARM开发环境,IAR EWARM 具有入门容易、使用方便和代码紧凑等特点。
设计过程中问题的解决方法:
1、新建Demo工程后,如果按F7编译出现打不开#include头文件的情况,请注意检查:
demo-Debug→鼠标右击→options...→C/C++ Compiler→Preprocessor→Additional include directories里面是否为:“$TOOLKIT_DIR$\INC\Luminary”如果是,请将两端的引号去掉,再试试。
2、在用LM LINK调试的时候会出现如下警告:
正确的做法是一路选“否”,然后进入正常的调试。每次用LM LINK进行调试都会遇到该问题。
若想彻底避免警告,请采用附件里的文件“driverlib.r79”代替目录“C:\Program Files\IAR Systems\Embedded Workbench 4.0 Kickstart\arm\lib\Luminary”下的同名文件,从此不再有警告,完成!
3、关于JTAG锁死问题
现在,调试LM3S系列单片机一般采用JTAG接口。用户在使用过程中,可能会出现芯片的JTAG接口锁死的问题,即用LM LINK调试器(或其它JTAG