单片机六自由度机械手控制程序

合集下载

基于TMS320F2812的六自由度机械手控制

基于TMS320F2812的六自由度机械手控制

基于TMS320F2812的六自由度机械手控制实验目的:研究六自由度的机械手控制原理和机械手的路径规划掌握DSP芯片的最小系统设计、程序编写和熟悉CCS3.3开发环境以及protel99se开发环境。

实验要求:一:控制器选取、最小外围系统制作(制版)二:机械手设计三:机械手舵机驱动设计实验过程:首先考虑控制能力、PWM接口,其次考虑控制器价格最后考虑控制器可操作度本实验采用TI公司的TMS320F2812PGFA控制器,该款控制器为TI公司的主要用于控制领域的控制器,控制器有16路PWM信号输出其中12路为比较计数器输出,4路为定时器/计数器产生接下来便是DSP最小外围系统的设计。

TMS320F2812是美国TI公司推出的新一代32位定点数字信号处理器,该芯片每秒可执行1.5亿次指令,具有单周期32 bit×32 bit的乘和累加操作功能,片内集成了丰富的外围设备,如16路A/D转换器、面向电机控制的事件管理器以及多种标准串口通信外设等[1]。

可见,其不仅具有数字信号处理器卓越的数据处理能力,又像单片机那样具有适于控制的片内外设及接口;它在数字控制系统中有着广泛的应用,特别是在运动控制领域以及嵌入式开发系统设计中,常常成为微处理器的首选。

DSP最小应用系统设计一般包括硬件设计和调试部分。

硬件设计部分一般包括电源、复位电路、时钟电路、JTAG电路和外部接口电路的设计;最小系统板作为 DSP 控制系统的核心部件,在其外围接入扩展板,能够使系统实现相应的功能。

本文基于TMS320F2812设计的DSP 最小应用系统,不仅可以作为学习 DSP系统的基础,同时对与DSP有关的科研实验以及工业控制领域也有着重要的应用价值。

最小外围系统的设计原理图如图所示:舵机驱动电路如下:通过调节上图的滑动变阻器便可改变输出电压的大小。

硬件设计完之后便是程序设计,实验代码如下:#include "DSP28_Device.h"# define y 1000 // DSP281x Headerfile Include Filevoid init_eva(void);void init_evb(void);void delay(int i);void main(void){int k;InitSysCtrl();// InitGpio(); 配置IO口功能为PWM模式EALLOW;GpioMuxRegs.GPAMUX.all = 0x00FF;EDIS;DINT; //关CPU总中断 InitPieCtrl(); //初始化PIE控制寄存器IER = 0x0000;IFR = 0x0000;InitPieVectTable(); //初始化PIE中断向量表 init_eva(); //初始化EV-A EvaRegs.T1CON.bit.TENABLE=1; //手工启动定时器 T1CON:定时器控制寄存器init_evb();EvbRegs.T3CON.bit.TENABLE=1;EINT; // 使能INTM(全局中断)ERTM; // Enable Global realtime interrupt DBGMfor(;;){delay(y);for(k=0;k<50;k++){//EvaRegs.CMPR1 = 41383;EvaRegs.CMPR2 = 41383;EvaRegs.CMPR3 = 44950;EvbRegs.CMPR4 = 41950;}delay(y);for(k=0;k<50;k++){// EvaRegs.CMPR1=42383;EvaRegs.CMPR2 = 42383;EvaRegs.CMPR3 = 44650;EvbRegs.CMPR4 = 42950;}delay(y);for(k=0;k<50;k++){EvaRegs.CMPR1=43200;//机械手合上 EvaRegs.CMPR2 = 43383;EvaRegs.CMPR3 = 44650;EvbRegs.CMPR4 = 43950;}delay(y);for(k=0;k<50;k++){EvaRegs.CMPR1=44383;EvaRegs.CMPR2 = 44383;EvaRegs.CMPR3 = 44650;EvbRegs.CMPR4 = 44950;}delay(y);for(k=0;k<50;k++){EvaRegs.CMPR1=45000;//机械手张开最大 EvaRegs.CMPR2 = 45500;EvaRegs.CMPR3 = 44650;}}}//EV-A初始化void init_eva(void){EvaRegs.T1PR = 46900; //周期值--连续增减时,PWM频率=TCLK/(2*T1PR)---频率设为1K, PWM=75M/(2*37500)EvaRegs.T1CMPR = 15360; // Compare Reg--比较值EvaRegs.T1CNT = 0; //计数器初值//连续增/减模式,x/1分频,内部时钟,使能比较,使用自己的周期,禁止定时器启动(等初始化全部完成后手工启动)EvaRegs.T1CON.all = 0x0C02;EvaRegs.GPTCONA.bit.TCMPOE = 1; //通过逻辑产生T1 PWMEvaRegs.GPTCONA.bit.T1PIN = 1; //GP定时器1比较时低有效//使能比较产生1--6 PWM波 1个比较单元控制2路互补的PWM输出,控制PWM占空比//连续增减--低有效时:PWM占空比=CMPR1/T1PR,高有效时:PWM占空比=(T1PR-CMPR1)/T1PREvaRegs.CMPR1 = 45500; //第一路PWM 占空比设为0.4,0.4=15000/37500EvaRegs.CMPR2 = 42383;EvaRegs.CMPR3 = 44650;// output pin 1 CMPR1 - 高有效,output pin 2 CMPR1 - 低有效// output pin 3 CMPR2 - 高有效,output pin 4 CMPR2 - 低有效// output pin 5 CMPR3 - 高有效,output pin 6 CMPR3 - 低有效EvaRegs.ACTRA.all = 0x066A; //比较方式控制寄存器,控制PWM引脚的高/低有效EvaRegs.DBTCONA.all = 0x0000; //静止死区CONA.all = 0xA600; //比较控制寄存器--禁止空间矢量PWM模式}void init_evb(void){EvbRegs.T3PR=46900;EvbRegs.T3CMPR=15360;EvbRegs.T3CNT=0;EvbRegs.T3CON.all=0X0C02;EvbRegs.GPTCONB.bit.TCMPOE = 1;EvbRegs.GPTCONB.bit.T3PIN = 1;EvbRegs.CMPR4 = 45500; //第一路PWM 占空比设为0.4,0.4=15000/37500EvbRegs.CMPR5 = 42383;EvbRegs.CMPR6 = 44650;EvbRegs.ACTRB.all = 0x066A; //比较方式控制寄存器,控制PWM引脚的高/低有效EvbRegs.DBTCONB.all = 0x0000; //静止死区CONB.all = 0xA600; //比较控制寄存器--禁止空间矢量PWM模式}void delay(int i){for(i;i>0;i--){int j=10000;while(j--);}}程序运行如下图所示:实验心得:通过本实验进一步了解了舵机控制的原理以及DSP 芯片最小外围系统的设计,在实验中也遇到了很多的困难,比如说DSP芯片的程序烧不进去,程序中的各个寄存器的配置等,但在老师的帮助下最终解决了该问题,在以后的学习中应该好好的总结,应该多多向他人请教。

