利用舵机制作简易机器人Word文档下载推荐.docx

上传人:b****2 文档编号:15288926 上传时间:2022-10-29 格式:DOCX 页数:37 大小:270.48KB
下载 相关 举报
利用舵机制作简易机器人Word文档下载推荐.docx_第1页
第1页 / 共37页
利用舵机制作简易机器人Word文档下载推荐.docx_第2页
第2页 / 共37页
利用舵机制作简易机器人Word文档下载推荐.docx_第3页
第3页 / 共37页
利用舵机制作简易机器人Word文档下载推荐.docx_第4页
第4页 / 共37页
利用舵机制作简易机器人Word文档下载推荐.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

利用舵机制作简易机器人Word文档下载推荐.docx

《利用舵机制作简易机器人Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《利用舵机制作简易机器人Word文档下载推荐.docx(37页珍藏版)》请在冰豆网上搜索。

利用舵机制作简易机器人Word文档下载推荐.docx

BasedonMCU

Abstract

HumanoidRobotthatisdescribedinthisarticleisusingNcDragonsingle-chipmicrocomputerascontrolcore,usingruddertocompletevariousaction。

TheHumanoidRobotcancompletethesquatting,standingup,walking,lateralmovingandkickingactions.RudderiscontrolledbyPWMwavesproducedbyC8051F310MCUinternalPCAmodule.Thoseactionsisachievedthroughadjustingsteeringandrudderangle.

Keywords:

C8051F310RudderPCAmodulePWM

概述

本项目是基于51单片机的人形机器人的设计,整个程序采用C语言。

近年来机器人就有很大的发展潜力,随着科技的进步,机器人将会做的越来越完善。

人形机器人的产生解决的许多生产中的难题,它可以代替人类做许多危险而又高难度的工作。

在一些场合机器人已经可以代替人类,相信在今后的时间里,人形机器人将会为我带来许多帮助。

原理图的设计

一、单片机外围电路

本单片机的晶振为32.768MHZ,但是在后期的测试发现外部晶振输出不稳定,因此本项目采用的是内部晶振。

我们所设计的机器人总共有12个舵机,而这款F310最多只能输出5路PWM,因此需要3块板子。

二、电源驱动电路

电源芯片采用AZ1084和LM1117。

其中AZ1084输入电压为7.2v,输出电压为5v,LM1117输入电压为5v,输出电压为3.3v。

F310单片机的工作电压是3.3v,因此需要经过两次降压达到3.3v。

为了稳定工作电压,采用IB0505LS来稳定单片机的工作电压。

三、通信接口

我们需要3块电路板来是机器人工作,因此通信是必须考虑的问题。

在此我们采用485来实现单片机之间的通信,通过一块主板来控制其余两块副板子的工作。

485的好处就是它不像232那样要考虑电平匹配的问题。

四、舵机接口

采用光电隔离来稳定输出,是舵机正常稳定的工作。

机器人有两条腿,每条腿由6路舵机来控制。

PCB图制作

一、普通前

二、普通后(顶层)

三、普通后(底层)

元器件列表

源程序

左腿初始化:

#include"

c8051f310.h"

#defineucharunsignedchar

#defineuintunsignedint

sbitP2_7=P2^7;

#definewalk_zuo_1186

#definewalk_zuo_2187

#definewalk_zuo_3188

#definewalk_zuo_4189

#definewalk_zuo_5190

#definewalk_mark222

ucharmark;

ucharact,arc;

voidInit_Variables()

{

act=0;

arc=0;

}

voidPCA_Init()

PCA0CN=0x40;

PCA0MD&

=~0x40;

PCA0MD=0x02;

PCA0CPM0=0xC2;

PCA0CPM1=0xC2;

PCA0CPM2=0xC2;

PCA0CPM3=0xC2;

PCA0CPM4=0xC2;

PCA0CPL0=(uchar)((uint)(31*141.6+58000)%256);

PCA0CPH0=(uchar)((31*141.6+58000)/256);

PCA0CPL1=(uchar)((uint)(31*45.3+58000)%256);

PCA0CPH1=(uchar)((31*45.3+58000)/256);

PCA0CPL2=(uchar)((uint)(31*90.8+58000)%256);

PCA0CPH2=(uchar)((31*90.8+58000)/256);

PCA0CPL3=(uchar)((uint)(31*49.7+58000)%256);

PCA0CPH3=(uchar)((31*49.7+58000)/256);

PCA0CPL4=(uchar)((uint)(31*147.9+58000)%256);

PCA0CPH4=(uchar)((31*147.9+58000)/256);

voidPort_IO_Init()

P0MDOUT=0xC3;

P1MDOUT=0x01;

P2MDOUT=0x80;

P0SKIP=0x0C;

P1SKIP=0x06;

XBR0=0x01;

XBR1=0x45;

P2_7=0;

voidOscillator_Init()

OSCICN=0x82;

voidTimer_Init()

TCON=0x40;

TMOD=0x20;

CKCON=0x01;

TL1=0x61;

TH1=0x61;

voidUART_Init()

SCON0=0x10;

voidInterrupts_Init()

IE=0x90;

voidDelay(uintdly)

uinti,j;

for(i=0;

i<

dly;

i++)

for(j=0;

j<

1000;

j++);

//Initializationfunctionfordevice,

//CallInit_Device()fromyourmainprogram

voidInit_Device(void)

Init_Variables();

PCA_Init();

Port_IO_Init();

Oscillator_Init();

Timer_Init();

//Delay(5);

UART_Init();

Interrupts_Init();

voidzuo_1_duoji(ucharx)

PCA0CPL0=(uchar)((uint)(31*x+58000)%256);

PCA0CPH0=(uchar)((31*x+58000)/256);

voidzuo_2_duoji(ucharx)

PCA0CPL1=(uchar)((uint)(31*x+58000)%256);

PCA0CPH1=(uchar)((31*x+58000)/256);

voidzuo_3_duoji(ucharx)

PCA0CPL2=(uchar)((uint)(31*x+58000)%256);

PCA0CPH2=(uchar)((31*x+58000)/256);

voidzuo_4_duoji(ucharx)

PCA0CPL3=(uchar)((uint)(31*x+58000)%256);

PCA0CPH3=(uchar)((31*x+58000)/256);

voidzuo_5_duoji(ucharx)

PCA0CPL4=(uchar)((uint)(31*x+58000)%256);

PCA0CPH4=(uchar)((31*x+58000)/256);

voidwalk()

switch(act)

{

casewalk_zuo_1:

zuo_1_duoji(arc);

break;

casewalk_zuo_5:

zuo_5_duoji(arc);

casewalk_zuo_2:

zuo_2_duoji(arc);

casewalk_zuo_3:

zuo_3_duoji(arc);

casewalk_zuo_4:

zuo_4_duoji(arc);

default:

}

voidmain()

Init_Device();

while

(1);

voidUART_Interrupt(void)interrupt4

uchardat,i;

//ucharmark;

if(RI0==1)

for(i=0;

2;

{

while(!

RI0);

dat=SBUF0;

if(dat>

180)

act=dat;

else

arc=dat;

RI0=0;

}

walk();

右腿初始化:

#definewalk_you_1181

#definewalk_you_2182

#definewalk_you_3183

#definewalk_you_4184

#definewalk_you_5185

#definewalk_mark223

PCA0CN=0x40;

PCA0CPL0=(uchar)((uint)(31*20+58000)%256);

PCA0CPH0=(u

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1