50分!VB程序高手进!用VB程序实现曲柄连杆机构运动

50分!VB程序高手进!用VB程序实现曲柄连杆机构运动,第1张

'新建窗体,添加command1,label1,hscroll1,timer1,picture1

const

pi

=

3.1415926

dim

angle

as

integer

private

sub

form_load()

'调整空间尺寸,位置及初始参数

me.scalemode

=

3

me.caption

=

"曲柄滑块机构的演示"

me.width

=

5000

me.height

=

3500

picture1.scalemode

=

3

picture1.autoredraw

=

true

picture1.move

0,

0,

me.scalewidth,

150

command1.caption

=

"开始(&b)"

command1.move

20,

160,

70,

30

label1.caption

=

"速度:"

label1.move

120,

170,

100,

30

hscroll1.min

=

1

hscroll1.max

=

20

hscroll1.move

160,

160,

140,

30

timer1.interval

=

20

timer1.enabled

=

false

end

sub

private

sub

command1_click()

timer1.enabled

=

not

timer1.enabled

if

timer1.enabled

then

command1.caption

=

"暂停(&s)"

else

command1.caption

=

"开始(&b)"

end

if

end

sub

sub

draw(byval

ox

as

integer,

byval

oy

as

integer,

byval

orad

as

integer)

'ox,oy圆心坐标,orad半径

angle

=

(angle

+

hscroll1.value)

mod

360

xo

=

ox

+

orad

*

cos(angle

*

pi

/

180)

'圆周上的铰链点坐标(xo,yo)

yo

=

oy

+

orad

*

sin(angle

*

pi

/

180)

xs

=

sqr((4

*

orad)

^

2

-

10

^

2)

+

xo

'滑块的左边界x坐标,连杆长度取4*orad,滑块高度取20(像素)

picture1.backcolor

=

picture1.backcolor

picture1.drawstyle

=

0

'实线

picture1.drawwidth

=

2

'线宽2

picture1.line

(ox

+

2

*

orad,

oy)-(ox

+

6

*

orad,

oy)

'壁面

picture1.line

(ox,

oy)-(xo,

yo)

'连接圆心与圆周上的铰链点

picture1.line

(xs,

oy

-

10)-(xo,

yo),

vbblue

'连接滑块与圆周上的铰链点

picture1.fillstyle

=

1

'透明填充

picture1.circle

(ox,

oy),

orad

'画圆

picture1.fillstyle

=

0

'实体填充

picture1.fillcolor

=

vbwhite

'圆心

picture1.circle

(ox,

oy),

5

picture1.fillcolor

=

vbgreen

'圆周上的铰链点

picture1.circle

(xo,

yo),

4

picture1.fillcolor

=

vbred

'滑块

picture1.line

(xs,

oy

-

20)-(xs

+

30,

oy),

,

b

picture1.drawstyle

=

2

'虚线

picture1.drawwidth

=

1

'线宽1

for

i

=

0

to

9

'表示壁面的虚线

picture1.line

(i

*

4

*

orad

/

10

+

ox

+

2

*

orad,

oy)-(i

*

4

*

orad

/

10

+

ox

+

2

*

orad

+

20,

oy

+

20)

next

end

sub

private

sub

timer1_timer()

'画

draw

60,

60,

40

end

sub

机械原理课程设计

任务书

题目:四杆机构设计B4-b

姓名:郑大鹏

班级:机械设计制造及其自动化

设计参数

转角关系的期望函数 连架杆转角范围 计算间隔 设计计算

手工 编程 确定:a,b,c,d四杆的长度,以及在一个工作循环内每一计算间隔的转角偏差值

60° 85° 2° 0.5°

y=㏑x(1≦x≦2)

设计要求:

1.用解析法按计算间隔进行设计计算;

2.绘制3号图纸1张,包括:

(1)机构运动简图;

(2)期望函数与机构实现函数在计算点处的对比表;

(3)根据对比表绘制期望函数与机构实现函数的位移对比图;

3.设计说明书一份;