六自由度平台控制流程

六自由度平台控制流程

六自由度平台控制流程
一、设计阶段
1.确定平台运动范围
(1)确定平台的工作空间尺寸
(2)确定平台的最大移动范围
2.选择控制系统
(1)确定控制系统的类型
(2)选择适合的控制器
二、运动学建模
1.建立平台的运动学模型
(1)确定平台的坐标系
(2)建立运动学方程
2.运动学分析
(1)分析平台的各个自由度运动关系
(2)计算各关节的运动学参数
三、控制器设计
1.PID控制器设计
(1)确定PID控制器参数
(2)进行闭环控制设计
2.轨迹规划
(1)设计平台的运动轨迹
(2)确定平台的运动速度和加速度
四、软硬件实现
1.编写控制程序
(1)使用编程语言编写控制算法(2)软件实现运动控制
2.硬件连接
(1)连接传感器和执行器
(2)配置控制器和驱动器
五、系统调试
1.运动测试
(1)进行平台的手动控制测试
(2)检查各个自由度的运动是否正常2.控制效果验证
(1)进行自动控制测试
(2)验证控制效果和精度
六、性能优化
1.参数调整
(1)调整控制器参数
(2)优化控制算法
2.系统稳定性分析
(1)进行系统稳定性分析(2)确保平台运动稳定可靠。

基于AVR单片机6自由度示教机械手控制系统设计

基于AVR单片机6自由度示教机械手控制系统设计

基于AVR单片机6自由度示教机械手控制系统设计
刘向宇;徐聪;韩文杰;王正初;李绣峰;方绿茵;孙建
【期刊名称】《机电产品开发与创新》
【年(卷),期】2017(30)1
【摘要】针对机械手现有技术存在的问题,设计了一种操作简便且适用范围广的控制系统.介绍了机械手的特点和用途、6自由度气动机械手的结构和主要功能,详细阐述了以AVR单片机为核心的控制系统硬件电路和系统的结构框图,同时介绍了系统的软件的设计方法和详细实现过程.经调试运行证明,该控制系统是有效可行的.【总页数】2页(P90-91)
【作者】刘向宇;徐聪;韩文杰;王正初;李绣峰;方绿茵;孙建
【作者单位】台州学院机械工程学院,浙江台州318000;台州学院机械工程学院,浙江台州318000;台州学院机械工程学院,浙江台州318000;台州学院机械工程学院,浙江台州318000;台州学院机械工程学院,浙江台州318000;台州学院机械工程学院,浙江台州318000;台州学院机械工程学院,浙江台州318000
【正文语种】中文
【中图分类】TP2412;TP138
【相关文献】
1.基于S7-200PLC的二自由度气动绢花拾取机械手控制系统设计 [J], 李海祯;于复生;范国隆;国海芝;张佳丽
2.基于PLC的机械手示教控制系统设计 [J], 何英;霍罡;付新生;吴向阳
3.基于PLC的六自由度机械手控制系统设计 [J], 朱娟娟;张爱民
4.基于单片机的六自由度机械手臂控制系统设计 [J], 陈心怡;张春雨;朱丽华
5.基于PLC的四自由度气动机械手控制系统设计研究 [J], 周晓娟;台畅
因版权原因,仅展示原文概要,查看原文内容请购买。

利用单片机MSP430作为控制核心实现六自由度自动寻迹机械人的设计

利用单片机MSP430作为控制核心实现六自由度自动寻迹机械人的设计

利用单片机MSP430作为控制核心实现六自由度自动
寻迹机械人的设计
 本系统为单片机的寻迹机器人系统,主要应用单片机MSP430作为控制核心,直流电机、舵机、一体红外接收头等相结合的系统。

这个系统软硬件设计简单,易于开发,严格控制各种元件的采购成本,所以价格低廉,安全可靠,操作方便。

1 系统原理
1.1 自动寻迹模块的系统原理
 本设计中自动寻迹模块主要由单片机及其外同电路、红外寻迹电路、直流电机控制电路等组成。

正常工作时,单片机循环检测红外寻迹电路输出信号,据此产生直流电机控制信号,当系统检测到工作方式发生改变时,系统进入相应方式。

其原理框图如图1、图2所示。

 图1 自动寻迹模块原理框图
 图2 自动寻迹模块原理框图。

六自由度机械手复杂运动控制

六自由度机械手复杂运动控制

本文以示教型六自由度串联机械手为试验设备,进行机械手的复杂运动控制,使机械手完成各种复杂轨迹的运动控制等功能,能够在现代工业焊接、喷漆等方面的任务。

本文从运动学分析的基础上着手研究轨迹控制的问题,利用运动学逆解的方式分析复杂轨迹运动的可行性和实用性。

目前,六自由度机械手的复杂运动控制已经有了比较好的逆解算法,也有一些针对欠自由度机械手的逆解算法。

逆解算法求出的解不是唯一的,它能使机械手达到更多位姿,完成大部分的原计划任务,但其中的一些解并不是最优化的,因此必须讨论其反解的存在性和唯一性。

本文通过建立机械手的笛卡尔坐标系,推导出机械手的正、逆运动学矩阵方程,并研究了正、逆运动学方程的解;在此基础上建立机械手的工作空间,并讨论其工作空间的灵活性和存在可能性。

因此本文的另一种方式对六自由度串联机械手的复杂运动控制问题进行研究,提出以机械手示教手柄引导末端执行器对复杂运动轨迹进行预设计。

然后通过记录程序进行复杂轨迹的再实现,再对记录程序进行预修改,最终通过现有的程序进行设计编程完成复杂轨迹设计任务。

并利用MATLAB对轨迹进行仿真,对比其实际与计算的正确性。

最后本设计通过六自由度串联机械手实现平面文字轨迹,得出其设计的方式。

即首先利用示教手柄实现轨迹预设,记录预设轨迹程序,然后再对比程序初始化坐标进行手动编程。

