宝贝车机器人.docx
《宝贝车机器人.docx》由会员分享,可在线阅读,更多相关《宝贝车机器人.docx(13页珍藏版)》请在冰豆网上搜索。
宝贝车机器人
江苏技术师范学院
2019年4月14日
单片机课程设计
院系机械与汽车工程学院
班级09机电1W
学生姓名姚露娟
学号09324106
指导教师李尚荣
宝贝车机器人运动控制编程
概述┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉2
第一章KeilC编译仿真软件应用┉┉┉┉┉┉┉┉┉3
一、uVision2中编程的基本步骤┉┉┉┉┉┉┉┉┉┉3
1.1上机调试基本步骤┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉3
第二章课程设计内容及过程┉┉┉┉┉┉┉┉┉┉┉8
一、课程设计题目┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉8
二、控制要求┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉8
三、程序编程┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉8
四、系统调试┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉14
五、烧录程序┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉14
参考文献┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉15
概述
宝贝车机器人有两个曲驱动轮、一个万象支撑轮、平板、主控制板和电池构成。
其中两个驱动轮分别由两个四伏直流电机独立驱动,直流电机模块包含伺服直流电机本体和减速器。
由于没有配备编码器等转角测量传感器,直流电机仅需要两根电源线即可实现通电控制。
由于没有其它执行器,宝贝车能实现的功能相对较少,主要是依靠两个轮子实现若干运动动作,如前进、后退、左转弯和右转弯等等。
该机器人只有两个驱动轮,不能满足静平衡和动平衡要求,故添加一个辅助支撑的万向轮。
。
平板提供了整个机器人的结构支撑功能,控制板通过四个立柱固定连接于平板上,它提供了电源、电机接口、和程序才下载串口,同时将I/O口引出,与一块微型的面包板连接,提供机器人扩展功能的搭建平台。
项目设置目的
本项目设计主要涉及宝贝车机器人的运动控制编程,主要包括机器人的向前、向后、左转、右转和矩形、圆形的不同控制编程,同时需要掌握一些调节和校正宝贝车机器人巡航路径的方法,包括是机器人走直线、更精确的转弯、计算运动距离等技术。
通过项目设计,使学生对电机调速与机器人运动之间的关系加深理解,让学生了解和掌握如和利用C语言编程来实现机器人各种运动控制。
项目实施设备
(1)、宝贝车机器人
(2)、装有KeilC软件的计算机及程序下载线
(3)、常用工具
(4)、若干电子元器件
第1章KeilC编译仿真软件应用
一、uVision2中编程的基本步骤
采用KeilC开发89S52单片机应用程序一般需要以下步骤:
(1)、在uVision2集成开发环境中创建一个新项目(Project),并为该项目选定合适的单片机型号。
(2)、利用uVision2的文件编辑器编写C语言(或汇编语言)源程序文件,并将文件添加到项目中去。
一个项目可以包含多个文件,除源程序文件外,还可以有库文件或文本文件。
(3)、通过uVision2的各种选项,配置Cx51编译器、Ax51宏汇编器、BL51/Lx51连接定位器及Debug调试器的功能。
(4)、利用uVision2的构造(Build)功能对项目中的源程序文件进行编译链接,生成绝对目标代码和可选的HEX格式的可执行文件,如果出现编译连接错误则返回
(2)步,修改源程序中的错误后重新构造整个项目。
(5)、将没有错误的绝对目标代码装入uVision2调试器进行仿真调试,调试成功后用编程器将可执行文件写入到单片机应用系统的程序存储器或单片机内部的FlashROM中。
二、上机调试基本步骤
(1)、启动KeiluVision2
双击桌面上的KeiluVision2图标或者单击屏幕下的“开始”,在弹出菜单窗口中点击“程序”,在点击“KeiluVision2”进入KeiluVision2集成开发环境。
(2)、建立项目文件
选择主菜单“Project工程”→“New新建工程”,弹出对话框。
将工程文件保存到桌面自己新建的文件夹“第二组”下,在KeiluVision2中,一个项目是由包括项目文件(*。
uv2文件)、源程序等在内的多个文件组成,为了便于管理,通常为每个项目建一个单独的文件夹。
(3)、选择CPU器件
项目文件保存完毕后将弹出的窗口用于为新建项目选择CPU器件型号为“AT89S52"。
创建一个新项目后,在项目管理窗口(ProjectWorkspace)中自动生成一个默认的目标(Target)和文件组(SourceGroup1)。
(4)、编辑源程序
选择主菜单“File文件”→“New新建”,从打开的编辑界面中输入前面列入的max.c源程序。
(5)、将源程序加入到项目中
选择项目管理窗口中的File菜单项,在弹出的选项卡中选中SourceGroup1文件组,鼠标右击则弹出快捷菜单。
选择快捷菜单中的“增加文件到组SourceGroup1”选项,弹出源文件选择界面,选择保存的源程序文件max.c,单击Add按钮,将其添加到新创建的项目中,然后单击“关闭”按钮。
(6)、设置项目配置选项
根据需要配置Cx51编译器、Ax51宏汇编器、BL51/Lx51连接定位器以及debug调试器的各选项,弹出项目配置界面。
(7)、生成可执行文件
完成项目配置选项的基本设定之后,就可以对当前新建项目进行整体编译,单击项目管理窗口上方工具栏中的Build图标按钮,或选择主菜单“Project工程”→“Build构造目标”。
uVision2将按所设定的项目选项,自动完成当前项目中所有源程序模块文件的编译连接,并在下方的输出窗口中显示编译链接提示信息。
如果有编译错误,则双击输出窗口内的提示信息,光标将自动跳到源程序文件的错误位置,以便修改;如果没有编译链接错误,则生成绝对目标代码文件。
(8)、仿真运行程序
在仿真调试状态下,选择主菜单“Debug”→“Go运行到”,启动用户程序全速运行,再选择主菜单“View视图”→“串行口窗口#1”至此,已经完成了一个uVision2项目的建立编译和调试的全过程。
第二章课程设计内容及过程
一、课程设计题目
(一)、宝贝车机器人走正方形编程
(二)、宝贝车机器人走圆形编程
二、控制要求
正方形编程:
以地面正方形瓷砖为宝贝车机器人巡航路径,其中包括使机器人走直线、转弯、计算运动距离和计算旋转角度等技术。
圆形编程:
以直径为1m的圆为宝贝车机器人巡航路径。
三、课程设计目的
通过本项目的设计,是学生对电机调速与机器人运动之间的关系加深理解,让学生了解和掌握如何利用C语言编程来实现机器人的各种运动控制。
四、程序编程
(一)、宝贝车机器人走正方形编程
#include
#include
voidForward(void)
{
inti;
for(i=1;i<=65;i++)
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
}
voidLeft(void)
{
inti;
for(i=1;i<=26;i++)
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
}
intmain(void)
{
intcounter;
inti;
uart_Init();
printf("ProgramRunning!
\n");
for(counter=1;counter<=1000;counter++)//开始/复位信号
{
P1_4=1;
delay_nus(1000);
P1_4=0;
delay_nus(1000);
}
for(inti=1;i<=4;i++)
{Forward();
Left();}
while
(1);
(二)、宝贝车机器人走圆形编程
#include
#include
intcounter;
intmain(void)
{
uart_Init();
printf("ProgramRunning!
\n");
for(counter=1;counter<=2000;counter++)//开始/复位信号
{
P1_4=1;
delay_nus(1000);
P1_4=0;
delay_nus(1000);
}
for(counter=1;counter<=600;counter++)//向前
{
P1_1=1;
delay_nus(1650);
P1_1=0;
P1_0=1;
delay_nus(1400);
P1_0=0;
delay_nms(20);
}
while
(1);
}
五、系统调试
单步跟踪所谓单步执行方式,为StepOver,单击按钮,执行一条语句后程序暂停,如果该语句中包含函数调用,则不进入该函数,故看不得该函数的执行过程,但便于快速观察程序执行过程。
另外一种与单步执行类似的执行方式为跟踪执行,StepInto,单击按钮,程序也执行一条语句暂停,但如果语句中包含函数调用,则会进入包含的函数。
并且在函数中逐句执行。
跟踪调试便于观察被调用函数的执行过程。
断点调试是在程序一个活多个语句处设置断点,程序全速执行过程中,会依次在每个断点处暂停执行。
编程人员可观察变量、寄存器的值是否正确,从中发现源程序的错误并加以排除。
六、烧录程序
七、思考题
问题:
程序设计机器人直线向前,实际情况是机器人走出来的轨迹并不是直线,而是有轻微的向左或向右偏移。
这是为什么?
答:
影响运动轨迹误差的原因很多,主要原因有:
(1)电机个体有差异,受制造工艺的影响,每个点击总会有或多或少的差异有些电机零点的延时制是1500,而有的电机可能不是该值;
(2)机器人的质心和形心不重合,导致两个轮子承受的重力不同,从而产生的驱动力也不同;(3)两轮的制造工艺有误差(4)两轮与地面接触面的摩擦力不同,可能也存在打滑现象,导致驱动力也不同。
参考文献
[1]课程设计指导书
[2]宝贝车机器人教材
[3]李广第朱月秀冷祖祁单片机基础北京航空航天大学出版社