找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10275|回复: 2
打印 上一主题 下一主题
收起左侧

Atmega128单片机控制的智能小车设计论文

[复制链接]
跳转到指定楼层
楼主
ID:336492 发表于 2018-5-23 14:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘要
随着我国科学技术的进步,智能化和自动化技术越来越普及,各种高科技也广泛应用于智能小车和机器人玩具制造领域,使智能机器人越来越多样化。智能小车是一个多种高薪技术的集成体,它融合了机械、电子、传感器、计算机硬件、软件、人工智能等许多学科的知识,可以涉及到当今许多前沿领域的技术。
本系统采用2片AVR Atmega128单片机作为智能小车的检测和控制核心。一片用在在小车上,负责控制循迹、无线和电机驱动功能;一片在控制端上,负责控制语音播报、无线发送、液晶显示和按键功能。通过控制端的液晶显示和按键输入设定模式信息,再通过无线发送给车载控制器,车载控制器根据接收到的不同无线信息,控制小车进入不同的模式,实现不同的功能。
本系统中的无线传输距离,空旷地为100米左右,室内可以隔着一层楼,接收端能收到发射端发射的无线信号。

目录
第1章 绪论
1.1              选题背景和意义
1.2              智能小车发展概况
1.2.1 国外智能小车发展概况
1.2.2 国内智能小车发展概况
1.3 研究设计的目标
1.4 方案选择
1.4.1控制器选择分析
1.4.2 电源模块选择分析
1.4.3 电机驱动模块选择分析
1.4.4 循迹模块选择分析
1.4.5无线模块选择分析
1.4.6语音模块选择分析
1.4.7显示模块选择分析
1.4.8按键模块选择分析
1.5 可行性分析
第2章 系统整体设计
2.1 系统结构框图
2.1.1 车载控制器部分
2.1.2 控制端控制器部分
第3章 系统硬件设计
3.1 单片机最小系统
3.1.1 电源电路
3.1.2 复位电路
3.1.3 时钟电路
3.2 电源模块
3.3 电机驱动模块
3.4 循迹模块
3.5 无线模块
3.6 语音模块
3.7 显示模块
3.10 按键模块
第4章 系统软件设计
4.1 主程序设计
4.1.1车载控制器主程序设计
4.1.2控制端控制器主程序设计
4.2 电机驱动子程序设计
4.3 循迹子程序设计
4.4 语音子程序设计
4.4.1录音子程序设计
4.4.2放音子程序设计
4.5 无线程序设计
4.5.1 无线发送子程序设计
4.5.2 无线接收子程序设计
4.6 显示子程序设计
4.7 按键子程序设计
第5章 系统调试
5.1 硬件调试
5.2 软件调试
结  论
致  谢
参考文献
附 录 一
附 录 二