关键词:六自由度机械手,笛卡尔坐标系,运动学方程,仿真,示教手柄ABSTRACTIn this paper, mechanical hand control the complex movement based on the series of six degrees of freedom manipulator so that the mechanical hand complete the complex trajectory of the movement control functions. In modern industrial welding, painting, and other aspects of the mandate can be used.This article based on the analysis of kinematics to study the trajectory control problems, use of inverse kinematics of the complex mode of tracking movement of the feasibility and practicality. At present, the six degrees of freedom manipulator complex movement has been relatively good control of the inverse algorithm.There are also some less freedom for the inverse of the manipulator algorithm. Solutions sought by inverse algorithm is not the only solution, it can reach more manipulator Pose, originally planned to complete most of the task.But some of these solutions is not the most optimal, it is necessary to discuss their anti-the existence of solutions and uniqueness.Through the establishment of the manipulator Cartesian coordinates, derived manipulator is the inverse kinematics matrix equation and the study is the inverse kinematics of the equation solution on the basis of this establishment manipulator working space. And discuss their work space The flexibility and the possibility exists.So in another way to the six degrees of freedom series manipulator motion control the complex issues of research, to handle the machinery Shoushi guide for the implementation of the end of the complex pre-designed trajectory. Then track record of the complicated procedure to achieve, and then record the pre-amended procedures.The eventual adoption of the existing procedures designed trajectory design of complex programming tasks. And using MATLAB simulation of the track, compared with its actual calculation is correct.The final design through six degrees of freedom series manipulator track to achieve flat text, draw their design approach. That is, first of all use of teaching handle achieve trajectory default the track record of default procedures, and then compared to manual procedures initialized coordinate programming.key words:Six degree-of-freedom manipulators,Cartesian coordinates,Equations of motion,Simulation,Demonstration handle.绪论 (1)课题研究背景和意义 (1)国内外研究状况 (2)六自由度机械手复杂运动控制的现实意义 (4)课题的提出 (5)本课题研究的主要内容 (5)串联机器人运动学 (7)2.1 机器人运动学方程的表示 (7)2.1.1 运动姿态和方向角 (8)2.1.2 运动位置和坐标 (9)2.1.3 连杆变换矩阵及其乘和 (12)2.2 机械手运动方程的求解 (15)2.2.1 欧拉变换解 (16)2.2.2 滚、仰、偏变换解 (20)2.2.3 球面变换解 (21)2.3 反解的存在性和唯一性 (23)2.3.1 反解的存在性和工作空间 (23)2.3.2 反解的唯一性和最优解 (24)2.3.3 求解方法 (25)六自由度机械手的平面复杂轨迹设计及运动学分析 (27)3.1 系统描述及机械手运动轨迹设计方式 (27)3.1.1 机器人技术参数一览表 (27)3.1.2 机器人控制系统软件的主界面 (27)3.1.3 机器人各部位和动作轴名称 (28)3.1.4 机械手运动轨迹设计方式 (29)3.2 平面复杂轨迹设计目的 (33)3.2.1“西”字的轨迹设计和分析 (33)3.2.2“南”字的轨迹设计和分析 (34)3.2.3机械手的起始位姿和末态位姿 (35)3.3机械手轨迹设计中坐标系的建立 (35)3.4 平面轨迹设计的正运动学分析 (43)3.4.1平面轨迹设计的正运动学分析原理 (43)3.4.2 正运动学分析步骤及计算 (44)3.5 平面轨迹设计的逆运动学分析 (45)3.5.1 平面轨迹设计的逆运动学分析原理 (45)3.5.2.逆运动学分析步骤及计算 (46)设计实现过程和MA TLAB仿真计算 (50)4.1 设计实现过程 (50)4.2 MA TLAB仿真计算 (53)结论与展望 (57)5.1 结论 (57)5.2 展望 (58)致谢 (59)参考文献 (60)第一章绪论1.1 课题研究背景和意义在现代制造行业中,先进的制造技术不断的代替传统的加工方法和操作方式。

6自由度机械手的算法

6自由度机械手的算法

6自由度机械手的算法介绍6自由度机械手是一种具有6个自由度的机械臂,可以在空间中完成复杂的运动任务。

为了实现机械手的精确控制和运动规划,需要使用一系列算法来实现。

本文将探讨6自由度机械手的算法,包括逆运动学、正运动学、轨迹规划等。

逆运动学逆运动学是指已知机械手末端位置和姿态,计算出各个关节角度的过程。

对于6自由度机械手而言,逆运动学问题是一个复杂的数学问题。

以下是逆运动学算法的基本步骤:1.确定机械手的DH参数,包括关节长度、关节偏移、关节旋转角度等。

2.根据机械手的DH参数,构建正运动学方程,即末端位置和关节角度的关系。

3.根据末端位置和姿态,求解正运动学方程,得到关节角度的解。

4.对于多解的情况,选择最优解,例如使关节角度变化最小或满足特定约束条件的解。

正运动学正运动学是指已知机械手各个关节角度,计算出末端位置和姿态的过程。

对于6自由度机械手而言,正运动学问题相对简单,可以通过矩阵变换来实现。

以下是正运动学算法的基本步骤:1.确定机械手的DH参数。

2.根据机械手的DH参数,构建正运动学方程,即关节角度和末端位置的关系。

3.根据关节角度,求解正运动学方程,得到末端位置的解。

轨迹规划轨迹规划是指在给定起始位置和目标位置的情况下,确定机械手的运动路径和速度的过程。

对于6自由度机械手而言,轨迹规划需要考虑运动的平滑性和避免碰撞等因素。

以下是轨迹规划算法的基本步骤:1.确定起始位置和目标位置。

2.根据起始位置和目标位置,计算出机械手的途径点和运动方向。

3.根据途径点和运动方向,生成平滑的运动路径。

4.考虑机械手的运动速度和加速度,生成合适的速度曲线。

5.考虑碰撞检测,避免机械手和其他物体的碰撞。

动力学建模动力学建模是指根据机械手的结构和参数,建立机械手的运动学和动力学模型的过程。

对于6自由度机械手而言,动力学建模需要考虑关节间的耦合效应和惯性等因素。

以下是动力学建模的基本步骤:1.确定机械手的质量、惯性等参数。

六轴机械手nc编程

六轴机械手nc编程

六轴机械手nc编程摘要:1.六轴机械手简介2.六轴机械手NC 编程基本概念3.六轴机械手NC 编程流程4.六轴机械手NC 编程实例分析5.六轴机械手NC 编程在工业领域的应用及前景正文:随着科技的不断发展,自动化生产已成为我国制造业的主流趋势。

六轴机械手作为一种广泛应用于工业生产中的自动化设备,其NC 编程技术越来越受到业界的关注。

本文将为您详细介绍六轴机械手NC 编程的相关知识。

1.六轴机械手简介六轴机械手,又称为六自由度机械手,是一种具有六个独立运动轴的自动化设备。

它具有高度的灵活性和精确性,可以执行各种复杂的抓取、搬运、装配等任务。

六轴机械手的核心部分是控制系统,而NC 编程则是控制系统中的关键环节。

2.六轴机械手NC 编程基本概念C 编程,即数控编程,是一种通过计算机来控制机床或设备进行加工的编程方式。

在六轴机械手中,NC 编程主要用于控制机械手末端执行器的运动轨迹,以实现所需任务。

六轴机械手NC 编程主要涉及到以下几个方面:- 坐标系:用于描述机械手各轴的运动范围和位置关系。