4.要求设计步骤清楚,计算准确。说明书规范。作图要符合国家标。按时独立完成任务。

目录

第1节 平面四杆机构设计 3

1.1连杆机构设计的基本问题 3

1.2作图法设计四杆机构 3

1.3 解析法设计四杆机构 3

第2节 设计介绍 5

2.1按预定的两连架杆对应位置设计原理 5

2.2 按期望函数设计 6

第3节 连杆机构设计 8

3.1连杆机构设计 8

3.2变量和函数与转角之间的比例尺 8

3.3确定结点值 8

3.4 确定初始角 、 9

3.5 杆长比m,n,l的确定 13

3.6 检查偏差值 13

3.7 杆长的确定 13

3.8 连架杆在各位置的再现函数和期望函数最小差值 的确定 15

总结 18

参考文献 19

附录 20

第1节 平面四杆机构设计

1.1连杆机构设计的基本问题

连杆机构设计的基本问题是根据给定的要求选定机构的型式,确定各构件的尺寸,同时还要满足结构条件(如要求存在曲柄、杆长比恰当等)、动力条件(如适当的传动角等)和运动连续条件等。

根据机械的用途和性能要求的不同,对连杆机构设计的要求是多种多样的,但这些设计要求可归纳为以下三类问题:

(1)预定的连杆位置要求;

(2)满足预定的运动规律要求;

(3)满足预定的轨迹要求

连杆设计的方法有:解析法、作图法和实验法。

1.2作图法设计四杆机构

对于四杆机构来说,当其铰链中心位置确定后,各杆的长度

也就确定了。用作图法进行设计,就是利用各铰链之间相对运动

的几何关系,通过作图确定各铰链的位置,从而定出各杆的长度。

根据设计要求的不同分为四种情况 :

(1) 按连杆预定的位置设计四杆机构

(2) 按两连架杆预定的对应角位移设计四杆机构

(3) 按预定的轨迹设计四杆机构

(4) 按给定的急回要求设计四杆机构

1.3 解析法设计四杆机构

在用解析法设计四杆机构时,首先需建立包含机构各尺度参数和运动变量在内的解析式,然后根据已知的运动变量求机构的尺度参数。现有三种不同的设计要求,分别是:

(1) 按连杆预定的连杆位置设计四杆机构

(2) 按预定的运动轨迹设计四杆机构

(3) 按预定的运动规律设计四杆机构

1) 按预定的两连架杆对应位置设计

2) 按期望函数设计

本次连杆机构设计采用解析法设计四杆机构中的按期望函数设计。下面在第2节将对期望函数设计四杆机构的原理进行详细的阐述。

第2节 设计介绍

2.1按预定的两连架杆对应位置设计原理

如下图所示:

设要求从动件3与主动件1的转角之间满足一系列的对应位置关系,即 = i=1, 2,… ,n其函数的运动变量为 由设计要求知 、 为已知条件。有 为未知。又因为机构按比例放大或缩小,不会改变各机构的相对角度关系,故设计变量应该为各构件的相对长度,如取d/a=1 , b/a=l c/a=m , d/a=n 。故设计变量l、m、n以及 、 的计量起始角 、 共五个。如图所示建立坐标系Oxy,并把各杆矢量向坐标轴投影,可得

为消去未知角 ,将上式两端各自平方后相加,经整理可得

令 =m, =-m/n, = ,则上式可简化为:

2-2

式 2-2 中包含5个待定参数 、 、 、 、及 ,故四杆机构最多可以按两连架杆的5个对应位置精度求解。

2.2 按期望函数设计

如上图所示,设要求设计四杆机构两连架杆转角之间实现的函数关系 (成为期望函数),由于连架杆机构的待定参数较少,故一般不能准确实现该期望函数。设实际实现的函数为月 (成为再现函数),再现函数与期望函数一般是不一致的。设计时应该使机构的再现函数尽可能逼近所要求的期望函数。具体作法是:在给定的自变量x的变化区间 到 内的某点上,使再现函数与期望函数的值相等。从几何意义上 与 两函数曲线在某些点相交。

