- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学院:基础医学院 专业:临床医学八年 学号:2013302180013 姓名:王冕
光机电一体化技术实训报告
实训一 机器人巡航控制
目的及任务
目的:熟悉机器人伺服电机的控制脉冲系列原理,学会利用单片机的输入/输出接口控制机器人的运动方向、速度、运行时间,掌握其相关原理及编程技术。
任务:按设计的运动轨迹实现机器人的运动控制。
主要仪器设备
PC机一台;组装好的机器人一款;九针串口下载线一根。
工作原理图
控制机器人伺服电机运转方向的是高电平持续的时间,当高电平持续时间为1.3ms时,电机顺时针全速旋转;当高电平持续时间1.5ms时,电机停止旋转;当高电平持续时间1.7ms时,电机逆时针全速旋转。控制信号时序图如下图所示:
图1.1 电机转速为零的控制信号时序图
图1.2 1.3ms的控制脉冲序列使电机顺时针全速旋转
图1.3 1.7ms的连续脉冲序列使电机逆时针全速旋转
程序编制
(1)机器人两个轮子都顺时针全速旋转(原地左转)。
#includeBoeBot.h
#includeuart.h
Int main(void)
{
uart_Init(); //初始化串口
print(“The LEDs connected to P1_0 and P1_1 are blinking!\n”);
while(1)
{
P1_0=1; //P1_0输出高电平
P1_1=1; //P1_1输出高电平
delay_nus(1300); //延时1.3ms
P1_0=0; //P1_0输出低电平
P1_1=0; //P1_1输出低电平
Delay_nms(20); //延时20ms
}
}
(2)机器人完成向前、左转、右转、后退共四个动作(采用了四个子函数):
#includeBoeBot.h
#includeuart.h
void Forward(int PulseCount,int Velocity)
/* Velocity should be between 0 and 200 */
{
int i;
for(i=1;i= PulseCount;i++)
{
P1_1=1;
delay_nus(1500+ Velocity);
P1_1=0;
P1_0=1;
delay_nus(1500- Velocity);
P1_0=0;
delay_nms(20);
}
}
void Left(int PulseCount,int Velocity)
/* Velocity should be between 0 and 200 */
{
int i;
for(i=1;i= PulseCount;i++)
{
P1_1=1;
delay_nus(1500-Velocity);
P1_1=0;
P1_0=1;
delay_nus(1500-Velocity);
P1_0=0;
delay_nms(20);
}
}
void Right(int PulseCount,int Velocity)
/* Velocity should be between 0 and 200 */
{
int i;
for(i=1;i= PulseCount;i++)
{
P1_1=1;
delay_nus(1500+Velocity);
P1_1=0;
P1_0=1;
delay_nus(1500+Velocity);
P1_0=0;
delay_nms(20);
}
}
void Backward(int PulseCount,int Velocity)
/* Velocity should be between 0 and 200 */
{
int i;
for(i=1;i= PulseCount;i++)
{
P1_1=1;
delay_nus(1500-Velocity);
P1_1=0;
P1_0=1;
delay_nus(
文档评论(0)