- 运动指令:用于描述机械手各轴的运动方式,如平移、旋转等。

- 速度和加速度:用于描述机械手运动的快慢和加速度限制。

- 安全保护:用于确保机械手在运动过程中不会发生碰撞,保证安全。

3.六轴机械手NC 编程流程六轴机械手NC 编程流程主要包括以下几个步骤:- 建立坐标系:根据机械手的结构和运动范围,建立合适的坐标系。

- 规划运动轨迹:根据任务需求,规划机械手末端执行器的运动轨迹。

- 编写NC 程序:根据运动轨迹,编写相应的NC 程序。

- 仿真与调试:对NC 程序进行仿真,观察其运动过程是否满足任务要求,如有需要进行调试。

- 下载与执行:将编写好的NC 程序下载到机械手控制器中,执行加工任务。

4.六轴机械手NC 编程实例分析以一个简单的六轴机械手抓取任务为例,首先需要建立以机械手基座为原点的坐标系,然后规划出从初始位置到目标位置的运动轨迹。

6自由度控制算法

6自由度控制算法

6自由度控制算法在机器人控制与运动规划中,6自由度(6DoF)控制算法是一种常用的方法。

这种算法可以实现对机械臂或机器人的六个自由度进行精确控制,使其在三维空间内能够实现各种复杂的运动轨迹和任务。

6自由度控制算法的核心思想是:通过对机械臂的关节角度进行精确控制,从而实现末端执行器的运动。

一般来说,典型的6自由度机械臂由6个关节组成,每个关节可以控制一个自由度。

常见的机械臂有工业机械臂、服务机器人臂等。

实现6自由度控制的算法可以分为两个主要步骤:逆运动学求解和控制器设计。

逆运动学求解是根据机械臂的末端位姿(位置和姿态),确定关节角度以实现期望运动。

控制器设计是针对不同的任务需求,设计合适的控制策略以保证机械臂的精确控制和稳定性。

在逆运动学求解方面,一种常用的方法是使用解析解法。

对于六自由度的机械臂,可以通过对正运动学方程求逆,从而得到关节角度与末端位姿之间的映射关系。

一般来说,这种方法可以快速计算出关节角度,但对于一些特殊情况(例如奇异构型)可能无法求解解析解,需要使用数值解法来求解逆运动学问题。

在控制器设计方面,常见的方法包括PID控制、基于模型的控制(如轨迹跟踪控制、力/力矩控制)和基于反馈线性化的控制等。

PID控制是一种经典的控制策略,通过调节比例、积分和微分参数,实现机械臂位置和速度的精确控制。

基于模型的控制方法利用机械臂的动力学模型,通过预测机械臂的运动轨迹或实施力/力矩控制来实现精确控制。

而基于反馈线性化的控制方法,则通过设计非线性转换器和线性控制器,将非线性动力学系统转化为线性系统,从而实现控制目标。

除了逆运动学求解和控制器设计,6自由度控制算法还需要考虑如传感器选取与数据融合、路径规划、碰撞检测和碰撞回避等问题。

传感器可以提供机械臂的姿态和位姿信息,用于控制系统的反馈;数据融合则将多个传感器的信息进行整合,提高机械臂的感知能力。

路径规划是将机械臂的运动轨迹优化为最佳路径,以提高运动效率和精确度。

六自由度关节式机器人控制系统开发

六自由度关节式机器人控制系统开发

六自由度关节式机器人控制系统开发六自由度关节式机器人控制系统开发随着科技的不断进步和人工智能的发展,机器人在各个领域的应用越来越广泛。

其中,六自由度关节式机器人凭借其优越的操作能力和灵活性,正逐渐成为工业自动化、医疗护理、教育培训等领域中不可或缺的一部分。

本文将结合相关技术,介绍六自由度关节式机器人控制系统开发的过程和挑战。

一、六自由度关节式机器人控制系统概述六自由度关节式机器人是指具有六个自由度(前后移动、左右移动、上下移动、绕Z轴旋转、绕Y轴旋转、绕X轴旋转)的机器人,可以实现复杂的动作。

控制系统是机器人正常运行的关键,它包括硬件构架、传感器、控制算法等组成部分。

二、硬件构架六自由度关节式机器人的硬件构架主要包括电机、减速器、关节、传感器等。

电机负责驱动机器人的运动,减速器用于减小电机的转速并提高输出力矩,关节使机器人能够按照设定轨迹进行运动,传感器则用于感知外部环境和机器人运动状态。

三、传感器传感器对于机器人控制系统非常重要,它能够获取机器人周围环境和机器人自身状态的数据,并将其传输给控制系统进行处理。

常见的传感器包括视觉传感器、力传感器、惯性测量单元等。

视觉传感器能够识别和跟踪目标,力传感器可以感知机器人与外部物体的交互力,惯性测量单元可以测量机器人的加速度、角速度等。

四、控制算法控制算法是六自由度关节式机器人控制系统的核心部分,它决定了机器人执行动作的精确度和鲁棒性。

常用的控制算法包括PID控制、模糊控制、神经网络控制等。

PID控制是一种经典的控制算法,通过调整比例、积分、微分三个参数来使机器人运动稳定。

模糊控制是一种基于模糊逻辑的控制方法,可以处理不确定性和模糊性的问题。

神经网络控制是利用人工神经网络模拟人脑神经元的工作原理进行控制,具有较强的自适应性和学习能力。

五、控制系统开发流程控制系统开发过程一般包括需求分析、系统设计、软硬件开发、测试调试等环节。

首先,需要明确机器人的功能需求和性能指标,确定控制系统的硬件和软件设计方案。

六自由度机械手程序使用手册

六自由度机械手程序使用手册

六自由度机械手程序使用手册
为了使六自由度机械手能够进行运动,我们将对机械手进行逐个的电机运动,确认接线是正确的;然后通过运动程序控制铁机械手的各种动作。

在本章节使用的所有的程序能够从德普施公司得到技术支持。

如果需要Keil编辑器和使用方法,请参照《Keil》的使用说明。

电机运动测试:
运行《电机测试》程序,将得到的电机运行.hex 文件烧入到芯片中,确认所有连线,观察机械手的运动情况。

机械手的运动应该是从上到下依次进行运动,如果看到此动作,说明机械手的机械安装和电机安装正确。

夹取物体:
运行《夹取物体》程序,将得到的hand.hex 文件烧入到芯片中,运行程序,可以看到机械手的动作是将物体从左边夹取到右边。

用户可根据实际情况调整电机的运动位置达到实际应用的目的。

注:连接C51教学主板和PSC板是通过P1.2口。

单片机六自由度机械手控制程序

单片机六自由度机械手控制程序