这些点称为插值结点。显然在结点处:

故在插值结点上,再现函数的函数值为已知。这样,就可以按上述方法来设计四杆机构。这种设计方法成为插值逼近法。

在结点以外的其他位置, 与 是不相等的,其偏差为

偏差的大小与结点的数目及其分布情况有关,增加插值结点的数目,有利于逼近精度的提高。但结点的数目最多可为5个。至于结点位置分布,根据函数逼近理论有

2-3

试中i=1,2, … ,3,n为插值结点数。

本节介绍了采用期望函数设计四杆机构的原理。那么在第3节将

具体阐述连杆机构的设计。

第3节 连杆机构设计

3.1连杆机构设计

设计参数表

转角关系的期望函数 连架杆转角范围 计算间隔 设计计算

手工 编程 确定:a,b,c,d四杆的长度,以及在一个工作循环内每一计算间隔的转角偏差值

60° 85° 2° 0.5°

y=㏑x(1≦x≦2)

注:本次采用编程计算,计算间隔0.5°

3.2变量和函数与转角之间的比例尺

根据已知条件y=㏑x(1≦x≦2)为铰链四杆机构近似的实现期望函数,

设计步骤如下:

(1)根据已知条件 , ,可求得 , 。

(2)由主、从动件的转角范围 =60°、 =85°确定自变量和函数与转角之间的比例尺分别为:

3.3确定结点值

设取结点总数m=3,由式2-3可得各结点处的有关各值如表(3-1)所示。

表(3-1) 各结点处的有关各值

1 1.067 0.065 4.02° 7.97°

2 1.500 0.405 30.0° 49.68°

3 1.933 0.659 55.98° 80.83°

3.4 确定初始角 、

通常我们用试算的方法来确定初始角 、 ,而在本次连杆设计中将通过编程试算的方法来确定。具体思路如下:

任取 、 ,把 、 取值与上面所得到的三个结点处的 、 的值代入P134式8-17

从而得到三个关于 、 、 的方程组,求解方程组后得出 、 、 ,再令 =m, =-m/n, = 。然

求得后m,n,l的值。由此我们可以在机构确定的初始值条件下找

到任意一位置的期望函数值与再现函数值的偏差值 。当

时,则视为选取的初始、角度 满足机构的运动要求。

具体程序如下:

#include<stdio.h>

#include<math.h>

#include<stdlib.h>

#define PI 3.1415926

#define t PI/180

void main()

{

int i

float p0,p1,p2,a0,b0,m,n,l,a5

float A,B,C,r,s,f1,f2,k1,k2,j

float u1=1.0/60,u2=0.93/685,x0=1.0,y0=0.0

float a[3],b[3],a1[6],b1[3]

FILE *p

if((p=fopen("d:\\zdp.txt","w"))==NULL)

{

printf("can't open the file!")

exit(0)

}

a[0]=4.02

a[1]=30

a[2]=55.98

b[0]=7.97

b[1]=49.68

b[2]=80.83

printf("please input a0: \n")

scanf("%f",&a0)

printf("please input b0: \n")

scanf("%f",&b0)

for(i=0i<3i++)

{

a1[i]=cos((b[i]+b0)*t)

a1[i+3]=cos((b[i]+b0-a[i]-a0)*t)

b1[i]=cos((a[i]+a0)*t)

}

p0=((b1[0]-b1[1])*(a1[4]-a1[5])-(b1[1]-b1[2])*(a1[3]-a1[4]))/

((a1[0]-a1[1])*(a1[4]-a1[5])-(a1[1]-a1[2])*(a1[3]-a1[4]))

p1=(b1[0]-b1[1]-(a1[0]-a1[1])*p0)/(a1[3]-a1[4])

p2=b1[0]-a1[0]*p0-a1[3]*p1

m=p0

n=-m/p1

l=sqrt(m*m+n*n+1-2*n*p2)

printf("p0=%f,p1=%f,p2=%f,m=%f,n=%f,l=%f\n",p0,p1,p2,m,n,l)

fprintf(p,"p0=%f,p1=%f,p2=%f,m=%f,n=%f,l=%f\n",p0,p1,p2,m,n,l)

printf("\n")

fprintf(p,"\n")

for(i=0i<5i++)

{printf("please input one angle of fives(0--60): ")

scanf("%f",&a5)

printf("when the angle is %f\n",a5)

fprintf(p,"when the angle is %f\n",a5)

A=sin((a5+a0)*t)

B=cos((a5+a0)*t)-n

C=(1+m*m+n*n-l*l)/(2*m)-n*cos((a5+a0)*t)/m

j=x0+u1*a5

printf("A=%f,B=%f,C=%f,j=%f\n",A,B,C,j)

s=sqrt(A*A+B*B-C*C)

f1=2*(atan((A+s)/(B+C)))/(t)-b0

f2=2*(atan((A-s)/(B+C)))/(t)-b0

r=(log(j)-y0)/u2

k1=f1-r

k2=f2-r

printf("r=%f,s=%f,f1=%f,f2=%f,k1=%f,k2=%f\n",r,s,f1,f2,k1,k2)

fprintf(p,"r=%f,s=%f,f1=%f,f2=%f,k1=%f,k2=%f\n",r,s,f1,f2,k1,k2)

printf("\n\n")

fprintf(p,"\n\n")

}

}

