修改越野机器人.docx
《修改越野机器人.docx》由会员分享,可在线阅读,更多相关《修改越野机器人.docx(22页珍藏版)》请在冰豆网上搜索。
![修改越野机器人.docx](https://file1.bdocx.com/fileroot1/2023-1/31/a06d28cf-25fe-4806-8e91-c13c27ccab7c/a06d28cf-25fe-4806-8e91-c13c27ccab7c1.gif)
修改越野机器人
《单片机原理与应用》
课程设计报告
题目:
越野机器人系统的设计
专业:
电气工程及其自动化
班级:
14电气4班
学号:
14020122
姓名:
曹可凡
指导教师:
张国丽
天津理工大学中环信息学院
自动化工程系
目录
第一章、单片机简介2
第二章、越野机器人系统设计的目的和原理6
2.1、设计目的要求6
2.2、设计原理方案6
第三章、越野机器人系统设计的实验仪器和设备软硬件7
3.1、设计实验的仪器7
3.2、系统设计的软件及其硬件7
3.3、总体设计8
3.4、具体步骤12
第四章、越野机器人系统设计的验证及小结19
4.1、设计验证19
4.2、设计小结19
参考文献20
第一章、单片机简介
现在可以说是单片机百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位机、16位机到32位机,从MSP430,C51到ARM数不胜数,应有尽有。
作为电子信息工程的一名学生来说,未来单片机的走向很大程度上决定着以后的就业,所以了解单片机的相关知识显得比较迫切。
1.总述
单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。
由于单片机在工业控制领域的广泛应用,为使更多的业内人士、学生、爱好者,产品开发人员掌握单片机这门技术,于是产生单片机开发板,比较有名的例如电子人DZR-01A,ARM,STM32,C51,MSP430等。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
二、单片机的发展史
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
相当于一个微型计算机,和计算机相比,单片机只缺少了I/O设备。
概括的说:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。
单片机作为微型计算机的一个重要分支,应用面很广,发展很快。
自单片机诞生至今,已发展为上百种系列的近千个机种。
以8位单片机为起点。
(1)第一阶段(1976-1978):
单片机的控索阶段。
以Intel公司的MCS–48为代表。
MCS–48的推出是在工控领域的控索,参与这一控索的公司还有Motorola 、Zilog等,都取得了满意的效果。
这就是SCM的诞生年代,“单机片”一词即由此而来。
(2)第二阶段(1978-1982)单片机的完善阶段。
Intel公司在MCS–48 基础上推出了完善的、典型的单片机系列MCS–51。
它在以下几个方面奠定了典型的通用总线型单片机体系结构。
①完善的外部总线。
MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口。
②CPU外围功能单元的集中管理模式。
③体现工控特性的位地址空间及位操作方式。
④指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。
(3)第三阶段(1982-1990):
8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。
Intel公司推出的MCS–96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。
随着MCS–51系列的广应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路路功能,强化了智能控制的特征。
(4)第四阶段(1990—):
微控制器的全面发展阶段。
随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。
三.单片机的广泛应用
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
1、在智能仪器仪表上的应用:
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(功率计,示波器,各种分析仪)。
2、在工业控制中的应用
用单片机可以构成形式多样的控制系统、数据采集系统。
例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
3、在家用电器中的应用
可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。
4、在计算机网络和通信领域中的应用
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
5、单片机在医用设备领域中的应用
单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
6、在各种大型电器中的模块化应用
某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。
如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。
如:
音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。
在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
二、单片机的未来趋势
作为一个炙手可热的产品,单片机未来的走势会是怎么样的呢?
作为一种应用型产品无外乎就是节省快速两个方面。
在资源日益枯竭的今天,节能成为所用产品不可避免的话题,所以低功耗是未来单片机的一个重要方向。
这是一个效率社会,所以提速也是未来单片机应该考虑的问题。
1.低功耗CMOS化
MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。
象80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。
CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗象电池供电的应用场合。
所以这种工艺将是今后一段时期单片机发展的主要途径
2.微型单片化
现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。
甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。
此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。
现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。
3.主流与多品种共存
现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的Winbond系列单片机。
所以C8051为核心的单片机占据了半壁江山。
而Microchip公司的PIC精简指令集(RISC)也有着强劲的发展势头,中国台湾的HOLTEK公司近年的单片机产量与日俱增,与其低价质优的优势,占据一定的市场分额。
此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。
在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。
4.低电压化
几乎所有的单片机都有WAIT、STOP等省电运行方式。
允许使用的电压范围越来越宽,一般在3~6V范围内工作。
低电压供电的单片机电源下限已可达1~2V。
目前0.8V供电的单片机已经问世。
5.低噪声与高可靠性
为提高单片机的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片厂家在单片机内部电路中都采用了新的技术措施。
大容量化 以往单片机内的ROM为1KB~4KB,RAM为64~128B。
但在需要复杂控制的场合,该存储容量是不够的,必须进行外接扩充。
为了适应这种领域的要求,须运用新的工艺,使片内存储器大容量化。
目前,单片机内ROM最大可达64KB,RAM最大为2KB。
6.高性能化
主要是指进一步改进CPU的性能,加快指令运算的速度和提高系统控制的可靠性。
采用精简指令集(RISC)结构和流水线技术,可以大幅度提高运行速度。
现指令速度最高者已达100MIPS(Million Instruction Per Seconds,即兆指令每秒),并加强了位处理功能、中断和定时控制功能。
这类单片机的运算速度比标准的单片机高出10倍以上。
由于这类单片机有极高的指令速度,就可以用软件模拟其I/O功能,由此引入了虚拟外设的新概念。
7.小容量、低价格化
与上述相反,以4位、8位机为中心的小容量、低价格化也是发展动向之一。
这类单片机的用途是把以往用数字逻辑集成电路组成的控制电路单片化,可广泛用于家电产品。
外围电路内装化这也是单片机发展的主要方向。
随着集成度的不断提高,有可能把众多的各种处围功能器件集成在片内。
除了一般必须具有的CPU、ROM、RAM、定时器/计数器等以外,片内集成的部件还有模/数转换器、DMA控制器、声音发生器、监视定时器、液晶显示驱动器、彩色电视机和录像机用的锁相电路等。
串行扩展技术在很长一段时间里,通用型单片机通过三总线结构扩展外围器件成为单片机应用的主流结构。
随着低价位OTP(One Time Programble)及各种类型片内程序存储器的发展,加之处围接口不断进入片内,推动了单片机“单片”应用结构的发展。
特别是IC、SPI等串行总线的引入,可以使单片机的引脚设计得更少,单片机系统结构更加简化及规范化。
五、结语
随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将更强,速度将更快!
作为工程人我们应该如何学好这个应用广泛,前景美好的单片机。
第二章、越野机器人系统设计的目的和原理
2.1、设计目的要求
1、设计目的要求
首先了解AVR单片机,掌握宝贝车机器人伺服电机的运动控制,并进行宝贝车运行调零,使宝贝车沿直线运行,目的使设计更好的运行。
其次掌握面包板扩展电路的连接方法,了解面包板连通,可以熟练地参考电路图连接实物图。
深度了解控制触觉开关,从而控制电机运转方式。
熟练掌握C语言编程,正确的写出相应的程序。
之后通过系统的整体概念,设计并实现题目所要求的功能,对宝贝车机器人编程来监视触觉开关的状态,以及决定当它遇到障碍物时如何动作。
最终的结果就是通过触觉给机器人自动导航,完成设计报告。
熟练掌握单片机调试方法。
1、掌握相应传感器的使用方法。
2、利用宝贝车实验机器人更具体的了解单片机工作原理和应用
3、熟练掌握C语言编程。
4、通过系统整体的概念,设计并实现要求的功能,完成设计报告。
掌握正确的单片机调试方法。
2.2、设计原理方案
一、设计具体功能要求:
具体功能要求:
宝贝车能够躲避壁障物,并能通过一个高度很低的小桥
传感器可自定选择
有开始/复位功能;
要求检测到障碍物时进行蜂鸣三声报警。
.
【选作功能】通过小桥时有指示灯闪烁。
二、设计原理方案
在许多自动化机械都依靠于各种各样的触觉型开关,机器人遇到障碍物使,接触触觉开关,触觉开关就会有察觉,传输到电路(触发高低电平)使之宝贝车按照相应程序做出相应的判断。
原理方案:
宝贝车机器人上安装并测试一个称为胡须的触觉开关。
对宝贝车机器人编程来监视触觉开关的状态,以及决定当宝贝车机器人遇到障碍物时应该有什么动作。
最终的结果是通过触觉给机器人自动导航。
第三章、越野机器人系统设计的实验仪器和设备软硬件
3.1、设计实验的仪器
一、设计实验仪器清单
(1)、须状金属丝
(2)、平头M4-40螺丝钉
(3)、½″圆形套管
(4)、尼龙垫圈
(5)、3-pin公-公接头
(6)、220Ω电阻(红-红-棕)
(7)、10kΩ电阻(棕-黑-橙)
(8)、扬声器
3.1.1胡须硬件
图3-15扬声器
3.2、系统设计的软件及其硬件
一、宝贝车机器人系统设计软件
WINAVR编译器,MFILE软件,ISP下载软件,串口软件。
2、宝贝车机器人系统设计硬件
计算机、宝贝车、触须硬件、报警器硬件等。
3.3、总体设计
1、完整的设计系统
1、硬件电路设计及其描述
3.3.1触须电路示意图(a)
图3-16扬声器报警电路图
图3-17接线电路图
断开伺服电机电源,按照示意图(a)(b)插入元器件。
由课程设计题目可知,通过触须感知障碍物存在与否以及障碍物所处的位置,通过触须对障碍物的判断以及宝贝车自身的能动作用实现对障碍物的躲避功能。
通过触须与障碍物的触碰,实现开关的动作,来实现动作信号的输入,输入端口PC0、PC1有高电平输入。
宝贝车通过自身CPU的判断,以确定自身的情况。
并通过输出端口PD2、PD3控制左右LED灯的亮与灭,由此可以提示触碰障碍物的触须的位置和方向。
2、软件设计及其描述
调零程序:
#include
#include
int main(void)
{
usta_Init();
printf("Program Running!
");
DDRC|=_BV(PC2);//设置PC2为输出口
DDRC|=_BV(PC3);//设置PC3为输出口
while
(1)
{
PORTC|=_BV(PC2);/设PC输出高电平
delay_nus(1500);//延时1.5ms
PORTC&=~_BV(PC2);//设置PC2输出低电平
delay_nms(20);//延时20ms
PORTC|=_BV(PC3);//设置PC3输出高电平
delay_nus(1500);//延时1.5ms
PORTC&=~_BV(PC3);//设置PC3输出低电平
delay_nms(20);//延时20ms
}
}
胡须测试:
观察一下图3.3.2所示的胡须电路示意图,每条胡须都是一个机械式的、接地常开的单刀单掷开关。
胡须接地(GND)是因为主板外围的镀金孔都连接到GND。
金属支架和螺丝钉提供电气连接给胡须。
通过编程让微控制器探测什么时候胡须被触动。
连接到每个开关电路的I/O脚监视着10K上拉电阻上的电压变化。
当胡须没有被触动,连接胡须的I/O管脚的电压是5V;当胡须被触动时,I/O短接到地,所以I/O管脚的电压是0V。
微控制器启动或复位时,所有的I/O插脚缺省为输入。
也就是说,连接到胡须的I/O管脚会自动作为输入。
作为输入,如果I/O脚上的电压为5V(胡须没有被触动),则其相应的寄存器中的相应位存储1;如果电压为0V(胡须被触动),则存储0。
定义两个子函数左右胡须状态:
#include
#include
intPC0_state(void)//获取PC0的状态
{
return(PINC&0x01)?
1:
0;
}
intPC1_state(void)//获取PC1的状态
{
return(PINC&0x02)?
1:
0;
}
intmain(void)
{
Usta_Init();
Printf(“WHISKERSTARTES\n”);
While
(1)
{
Printf(“左边胡须的状态:
%d”,PC0_state());
Printf(“右边胡须的状态:
%d\n”,PC1_state());
Delay_nms(150);
}
}
测试结果:
轻轻的触动胡须,测试该程序。
每个胡须接触到自己的3-pin转接头时,红色LED会变亮。
胡须如何触觉导航:
编程来检测胡须是否被触动后,利用这些信息对宝贝车导航。
在宝贝车行走过程中,如果有胡须被触动,那就意味着碰到了障碍物。
导航程序需要接收这些信息,判断它的意义,调用一系列使宝贝车倒退。
旋转并朝不同的方向行走运动的子函数。
宝贝车向前走直线直到碰到障碍物。
在这种情况下,宝贝车用他的一根或者两根胡须碰到障碍物,当遇到障碍物时它会知道。
一旦胡须探测碰到障碍物,导航程序和子程序将小车倒退和旋转。
然后宝贝车再重新向前行走直到遇见下一个障碍物。
C语言条件判断语句:
if((PC0_state()==0)&&(PC1_state()==0))//两个胡须同时检测到障碍物时,后退,再向左//转180度
{
Back_Up();
Turn_Left();
Turn_Left();
}
elseif(PC0_state()==0)//左边胡须检测到障碍物时,后退,再向右转90度
{
Back_Up();
Turn_Right();
}
elseif(PC1_state()==0)//左边胡须检测到障碍物时,后退,再向左转90度
{
Back_Up();
Turn_Left();
}
else//没有胡须检测到障碍物时,向前走
Forward();
带胡须宝贝车行走:
主程序中的语句首先检查胡须的所有需要注意的状态。
如果两个胡须都触动了即PC0_state()和PC1_state()都为0,调用Backward(),紧接着调用Left_Turn()两次;如果只是左胡须被触动即只有PC0_state()为0,程序调用Backward(),然后再调用Right_Turn();如果右胡须被触动即只有PC1_state()为0,程序调用Backward()子程序,然后再调用Left_Turn();如果两个胡须都没有触动,在这种情况下,在else中调用Forward()语句。
函数Left_Turn(),Right_Turn()以及Backward()看起来应该相当熟悉,但是函数Forward()有一个变动。
它只发送一个脉冲,然后返回。
这点相当重要,因为宝贝车可以在前行走中的每两个脉冲之间检查胡须的状态。
因为每个全速前进的脉冲都使得宝贝车旋转大约半厘米。
只发送一个脉冲,然后回去检查胡须的状态是一个好主意。
每次程序从Forward()返回后,程序再次从while循环的开始处执行,此时if…else语句会再次检查胡须的状态。
LED灯导航触须导航程序:
#include
#include
intPC0_state(void)//获取PC0的状态
{
return(PINC&0x01)?
1:
0;
}
intPC1_state(void)//获取PC1的状态
{
return(PINC&0x02)?
1:
0;
}
intmain(void)
{
DDRD|=_BV(PD2)|_BV(PD3);
while
(1)
{
if(PC0_state()==0)
PORTD|=_BV(PD2);
else
PORTD&=~_BV(PD2);
if(PC1_state()==0)
PORTD|=_BV(PD3);
else
PORTD&=~_BV(PD3);
delay_nms(50);
}
}
3.4、具体步骤
1、硬件具体步骤
1、将一对3-pin公-公接头安装在面包板相应位置。
2、安装胡须
●拆掉连接主板到前支架的两颗螺钉
●参考图3.4.1,进行下面操作
●螺钉依次穿过尼龙垫圈、½″圆形套管
●螺钉穿过主板上的圆孔之后,拧进主板下面的支架中,但不要拧紧
●把须状金属丝的其中一个钩在尼龙垫圈之上,另一个钩在尼龙垫圈之下,调整它们的位置使它们横向交叉但又不接触
●拧紧螺钉到支架上
●参考电路图3.4.2,搭建如图3.4.3所示的胡须电路。
●确定两条胡须比较靠近,但又不接触面包板上的3-pin头。
并保持3mm的距离。
3.4.1安装机器人胡须图
3.4.2触须电路示意图
3.4.3宝贝车触觉连接图
3、电路搭建完整如图
3.4.4完整电路
二、软件具体步骤
1、在计算机桌面建立文件夹,命名为“test1”,打开WINAVR编译器软件,“File”→“New”→“Project”。
2、制作Makefile文件,打开MFile软件。
3、修改主文件名:
选择菜单“Makefile→MainFimename...”框,点击“ok”即可。
4、修改MCUtype:
选择菜单“Makefile→MCUtype→ATmega→ATmega8”即可完成。
修改编程器类型:
选择菜单“Makefile→Programmer→stk200”即可。
修改编程端口:
选择菜单“Makefile→port→lpt1”即可。
5、将文件保存在源程序所在目录,即:
“File→Saveas”。
输入源程序并保存,文件名称为:
“keshe.c”。
6、再次打开WINAVR编译器软件,选择菜单“Tools→makeall”检查程序正确性。
7、打开ISP下载软件,找到相关文件,打开。
8、将宝贝车与电脑连接好,点击宝贝车上复位键并把宝贝车电源调