单片机六自由度机械手控制程序#include<reg51.h>#include<absacc.h>#include<stdio.h>#define uint unsigned int #define uchar unsigned char #define COM1 XBYTE[0x5800] #define C01 XBYTE[0x4000] #define C11 XBYTE[0x4800]#define C21 XBYTE[0x5000] #define COM2 XBYTE[0x3800] #define C02 XBYTE[0x2000] #define C12 XBYTE[0x2800] #define C22 XBYTE[0x3000] sbit k1=P3^2;//电机复位按钮sbit k2=P3^3;//电机选择按钮sbit k3=P3^4;//电机正转sbit k4=P3^5;//电机反转sbit rs=P2^0;sbit rw=P2^1;sbit en=P2^2;uint m=0,i=0;void reservo();void lcd(uint i);void timer(uint n);void delay(uint n);void lcd_init();void lcd_wcom(uchar com); void lcd_wdat(uchar dat); voidlcd_wndat(uint dat); void delay(uint n);void init(void);void EXT1_INT(void){ EX1=1;IT1=1;EA=1;}void EXT0_INT(){ EX0=1;IT0=1;EA=1;}void EXT1_INT_SRV() interrupt 2 {i++;}//主程序void main() {while(1){if(k1==0){reservo();//电机复位程序break;}}EXT1_INT();//中断初始化if(i!=0&&i%6==0)i=6;elsei=i%6;lcd(i);timer(i);}//电机复位程序void reservo() {EXT0_INT();delay(200); }void EXT0_INT_SRV() interrupt 0 {TMOD=0x01;TH0=0xB1;TL0=0xE0;ET0=1;EA=1;TR0=1;COM1=0x30;C01=0xdc; C01=0x05;COM1=0x70;C11=0xdc; C11=0x05;COM1=0xB0;C21=0xdc; C21=0X05;COM2=0x30;C02=0xdc; C02=0x05;COM2=0x70;C12=0xdc; C12=0x05;COM2=0xB0;C22=0xdc; C22=0X05; }//显示屏程序void lcd(uint i){ uint n;uchar code table[]="servo"; lcd_init();lcd_wcom(0x80);for(n=0;n<16;n++){lcd_wdat(table[m]);delay(200);}lcd_wcom(0x80+0x07); switch(i) {case 1: lcd_wndat(1);delay(200);break;case 2: lcd_wndat(2);delay(200);break;case 3: lcd_wndat(3);delay(200);break;case 4: lcd_wndat(4);delay(200);break;case 5: lcd_wndat(5);delay(200);break;case 6: lcd_wndat(6);delay(200);}}void delay(uint n){uint x,y;for(x=n;x>0;x--)for(y=110;y>0;y--);}void lcd_wcom(uchar com)//1602写命令程序 { rs=0;rw=0;P0=com;delay(5);en=1;en=0;}void lcd_wdat(uchar dat)//1602写数据程序 { rs=1;rw=0;P0=dat;delay(5);en=1;en=0;}void lcd_wndat(uint dat)//1602写数据程序 { rs=1;rw=0;P0=dat;delay(5);en=1;en=0;}void lcd_init() {lcd_wcom(0x38);lcd_wcom(0x0c);lcd_wcom(0x06);lcd_wcom(0x01); } //舵机程序void timer(uint n) {init();uint n;for(n=1;n<=10;n++) {if(k3==0) servozheng();elsebreak;}n=1;for(;n<=10;n++) {if(k4==0)void servofan();} }void init(void) {TMOD=0x01;TH0=0xB1;TL0=0xE0;ET0=1;EA=1;TR0=1;}void servozheng() interrupt 1 {TH0=0xB1;TL0=0xE0;switch(i){case1: com1=0x30;c01=0x(dc+64*n); c01=0x05; break;case2: com1=0x70;c11=0x(dc+64*n); c11=0x05; break;case3: com1=0xB0;c21=0x(dc+64*n); c21=0x05; break;case4: com1=0x30;c02=0x(dc+64*n); c02=0x05; break;case5: com1=0x70;c12=0x(dc+64*n); c12=0x05; break;case6: com1=0xB0;c22=0x(dc+64*n); c22=0x05; }}void servofan() interrupt 1 {TH0=0xB1;TL0=0xE0;switch(i){case1: com1=0x30;c01=0x(dc-64*n); c01=0x05; break;case2: com1=0x70;c11=0x(dc-64*n); c11=0x05; break;case3: com1=0xB0;c21=0x(dc-64*n); c21=0x05; break;case4: com1=0x30;c02=0x(dc-64*n); c02=0x05; break;case5: com1=0x70;c12=0x(dc-64*n); c12=0x05; break;case6: com1=0xB0;c22=0x(dc-64*n); c22=0x05; }}。

6自由度机械手控制手册V1

6自由度机械手控制手册V1

6⾃由度机械⼿控制⼿册V16⾃由度机械⼿控制⼿册版本:V1YFROBOT2015年10⽉23⽇1、了解机械⼿ (3)1.1机械⼿ (3)1.26⾃由度机械⼿简介 (3)2、机械⼿安装 (3)2.16⾃由度机械⼿安装 (3)3、硬件选择 (4)3.1材料准备与介绍 (4)3.2材料组合⽅式选择 (6)4、连接与调试 (7)4.1⽅式1连接与调试 (7)4.2⽅式2连接与调试 (8)4.3⽅式3连接与调试 (9)4.4⽅式4连接与调试 (10)5、总结 (12)1、了解机械⼿1.1机械⼿机械⼿是能模仿⼈⼿和臂的动作功能,⽤以按固定程序抓取、搬运物件或操作⼯具的⾃动操作装置。

它主要主要由执⾏机构、驱动机构和控制系统三⼤部分组成。

它可以代替⼈从事繁重的危险的重复的劳动,即提⾼了⽣产效率,⼜能更好的保证⼈的安全,所以在⼯业⽣产中被⼴泛应⽤。

1.26⾃由度机械⼿简介我们这⾥的机械⼿仅⽤于学习与娱乐,不能和⼯业机械⼿相提并论的!下⾯我们简单介绍下我们的机械⼿组成部分:1、执⾏部分-机械⼿⽀架2、驱动部分-伺服舵机3、控制部分-控制板或舵机控制器或控制板+舵机控制器4、电源部分-驱动伺服电源+控制部分电源。

2、机械⼿安装2.16⾃由度机械⼿安装⽤户根据购买的机械⼿类型,选择⽂档查看:6⾃由度机械⼿控制⼿册V1\机械⼿安装。

1、圆盘底座6⾃由度机械⼿安装2、⾮圆盘底座6⾃由度机械⼿安装①②安装提⽰:安装过程中注意舵机轴的位置,尽量保持轴在中间位置也就是90度左右,这样可以减少后期的拆卸重装的步骤!3.1材料准备与介绍玩⼀个6⾃由度机械⼿,需要的材料:□6⾃由度机械⼿⽀架(必备)□6个伺服舵机(必备、可选DS3115or996)□电源(必备)□控制板、舵机控制器(选择)□遥控部分-PS2⼿柄(可选)3.1.1机械⼿⽀架这⾥⽀架就是个机械结构,主体⽀架都是⾦属材质的⾮常可靠。