结合课本P135,试取 =86°, =24°时:

程序运行及其结果为:

p0=0.601242,p1=-0.461061,p2=-0.266414,m=0.601242,n=1.304040,l=1.938257

when the angle is 0.000000

r=0.000000,s=1.409598,f1=-125.595070,f2=-0.296147,k1=-125.595070,k2=-0.296147

when the angle is 4.020000

r=7.954308,s=1.538967,f1=-130.920624,f2=7.970002,k1=-138.874939,k2=0.015694

when the angle is 30.000000

r=49.732372,s=1.924767,f1=-152.252411,f2=49.680004,k1=-201.984787,k2=-0.052368

when the angle is 55.980000

r=80.838707,s=1.864505,f1=-161.643921,f2=80.830002,k1=-242.482635,k2=-0.008705

when the angle is 60.000000

r=85.018051,s=1.836746,f1=-162.288574,f2=84.909149,k1=-247.306625,k2=-0.108902

由程序运行结果可知:当取初始角 =86°、 =24°时 ( =k1(k2))所以所选初始角符合机构的运动要求。

3.5 杆长比m,n,l的确定

由上面的程序结果可得m=0.601242, n=1.304040, l=1.938257。

3.6 检查偏差值

对于四杆机构,其再现的函数值可由P134式8-16求得

3-2

式中: A=sin( ) ;

B=cos( )-n

C= - ncos( )/m

按期望函数所求得的从动件转角为

3-3

则偏差为

若偏差过大不能满足设计要求时,则应重选计量起始角

、 以及主、从动件的转角变化范围 、 等,重新进行设计。同样由上面的程序运行结果得出每一个取值都符合运动要求,即 :