第1章 绪论1.1          选题背景和意义
自第一台工业机器人诞生以来,机器人的民展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人工作的机器一直是人类的梦想。其中智能小车可以作为机器人的典型代表。其需要实现自动导引功能和避障功能就必须要感知导引线和障碍物,实现自动识别路线,选择正确的行进路线,使用传感器感知路线并作出判断和相应的执行动作。智能小车设计与开发涉及控制、模式识别、传感技术、汽车电子、电气、计算机、机械等多个学科。它可以分为三大部分:传感器检测部分,执行部分,CPU。现智能小车发展很快,从智能玩具到各行业都有实质成果,其基本可实现循迹、避障、检测贴片,寻光入库、避崖等基本功能,有向声控系统发展的趋势。
1.2          智能小车发展概况1.2.1 国外智能小车发展概况
国外的智能小车发展的也很火,这其中要数韩国的智能小车发展最为迅速。韩国汉阳大学汽车控制实验室在飞思卡尔半导体公司资助下,以HCS12飞思卡尔单片机为核心构造的智能小车系统。该智能小车系统主要功能为寻迹。利用红外、电磁、CCD摄像头等设备进行,这其中有数CCD摄像头最为常见,行驶速度快,过弯灵敏,控制算法上大多采用PID算法进行闭环控制。
1.2.2 国内智能小车发展概况
国内智能小车系统做的比较成熟的有北京博创科技有限公司。随着全世界范围内汽车炸弹袭击事件的不断增多,因此安全检查部门对重大活动的汽车检查也逐步升级,由过去仅检查车内和车箱,升级为对包括车底的全方位检查。在全国两会安保工作中采用了北京博创科技的UP_UVSR智能小车机器人。UP_UVSR既是一款针对车底检查任务研发的机器人系统,该产品体积小、重量轻,便于携带,作业效率高;可以驶入车底进行检查,也可以固定安装与车辆通道口对过往车辆进行检查。
1.3 研究设计的目标
设计一个多功能智能小车系统。通过控制端的单片机检测按键的输入,根据输入的不同模式,控制无线模块发送不同的命令,小车上的车载控制器接收到无线信号,然后判断接收到的无线信号,来控制小车进入不同的模式,控制端的单片机通过LCD和语音模块进行参数信息的显示和播报。
1.4 方案选择1.4.1控制器选择分析
控制器主要用于各个传感器信号的接收和辨认、控制小车的电机的动作,是整个智能车系统的心脏,考虑到需要实现多个功能的要求及各个模块引脚的数目,列出以下方案,对其分析、论证、选择。
方案一:采用ATMEL公司的AT89S52。AT89S52单片机支持在线编程,易于操作,价格便宜,技术成熟,应用广泛,但是功能单一,如果系统电机驱动需要增加硬件,软件实现较为复杂;另外AT89S52 单片机引脚数较少,达不到各个模块端口的要求。
方案二:采用ATMEL公司的ATmega128。ATmega128是一款基于AVR内核,采用RISC结构,高性能,低功耗CMOS的8位单片机。32个通用工作寄存器,53个通用I/O口,实时时钟计数器(RTC),4个带有比较模式灵活的定时器/计数器,2个可编程的USART接口,1个8位面向字节的TWI(IIC)总线接口,8通道单端或差分输入的10位ADC(其中一个差分通道为增益可调的),可编程带内部振荡器的看门狗定时器,一个SPI接口,一个兼容IEEE1149.1标准的JTAG接口(用于在线仿真调试和程序下载),6种可通过软件选择的节电模式。两个具有预分频器、比较功能和捕捉功能的16 位定时器 /计数器。两路8 位PWM。6路分辨率可编程 (2 到16 位)的 PWM。
方案三:采用更加高端的处理器S3C2410。S3C2410是一款ARM内核的处理器,虽然具备了AVR的资源,但是根据本设计的实际情况,成本比较高,编程难度较大。
综合以上三种方案,考虑到系统的可行性,及功耗,性能,硬软件的成本,我选择方案二。
1.4.2 电源模块选择分析
方案一:采用传统的7805三端稳压电路,小车锂电池(7.4V)经过7805稳压后供给小车电机驱动电路和单片机、各传感器用电。由于小车电机启动瞬间需要消耗大量电流,长时间行使后,7805芯片会有明显的发烫现象,而且效率也很低,电池充满一次电后,小车行驶没多久,就得再次充电。   
方案二:采用LM2596开关型稳压芯片,配合电感和电容,一起搭配构成整体的电源电路。效率更高,性能也更加稳定。
综合以上两种方案,考虑到系统的性能和稳定性方面,选择方案二。
1.4.3 电机驱动模块选择分析
电机的驱动电路主要通过电机的正转和反转实现小车的前后或者左右方向的行驶。对于电机驱动模块有下面的几种方案。
方案一:使用功率三极管作为功率放大器的输出控制直流电机。线性型驱动的电路结构和原理简单,成本低,加速能力强,但功率损耗大,特别是低速大转距运行时,通过电阻R的电流大,发热厉害,损耗大,对于小车的长时间运行不利。
方案二:采用继电器对电机的开或关进行控制,通过开关的切换对小车的速度进行调整。此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。
方案三:采用专用电机驱动芯片L298N,实现框图如图1-1所示。该芯片集成度高,占用空间小,主要应用于电机调速场合。L298N是恒压恒流双H桥集成电机芯片,可同时控制两个电机,且输出电流可达到2A。L298N的数据口分别与单片机的I/O口相连,作为调制信号。这样精度高并且稳定,可行性好,而且通过编程能实现人机分离,利于调试。
综合以上三种方案,考虑到AVR单片机自带有PWM功能,能实现直流减速电机精准控制,选择方案三。
1.4.4 循迹模块选择分析
循迹模块确保了小车在黑色边界线的区域内行驶。考虑到边界线是黑色的,可以考虑利用传感器辨认赛车场地黑白两种不同状态。对传感器的选择有以下方案。
方案一:采用热探测器。热探测器是利用所接收到的红外辐射后,会引起温度的变化,温度的变化引起电信号不同的输出,且输出的电信号与温度的变化成比例,当红外线被黑色线吸收时,温度会降低,电压变低,而红外线没有被吸收时,电压不变,单片机可以根据电压的变化来判断小车显示的情况。由于温度受环境的影响很大,当温度变高时,即使黑色线吸收了红外线,但是也会有很高的电压,导致单片机判断出错。
方案二:采用红外对射管。红外发射接收管测量距离近,但反应灵敏、准确。由于测量的高度离场地仅1 cm,距离很近,符合其特点。相比热探测器而言,其体积较小,价格低,安装较容易。
综合以上两种方案,考虑到系统的稳定性和安装的简便性,选择方案二。
1.4.5无线模块选择分析
无线模块是用来进行控制端和小车之间的通信,控制小车进入不同的功能模式。
方案一:采用目前流行的WiFi无线模式。WiFi覆盖面广,传输里远,但是其硬件开销成本太高,需要很深厚的理论知识基础。短时间内实现有一定的难度。
方案二:采用TI的CC1101无线传输方案。有效传输距离为100米,工作频率为387~464MHZ。主从一体,既可以作为发送端,也可以作为接收端,软件控制灵活、简单。此模块高灵敏度(1.2kbps下-110dDm,0.1%数据包误码率)、内置硬件CRC 检错和点对多点通信地址控制、较低的电流消耗(RX中,15.6mA,2.4kbps,433MHz、可编程控制的输出功率,最大输出功率+10dBm、无线唤醒功能,支持低功率电磁波激活功能,无线唤醒低功耗睡眠状态的设备等优点。
综合以上两种方案,考虑到系统开发成本和开发时间,选择方案二。
1.4.6语音模块选择分析
语音模块是用来进行在小车进入不同的功能模式和小车转向时,进行语音播报,使整个系统更加人性化些。
方案一:采用555定时器,发出特定频率的声波。缺点:只能发出一定频率的波,难以发出人类的声音。
方案二:采用ISD1760专业语音录放芯片。ISD1760可录、放音十万次,存储内容可以断电保留一百年。两种录放模式:独立按键录放模式和SPI总线操作录放模式。可处理多达 255 段信息。录音数据存储在芯片的 FLASH 内,没有经过任何压缩,所以有较好的音质和断电存储。多种采样频率对应多种录放时间。工作电压:2.4V-5.5V。静态电流:0.5 - 1 μA。工作电流:20mA
综合以上两种方案,考虑到系统的功能要求和控制的灵活性,选择方案二。
1.4.7显示模块选择分析
方案一:采用LCD 1602液晶进行小车参数的信息显示。1602为2行16列式的液晶,可以显示一些数字和英文字母以及一些简单的图案,但是1602内部无字库,要想显示汉字就得自己编写汉字码了,软件开发繁琐。
方案二:采用LCD 12864 字符式液晶。由于12864液晶内部带字库,且能够显示的信息也足够多,LCD1284和LCD1602二者在时序控制上差别不大,软件一直很容易。
综合以上两种方案,考虑到系统的要求,选择方案二。
1.4.8按键模块选择分析
方案一:采用4*4矩阵键盘,共计需要16个独立按键,占用单片机8个IO端口。
方案二:采用独立的按键,结合本系统,只需要6个独立按键即可满足要求,单片机只要检测对应的引脚电平几个判断那一按键被按下。
综合以上两种方案,考虑到硬件的开发成本和软件程序上的简便性,选择方案二。
1.5 可行性分析
采用ATmega128A单片机作为控制核心,其标准工作频率为8MHz,可以为本系统提供高速的计算能力和实时控制能力。学校的硬件基础实验室可以提供焊接和调试场地,调试设备只需要电烙铁、万用表、示波器等常用设备即可。
对大学开设的《C语言编程》、《单片机技术》、《模拟电子技术》、《Protel应用技术》等相关课程的学习,可以为该系统的设计与实现提供理论知识。
2系统整体设计2.1 系统结构框图
本系统主要分为两个大模块,车载控制器模块和控制端的控制器模块。
2.1.1 车载控制器部分
车载控制器模块如图2-1所示。

图 2-1 车载控制器模块结构框图
从图2-1中可以看出,车载部分的控制器模块主要包括电源模块、电机驱动模块、循迹模块、避障模块、无线模块。各个模块的功能介绍如下。
1.电源模块:
采用7.4V的锂电池,经过降压电路,降到5V后供给整个系统。
2.电机驱动模块:
使用两片L298N驱动小车的电机。利用单片机的PWM功能,控制驱动芯片,驱动芯片再控制电机,实现小车的行驶转向功能。
3.循迹模块:
采用7对红外对射管作为单片机输入,来检测黑色循迹线路。
4.无线模块:
车载控制器控制无线模块,接收控制端的无线信号,然后根据所接收到的无线信号,车载控制器控制小车执行不同的功能。
2.1.2 控制端控制器部分
车载控制器模块如图2-2所示。
图 2-2控制端控制器结构框图
从图2-2中可以看出,车载控制器主要包括电源模块、无线模块、显示模块、按键模块、语音模块。各个模块的功能如下。
1.电源模块
利用4节5号干电池经过7805稳压到5V后供给控制端的系统使用。
2.语音模块:
使用ISD1760芯片存储声音信息,外接扬声器,当按键设定小车进入不同的功能模式时,实现声音播报功能。
3.按键电路:
共使用6个独立按键,4个方向键,一个菜单键,一个确定键,负责设定小车进入不同的功能模式。
4:显示模块:
使用LCD12864,当按键设定小车的功能模式时,以文字的形式显示模式设定。在进入无线模式时,负责显示小车的操纵方向。
3章 系统硬件设计
本章从硬件系统上设计单片机最小系统模块、电源模块、电机驱动模块、循迹模块、无线模块、语音模块、显示模块、按键模块。
3.1 单片机最小系统3.1.1 电源电路
电源电路把直流5V输入给降压芯片LM117,然后降压到3.3V后供给单片机和其他3.3V模块使用。电源电路如图3-1所示。
图 3-1 电源电路

3.1.2 复位电路
单片机的复位方式有上电自总复位和手工复位两种。本设计中复位电路采用的是手工复位电路,如图3-2所示。
图 3-2 复位电路
单片机的REST引脚为主机提供一个外部复位信号输入端口。复位信号是低电平有效,低电平有效的持续时间大于最小脉冲宽度(1.5us)时即触发复位过程。复位后,单片机内各部件都恢复到初始状态,单片机从ROM地址的0000H开始执行程序。
3.1.3 时钟电路
时钟电路如图3-3所示。
(空白处补上)
图 3-3 时钟电路
单片机的工作时间基准是由时钟电路提供的,在单片机的XTAL1和XTAL2的两个引脚间,接入一个8MHz晶振及两个22pF电容即构成了单片机最小系统的时钟电路。
时钟电路中的器件可以从ATmega128的芯片资料上确定,也可以参考一些常见的电路的参数。
3.2 电源模块
电源模块采用的是LM2596开关型稳压芯片。7.4V的锂电池经过LM2596稳压到5V后供给整个系统。电源模块电路图如图3-4所示。
(空白处补上)

图3-4电源模块电路图
锂电池电压从J1输入给LM2596降压电路,5V从J2输出,供给整个系统。R2为可调电阻,可以调节输出电压。D1为SS34肖特基二极管,具有开关速度快,正向压降低的特点,在电路中配合L1电感,构成回路,起到续流的作用。
3.3 电机驱动模块
电机驱动模块采用了2片L298N芯片,进行对小车的4个电机的控制。其中一片L298N电机驱动电路图如图3-5所示。
(空白处补上)

图3-5电机驱动模块电路图
图中QIN1~QIN4为芯片输入端,接单片机PD4,PD5,PD6,PD7口,O1~O4为芯片输出端,接电机。JDY1和JDJY2为电机线插座。PWA和PWMB为PWM输入脚,接车载控制器的PB5(OC1A)和PB6(OC1B)PWM输出引脚。D2~D9为1N4007二极管,在电路中起到保护L98N芯片的作用,防止电机在正反转的瞬间,产生的电动势击穿L298N芯片。
3.4 循迹模块
循迹模块采用了共计7对红外对射管,7路循迹接车载控制器的PA0~PA7口。其中一对红外对射管的电路如图3-6所示。
(空白处补上)

图3-6 循迹模块电路图
红外对射管为DT2和DR2。LM339N为比较器,RW1为10K的可调电阻。当DR2接收到DT2发射的红外光时导通,此时339的反相输入端为逻辑0,正向输入端VREF电平高于反相输入端电平,根据比较器的特性,比较器输出端为高电平,车载控制器的PA1口也为高电平。当DR2未接收到红外光是截止,此时339的反相输入端为高电平且高于正向输入端VREF的电压值,比较器输出端为低电平,车载控制器的PA1口也为低电平。
3.5 无线模块
无线模块采用从网上购买的CC1101模块,无线模块实物图如图3-7所示。

图3-7 无线模块实物图
CC1101工作电压为1.8V~3.6V,最高不超过3.8V,本系统无线模块工作电压供给的是3.3V。车载控制器通过IO模拟SPI串行总线的方式和无线模块进行相连接。无线模块和车载控制器的连接图如
图3-8所示。
车载控制器ATmega128A的PB0接CC1101的片选引脚/SS,控制CC1101是否被选通;车载控制器ATmega128A的PB1接CC1101的串行时钟输入脚SCLK,用于同步MOSI和MISO的数据传输;车载控制器ATmega128A的PB2接CC1101的串行数据输入脚MOSI,CC1101从该引脚读入发送/接收命令字;车载控制器ATmega128A的PB3接CC1101的串行数据输出脚MISO, 车载控制器从该引脚接收来自无线模块传来的信号。
图3-8 无线模块和车载控制器的连接图
3.6 语音模块
语音模块是本系统中的重要功能模块。当按键设定小车进入不同的功能模式时,语音模块能够播报相应的模式信息,防止设定进入错误的模式。
语音模块实物图如图3-9所示。
图中MIC为录音输入麦克,按键也可实现录音和放音的操作。
(空白处补上)

图3-9 语音模块实物图
语音模块和控制端的控制器连接图如图3-10所示。
ISD1760与ATmega128A接口为SPI串行总线接口,单片机通过片选线SS(SS=0时允许ISD1760工作)、串行数据输入MISO、串行数据输出MOSI和串行时钟SCLK和ISD1760进行连接。
单片机B ATmega128A的PA3接ISD的片选引脚/SS,控制ISD1760是否被选通;ATmega128A的PA2接ISD的串行时钟输入脚SCLK,用于同步MOSI和MISO的数据传输;ATmega128A的PA1接ISD的串行数据输入脚MOSI,ISD从该引脚读入录、放音的地址;Tmega128A的PA0接ISD的串行数据输出脚MISO,单片机B从该引脚接收来自语音芯片传来的信号。
(空白处补上)

图3-10 语音模块和车载控制器的连接图
3.7 显示模块
显示模块的硬件原理图如图3-11所示。
VSS、LED_K接地;VDD、/RST接+5V电源。液晶数据线DB0~DB7连接AVR128的PC口。RS接单片机PE2,当为高电平时,表示DB0~DB7为显示数据;为低电平时,表示DB0~DB7为显示指令数据。R/W接单片机PE3口,使能信号E接单片机PE4口,R/W为高电平,E为高电平,数据被读到DB0~DB7;R/W为低电平,E从高电平转换到低电平,DB0~DB7被写到液晶内部的DDRAM里。
(空白处补上)

图3-11 显示模块电路图

3.10 按键模块
按键模块电路图如图3-12所示。
图3-12 按键模块电路图
6个按键作为输入方式接入控制器端控制器的PD0~PD5 IO口。当有按键按下时,对应的端口电平变为低电平,当按键抬起时,对应的电平变为高电平。
K1~K4分别为Up、Down、Left、Right键,当小车进入无线遥控模式时,负责小车的前进、后退、左转和右转功能。
K5为菜单键,负责小车进入何种模式菜单的设定显示。当K5按下时,K1~K3分别对应无线模式、循迹模式和避障模式。
K6为确定键,当K5按下,K1~K3设定某种模式后,按下K6,然后通过无线模块把模式字码发送给车载控制器。
4 系统软件设计
系统的软件设计采用C语言,对单片机进行编程实现各项功能。
程序是在Windows XP环境下采用CodeVisionAVR C Compliler软件编译的。
4.1 主程序设计
本系统主要分为两个主程序,即车载控制器上的主程序和控制端控制器的主程序。
4.1.1车载控制器主程序设计
主程序采用模块化的思想设计,车载控制器的主程序流程图如图4-1所示。
从图4-1中可以看出,车载空控制器首先进行对电机模块、循迹模块和无线模块的初始化,初始化主要包括各个模块和控制器相连接的IO端口的输入/输出初始化,以及一些功能寄存器的初始化。
初始化完成后,程序进入while循环,开始判断无线接收到的数据,如果无线接收到的数据是循迹模式字码(0xa0),则进入循迹子程序,小车开始循迹;如果无线接收到的数据是无线遥控模式字码(0xa1),则进入无线遥控模式,开始小车的无线遥控行驶功能。如果没有接收到任何模式字码或者接收到的不是这三种模式字码的任意一个,则小车停止。
图4-1 车载控制器主程序流程图
4.1.2控制端控制器主程序设计
控制端控制器的主程序流程图如图4-2所示。

图4-2 控制端控制器主程序流程图

从图4-2中可以看出,控制端空控制器首先进行对按键模块、液晶模块、语音模块和无线模块的初始化。初始化主要包括各个模块和控制器相连接的IO端口的输入/输出初始化,以及一些功能寄存器的初始化。
初始化完成后,显示一初始界面信息,然后判断是否有任意按键按下,如有任意按键按下,则清屏显示信息,显示模式设定信息,然后主程序开始开始处理按键程序。
4.2 电机驱动程序设计
根据电机驱动芯片L298的文档资料,IN1(5)、IN2(7)、IN3(10)、IN4(12)分别对应OUT1(2)、OUT2(3)、OUT3(13)、OUT4(14),即输入高低电平对应,(例如IN1为高则OUT1为高),当然这要是建立在使能端满足的情况下才可以; ENA(6)、ENB(11)为使能端,ENA控制OUT1、OUT2,ENB控制OUT3、OUT4,高电平有效,即在低电平情况下,无论输入为何信号,输出都为低电平。
现以IN1、IN2、OUT1、OUT2为例控制电机的转向。详见表4-1。
表4-1电机转动状态真值表
IN1
IN2
OUT1
OUT2
状态
1
1
1
1
停止
1
0
1
0
转动
0
1
0
1
转动
0
0
0
0
停止

电机驱动子程序的流程图如图4-3所示。
图4-3 电机驱动子程序流程图
从图4-3中可以看出,电机驱子动程序首先要对电机模块初始化,初始化主要包括电机驱动芯片的输入端口PORTD.4~PORTD.7的端口输出方向初始化,PWM输出通道 PORTB.5和PORTB.6的输出方向初始化,定时器1的PWM输出频率及PWM计数器顶端值的初始化。然后进入主程序,开始判断各个标志位。如果是前进标志,则调用前进函数,先设定PWM占空比,然后令电机驱动芯片的输入端in1=1,in2=0(左轮正转),in3=1,in4=0(右轮正转),小车即向前行驶;如果是左转标志,则调用左转函数,先设定PWM占空比,然后令电机驱动芯片的输入端in1=0,in2=1(左轮反转),in3=1,in4=0(右轮正转),小车即开始左转。其他的后退、右转和停止函数和前面所讲类似,在此不再赘述。
4.3 循迹程序设计
本系统边界检测模块采用的是红外对射模块。在小车的正前方位置安装了7支红外对射管,这些红外对射管是用来检测和探知黑色循迹道路的。
小车循迹是通过7对红外对射管来检测的,表4-2列出了小车的各个状态:
表4-2红外对射管状态真值表
     传感器
     编号

小车状态


Sig1  


Sig2


Sig3


Sig4


Sig5


Sig6


Sig7
轻微左偏
0
1
1
1
1
1
1
严重左偏
0
0
1
1
1
1
1
轻微左偏
1
0
1
1
1
1
1
轻微左偏
1
0
0
1
1
1
1
轻微左偏
1
1
0
1
1
1
1
轻微左偏
1
1
0
0
1
1
1
中间位置
1
1
1
0
1
1
1

具体程序可根据循迹流程图4-4所示进行程序编写。
从图4-4中可以看出,循迹子程序首先要对循迹模块初始化。初始化主要包括对循迹模块和车载控制器的接口PORTA.0~PORTA.6的端口输入方向初始化。
初始化完毕后,主程序开始判断循迹模块的中间一个传感器Sig4的输出状态是否为0(低电平),如果Sig4为0,则说明小车此时处于黑色循迹线路的中间位置,车载控制器调用小车直走函数,控制小车直走即可;如果Sig4不为0,则程序进对循迹模块的左边的传感器Sig1的状态进行判断。如果Sig1的输出状态为0(低电平),则说明小车车身现在处于黑线的右边位置,车载控制器需调用小车左转函数。如果Sig1的输出状态不为0,则进入下一个传感器的输出状态判断。如果7个传感器的输出状态都不为0,车载控制器则控制小车直走。
图4-4 循迹子程序流程图
4.4 语音程序设计
控制端的控制器通过SPI总线的方式来控制语音模块的录放音操作。SPI的英文名称为Serial Peripheral Interface。串行外设接口SPI是由Freescale公司(原Motoroal公司半导体部)提出的一种采用串行同步方式的3线或4线通讯接口,使用信号有使能信号(SS)、同步时钟(SCK)、同步数据输入和输出(MOSI、MISO)。在 SPI 模式下,对芯片进行更多功能操作。如对任意存储地址进行录放,对模拟通道配置寄存器进行读写等。
通信协议
MOSI 的数据在 SCLK的上升沿进入录音芯片,MISO 的数据在 SCLK的下降沿进入主控芯片。8位为一字节,先发低位。
4.4.1录音子程序设计

ISD录音子程序流程图如图4-5所示。

图4-5 语音录音子程序流程图
从图4-5中可以看出,ISD录音子程序首先要对语音模块进行初始化,包括语音模块和单片机相连接的IO口PORTA.0~PORTA.3的输入输出方向初始化、语音模块的复位、清除语音模块内部的中断。
初始化完成后,开始读取状态寄存器,如果语音芯片准备就绪,则发送录音模式指令,从起始地址开始录音,遇到结束地址后,结束录音,单片机发送下电指令给语音模块。如果语音芯片没有准备继续,则控制器一直读取语音芯片内部的状态。
4.4.2音子程序设计

图4-6 语音放音子程序流程图
从图4-6中可以看出,ISD放音子程序首先要对语音模块进行初始化,包括语音模块和单片机相连接的IO口PORTA.0~PORTA.3的输入输出方向初始化、语音模块的复位、清除语音模块内部的中断。
初始化完成后,开始读取状态寄存器,如果语音芯片准备就绪,则发送放音模式指令,从起始地址开始放音,遇到结束地址后,结束放音,单片机发送下电指令给语音模块。如果语音芯片没有准备继续,则控制器一直读取语音芯片内部的状态。
4.5 无线程序设计4.5.1 无线发送程序设计
无线发送子程序流程图如图4-7所示。
从图4-7中可以看出,无线发送子程序首先对无线模块CC1101进行初始化,包括无线模块和控制端控制器接口的PORTB.0~PORTB.3的端口输入输出方式初始化、SPI状态初始化、无线模块上电复位初始化、配置CC1101内部各寄存器、无线模块发射功率设置初始化。
初始化完成后, 设定发送字节长度,然后写入要发送的数据,进入发送模式发送数据,然后检查发送标志位,看是否发送完成,如果发送完成,则清发送缓冲区。如果没有发送完成,则再开始发送数据。
图4-7 无线发送子程序流程图
4.5.2 无线接收子程序设计
无线接收子程序流程图如图4-8所示。

图4-8 无线接收子程序流程图

从图4-8中可以看出,无线发送子程序首先对无线模块CC1101进行初始化,包括无线模块和控制端控制器接口的PORTB.0~PORTB.3的端口输入输出方式初始化、SPI状态初始化、无线模块上电复位初始化、配置CC1101内部各寄存器、无线模块发射功率设置初始化。
初始化完成后, 设定接收字节长度,然后进入接收模式,如果接收的字节为0,则一直在接收模式下。如果接收的字节数不为0,则开始接收数据,接收完成活,清接收缓冲区。
4.6 显示子程序设计
显示子程序流程图如图4-9所示。

图4-9 显示子程序流程图
从图4-10可以看出,液晶显示子程序首先要对液晶模块进行初始化,包括液晶控制端口、液晶数据端口和控制器相连接的IO口PE2~PE6、PC口的端口输入输出方向初始化。
初始化完毕后,液晶先显示初始界面信息,这时如果有任意的一个按键按下,则液晶清楚界面信息,然后显示模式设定信息,按键输入相应模式。如果没有按键按下,则液晶一直显示初始界面信息。
4.7 按键子程序设计
按键子程序如图4-10所示。
从图4-10可以看出,按键显示子程序首先要按键模块进行初始化,对按键和控制端的控制器的接口PD0~PD5端口输入/输出方向初始化。
初始化完毕后,开始处理按键程序,判断有无按键按下,并执行相应的按键处理程序。

图4-10 按键子程序流程图




第5章 系统调试
              本系统经过总体设计,完成了硬件开发和软件开发。通过硬件和软件的相互配合,使得整个系统正常运行。但是一个工程项目或者一个系统的最终开发成功,期间必然会碰到好多错误,例如硬件焊接上的错误,软件编程上的错误等,这就需要通过调试来发现错误并及时的改正错误。系统调试分为硬件调试和软件调试两个部分。
5.1 硬件调试
硬件调试用到的工具是示波器和万用表。
车载部分的硬件实物图和控制端的硬件实物图分别如图5-1和5-2所示。
图5-1 车载硬件实物图
图5-2 控制端硬件实物图
硬件调试应从以下4个步骤开始:
1.查看线路
根据硬件设计原理图,仔细检查各线路焊接是否正确,有误虚焊或者短路问题。
2.检查板上各元器件
检查各个芯片、电阻有无焊接正确,有无芯片焊反等情况出现。
3.检查电源和地
电源和地是一个系统中必不可少的组成部分,通电之前,首先要将万用表开关调到测试二极管挡位,然后检查电源和地之间有误短路。检查各个模块的电源和地是否连接正常。
4.上电检查
在保证电源和地的电路没有问题的情况下,接通电源,检查各个模块是否正常,有误发热、发烫现象发生。必要时,可以用万用表测量系统电路中的电流。如果测量电流很大,则说明系统电路中有短路或者故障,此时应立即断开电源,然后仔细检查电路。
5.系统整体检查
上电后,检查系统中各个模块的电压是否正常,单片机相应的引脚输入输出电平是否正常等。
5.2 软件调试
对于本系统而言,软件程序时序图要求太多,所以软件程序的调试显得相当的烦琐。整个程序是使用C语言。
              软件调试分为以下2个步骤:
              (1)各个模块程序的调试
              在本系统设计中采用CodeVisionAVR 软件对程序进行编译和修改。利用AVRStudio4仿真软件和JTAG工具对程序进行仿真调试,检查各寄存器内值是否正常,堆栈地址是否溢出等。
              2.整体程序调试:各个模块程序调试完毕后,需要把各个模块和主程序连接起来,进行系统的整体调试,看看是否能实现系统的预期功能。在此阶段出现的问题可以采取在出现问题的前后点亮LED灯的方式,来确定是哪部分出现的问题。

本设计实现了多功能智能小车系统的功能。当按键输入设定好的模式时,进行语音提示文字显示同步发出,然后经过无线传输把模式字码发送给车载控制器端,然后车载控制器根据接收到的模式字码,控制小车,实现循迹、无线遥控功能。如果没有收到无线信号或者收到的无线信号是停止模式字码,则车载控制器控制小车处于停止等待状态,
智能小车系统主要应用与环境监控和检测、车体环境的检查、军用上的排爆排雷等。是一个涉及多领域、多学科的工程。
本系统的特点是,采用无线传输的模式,通过控制端控制车载控制器,继而通过车载控制器控制小车,避免了人和车体的直接接触,增加了控制的灵活性,突破了空间的限制。但本系统也有局限性,由于采用的是无线传输的方式,任何无线设备,其稳定性和传输距离上都有一定的限制,本无线设备有效传输距离在空旷地带为100米左右,此外,随着距离的增加,在系统的实时性控制方面,也会有一定程度的迟缓现象出现。
在毕业设计过程中,巩固了在大学4年内学过的知识,尤其是单片机和模拟电子方面的知识,同时通过这次毕设提高了单片机编程的能力,尤其是获得的软件调试经验,同时加强了我的实际编程能力,同时也让自己更加的知道了自己知识领域里的不足和缺陷。
由于时间太仓促,经验不足,理论方面也相应的存在不足,加上条件有限,仍存在着一些设计方面的问题,个人技能也有待提高。理论知识还要巩固加强。
致  谢
本课题在选题及研究过程中得到冯老师的悉心指导。冯老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。冯老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,而且教我做人,虽历时半年,却给以终生受益无穷之道。对冯老师的感激之情是无法用言语表达的。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!

附 录
电机驱动头文件和C文件代码


完整的Word格式文档51黑下载地址(含源码):
智能小车毕业设计.doc (3.98 MB, 下载次数: 51)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:28260 发表于 2021-6-27 18:47 | 只看该作者
谢谢共享,已拜读!
回复

使用道具 举报

板凳
ID:652804 发表于 2021-8-9 06:36 | 只看该作者
谢谢共享,下载拜读!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表