3.1.2舵机舵机主要是由外壳、电路板、⽆核⼼马达、齿轮与位置检测器所构成,可以根据脉冲信号,精确控制旋转⾓度。

6自由度控制算法

6自由度控制算法

由于六自由度位置姿态调整平台动力学特性和串联机器人是相通的,所以可以借鉴。

增强型PD控制器,这种控制器是在一个线性PD控制的基础上加上沿期望轨迹计算的名义动力学前馈部分以及一个非线性补偿部分,它的最大优点是可以根据规划好的期望轨迹离线计算前馈补偿部分,从而降低实时计算的计算量。

计算力矩控制方法,它通过计算力矩的方式控制非线性系统沿期望轨迹运动,如果机器人动力学模型是准确的,计算力矩控制器可以实现动态解耦,并得到一个指数稳定的闭环动力方程,从而实现跟踪误差的指数收敛。

在并联机器人的控制策略中,除了常用的PID控制之外,还有自适应控制,滑模变结构控制,鲁棒控制以及智能控制等控制方法。

基于滑模控制的方法在具有不确定性的系统的研究和应用中,滑模控制一直是一个非常有效的控制方法。

滑模控制也叫变结构控制,其本质是一类特殊的非线性控制,且非线性表现为控制的不连续性。

这种控制策略与其他控制的不同之处在于系统的“结构”不是一成不变的,而是可根据系统当前的状态有目的地不断变化。

对于具有信号传输时延的交互控制遥操作系统,也可以应用滑模控制来实现。

只要知道时延大小,滑模控制就可以实现变时延情况下的遥操作系统的稳定控制。

由于滑动模态与系统对象参数及扰动无关,因此滑模控制具有响应快、对应参数变化及扰动不灵敏、无需系统在线辨识、物理实现简单等优点。

鲁棒控制由于遥操作系统中操作对象的不确定性,以及操作任务的实时变化,导致遥操作系统的特性和参数随工作状态和工作环境的变化而变化,这样就无法得到精确的描述遥操作系统特性的数学模型,给控制系统的设计带来困难。

鲁棒控制设计的目标就是在模型不精确和存在其他变化因素的条件下,使系统仍能保持预期的性能。

因此鲁棒控制在遥操作系统中发挥了巨大作用,它较大程度地消除了主观上认识的模型和真实的被控对象之间的误差和不确定性。

基于干扰观测器(DOB)的鲁棒运动控制方法由Ohnishi提出,目前广泛应用于各类电动高精度机械伺服系统"干扰观测器设计基于被控对象的开环数学模型,其基本思想是将外部力矩干扰及模型参数变化造成的实际对象与名义模型输出的差异,统统等效到控制输入端,即观测出等效干扰,在控制中引入等量的补偿,实现对各种干扰的完全抑制,同时还可以减弱非线性环节对伺服系统性能的影响,具有很强的鲁棒性。

基于单片机控制的六自由度自动寻迹机械人的设计与实现

基于单片机控制的六自由度自动寻迹机械人的设计与实现
设计 与实 现
王 刚 .魏 运 全
( 四 川信 . gP , 业技术学院 四i l l广元 6 2 8 0 1 7 ) 摘 要 :随 着 自动 化 技 术 的 普 及 , 为 了解 决工 厂 劳动 力 缺 乏 的 问题 , 利用 M S P 4 3 0芯 片控 制 能 力 强 , 设计灵活 , 以及 编 程 语 言 易于 修 改 等 优 点 。 采 用软 件 设 计 和 硬 件 设 计 相 结 合 , 设 计 了该 六 自由度 自动 寻 迹 机 械 人 , 以便 进 行 物 料 搬 运 工 作。 利 用编 辑 器运 行 程 序 、 调试时间、 运 行 的 步 骤, 将 写好 的 程 序 导 入 仿 真硬 件 电 路 中 , 查 看 是 否 与 设 计 要 求 的 一致 , 该设 计 具 有 性 能 稳 定 , 功耗低 , 价格低廉 , 安全可靠, 操 作 方便 等 特 点 。 关键 词 :六 自由度 ;自动 寻迹 ; 机 械 人 ;单 片机
a n d h a r d wa r e c o mb i n a t i o n d e s i g n , d e s i g n o f t h e s i x d e g r e e o f f r e e d o m a u t o ma t i c t r a c i n g ma c h i n e , f o r ma t e r i a l h a n d l i n g wo r k , r u n t h e p r o g r a m u s i n g t h e e d i t o r , d e b u g g i n g t i me , o p e r a t i o n s t e p s , t h e h a r d w a r e c i r c u i t s i mu l a t i o n p r o g r a m wr i t t e n i n i mp o r t ,

基于运动控制卡的六自由度机械手控制系统开发

基于运动控制卡的六自由度机械手控制系统开发
on area that global academics foUCS on.Robot technology cover down many SU
bjects such as mechanical design,information processing,electronic control,pro
he joints of the robot in this project.
Inverse kinematic problems and path planning of the robot are studied prelimi narily and improved simply based on the analyzing of the basic structure and P erformance of 6-DOF manipulator.D.H model is proposed to analysis the link pa
基于运动控制卡的六自由度机械手控制系统开发
3.4.1机器人运动学正解……………………………………………………………29 3.4.2机器人运动学逆解……………………………………………………………30 3.4.3机器人运动学逆解的优化……………………………………………………34 3.5本章小结………………………………………………………………………一35
青岛科技大学研究生学位论文
目录
1绪论……………………………………………………………………l
1.1课题研究的背景和意义…………………………………………………………’1 1.2国内外研究现状和发展趋势……………………………………………………‘1 1.3开放式机器人控制系统…………………………………………………………一4 1.3.1开放式控制系统的设计思想…………………………………………………一4 1.3.2基于PC的开放式控制系统结构………………………………………………4 1.4运动控制卡简述…………………………………………………………………一5 1.5课题研究的主要内容……………………………………………………………一8 1.6论文的主要安排…………………………………………………………………一8

基于单片机的六自由度机械手臂控制系统设计

基于单片机的六自由度机械手臂控制系统设计

《如及乡悅乡報》2021年第2期工程科技基于单片机的六自由度机械手臂控制系统设计陈心怡学张春雨2朱丽华1(1.池州职业技术学院,安徽池州247000; 2•安徽科技学院,安徽滁州239000)摘要:机械手臂在工业生产中的自主识别、精准判断和快速响应能力,体现了加工过程的自动化程度和智能化水平,文章提出了基于TK-A66自由度机械手臂和LD1501-MG 数字舵机,STC89C52单片机为核心 的工业机械臂控制系统的设计。