=k1(k2)) (

3.7 杆长的确定

根据杆件之间的长度比例关系m,n,l和这样的关系式b/a=l c/a=m d/a=n确定各杆的长度,当选取主动杆的长度后,其余三杆长的度随之可以确定;在此我们假设主动连架杆的长度为 a=50 ,则确定其余三杆的长度由下面的程序确定:

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

void main()

{

float a=50,b,c,d

float m=0.601242,n=1.304040,l=1.938257

FILE *p

if((p=fopen("d:\\zdp.txt","w"))=NULL)

{

printf("can't open the file!")

exit(0)

}

b=l*a

c=m*a

d=n*a

printf("a=%f\nb=%f\nc=%f\nd=%f\n",a,b,c,d)

fprintf(p,"a=%f\nb=%f\nc=%f\nd=%f\n",a,b,c,d)

fclose(p)

}

运行结果为:

a=50.000000

b=96.912849

c=30.062099

d=65.201996

3.8 连架杆在各位置的再现函数和期望函数最小差值 的确定

如下面的程序:

#include<stdio.h>

#include<math.h>

#include<stdlib.h>

#define PI 3.1415926

#define t PI/180

void main()

{

float a0=86,b0=24,m=0.601242,n=1.304040,l=1.938257

float A,B,C,s,j,k1,k2,k

float x0=1.0,y0=0.0,u1=1.0/60,u2=0.693/85

float x[130],y1[130],y2[130],a1[130],f1[130],f2[130],r[130]

int i

FILE *p

if((p=fopen("d:\\zdp.txt","w"))==NULL)

{

printf("can't open the file! ")

exit(0)

}

printf(" ia1[i] f1[i] r[i]k x[i] y1[i]y2[i]\n\n")

fprintf(p," ia1[i] f1[i]r[i]k x[i] y1[i]y2[i]\n\n")

for(i=0a1[i]<=60i++)

{

a1[0]=0

A=sin((a1[i]+a0)*t)

B=cos((a1[i]+a0)*t)-n

C=(1+m*m+n*n-l*l)/(2*m)-n*cos((a1[i]+a0)*t)/m

j=x0+u1*a1[i]

s=sqrt(A*A+B*B-C*C)

f1[i]=2*(atan((A+s)/(B+C)))/(t)-b0

f2[i]=2*(atan((A-s)/(B+C)))/(t)-b0

r[i]=(pow(j,1.0/3)-y0)/u2

k1=f1[i]-r[i]

k2=f2[i]-r[i]

x[i]=a1[i]*u1+x0

y2[i]=log(x[i])

if(abs(k1)<abs(k2))

{

k=k1

y1[i]=f1[i]*u2+y0

printf(" %-4d %-5.1f %-10.4f %-8.4f %-8.4f %-7.4f %-8.4f %0.4f\n",i,a1[i],f1[i],r[i],k,x[i],y1[i],y2[i])

fprintf(p," %-4d %-5.1f %-10.4f %-8.4f %-8.4 %-7.4f %-8.4f %0.4f\n",i,a1[i],f1[i],r[i],k,x[i],y1[i],y2[i])

}

else

{

k=k2

y1[i]=f2[i]*u2+y0

printf(" %-6d%-7.1f%-12.4f%-10.4f%-10.4f%-9.4f%-10.4f%2.4f\n",i,

a1[i],f2[i],r[i],k,x[i],y1[i],y2[i])

fprintf(p,"%-6d%-7.1f%-12.4f%-10.4f%-10.4f%-9.4f%-10.4f%2.4f\n",i,

a1[i],f2[i],r[i],k,x[i],y1[i],y2[i])

}

a1[i+1]=a1[i]+0.5

}

fclose(p)

}

程序运行结果见附录。

总结

通过本次课程设计,让我学会了用解析法中的按期望函数设计连杆机构,理解了这一设计原理,知道怎样实现连杆机构两连架杆的转角之间的期望函数与再现函数之间的关系。

在本次设计中,有一个非常重要的环节——确定初始角 、 的值。这一环节我采用了C程序的方法来求解。虽然没有用笔算那样繁琐,但是在编写程序时,由于公式多,公式中设计的三角函数比较麻烦,因而在设计中我遇到了很多大小不同的问题,但是最终凭借对公式的理解和对C程序的进一步掌握完成了这一解析问题。只有确定了初始角 、 ,才能正确检查偏差值 ,得到一对最理想的初始角使得偏差值 。通过C程序的求解,得出的结果说明能较好的满足连杆机构的设计要求。

本次课程设计,从不知道如何下手到完成。我学到了很多的东西,掌握了课程设计书的书写格式,为以后的设计打下了良好的基础。

参考文献:

【1】孙恒,陈作模,葛文杰 . 机械原理[M] . 7版 . 北京:高等教育出版社,2006。

【2】孙恒,陈作模 . 机械原理[M] . 6版 . 北京:高等教育出版社,2001。

附录:i为序列号a1[i]= f1[i]= r[i] = k =

x[i]为自变量 y1[i]为再现函数值 y2[i]为望函数值


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/11418899.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存