赛课计划写字机器人设计及报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重庆科技学院
第三届赛课计划报告
题目:
编号:36
成员:
电气与信息工程学院
2012年1月1日
目录
1.前言 (3)
2.工作原理 (4)
2.1直流电机的控制及原理 (4)
2.2步进电机的控制及原理 (4)
3.作品硬件结构 (6)
3.1 单片机最小系统 (6)
3.2电机驱动电路 (6)
3.3画笔控制电路 (7)
4.软件流程图 (8)
5.总结 (9)
6.附录 (10)
1.前言
该写字机器人能够智能的写出程序所要求写的字,下载程序在单片机上,接通电源,该写字机器人能够智能的写出一个所要求的字,此程序写的是一个”土”字,写字机器人X轴的运动主要是通过控制底盘上的两个直流电机来实现,对单片机进行编程实现对机器人X轴的运动控制,由于轮子控制采用的是直流电机,导体受力的方向用左手定则确定。这一对电磁力形成了作用于电枢一个力矩,这个力矩在旋转电机里称为电磁转矩,转矩的方向是逆时针方向,企图使电枢逆时针方向转动。如果此电磁转矩能够克服电枢上的阻转矩(例如由摩擦引起的阻转矩以及其它负载转矩),电枢就能按逆时针方向旋转起来。
直流电机运行速度比较快,实现机器人的运行比较合适,然后是步进电机,用来实现机器人的落笔和抬笔,由于操作比较要求比较高的精确度,所以要用步进电机实现机器人的落笔和抬笔。
由于机器人的轮子采用的是直流电机,而机器人的写字也需要靠机器人的整体运动而形成字,所有轮子是直流电机整体写出来的字有一定的误差。不过不会影响机器人的整体效果。
2.工作原理
2.1直流电机的控制及原理
该机器人只要采用的是轮子上的两个直流电机和拿笔写字的步进电机构成,导体受力的方向用左手定则确定。这一对电磁力形成了作用于电枢一个力矩,这个力矩在旋转电机里称为电磁转矩,转矩的方向是逆时针方向,企图使电枢逆时针方向转动。如果此电磁转矩能够克服电枢上的阻转矩(例如由摩擦引起的阻转矩以及其它负载转矩),电枢就能按逆时针方向旋转起来。
图1:直流电机X轴控制轮子运动
2.2步进电机的控制及原理
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角
度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
图2:步进电机控制落笔和抬笔
通过和外围设备的控制,实现3个电机共同合作实现最后写字的实现。
3.作品硬件结构
3.1 单片机最小系统
图3:单片机最小系统电路原理图
此写字机器人采用的是P0口控制直流电机的运动,左右轮子同理,输出是0101,则机器人往前行走,那么1010就是往后行走;转弯是靠一个轮子行走而另外一个轮子输出11或者00停止则达到转弯的效果;是一个while的无限循环。此写字机器人采用的是P2口控制机器人的落笔和抬笔。
3.2电机驱动电路
图4:电动机驱动电路图
3.3画笔控制电路
图5:控制系统结构
从程序中控制输入字符——>获取字符矢量信息——>机器人的轨迹规划——>轨迹生成——>机器人控制系统——>机器人
4.软件流程图
5.总结
经过几个月的努力,从买材料到前期的基础培训,到后来的实际操作,再到最后的细心调试,终于作品成功的完成。直到答辩前一两个星期,调试总是出现问题,由于摩擦力的不同,在不同的地方,都要做出不同的调试,才能使小车写出所想要写出的正确的字,在调试的时候,由于摩擦力的不同,主要是对小车行走和落笔、抬笔的延时做出调试。对地表不同摩擦力做出相应的调试,该写字机器人达到预想效果。
该写字机器人由于轮子采用的是直流电机,又因为轮子也是写字的一部分,有一定影响,直流电机的精确度不如步进电机,所以写出的字就算修改了摩擦力的因素,因为直流电机也会造成一定的误差。轮子改成步进电机固然是精确度高,但是行走的速度会很慢,所以无法达到又快又精确的效果。
我们会在以后的设计对于这一点中做出更好的调整。首先,谢谢学校给我们这个锻炼我们的机会让我们能够学习到和增长知识和动手能力,感谢指导过我们的老师,谢谢你们的耐心教导,才能有我们今天的成绩。
6.附录#include
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
unsigned int steps=150; unsigned int times=8;
void delay50ms(int);
void step(void);
char a[]={0x01,0x02,0x04,0x08}; void go(void);
void turn(void);
void back(void);
void up(void);
void down(void);
void stop(void);
void main()
{
down();
delay50ms(500); stop();
up();
go();
delay50ms(1300); turn();
delay50ms(840); back();
delay50ms(2500); stop();
down();
back();
delay50ms(1200); stop();
up();
go();
delay50ms(500); turn();
delay50ms(1000); back();
delay50ms(2500);