写字机器人报告61组
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五.总结
通过几周的不断调试及程序的修改,最终完成了本作品。在调试过程中遇到小车行进速度快、直流电机不易控制、转弯不是直角等问题。解决方法是加稳压模块降低电压来控制小车的速度;设置前进、后退、左转,多次重复调试,找出各自所需的时间值;把笔放在车尾通过参数的设置使小车转直角弯。但最好的方法是用步进电机控制车轮,写出字的效果要比直流好很多。
zuozhuan(38);
tingzhi(400);
xianghou(6);
tingzhi(400);
zuozhuan(38);
tingzhi(400);
xianghou(3);
tingzhi(400);
qibi();
zuozhuan(38);
tingzhi(400);
xianghou(3);
tingzhi(400);
四. 软件流程图
图4.1软件流程图
设计思路:
硬件设计:本作品共分三层,底层放置的是单片机,中层放置的是电源,顶层放置的是驱动模块和稳压模块。各层之间用杜邦线联通,考虑到把笔放在车前程序复杂且直角转弯较为困难,故把笔放在车尾与小车的车轮在同一水平线这样保证了小车的直角转弯。
软件设计:
初始化P0.0、P0.1、P0.2、P0.3为直流电机驱动模块的四个引脚,用来控制左直流电机的正反转和右直流电机的正反转。P2.0、P2.1、P2.2、P2.3用来控制步进电机的正反转。之后定义函数如小车的前进、后退、停止、起笔、落笔、延时等。如void luobi()
3.1单片机最小系统
单片机最小系统指的是用最少的原件实现基本要求的系统。包括晶振电路、复位电路等。本次作品它起到了核心中枢的作用,即用单片机最小系统实现小车的降速及前进、后退、左转及步进电机正反转的功能。
图3.1单片机最小系统电路图
3.2电机驱动电路
3.2.1直流电机驱动电路
直流电机的优点是:有良好的启动特性和调整特性;缺点是:直流电机有电流换向、电压输出不稳定、转速难以控制。
{
P2=run2[j];
delay(400);
}
}
}
void xiangqian(int n)
{
int i;
for(i=0;i<n;i++)
{
P0=0X05;
delay(8000);
/*tingzhi(200);*/
}
}
void xianghou(int n)
{
int i;
for(i=0;i<n;i++)
for(i=0;i<25;i++)
{
for(j=0;j<4;j++)
{
P2=run1[j];
delay(400);
}
}
}
void qibi()
{
int i,j;
code unsigned char run2[4]={0x08,0x04,0x02,0x01};
for(i=0;i<25;i++)
{
for(j=0;j<4;j++)
xiangqian(6);
tingzhi(400);
zuozhuan(38);
tingzhi(400);
xiangqian(3);
tingzhi(400);
qibi();
zuozhuan(38);
tingzhi(400);
xiangqian(3);
tingzhi(400);
zuozhuan(37);
功能:单片机将信息输给步进电机驱动模块,再而控制步进电机的正反转,从而控制毛笔的升与落以及角度、时间;单片机控制两个直流电机的正转、反转和停止,实现小车的前进、后退、左转,从而 最终实现写字的目的。
图2.1 CPU与外围组件之间的关系
三.作品硬件结构
硬件主要包括单片机最小系统、2个直流电机、一个步进电机、步进电机驱动模块UN2003、直流电机驱动模块L298N、笔、小车底盘(含车轮)、7.2V电池等。
delay(2000);
}
}
void youzhuan(int n)
{
int i;
for(i=0;i<n;i++)
{
P0=0X09;
delay(2000);
}
}
void stop()
{
P0=0XFF;
}
3.2.2步进电机驱动电路
步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
本次设计我们学会了如何合理分工,如何与他人合作。完成本作品团队精神是必不可少的,虽然在制作遇到不少的困难大家的心情也较为浮躁,但最后这些困难都一一克服了。最后感谢老师们对我们小组提供的帮助!
附录
核心代码
#include<reg52.h>
void xiangqian(int n);
void xianghou(int n);
zuozhuan(37);
tingzhi(400);
xiangqian(3);
tingzhi(400);
luobi();
xianghou(10);
qibi();
}
void shan()
{
luobi();
xiangqian(3);
tingzhi(400);
zuozhuan(38);
tingzhi(400);
wenku.baidu.comzuozhuan(38);
tingzhi(400);
shan(); */
while(1)
{
stop();
}
}
void zhong()
{
luobi();
xianghou(6);
tingzhi(400);
zuozhuan(40);
tingzhi(400);
xianghou(3);
tingzhi(400);
sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
sbit p23=P2^3;
void main()
{
zhong();
/*xianghou(3);
tingzhi(400);
zuozhuan(38);
tingzhi(400);
xianghou(6);
tingzhi(400);
{
P0=0X0A;
delay(8000);
/*tingzhi(200);*/
}
}
void tingzhi(int n)
{
int i;
for(i=0;i<n;i++)
{
P0=0XFF;
delay(n);
}
}
void zuozhuan(int n)
{
int i;
for(i=0;i<n;i++)
{
P0=0X06;
tingzhi(400);
xianghou(3);
tingzhi(400);
luobi();
xiangqian(4);
qibi();
}
void delay(int n)
{
while(n--);
}
void luobi()
{
int i,j;
code unsigned char run1[4]={0x01,0x02,0x04,0x08};
{
int i,j;
code unsigned char run1[4]={0x01,0x02,0x04,0x08};
for(i=0;i<25;i++)
{
for(j=0;j<4;j++)
{
P2=run1[j];
delay(400);
}
}
}
利用延时函数实现小车的走停。P0.0=1;P0.1=0;P0.2=1;P0.3=0表示小车前进;P0.0=0;P0.1=1;P0.2=0;P0.3=1表示小车后退;四个位口全为低电平则小车停止。对起笔的角度调用qibi()函数控制笔的升起;其次,调用luobi()函数控制小车写字的速度及步长。此时得注意zouzhuan(),xianghou()的参数设置,设置好参数使小车达到合适的速度,通过参数的调用,控制小车既有前进,又有后退,前进速度略多于后退,以此来达到降速的目的。然而本作品的参数设置是这次赛课计划的难点,通过网上查找资料,以及老师的帮助最终找到合适的参数使小车能写出理想的字。
重庆科技学院
第三届赛课计划报告
题目:写字机器人
编号:61
成员:谭得伟
谭洪海
李清玲
电气与信息工程学院
2012年1月1日
一.前言
本作品的功能是通过程序控制小车的行进轨迹以及速度,从而实现写字的目的。用7.2V的电池给L298N供电,通过自制焊接的7805芯片稳压到5V输出电压给80C52型单片机,通过杜邦线实现单片机与直流电机、步进电机驱动模块、步进电机之间的交互,从而达到直流电机控制车轮的前进、后退及直角转弯和步进电机驱动模块控制步进电机的正反转使得书写笔能够在指定的时间起笔、落笔实现写字目的。优点:硬件结构简单,可操作性强。缺点:直流电机转速快,直角转弯不好控制,车轮易打滑。解决方法:用稳压模块把直流电机的转速控制到固定值;通过程序参数的设置实现直角转弯;经过多次的小车调试后发现小车在报纸上写出的字达到预计的效果。
void zuozhuan(int n);
void youzhuan(int n);
void qibi();
void luobi();
void tingzhi(int n);
void delay(int n);
void shan();
void zhong();
void stop();
void zhong();
二.工作原理
本作品的工作原理:89C52单片机的P0.5引脚,P1.6引脚控制小车左轮直流电机的正反转,P2.1引脚,P2.2引脚控制小车右轮直流电机的正反转,通过直流电机的转向实现小车的前进、后退及拐弯等功能;单片机的P1.0引脚到P1.3的电位变化通过步进电机驱动模块给步进电机,通过步进电机的正反转控制毛笔的升与降。
通过几周的不断调试及程序的修改,最终完成了本作品。在调试过程中遇到小车行进速度快、直流电机不易控制、转弯不是直角等问题。解决方法是加稳压模块降低电压来控制小车的速度;设置前进、后退、左转,多次重复调试,找出各自所需的时间值;把笔放在车尾通过参数的设置使小车转直角弯。但最好的方法是用步进电机控制车轮,写出字的效果要比直流好很多。
zuozhuan(38);
tingzhi(400);
xianghou(6);
tingzhi(400);
zuozhuan(38);
tingzhi(400);
xianghou(3);
tingzhi(400);
qibi();
zuozhuan(38);
tingzhi(400);
xianghou(3);
tingzhi(400);
四. 软件流程图
图4.1软件流程图
设计思路:
硬件设计:本作品共分三层,底层放置的是单片机,中层放置的是电源,顶层放置的是驱动模块和稳压模块。各层之间用杜邦线联通,考虑到把笔放在车前程序复杂且直角转弯较为困难,故把笔放在车尾与小车的车轮在同一水平线这样保证了小车的直角转弯。
软件设计:
初始化P0.0、P0.1、P0.2、P0.3为直流电机驱动模块的四个引脚,用来控制左直流电机的正反转和右直流电机的正反转。P2.0、P2.1、P2.2、P2.3用来控制步进电机的正反转。之后定义函数如小车的前进、后退、停止、起笔、落笔、延时等。如void luobi()
3.1单片机最小系统
单片机最小系统指的是用最少的原件实现基本要求的系统。包括晶振电路、复位电路等。本次作品它起到了核心中枢的作用,即用单片机最小系统实现小车的降速及前进、后退、左转及步进电机正反转的功能。
图3.1单片机最小系统电路图
3.2电机驱动电路
3.2.1直流电机驱动电路
直流电机的优点是:有良好的启动特性和调整特性;缺点是:直流电机有电流换向、电压输出不稳定、转速难以控制。
{
P2=run2[j];
delay(400);
}
}
}
void xiangqian(int n)
{
int i;
for(i=0;i<n;i++)
{
P0=0X05;
delay(8000);
/*tingzhi(200);*/
}
}
void xianghou(int n)
{
int i;
for(i=0;i<n;i++)
for(i=0;i<25;i++)
{
for(j=0;j<4;j++)
{
P2=run1[j];
delay(400);
}
}
}
void qibi()
{
int i,j;
code unsigned char run2[4]={0x08,0x04,0x02,0x01};
for(i=0;i<25;i++)
{
for(j=0;j<4;j++)
xiangqian(6);
tingzhi(400);
zuozhuan(38);
tingzhi(400);
xiangqian(3);
tingzhi(400);
qibi();
zuozhuan(38);
tingzhi(400);
xiangqian(3);
tingzhi(400);
zuozhuan(37);
功能:单片机将信息输给步进电机驱动模块,再而控制步进电机的正反转,从而控制毛笔的升与落以及角度、时间;单片机控制两个直流电机的正转、反转和停止,实现小车的前进、后退、左转,从而 最终实现写字的目的。
图2.1 CPU与外围组件之间的关系
三.作品硬件结构
硬件主要包括单片机最小系统、2个直流电机、一个步进电机、步进电机驱动模块UN2003、直流电机驱动模块L298N、笔、小车底盘(含车轮)、7.2V电池等。
delay(2000);
}
}
void youzhuan(int n)
{
int i;
for(i=0;i<n;i++)
{
P0=0X09;
delay(2000);
}
}
void stop()
{
P0=0XFF;
}
3.2.2步进电机驱动电路
步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
本次设计我们学会了如何合理分工,如何与他人合作。完成本作品团队精神是必不可少的,虽然在制作遇到不少的困难大家的心情也较为浮躁,但最后这些困难都一一克服了。最后感谢老师们对我们小组提供的帮助!
附录
核心代码
#include<reg52.h>
void xiangqian(int n);
void xianghou(int n);
zuozhuan(37);
tingzhi(400);
xiangqian(3);
tingzhi(400);
luobi();
xianghou(10);
qibi();
}
void shan()
{
luobi();
xiangqian(3);
tingzhi(400);
zuozhuan(38);
tingzhi(400);
wenku.baidu.comzuozhuan(38);
tingzhi(400);
shan(); */
while(1)
{
stop();
}
}
void zhong()
{
luobi();
xianghou(6);
tingzhi(400);
zuozhuan(40);
tingzhi(400);
xianghou(3);
tingzhi(400);
sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
sbit p23=P2^3;
void main()
{
zhong();
/*xianghou(3);
tingzhi(400);
zuozhuan(38);
tingzhi(400);
xianghou(6);
tingzhi(400);
{
P0=0X0A;
delay(8000);
/*tingzhi(200);*/
}
}
void tingzhi(int n)
{
int i;
for(i=0;i<n;i++)
{
P0=0XFF;
delay(n);
}
}
void zuozhuan(int n)
{
int i;
for(i=0;i<n;i++)
{
P0=0X06;
tingzhi(400);
xianghou(3);
tingzhi(400);
luobi();
xiangqian(4);
qibi();
}
void delay(int n)
{
while(n--);
}
void luobi()
{
int i,j;
code unsigned char run1[4]={0x01,0x02,0x04,0x08};
{
int i,j;
code unsigned char run1[4]={0x01,0x02,0x04,0x08};
for(i=0;i<25;i++)
{
for(j=0;j<4;j++)
{
P2=run1[j];
delay(400);
}
}
}
利用延时函数实现小车的走停。P0.0=1;P0.1=0;P0.2=1;P0.3=0表示小车前进;P0.0=0;P0.1=1;P0.2=0;P0.3=1表示小车后退;四个位口全为低电平则小车停止。对起笔的角度调用qibi()函数控制笔的升起;其次,调用luobi()函数控制小车写字的速度及步长。此时得注意zouzhuan(),xianghou()的参数设置,设置好参数使小车达到合适的速度,通过参数的调用,控制小车既有前进,又有后退,前进速度略多于后退,以此来达到降速的目的。然而本作品的参数设置是这次赛课计划的难点,通过网上查找资料,以及老师的帮助最终找到合适的参数使小车能写出理想的字。
重庆科技学院
第三届赛课计划报告
题目:写字机器人
编号:61
成员:谭得伟
谭洪海
李清玲
电气与信息工程学院
2012年1月1日
一.前言
本作品的功能是通过程序控制小车的行进轨迹以及速度,从而实现写字的目的。用7.2V的电池给L298N供电,通过自制焊接的7805芯片稳压到5V输出电压给80C52型单片机,通过杜邦线实现单片机与直流电机、步进电机驱动模块、步进电机之间的交互,从而达到直流电机控制车轮的前进、后退及直角转弯和步进电机驱动模块控制步进电机的正反转使得书写笔能够在指定的时间起笔、落笔实现写字目的。优点:硬件结构简单,可操作性强。缺点:直流电机转速快,直角转弯不好控制,车轮易打滑。解决方法:用稳压模块把直流电机的转速控制到固定值;通过程序参数的设置实现直角转弯;经过多次的小车调试后发现小车在报纸上写出的字达到预计的效果。
void zuozhuan(int n);
void youzhuan(int n);
void qibi();
void luobi();
void tingzhi(int n);
void delay(int n);
void shan();
void zhong();
void stop();
void zhong();
二.工作原理
本作品的工作原理:89C52单片机的P0.5引脚,P1.6引脚控制小车左轮直流电机的正反转,P2.1引脚,P2.2引脚控制小车右轮直流电机的正反转,通过直流电机的转向实现小车的前进、后退及拐弯等功能;单片机的P1.0引脚到P1.3的电位变化通过步进电机驱动模块给步进电机,通过步进电机的正反转控制毛笔的升与降。