运用运动学模型和TM 算法,对机械臂手臂的运动速度和轨迹进行控 制设计,在控制程序设计中利用微分插补法生成多路舵机PWM 速度控制信号,通过在Protues 软件中 仿真调试,完成了对机械臂的控制功能遥关键词:单片机;机械臂;6自由度机械臂;舵机中图分类号:TP241 文献标识码:A 文章编号:1672-0547(2021)02-0106-004一、弓I 言机械臂也称工业机器人,是以运动作为控制对象 的智能控制装备,主要由手臂、舵机、抓手等组成叫机 器人手臂的张开、夹紧等系列动作由电动机驱动,并 准确地反馈到可编程逻辑控制器。

在工业生产中控 制机械臂完成我们所需要的夹取和分拣动作,本项 目便是围绕六自由度机械臂控制系统展开的。

通常 一个52系列的单片机包含有FLASH R0M 、RAM 、3 个16位的定时器/计数器和1个UART 等,它具有性 能可靠、性价比高等特点。

在工业生产中,往往需要 机械手臂完成一些相对复杂的控制运动,机械手臂 系统中一个单片机远远不够,仍需要TK-A66自由 度机械手臂、1501 数字舵机等控制机械臂的运动。

本文就是用单片机作为核心控制器,LD1501- MG 数字舵机作为TK-A66自由度机械手臂的运动控 制单元,结合制成的6自由度机械臂的控制系统。

系 统采用单片机芯片STC89C52作为主控制器,A/D 转 换采用以双积分方式运行的ICL7135,利用定时计数 器的计数功能,测量外部电压,省去很多处部电路罠 单片机通过产生PWM 信号控制机械臂的舵机,从而图1机械臂模型控制6自由度的机械手臂。

六自由度机械臂控制系统

六自由度机械臂控制系统

六自由度机械臂控制系统简介六自由度机械臂是一种具有六个关节的机械臂,可在三维空间内进行各种姿态变化和运动。

六自由度机械臂控制系统是通过控制每个关节的运动来实现机械臂的准确定位和运动轨迹规划。

本文将介绍六自由度机械臂控制系统的基本原理和主要组成部分。

基本原理六自由度机械臂的运动是通过对每个关节施加力矩来实现的。

每个关节都由一个电机驱动,通过控制电机的转动来改变机械臂的姿态和位置。

六自由度机械臂的控制系统需要能够接收外部指令并将其转化为对各个关节电机的控制信号。

控制系统组成部分控制器控制器是六自由度机械臂控制系统的核心组件。

它负责接收外部指令并将其转化为对各个关节电机的控制信号。

常见的控制器有单片机、PLC和工控机等。

控制器还需要具备实时性和高精度的要求,以确保机械臂的准确控制。

编码器编码器是用于测量关节位置和角度的装置。

它能够将关节的运动转化为数字信号,并传输给控制器进行处理。

通过编码器的信息,控制器可以准确地控制每个关节的位置和运动。

驱动系统驱动系统由电机和驱动器组成,负责提供足够的力矩和速度来驱动机械臂的运动。

电机和驱动器的选择要根据机械臂的负载和运动要求进行匹配,以确保系统的稳定性和可靠性。

传感器传感器用于监测机械臂的状态和环境变化。

常见的传感器有力矩传感器、位移传感器和光电传感器等。

它们能够实时监测机械臂的力矩、位置和光线等信息,并将其反馈给控制器进行调整。

通信模块通信模块用于与外部设备进行数据交换和通信。

通过通信模块,机械臂可以与计算机、传感器和其他外部设备进行连接,实现数据的传输和共享。

常见的通信模块包括以太网、串口和CAN等。

控制系统工作流程六自由度机械臂控制系统的工作流程如下:1.外部指令输入:通过控制器的输入接口,将外部指令输入到控制器中。

2.指令解析:控制器对外部指令进行解析和处理,确定机械臂的目标位置和运动轨迹。

3.运动规划:控制器根据目标位置和运动轨迹,通过算法进行运动规划,确定每个关节的运动参数。

毕业设计说明书--模块式六自由度机器人控制系统设计

毕业设计说明书--模块式六自由度机器人控制系统设计

