| 首页 | 调频技术 | 电子技术 | 酷站产品 | 资源下载 | OEM/ODM定产 | 酷站留言 | 联系方式 | 酷站论坛 | 网站简介
  首页-电子技术-设计论文-绘图型工艺品机器人制作 发表文章 返回上页

绘图型工艺品机器人制作

作者:  发布:2008-12-22 人气:3426

首先我信仰基督教,感谢上帝给我能造出这个机器手.

       一个月前同事冯告诉我一些他以前参加机器人比赛的情况,我很感兴趣并有了制造机器人的打算,目的是设计一类通用机器人可以完成工艺家凿刻、折、绘图的手工劳动。因为绘图无需大电机力矩,所以首先着手此机器人开发。下面就其机械,电子、软件控制分别介绍:

        

机械部分:

是在一块铝塑板平台上安置一旋转盘,盘上放纸桶。边上安装两关节的手臂,手臂由二个步进电机控制,平台由一个步进电机控制。末端手臂扎有用毛笔毛制成的笔,纸桶转动同时笔在纸桶边做上下运动,这样就在纸桶上绘上了笔画。大臂与平台有机械限位,在运行前归零用,小臂与大臂间也有同样限位.机器的各种尺寸参数在程序中设置成Const,方便调整。

 

 

电路图:

电子部分:

由三个步进电机专用驱动芯片驱动三电机,芯片的脉冲信号CP与正反转信号DIR由计算机并口(打印机口)输出。为防止12V电流倒灌入主板用一片74HC244做计算机并口隔离.VB无法直接控制打印机端口,所以借虚拟设备驱动模块"WinIo.dll"输出(WinIo是动态安装的,但在VB编辑环境下无法连接).

步进电机驱动芯片很多,如UCN5804,MC3479,没有也可使用门电路CD4070和CD4027组合成环形脉冲分配器驱动。

 

软件部分

用户先在绘图区随意绘制曲线,涂抹中鼠标按下时调用Maddline函数生成一条新直线,鼠标移动的过程中坐标加入到新直线的点数据中,数据可通过SaveRobotFile及LoadRobotFile函数加载或保存到磁盘。绘制的直线数量是不定的,而每条直线中又包含许多点,所以自定义类型如下:

Public Type Dpoint '点类型
x As Single
y As Single
End Type


Public Type Dline '线类型
p() As Dpoint
End Type


Public myl() As Dline'可变数组

 

之后为了处理方便,直线数据要转化为相对简单的轨迹Trail()数据.其定义如下:

Public Type Track '轨迹点类型

x1 As Single  '伪3空间(模拟区)的点X坐标
y1 As Single                      'Y坐标
Ang1 As Single   '步进电机1角度
Ang2 As Single   '步进电机2角度
Ang3 As Single   '步进电机3角度
Ni As Long       '该点属于原直线数据中第几条
Nj As Long       '该点在原直线数据中属于第几点

End Type

Dim Trail() As Track

 

现在已知笔在桶上的位置,又如何反算出电机角度呢?

我们通过第一张图很容易算出笔尖坐标为Length1-Length2/2,Length4+Length3'(如下),之后用直角三角函数算出C值.

再用三角函数C2=A2+B2-2*A*B*COS(a)算出电机1的上半角MotorAng1-a.以此方法就再算出电机1的下半角MotorAng1-b,电机2的角度MotorAng2.

 

程序中的几个主要全局变量与函数:

Public autorun As Boolean '程序在模拟/滑块拖动状态切换标志

Public maxtime As Single’每次运动的时间,用于细分

Const pi = 3.1415926'圆周率,弧度与角度单位切换用(计算用弧度制,显示用角度制)
Const pidivd = pi / 180

Const VI1 As Single ......'每个电机的减速比
Public Const PDEG1 As Single = 360 / VI1......'每个脉冲电机的转角。

脉冲数=(步进电机要达到角度—步进电机当前角度)/每个脉冲电机的转角

 

Declare Function GetTickCount Lib "kernel32" () As Long '高精度计时用系统函数

Declare Function GetPortVal Lib "WinIo.dll" 'WinIo.dll读端口函数

Declare Function SetPortVal Lib "WinIo.dll"'WinIo.dll写端口函数


Public Sub runsim()'模拟运行开始,直线数据转化为轨迹数据

Function CaleUseTime'估算每步运行的时间

Function cale3dx'一点转化到伪3空间

Public Sub RUNAddressOut'输出打印机端口值,每个电机占用2位,共六位,vb中用或操作符 " Or"合并后输出一字节.

对于延时处理,VB自带的TIMER控件最快只能1/18秒触发一次,时间要求不高的场合可以使用这个控件.有的初学者喜欢用一个大的FOR循环,这也不妥当,因为不同电脑CPU速度不同而造成时间差异.

合适的方法是用WINAPI函数GetTickCount返回系统运行时间的时间(理论上达到毫秒级别).

WINAPI还提供一个的函数QueryPerformanceCounter直接获取CPU周期,精度更可达微秒级别,但是使用它会降低系统性能.本系统即用此函数,用QueryPerformanceCounter获取CPU周期,QueryPerformanceFrequency取得CPU频率,两数相除即得到时间.

 

软件运行界面:

 

拍摄的照片 :

 

 

用户名:
密 码:




,欢迎你回来!

修改资料  退出

申请成为高级会员






硬盘mp3电路原理图..(33534)
集成电路型号功能对照表(31961)
lm358双运算放大..(13343)
常用晶体管3极管资料..(11381)
常用发射三级管资料(10958)
dc/ac逆变器的制..(10788)
用lm3886制作5..(10290)
常用功率场效应管参数(9701)
单片开关电源原理及应用(9195)
实用的可调三端稳压模块(8957)
开关电源的分类及应用(8323)
便携式mp3播放器的..(7649)
酷站首页 - 购买方法 - 酷站留言 - 申请会员 - 酷站论坛 - 站长简介 - 联系我们
调频酷站(C) 2003-2005 版权所有 www.fmku.com All Rights Reserved
电子信箱 yj3886@163.com 电话:13882021417 028-8988 8900 qq:175411283 四川 成都
备案号:蜀ICP备08006042 Powerd By Iceflame Studio Design By Slim