机器小车寻迹实习报告.docx
- 文档编号:26135436
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:13
- 大小:123.02KB
机器小车寻迹实习报告.docx
《机器小车寻迹实习报告.docx》由会员分享,可在线阅读,更多相关《机器小车寻迹实习报告.docx(13页珍藏版)》请在冰豆网上搜索。
机器小车寻迹实习报告
成绩
学生实习报告
实习名称毕业实习
院部名称信息技术学院
专业计算机科学与技术
班级07计算机科学与技术(控制技术)
学生姓名
学号
实习地点
指导教师
前言
****
一、实习目的
学生掌握嵌入式单片机开发必备知识,并以项目实战为主线,使受训者能够全面了解单片机硬件和软件知识,掌握单片机硬件焊接、单片机驱动设计、单片机应用程序开发和调试等方面的知识,并将之应用到嵌入式机器人项目中,完成单片机机器车循迹项目,通过上述的联系,锻炼学生软硬件知识,积累项目开发经验,并具备研发中小型单片机项目的能力。
二、实习时间
时间
实习内容
2010.6.28-2010.6.30
了解AVR单片机相关功能,熟悉单板机小车硬件平台,单片机机器小车项目总体规划方案设计及任务分解。
2010.7.1-2010.7.5
掌握AVR单片机硬件处理器内部结构,掌握其接口硬件电路设计,以及软件编程控制。
深入体会嵌入式软件和硬件相互融合、软中有硬,硬中有软的特点。
2010.7.6-2010.7.8
完成单片机机器车控制系统的元器件焊接,掌握焊接的基本步骤和测试方法。
2010.7.9-2010.7.11
编写IO、PWM、UART、ADC等硬件模块测试函数,掌握嵌入式应用程序设计及调试方法。
2010.7.12-2010.7.21
编程实现单片机机器车循迹应用程序并进行调试。
2010.7.22-2010.7.23
设计文档撰写。
三、实习地点
四、实习单位和部门
南京**有限公司
五、实习内容
1、系统整体设计
机器小车是一个完整的计算机控制系统。
由测量机构中的灰度传感器采集数据送给AD转换模块,AD再将处理过的数据作为控制输入交给计算机控制器,控制器依据检测到的值做出相应判断,利用定时器产生PWM波驱动直流电机转动,从而控制小车正确行进。
图1机器小车控制系统
2、系统硬件设计
2.1PWM直流电机控制电路设计
本设计采用直流电机电机驱动机器车行进,使用LG9110马达驱动芯片。
LG9110是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片IC之中,使外围器件成本降低,整机可靠性提高。
该芯片有两个TTL/CMOS兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力。
为了一侧车轮尽量同步行进,本设计将左边两个电机并联一路控制,右边同样处理。
为了方便控制机器车的前进和倒退即直流电机的正转与反转,设计使用两路PWM控制电机,所以一个LG9110控制一侧电机,0C0A、OC0B控制右侧电机,0C2A、OC2B控制左侧电机,具体硬件电路如图2示,为了防止电机转动影响控制电路,设计中使用独立的电源给电机供电。
图2直流电机驱动电路
PWM波的控制输出,我们利用ATmega88定时器的比较匹配功能实现。
让ATmega88定时器0和定时器2工作在快速PWM模式。
工作于快速PWM模式时,比较单元可以在OC0x引脚上输出PWM波形。
COM0x1:
0为2可以产生普通的PWM信号;为3则可以产生反向PWM波形:
如果WGM02位置位,将COM0A1:
0设置为"1”可以使OC0A引脚在比较匹配时电平交替变化。
OC0B引脚没有这个功能。
要想在引脚上得到输出信号还必须将OC0x的数据方向设置为输出。
产生PWM波形的机理是OC0x寄存器在OCR0x与TCNT0匹配时置位(或清零),以及在计数器清零(从TOP变为BOTTOM)的那一个定时器时钟周期清零(或置位)。
图3快速PWM模式波形输出
2.2AD转换模块电路设计
ATmega88有一个10位的逐次逼近型ADC。
ADC与一个8通道的模拟多路复用器连接,能对来自端口A的8路单端输入电压进行采样。
单端电压输入以0V(GND)为基准。
ADC包括一个采样保持电路,以确保在转换过程中输入到ADC的电压保持恒定。
ADC由AVCC引脚单独提供电源。
AVCC与VCC之间的偏差不能超过±0.3V。
标称值为1.1V的基准电压,以及AVCC,都位于器件之内。
基准电压可以通过在AREF引脚上加一个电容进行解耦,以更好地抑制噪声。
本设计中使用1.1V的片内基准电压源,AREF引脚外加滤波电容。
详细电路如图5示:
图4AD模式转换电路
2.3UART串口模块电路设计
通用同步和异步串行接收器和发送器(USART)是一个高度灵活的串行通讯设备。
本设计主要是利用串口把AD转换的数据发送给PC机,利用串口调试工具查看数据,方便调试。
使用MAX232芯片进行数据传输,相关原理图如图4示:
图5串口通信原理图
3、系统软件设计
3.1系统整体设计
本设计主要利用了ATmega88单片机的定时器、AD转换模块。
机器小车用定时器0和定时器2产生4路PWM波驱动电机转动。
灰度传感器采集到的数据经过AD转换模块处理后的值反应了当前的路况,为小车的行驶提供判断依据。
主程序流程图如下:
图6主程序流程图
3.2定时器的PWM设计
本设计用定时器0和2产生四路PWM波控制机器小车两侧直流电机转动。
电机转动时,一路PWM提供正常的可调占空比的波形,另一路给予特殊处理置低电平。
当两路PWM交换功能时,即可实现电机反转。
ATmega88单片机的定时器0和定时器2具有PWM功能,利用比较单元产生PWM,定时器的初始化流程图如下:
图7定时器初始化
下面是机器小车前进的程序:
voidturnforward(void)
{
OCR0A=0XFF;//输出比较寄存器A装入初值
OCR0B=0XA0;//输出比较寄存器B装入初值,控制占空比
TCCR0A=0XE3;
TCCR0B=0X05;//clkI/O/1024(来自预分频器)
TIMSK0=0X00;
OCR2A=0XFF;//输出比较寄存器A装入初值
OCR2B=0XA0;//输出比较寄存器B装入初值,控制占空比
TCCR2A=0XE3;
TCCR2B=0X07;//clkI/O/1024(来自预分频器)
TIMSK2=0X00;
}
OCR0A、OCR0B控制左侧电机转动,OCR2A、OCR2B控制右侧电机转动,如果想电机反转,将A、B两个值交换就可以了。
实现小车左转右转只要让两侧轮子一侧前转一侧后转即可。
3.3AD转换模块设计
将灰度传感器采集到的数据送到AD转换模块进行处理。
本设计用了1.1V的片内基准电压源,AREF引脚外加滤波电容,ADC转换结果左对齐,中断方式来读取转换完毕的数值。
灰度传感器在正常情况下输出电压值1.2V左右,当检测到黑线时,电压值很小,只有几毫伏,为小车行走提供判断依据。
下面是AD转换的程序流程图:
图8AD转换程序流程
3.4USART串口模块设计
本设计中只是利用串口模块将AD转换的数据发送给PC,方便调试。
本本设计使用异步8位传输,无奇偶校验,波特率为4800。
采用中断方式,当数据寄存器为空时,产生中断,说明发送完毕。
在PC机上,利用串口调试工具或超级终端接收数据。
以下是详细的流程图:
图9串口程序流程
3.5机器车行进设计
小车循迹主要利用四个传感器采样AD转换并判断。
四个灰度传感器,中间两个距离稍大。
当一个都没检测到黑线时直走,当中间的两个检测到黑线时,则进行左右小微调;当外面的两个检测到黑线时,则要进行左右大微调。
两侧的两个传感器检测到黑线时,说明需要左转或右转九十度;四个检测到黑线时,可能是丁字路口也可能是十字路口,这时需要用到右手法则(或左手法则)。
具体算法流程图如下:
图10机器车行走设计流程图
这里,flag_turn==0说明若没有检测到90度角或十字路口则正常前进;flag_turn==1说明检测到90度右转;flag_turn==2说明检测到90度左转;flag_turn==3说明检测到十字或丁字路口右转。
六、实习总结
从六月二十八日到七月二十三日,在学校进行了为期将近一个月的毕业实习。
本次毕业实习主要是让学生掌握嵌入式单片机开发必备知识,并以项目实战为主线,使受训者能够全面了解单片机硬件和软件知识,掌握单片机硬件焊接、单片机驱动设计、单片机应用程序开发和调试等方面的知识,并将之应用到嵌入式机器人项目中,完成单片机机器车循迹项目,通过上述的联系,锻炼学生软硬件知识,积累项目开发经验,并具备研发中小型单片机项目的能力。
毕业实习从ATmega88主芯片的IO口、定时器、UART、AD转换几个方面有条不紊的进行。
在开始几天的课上老师主要讲授如何设计电路以及焊接方面的知识,每个小组在老师的指导下,都成功的焊接出自己的最小系统板,然后根据需要,一点一点地向上面添加东西。
焊接只是本次实习的一个小部分,而实习的重点是当自己拿到一块芯片时,能够在最短时间学会使用它。
不管是单片机还是ARM,学习起来都是相通的,硬件都是由IO口、定时器、UART、AD转换等主要部分组成,只是ARM更高级点,外设更多点。
所以实习的目的是要学会举一反三。
在学习AVR单片机的过程中,仔细听老师一步步分析芯片手册收获很大。
拿到一个CPU,要看它的地址空间和时钟频率。
在具体用到某个模块时,在芯片手册中找到相应部分,看它的各个寄存器的含义,弄懂后再根据自己需要配置。
本次编程中使用的集成开发环境为WinAVR-20100110。
学习AVR单片机没有教材,刚开始编写代码很困难,不知从何入手。
里面的头文件、中断服务子程序、中断源都不知道在哪找。
在老师及同学的指导下,在开发环境相应的目录下找到。
里面有很多封装好的函数,例如延时_delay_ms(),大大方便了后面代码的编写。
在编译时接触了Makefile文件,了解了大体的框架思路,为以后学习打下基础。
课堂上,老师详细讲解了普通编译和嵌入式交叉编译的的区别,以前学习并没有在意过这些,这次终于了解了他们的本质区别。
本次实习老师还向我们介绍了文档的重要性,尤其在今后的工作中的应用。
从暑假开始,要逐渐养成写文档的习惯,为后面工作打下基础。
本次实习,在软件设计方面采用了老师介绍的模块化程序设计思想。
将机器小车划分为几个功能模块,考虑好各个模块的接口、输入输出,最后综合调试。
例如将机器小车划分为PWM、AD转换、串口通信、循迹算法几个函数功能模块,最后main函数综合调试。
在机器小车循迹调试的过程中遇到很多问题,例如在编写程序时想当然的加入了多个延时,当多个传感器采样进行AD转换发生了错误。
经过分析,程序中设置AD为连续转换模式,加入延时导致时序矛盾出错,当把加入的延时都删掉时传感器采样转换均可正确执行。
在循迹时各种路口以及转弯也花了很长时间才调好。
本次为期将近一个月的毕业实习收获颇多,不仅学会了如何去学习一个新的芯片,还了解到了一些企业中的工作要求,更深深体会到实践是检验真理唯一标准。
毕业实习为后面的找工作打下了一个很好的基础,希望后面的几个月的学习中能够抓紧时间,完善自我,争取找到份满意的工作!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器 小车 实习 报告