(二 〇 一 三 年 六 月本科毕业设计说明书学校代码: 10128学号:题 目:模块式六自由度机器人控制系统设计 学生姓名: 学 院:机械学院 系 别:机械系 专 业:机械电子工程 班 级: 指导教师: 职 称:摘要近二十年来,机器人技术的发展非常迅速,各种用途机器人在各个领域获得广泛应用。

我国在机器人的应用和研究方面与工业化发达国家相比还有一定差距,因此设计和研究各种用途的机器人特别是推广机器人、工业机器人的应用是有现实的意义。

典型的工业机器人例如喷装配机器人、漆机器人、焊接机器人等大多是固定在加工设备旁边或生产线作业的,本论文在参考大量的文献资料的基础上,结合了项目的要求,设计一种小型的、固定在AGV上的、以实现移动的串联六自由度机器人。

首先,针对机器人设计要求提出了多个方案,并且对其进行分析和比较,选择其中最优的结构设计方案;然后进行运动学分析,用D一H方法来建立坐标变换矩阵,推算出运动方程的正解和逆解;用矢量积法推导速度雅可比矩阵,并计算包括腕点在内的一些点的速度和位移;然后借助坐标的变换矩阵进行工作空间的分析.这些工作为移动式机器人的运动控制、结构设计和动力学分析提供了依据。

最后运用已有的六自由度机械手及其手爪的三维造型和装配,将模型导入proteus中,并进行运动学仿真对其结果进行了分析,并且对在机械设计中使用的虚拟样机技术做了尝试,积累了经验。

关键词:6自由度机器人;运动学分析;仿真ABSTRACTIn the Pasttwenty years,therobot technology has been developed g reatly andusedin many different fields。

Thereis a large gap between ourcountryand the developed countries in research and applic ation oftherobottechnologyso that therewill be agreat valueto study,designand applied different kindsof robots,especially industrial robots.Most typical industrial robots such as welding robot,paintingrobot and assembly robot are allfixed ontheproduct line or near thema chiningequipment when they areworking。

六自由度机器人示教编程与再现控制实验

六自由度机器人示教编程与再现控制实验

六自由度机器人示教编程与再现控制实验一.实验目的1.了解机器人示教与再现的原理;2.掌握机器人示教和再现过程的操作方法。

二.实验设备和工具1、GRB3016六自由度机器人一台;2、GRB3016六自由度机器人控制柜一台;3、基于OtoStudio开发平台的控制软件一套;4、机器人气动手爪一套。

三.实验原理与方法1, 示教再现原理机器人的示教-再现过程是分为四个步骤进行的,它包括:示教,就是操作者把规定的目标动作(包括每个运动部件,每个运动轴的动作)一步一步的教给机器人。

示教的简繁,标志着机器人自动化水平的高低。

记忆,即是机器人将操作者所示教的各个点的动作顺序信息、动作速度信息、位姿信息等记录在存储器中。

存储信息的形式、存储存量的大小决定机器人能够进行的操作的复杂程度。

再现,便是将示教信息再次浮现,即根据需要,将存储器所存储的信息读出,向执行机构发出具体的指令。

至于是根据给定顺序再现,还是根据工作情况,由机器人自动选择相应的程序再现这一功能的不同,标志着机器人对工作环境的适应性。

操作,指机器人以再现信号作为输入指令,使执行机构重复示教过程规定的各种动作。

在示教-再现这一动作循环中,示教和记忆是同时进行的;再现和操作也是同时进行的。

这种方式是的机器人控制中比较方便和常用的方法之一。

示教的方法有很多种,有主从式,编程式,示教盒式等多种。

主从式既是由结构相同的大、小两个机器人组成,当操作者对主动小机器人手把手进行操作控制的时候,由于两机器人所对应关节之间装有传感器,所以从动大机器人可以以相同的运动姿态完成所示教操作。

编程式既是运用上位机进行控制,将示教点以程序的格式输入到计算机中,当再现时,按照程序语句一条一条的执行。

这种方法除了计算机外,不需要任何其他设备,简单可靠,适用小批量、单件机器人的控制。

示教盒和上位机控制的方法大体一致,只是由示教盒中的单片机代替了电脑,从而使示教过程简单化。

这种方法由于成本较高,所以适用在较大批量的成型的产品中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机六自由度机械手控制程序
#include<reg51.h>
#include<absacc.h>
#include<stdio.h>
#define uint unsigned int #define uchar unsigned char #define COM1 XBYTE[0x5800] #define C01 XBYTE[0x4000] #define C11 XBYTE[0x4800]
#define C21 XBYTE[0x5000] #define COM2 XBYTE[0x3800] #define C02 XBYTE[0x2000] #define C12 XBYTE[0x2800] #define C22 XBYTE[0x3000] sbit k1=P3^2;//电机复位按钮
sbit k2=P3^3;//电机选择按钮
sbit k3=P3^4;//电机正转
sbit k4=P3^5;//电机反转
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
uint m=0,i=0;
void reservo();
void lcd(uint i);
void timer(uint n);
void delay(uint n);
void lcd_init();
void lcd_wcom(uchar com); void lcd_wdat(uchar dat); void
lcd_wndat(uint dat); void delay(uint n);
void init(void);
void EXT1_INT(void)
{ EX1=1;
IT1=1;
EA=1;
}
void EXT0_INT()
{ EX0=1;
IT0=1;
EA=1;
}
void EXT1_INT_SRV() interrupt 2 {
i++;
}
//主程序
void main() {
while(1)
{if(k1==0)
{reservo();//电机复位程序break;}
}
EXT1_INT();//中断初始化
if(i!=0&&i%6==0)
i=6;
else
i=i%6;
lcd(i);
timer(i);
}
//电机复位程序
void reservo() {
EXT0_INT();
delay(200); }
void EXT0_INT_SRV() interrupt 0 {
TMOD=0x01;
TH0=0xB1;
TL0=0xE0;
ET0=1;
EA=1;
TR0=1;
COM1=0x30;
C01=0xdc; C01=0x05;
COM1=0x70;
C11=0xdc; C11=0x05;
COM1=0xB0;
C21=0xdc; C21=0X05;
COM2=0x30;
C02=0xdc; C02=0x05;
COM2=0x70;
C12=0xdc; C12=0x05;
COM2=0xB0;
C22=0xdc; C22=0X05; }
//显示屏程序
void lcd(uint i)
{ uint n;
uchar code table[]="servo"; lcd_init();
lcd_wcom(0x80);
for(n=0;n<16;n++)
{
lcd_wdat(table[m]);
delay(200);
}
lcd_wcom(0x80+0x07); switch(i) {
case 1: lcd_wndat(1);
delay(200);
break;
case 2: lcd_wndat(2);
delay(200);
break;
case 3: lcd_wndat(3);
delay(200);
break;
case 4: lcd_wndat(4);
delay(200);
break;
case 5: lcd_wndat(5);
delay(200);
break;
case 6: lcd_wndat(6);
delay(200);
}
}
void delay(uint n)
{
uint x,y;
for(x=n;x>0;x--)
for(y=110;y>0;y--);
}
void lcd_wcom(uchar com)//1602写命令程序 { rs=0;
rw=0;
P0=com;
delay(5);
en=1;
en=0;
}
void lcd_wdat(uchar dat)//1602写数据程序 { rs=1;
rw=0;
P0=dat;
delay(5);
en=1;
en=0;
}
void lcd_wndat(uint dat)//1602写数据程序 { rs=1;
rw=0;
P0=dat;
delay(5);
en=1;
en=0;
}
void lcd_init() {
lcd_wcom(0x38);
lcd_wcom(0x0c);
lcd_wcom(0x06);
lcd_wcom(0x01); } //舵机程序
void timer(uint n) {
init();
uint n;
for(n=1;n<=10;n++) {if(k3==0) servozheng();
else
break;
}
n=1;
for(;n<=10;n++) {if(k4==0)
void servofan();} }
void init(void) {
TMOD=0x01;
TH0=0xB1;
TL0=0xE0;
ET0=1;
EA=1;
TR0=1;
}
void servozheng() interrupt 1 {
TH0=0xB1;
TL0=0xE0;
switch(i)
{
case1: com1=0x30;
c01=0x(dc+64*n); c01=0x05; break;
case2: com1=0x70;
c11=0x(dc+64*n); c11=0x05; break;
case3: com1=0xB0;
c21=0x(dc+64*n); c21=0x05; break;
case4: com1=0x30;
c02=0x(dc+64*n); c02=0x05; break;
case5: com1=0x70;
c12=0x(dc+64*n); c12=0x05; break;
case6: com1=0xB0;
c22=0x(dc+64*n); c22=0x05; }
}
void servofan() interrupt 1 {
TH0=0xB1;
TL0=0xE0;
switch(i)
{
case1: com1=0x30;
c01=0x(dc-64*n); c01=0x05; break;
case2: com1=0x70;
c11=0x(dc-64*n); c11=0x05; break;
case3: com1=0xB0;
c21=0x(dc-64*n); c21=0x05; break;
case4: com1=0x30;
c02=0x(dc-64*n); c02=0x05; break;
case5: com1=0x70;
c12=0x(dc-64*n); c12=0x05; break;
case6: com1=0xB0;
c22=0x(dc-64*n); c22=0x05; }
}。

相关文档
最新文档