You are on page 1of 36

Visoka Tehnicka Skola u Bjelovaru

Mehanizmi

Tim 6 Kinematika analiza mehanizma c

Student: Miroslav Maretic MB: 0162

Profesor: prof.dr.sc. Draan Kozak z 26. lipnja 2011.

Sadraj z
1 Postavljanje geometrije osnovnog mehanizma 2 Pozicijska analiza osnovnog mehanizma 2.1 Postavljanje osnovnih jednadzbi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Izracun kuta 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Izracun kuta 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Analiza brzina osnovnog mehanizma 3.1 Postavljanje osnovnih jednadzbi . . . 3.2 Izracun kutne brzine 3 . . . . . . . 3.3 Izraun kutne brzine 2 . . . . . . . c 3.4 Izracun brzina zglobnih tocaka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4 4 5 6 7 7 8 8 8 10 10 10 11 13 13 14 14 16 17 19 24 25 34

4 Analiza ubrzanja osnovnog mehanizma 4.1 Postavljanje osnovnih jednadzbi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Izraun kutnog ubrzanja 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c 4.3 Izraun ubrzanja zglobnih tocaka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c 5 Analiza toke D c 5.1 Postavljanje osnovnih jednadzbi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Analiza brzine tocke D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Analiza ubrzanja toke D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c 6 Analiza toke C c 7 Program TIM 6 Mehanizam 7.1 XAML osnovnog prozora . . . . . . . 7.2 XAML prozora sa grafovima . . . . . . 7.3 Visual Basic kod osnovnog prozora . . 7.4 Visual Basic kod prozora sa grafovima

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

Postavljanje geometrije osnovnog mehanizma

Kao osnovni mehanizam koji aproksimira gibanje jedne poluge pravcem odabran je mehanizam pod nazivom Hoeken-ov mehanizam (etveropoluni mehanizma) ne samo zato jer prua dobru aproksimaciju c z z gibanja svoje jedne toke povezne poluge, ve i zato jer brzina te toke ne doivljava velike promjene promijene c c c z tijekom gibanja po pravcu.]Osnovi cilj izrade ovog mehanizma je bila namjera pretvorbe rotacijskog gibanja pogonskog lana u translacijsko gibanje, dakle aproksimacija gibanja jedne toke mehanizma pravcem, te c c eventualna nadogradnja takvog osnovnog mehanizma sa ciljem postizanja neke praktine primjene. c Kao osnovni mehanizam koji aproksimira gibanje jedne poluge pravcem odabran je mehanizam pod nazivom Hoeken-ov mehanizam (etveropoluni mehanizma) ne samo zato jer prua dobru aproksimaciju c z z gibanja svoje jedne toke povezne poluge, ve i zato jer brzina te toke ne doivljava velike promjene promijene c c c z tijekom gibanja po pravcu. Osnovna geometrija Hoeken-ovog mehanizma prikazana je na slici C u    R8          B u        R2     A  u R1   R3

R4

Geometrija osnovnog Hoekenovog mehanizma Za samu geometriju mehanizma vani su omjeri R4 /R1 i R2 /R1 uz napomenu da mora vrijediti jednakost z R2 = R5 = R8 (1.1)

Nadalje, kako bi osiguralo da krajnje toe oba mehanizma nisu u istoj toki u isto vrijeme, morala se, c c osim faznog pomaka osigurati i ista kutna brzina pogonske poluge, odn. trebalo je prenijeti gibanje pogonske poluge jednog Hoeken-ovog mehanizma paralelno na pogonsku polugu drugog Hoeken-ovog mehanizma. Sam paralelni prijenos gibanja ostvaren je kombinacijom tri istovjetna zupanika.]Daljnja, praktina nadogradc c nja osnovnog mehanizma obavljena je dodavanjem jo jednog Hoeken-ovog mehanizma fazno pomaknutog s (poetni kut pogonske poluge je drugaiji) u odnosu na prvi tako da se toke koje se gibaju po pravcu ne c c c prepliu u svojim putanjama. c Nadalje, kako bi osiguralo da krajnje toe oba mehanizma nisu u istoj toki u isto vrijeme, morala se, c c osim faznog pomaka osigurati i ista kutna brzina pogonske poluge, odn. trebalo je prenijeti gibanje pogonske

poluge jednog Hoeken-ovog mehanizma paralelno na pogonsku polugu drugog Hoeken-ovog mehanizma. Sam paralelni prijenos gibanja ostvaren je kombinacijom tri istovjetna zupanika. c Kako je sam mehanizam trebao biti u stanju obavljati transportaciju nekog radnog komada po ravnini aproksimacije pravca Hoeken-ovih mehanizama, dodana je jo jedna poluga (oznaena s c u ovom dokumentu sa R5 ) na kraj poluge R1 ija druga krajnja toka ima ulogu guraa samog c c c radnog komada (u ovom sluaju komada drveta), odn. prinosi radni komad u prostor gibanja c prvog Hoeken-ovog mehanizma koji je dalje transpotira po ravnini na kojoj lei aproksimacija z pravocrtnog gibanja.

Slika 1: Izgled gotovog mehanizma Na slici je prikazan stvarni izgled gotovog mehanizma, sa oznaenim zglobnim tokama te c c nazivom pojedinih poluga u skladu sa nazivljem koje e se korisititi u ovom dokumentu. c

2
2.1

Pozicijska analiza osnovnog mehanizma


Postavljanje osnovnih jednadzbi

B >  6     R2       A  2  6 R1 R3

1 

R4

4 3 

Vektorski prikaz osnovnog etveropolunog mehanizma c z

Prema slici svaku polugicu osnovnog Hoekenovog mehanizma moemo opisati odgovarajuim vektorom z c R1 = r1 ej1 R2 = r2 e R3 = r3 e R4 = r4 e
j2 j3 j180

(2.1a) (2.1b) (2.1c) (2.1d)

Tako za osnovni Hoekenov mehanizam vrijedi ova vektorska jednadba z R1 + R2 R3 + R4 = 0 Nadalje, primjenjujemo Eulerovu formulu na (2.2) rej = r(cos + j sin ) r3 ej3 r2 ej2 r1 ej1 r4 ej180 = 0 Zapisujemo kao kompleksni broj Z = r3 [cos(3 ) + j sin(3 )] r2 [cos(2 ) + j sin(2 )] r1 [cos(1 ) + j sin(1 )] r4 [cos(180) + j sin(180)] (2.5) Kompleksni broj Z moemo rataviti na imaginarni i realni dio z 4 (2.3) (2.4) (2.2)

Re{Z} = r3 cos(3 ) r2 cos(2 ) r1 cos(1 ) + r4 = 0 Im{Z} = r3 sin(3 ) r2 sin(2 ) r1 sin(1 ) = 0

(2.6a) (2.6b)

2.2

Izracun kuta 3

Iz seta jednadbi (2.6) izrazimo jedan kut (ovdje 2 ) z r2 cos 2 = r3 cos 3 r1 cos 1 + r4 r2 sin 2 = r3 sin 3 r1 sin 1 (2.7a) (2.7b)

Set (2.7) kvadriramo i zbrojimo pri cemu vrijedi da trigonometrijske funkcije sa lijeve strane znaka jednakosti lue kao rezultat 1 c cos2 + sin2 = 1 (2.8)

2 2 2 2 r2 = r3 cos2 3 + 2r3 cos 3 (r1 cos 1 + r4 ) + r1 cos2 1 2r1 r4 cos 1 + r4 2 2 + r3 sin2 3 2r1 r3 sin 1 sin 3 + r1 sin2 1

(2.9)

Primjenom (2.8) na (2.9) i sredjivanjem, dobivamo


2 2 2 2 r2 = r3 + r1 + r4 2r1 r3 cos 3 cos 1 + 2r3 r4 cos 3 2r1 r4 cos 1 2r1 r3 sin 1 sin 3

(2.10)

Odakle nakon sredjivanja, izluujemo, c cos 3 cos 1 + sin 1 sin 3 =


2 2 2 2 r2 r3 r1 r4 2r3 r4 cos 3 + 2r1 r4 cos 1 2r1 r3

(2.11)

te uvrtavamo vrijdnosti duina poluga r1 (50mm),r2 (125mm),r3 (125mm) i r4 (100mm) s z cos 3 cos 1 + sin 1 sin 3 = 1 + 2 cos 3 0.8 cos 1 Posto nam je kut (1 ) pogonski postavljamo i slijedee realcije radi preglednosti c a = cos 1 b = sin 1 a cos 3 + b sin 3 = 1 + 2 cos 3 0.8a Vrimo univerzalnu zamjenu s 2 tan( ) 2 1 + tan2 ( ) 2 1 tan2 ( ) 2 1 + tan2 ( ) 2 (2.13a) (2.13b) (2.13c) (2.12)

sin = cos = Cime dobivamo 1 tan2 ( 3 ) 2 1 + tan2 ( 3 ) 2

(2.14a) (2.14b)

a tan2 (

+b

2 tan( 3 ) 2 1 + tan2 ( 3 ) 2

=1+

2 2 tan2 ( 3 ) 2 1 + tan2 ( 3 ) 2

0.8a

(2.15a) (2.15b)

3 3 )(a 1 + 2 + 0.8a) + 2b tan( ) + (a 1 2 + 0.8a) = 0 2 2 5

Vidimo da je (2.15) kvadratna jednadba te uvodimo daljnje izraze radi preglednosti, z A = 0.2 cos 1 + 1 B = 2 sin 1 C = 1.8 cos 1 3 te za izraun kuta (3 )koristimo c 312 = 2 arctan( B B 2 4AC ) 2A (2.17) (2.16a) (2.16b) (2.16c)

Pri cemu imamo na umu da je toan rezultat pozitivan c

2.3

Izracun kuta 2

Poinjemo od (2.6) iz kojih izraavamo kut (3 ) c z r3 cos 3 = r2 cos 2 + r1 cos 1 r4 r3 sin 3 = r2 sin 2 + r1 sin 1 Set (2.18) kvadriramo i zbrojim te koritenjem (2.8) dobivamo s
2 2 2 2 r3 = r2 + r1 + r4 + 2r1 r2 (cos 2 cos 1 + sin 2 sin 1 ) 2r2 r4 cos 2 2r1 r4 cos 1

(2.18a) (2.18b)

(2.19)

Odakle nakon sredjivanja, izluujemo, c


2 2 2 2 r3 r2 r1 r4 + 2r2 r4 cos 2 + 2r1 r4 cos 1 2r1 r2 te uvrtavamo vrijdnosti duina poluga r1 , r2 , r3 ir4 c z

cos 2 cos 1 + sin 2 sin 1 =

(2.20)

cos 2 cos 1 + sin 1 sin 2 = 1 + 2 cos 2 + 0.8 cos 1 Postavljamo slijedee realcije radi preglednosti c c = cos 1 d = sin 1 c cos 3 + d sin 3 = 1 + 2 cos 3 + 0.8c Te pomou (2.14) dobivamo c 1 tan2 ( 2 ) 2 2 tan( 2 ) 2 2 2 tan2 ( 2 ) 2

(2.21)

(2.22a) (2.22b) (2.22c)

+ 0.8c 1 + tan2 ( 2 ) 1 + tan2 ( 2 ) 1 + tan2 ( 2 ) 2 2 2 3 tan2 ( )(c + 1 + 2 0.8c) + 2d tan(3 2) + (c + 1 2 0.8c) = 0 2 c Vidimo da je (2.23) kvadratna jednadba te uvodimo daljnje izraze radi preglednosti, z D = 1.8 cos 1 + 3 E = 2 sin 1 F = 0.2 cos 1 1 te za izraun kuta (2 ) koristimo, c E 2 4DF ) 2D te kao za (2.17) imamo na umu da su pozitivna rijeenja tona s c 212 = 2 arctan( E 6

+d

= 1 +

(2.23a) (2.23b)

(2.24a) (2.24b) (2.24c)

(2.25)

3
3.1

Analiza brzina osnovnog mehanizma


Postavljanje osnovnih jednadzbi

Analizu brzina osnovnog Hoekenovog mehanizma poinjemo od (2.4) koju deriviramo po vremenu koju c deriviramo imajui na umu funkcijsku ovisnost kuteva o vremenu c

1 = f (t) 2 = f (t) 3 = f (t) 1 = konst. = 180 Nakon deriviranja (2.4) dobivamo d1 d2 d3 + jr2 ej2 jr3 ej3 =0 dt dt dt Poto vrijede izrazi za kutne brzine pojedinih poluga, s jr1 ej1 d1 dt d2 2 = dt d3 3 = dt

(3.1a) (3.1b) (3.1c) (3.1d)

(3.2)

1 =

(3.3a) (3.3b) (3.3c)

moemo (3.2) pisati u obliku z jr1 ej1 1 + jr2 ej2 2 jr3 ej3 3 = 0 Sto zapravo predstavlja zakon vB = vA + vB/A Pri emu vrijede odnosi c vA = jr1 ej1 1 vB/A = jr2 e vB = jr3 e Primjenom Eulerove formule (2.3) na (3.5) dobivamo j1 r1 (cos 1 + j sin 1 ) + j2 r2 (cos 2 + j sin 2 ) j3 r3 (cos 3 + j sin 3 ) = 0 Te nakon mnoenja imaginarnog broja j dobivamo z 1 r1 (j cos 1 sin 1 ) + 2 r2 (j cos 2 sin 2 ) 3 r3 (j cos 3 sin 3 ) = 0 (3.8) (3.7)
j2 j3

(3.4)

(3.5)

(3.6a) (3.6b) (3.6c)

2 3

Izraz (3.8) nam daje kompleksni broj Z koji sadri dvije nepoznanice (2 i 3 ) uz poznate vrijednosti z (1 , 1 , 2 , 3 ). Z moemo rastviti na realni i imaginarni dio pa dobivamo z Re{Z} = 1 r1 sin 1 2 r2 sin 2 + 3 r3 sin 3 = 0 Im{Z} = 1 r1 cos 1 + 2 r2 cos 2 3 r3 cos 3 = 0

(3.9a) (3.9b)

3.2

Izracun kutne brzine 3


2 r2 = 3 r3 sin 3 1 r1 sin 1 sin 2 (3.10)

Iz (4.15a) izlucujemo

Slijedi uvrtavanje (3.10) u (4.15b) s 1 r1 cos 1 + (3 r3 sin 3 1 r1 sin 1 ) Nakon sredjivanja 3 = Primjenom funkcija zbroja i razlike sin(x y) = sin x cos y cos x sin y cos(x y) = cos x cos y Dobivamo konani izraz za kutnu brzinu (3 ) c 3 = 1 r1 sin(1 2 ) r3 sin(3 2 ) (3.14) sin x sin y 1 r1 (cos 2 sin 1 cos 1 sin 2 ) r3 (cos 2 sin 3 cos 3 sin 2 ) (3.12) cos 2 3 r3 cos 3 = 0 sin 2 (3.11)

(3.13a) (3.13b)

3.3

Izraun kutne brzine 2 c

Postupak je analogan postupku koji je primjenjivan za dobivanje izraza (3.14) te se, dakle, poinje od (3.9) c izluivanjem iz (4.15a) c 3 r3 = Izraz (3.15) uvrtavamo u (4.15b) s 1 r1 cos 1 + 2 r2 cos 2 Nakon sredjivanja dobivamo 2 r2 (sin 3 cos 2 sin 2 cos 3 ) = 1 r1 (sin 1 cos 3 sin 3 cos 1 ) (3.17) cos 3 1 (1 r1 sin 1 + 2 r2 sin 2 ) = 0| sin 3 sin 3 (3.16) 1 r1 sin 1 + 2 r2 sin 2 sin 3 (3.15)

Primjenom funkcije zbroja i razlike trigonometrijskih funkcija (3.13) nad (3.17) dobivamo konani izraz c za kutnu brzinu (2 ) 2 = r 1 sin(1 3 ) r2 sin(3 2 ) (3.18)

3.4

Izracun brzina zglobnih tocaka

Iz izraza (3.6) dobivamo nakon primjene Eulerove formule euler i mnoenja imaginarne jedinice z

vA = 1 r1 ( sin 1 + j cos 1 ) vBA = 2 r2 ( sin 2 + j cos 2 ) vB = 3 r3 ( sin 3 + j cos 3 )

(3.19a) (3.19b) (3.19c)

Pri emu realne komponente izraza (3.19a) (3.19b) (3.19c) predstavljaju komponentu brzine u smjeru osi c x (i), a imaginarne komponente izraza predstavljaju komponentu brzine u smjeru osi y (j)

vAx = vAx i = (1 r1 sin 1 )i vAy = vAy i = (1 r1 cos 1 )j vBx = vBx i = (3 r3 sin 3 )i vBy = vBy i = (3 r3 cos 3 )i vB/Ax = vB/Ax i = (2 r2 sin 2 )i vB/Ay = vB/Ay i = (2 r2 cos 2 )i Cime dobivamo izraze za brzine tocaka A i B osnovnog etveropunog mehanizma c z

(3.20a) (3.20b) (3.20c) (3.20d) (3.20e) (3.20f)

4
4.1

Analiza ubrzanja osnovnog mehanizma


Postavljanje osnovnih jednadzbi

Analizu ubrzanja osnovnog Hoekenovog mehanizma poinjemo deriviranjem izraza (3.5) sto nam, uz injenicu c c da su kutne brzine i kutovi funkcije vremena, te dobivamo
2 2 2 [j1 r1 ej1 + j 2 1 r1 ej1 ] + [j2 r2 ej2 + j 2 2 r2 ej2 ] [j3 r3 ej3 + j 2 3 r3 ej3 ] = 0 2 2 2 [j1 r1 ej1 1 r1 ej1 ] + [j2 r2 ej2 2 r2 ej2 ] [j3 r3 ej3 3 r3 ej3 ] = 0

(4.1a) (4.1b)

Izrazi (4.1a) i (4.1b) nam daju zakon aB = aA + aB/A Dakle,


2 aA = at + an = j1 r1 ej1 1 r1 ej1 A A

(4.2)

(4.3a) (4.3b) (4.3c)

aB = at + an = j3 r3 e B B aB/A = at B/A + an B/A

j3

2 3 r3 ej3

= j2 r2 e

j2

2 2 r2 ej2

Na izraz (4.1b) primjenjujemo Eulerovu formulu (2.3) te dobivamo kompleksni broj Z uz napomenu da je 1 = 0
2 2 Z = 1 r1 [cos 1 + j sin 1 ] + j2 r2 [cos 2 + j sin 2 ] 2 r2 [cos 2 + j sin 2 ] j3 r3 2 [cos 3 + j sin 3 ] + 3 r3 [cos 3 + j sin 3 ] = 0

(4.4)

2 2 Z = 1 r1 [cos 1 + j sin 1 ] + 2 r2 [j cos 2 sin 2 ] 2 r2 [cos 2 + j sin 2 ] 2 3 r3 [j cos 3 sin3 ] + 3 r3 [cos 3 + j sin 3 ] = 0

(4.5)

Izraz (4.5) nam daje kompleksni broj Z koji sadri dvije nepoznanice (2 i 3 ) te ga rastavljamo na realni z i imaginarni dio.
2 2 2 Re{Z} = 1 r1 cos 1 2 r2 sin 2 2 r2 cos 2 + 3 r3 sin 3 + 3 r3 cos 3 = 0

(4.6a) (4.6b)

Im{Z} =

2 1 r1

sin 1 + 2 r2 cos 2

2 2 r2

sin 2 3 r3 cos 3 +

2 3 r3

sin 3 = 0

4.2

Izraun kutnog ubrzanja 2 c


2 2 2 1 r1 cos 1 + 2 r2 sin 2 + 2 r2 cos 2 3 r3 cos 3 sin 3

Iz (4.6a) izlucujemo 3 r3 = te uvrtavamo u (4.6b) s cos 3 sin 3 2 2 2 2 [1 r1 cos 1 + 2 r2 sin 2 + 2 r2 cos 2 3 r3 cos 3 ] + 3 r3 sin 3 = 0
2 2 1 r1 sin 1 + 2 r2 cos 2 2 r2 sin 2 2 2 1 r1 sin 1 sin 3 + 2 r2 cos 2 sin 3 2 r2 sin 2 sin 3 2 2 2 2 1 r1 cos 1 cos 3 2 r2 sin 2 cos 3 2 r2 cos 2 cos 3 + 3 r3 cos2 3 ] + 3 r3 sin2 3 = 0

(4.7)

(4.8)

(4.9)

10

Grupiranjem izraza dobivamo


2 1 r1 [sin1 sin 3 + cos 1 cos 3 ] + 2 r2 [cos 2 sin 3 sin 2 cos 3 ] 2 2 2 r2 [sin 2 sin 3 + cos 2 cos 3 ] + 3 r3 [cos2 3 + sin2 3 ] = 0

(4.10)

Primjenom funkcije zbroja i razlike trigonometrijskih funkcija (3.13) te jednakosti (2.8) dobivamo
2 2 2 1 r1 cos(1 3 ) + 2 r2 sin(3 2 ) 2 r2 cos(2 3 ) + 3 r3 = 0

(4.11)

Radi preglednosti uvodimo zamjene E = r2 sin(3 2 ) F = G= H= Cime dobivamo konani izraz c F + E2 H + G = 0 Izluujemo 2 te dobivamo konani izraz c c 2 = H +F G E (4.14) (4.13)
2 1 r1 2 3 r3 2 2 r2

(4.12a) (4.12b) (4.12c) (4.12d)

cos(1 3 ) cos(2 3 )

4.3

Izraun ubrzanja zglobnih tocaka c

Za izraun ubrzanja zglobnih toaka osnovnog Hoekenovog mehanizma koristimo relacije (4.2) i (4.3). Za c c izraun kutnog ubrzanja 3 ne moramo izvoditi formulu kao u sluaju kutnog ubrzanja 3 vec ga moemo c c z izraziti iz spomenute relacije (4.3b) Za toku A, prema spomenutim relacijama, vrijedi c
2 aA = 1 r1 [cos 1 + j sin 1 ] 2 aAx i = (1 r1 cos 1 )i

(4.15a) (4.15b) (4.15c)

aAy j =

2 (1 r1

sin 1 )j

Za toku B, prema spomenutim relacijama, vrijedi c


2 aB = j3 r3 ej3 3 r3 ej3 2 = j3 r3 [cos 3 + j sin 3 ] 3 r3 [cos 3 + j sin 3 ]

(4.16) sin 3

= j3 r3 cos 3 3 r3 sin 3

2 3 r3

cos 3

2 j3 r3

2 aBx i = (3 r3 sin 3 3 r3 cos 3 )i

(4.17a) (4.17b)

aBy j = (3 r3 cos 3 Nadalje, vrijedi


2 aB/A = j2 r2 ej2 2 r2 ej2

2 3 r3

sin 3 )j

2 = j2 r2 [cos 2 + j sin 2 ] 2 r2 [cos 2 + j sin 2 ]

(4.18) sin 2

= j2 r2 cos 2 2 r2 sin 2 11

2 2 r2

cos 2

2 j2 r2

Odakle vrijedi
2 aB/Ax i = (2 r2 sin 2 2 r2 cos 2 )i

(4.19a) (4.19b)

aB/Ay j = (2 r2 cos 2

2 2 r2

sin 2 )j

Ubrzanje toke B mozemo izraziti iz izvedenih izraza (4.15) i (4.18). Vrijedi dakle c

aB = aBx i + aBy j = aAx i + aAy j + aB/Ax i + aB/Ay j aBx i = (aAx + aB/Ax )i aBx j = (aAy + aB/Ay )j Sad, dakle, mozemo pronai i izraz za kutno ubrzanje 3 iz izraza (4.17a) c 3 =
2 3 r3 cos 3 r3 sin 3

(4.20a) (4.20b) (4.20c)

(4.21)

12

5
5.1

Analiza toke D c
Postavljanje osnovnih jednadzbi

Slika 2: Vektorski prikaz mehanizma tocke D Prema slici, ako i kod osnovnog Hoekenovog mehanizma moemo za analizu tocke D svaku polugu zamz jeniti sa vektorom. Iako je mogue cijelu analizu provesti sa tri vektora, R1 , R5 i RS , vektor RS bi bio vektor c promjenjive duine i kuta te stoga koristimo vektore R6 i R7 poto su im kutovi koje zavtvaraju konstantni, z s te je duina vektora R6 konstantna te predstavlja zapravo visinu klizne povrine toke D. z s c Piemo dakle osnovnu vektorsku jednadzbu s R1 + R5 R6 R7 = 0 r1 ej1 + r5 ej5 r6 ej0 r7 ej0 = 0 Primjenom Eulerove formule (2.3) na (5.2) dobivamo Z = r1 [cos 1 + j sin 1 ] + r5 [cos 5 + j sin 5 ] r6 [cos 90 + j sin 90] r7 [cos 0 + j sin 0] = 0 Z = r1 cos 1 + jr1 sin 1 + r5 [cos 5 + jr5 sin 5 jr6 r7 = 0 Kompleksni broj Z moemo rastaviti na realni i imaginarni dio z Im{Z} = r1 sin 1 + r5 sin 5 r6 = 0 Re{Z} = r1 cos 1 + r5 cos 5 r7 = 0 Iz (5.4a) izrazimo kut 5 r5 sin 5 = r6 r1 sin 1 r6 r1 sin 1 5 = arcsin[ ] r5 Uvrtenjem (5.5b) u (5.4b) dobivamo izraz za duljinu r7 koji predstavlja poziciju toke D s c (5.5a) (5.5b) (5.1) (5.2)

(5.3a) (5.3b)

(5.4a) (5.4b)

13

r7 = r1 cos 1 + r5 cos[arcsin(

r6 r1 sin 1 )] r5 cos r6 r1 sin 1 = r1 cos 1 + r5 ( ) sin r5 r6 r1 sin 1 ) = r1 cos 1 + r5 tan( r5

(5.6)

5.2

Analiza brzine tocke D

Analizu brzine toke D pocinjemo deriviranjem izraza (5.2) po vremenu imajui na umu da se duljina r7 c c mijenja s vrmenom i da je njena derivacija zapravo brzina toke D u smjeru osi x, vDx c r1 ej1 + r5 ej5 r6 ej0 r7 ej0 = 0| jr1 1 ej1 + jr5 5 ej5 vDx = 0 Primjenom Eulerove jednadzbe (2.3) na (5.8) dobivamo kompleksni broj Z Z = jr1 1 [cos 1 + j sin 1 ] + jr5 5 [cos 5 + j sin 5 ] vDx = 0 Z = jr1 1 cos 1 r1 1 sin 1 + jr5 5 cos 5 r5 5 sin 5 vDx = 0 Kompleksni broj Z moemo nadalje rastaviti na njegov realni i imaginarni dio z Im{Z} = r1 1 cos 1 + r5 5 cos 5 = 0 Re{Z} = r1 1 sin 1 r5 5 sin 5 vDx = 0 Iz (5.10a) izluujemo kutnu brzinu 5 c 5 = r1 1 cos 1 r5 cos 5 (5.11) (5.10a) (5.10b) (5.9a) (5.9b) d dt (5.7) (5.8)

Jednadzbu (5.11) uvrtavamo u (5.10b) te dobivamo izraz za brzinu toke D s c r1 1 cos 1 sin 5 vDx = 0 cos 5 vDx = r1 1 [ sin 1 + cos 1 tan 5 ]

r1 1 sin 1 +

(5.12a) (5.12b)

5.3

Analiza ubrzanja toke D c

Analizu ubrzanja toke D poinjemo deriviranjem izraza (5.8) po vremenu ime dobivamo c c c d dt + j sin 1 ] + jr5 5 [cos 5 + j sin 5 ]
2 r5 5 [cos 5

Z = jr1 1 ej1 + r5 5 ej5 vDx = 0|

(5.13a) (5.13b) + j sin 5 ] aDx = 0 (5.13c)

2 2 Z = jr1 [1 ej1 + j1 ej1 ] + jr5 [5 ej5 + j5 ej5 ] aDx = 0

Z = jr1 1 [cos 1 + j sin 1 ]

2 r1 1 [cos 1

Rastavljanjem na imaginarni i realni dio dobivamo


2 2 Re{Z} = r1 1 sin 1 r1 1 cos 1 r5 5 sin 5 r5 5 cos 5 aDx = 0 2 2 Im{Z} = r1 1 cos 1 r1 1 sin 1 r5 5 cos 5 r5 5 sin 5 = 0

(5.14a) (5.14b)

14

Iz izraza (5.14b) izluujemo kutno ubrzanje 5 c 5 =


2 2 r1 1 cos 1 + r1 1 sin 1 + r1 1 sin 1 r5 cos 5

(5.15)

dobiveni izraz uvrtavamo u (5.14a) te dobivamo izraz za ubrzanje toke D s c aDx =


2 2 1 r1 cos[1 5 ] 5 r5 cos 5

(5.16)

15

Analiza toke C c
 R8         B  >  6     R2        2 A  6 R1 R3  

>   

1 

R4

4 3 

Vektorski prikaz osnovnog Hoekenovog mehanizma Kao to je vidljivo, vektor R8 zatvara uvijek isti kut kao i vektor R2 to je uvjetovano geometrijskim s s zahtjevima Hoekenovog mehanizma, te je i iste duljine kao taj vektor. Poto toke B i C pripadaju istoj s c poluzi, a kako znamo kutnu brzinu i ubrzanje te poluge (2 2 ) iz prijanjih analiza, ne moramo izvoditi s kompletne vektorske jednadbe kao kod prijanjih analiza ve se moemo koristiti izrazom z s c z vC = vC/B + vB (6.1) kako bismo analitiki odredili brzinu i ubrzanje toke C. s s Izraz (6.1) moemo dalje proiriti [2] kako bismo dobili brzine u x i y smjeru kako slijedi z s vC i + vC j = vB i + vB j [|R8 |2 sin 2 ]i + [|R8 |2 cos 2 ]j vC i = [vB |R8 |2 sin 2 ]i vC j = [vB + |R8 |2 cos 2 ]j

(6.2a) (6.2b) (6.2c)

Za analizu ubrzanja toke C takodjer moemo korisiti ve{c poznato ubrzanje toke B te kutnog ubrzanja c z c i kutne brzine prema izrazima [2]
2 ac i = [aB 2 |R8 | cos 2 ]i

(6.3a) (6.3b)

ac j = [aB + 2 |R8 | cos 2 ]j

16

Program TIM 6 Mehanizam

Izrazi izvedeni u prethodnim poglavljima objedinjeni su u programu TIM 6 Mehainzam koji je sam radjen programskim jezikom Visual Basic .NET [3] u okruenju Visual Basic 2008 Express Edition [4] te koji se z sastoji od dvije forme.

Slika 3: Pocetna forma programa Poetna forma je primarna forma za rad sa programom. Glavna joj je karakteristika kliza koji odreduje c c vrijednost kuta pogonske poluge, dok se broj okretaja pogonske poluge moze unesti u tekstualno polje ispod spomenutog klizaca. Mogue i zadati odredjeni kut unosom istog u tekstualno polje pogosnki kut te pritiskom na dugme c izraun dobiti relevantne informacije. c Sama forma sadrzi i prezentaciju gibanja mehanizma koju je mogue i animirati pritiskom na dugme c pokreni, te zaustaviti pritiskom na dugme stani. Kliza animacije odredjuje brzinu same animacije, tj. c vrijeme potrebno da se prezentacija pomjeri za jedan stupanj pogonske poluge. Moguce je odrediti elemente koji se pojavljuju u samoj prezentaciji (brzine, ubrzanja, poluge) odabirom odgovarajucih check box-ova neposredno ispod prostora za prezentaciju. Relevantne informacije se ispisuju na desnoj strani poetne forme, te sadre vrijdnosti kimenatikih c z c varijabli ciji su nazivi istovjetni nazivima, te koje se odnose, na iste varijable u izraunima u ovom tekstu. c Pomocna forma programa se poziva pritiskom na dugme Graf te slui za izcrtavanje funkcijske ovisnosti z brzina i ubrzanja zglobnih toaka mehanizma u ovisnosti od kuta pogonske poluge pri emu treba obratiti c c panju na znaenje boja pojedinih grafova. z c Prezentacija grafova na pomonoj formi moze se obrisati pritiskom na dugme ocisti povrinu. c s Ovdje je priloen izvrni kod programa koji se sadri od standarnog koda Visual Basic-a koji vri proraune z z s c i izcrtavanja te koda XAML jezika kojim su oblikovane same forme i elementi istih. NAPOMENA Iako je sam kod programa funkcionalan, te slui svrsi demonstracije provedenih analitikih z c analiza samog mehanizma, mora se napomenuti da program nije nipoto napisan optimalno poto se mnoge s s radnje u programu dogadaju esto sa samo izmjenjenim parametrima i to uzastopce (primjer pozivanje c iscrtavanja linije mehanizma, brzina i akceleracija).

17

Slika 4: Pomocna forma programa Stoga bi trebalo imati na umu da bi se takve, i eventualno neke druge, nepravilnosti dobre programerske prakse uoene ovjde mogle staviti pod jedan algoritam koji bi se mogao periodiki pozivati. c c

18

7.1

XAML osnovnog prozora

<Window x:Class="Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Tim_6 mehanizam" Height="740" Width="700" BorderThickness="0"> <Window.Resources> <Style TargetType="{x:Type GroupBox}"> <Setter Property="BorderBrush" Value="#574dd8"/> <Setter Property="Padding" Value="0,0,0,0"/> <Setter Property="Margin" Value="3"/> <Setter Property="Background" Value="Transparent"/> </Style> <Style x:Key="styleLabelValue" TargetType="{x:Type Label}"> <Setter Property="Margin" Value="0"/> <Setter Property="BorderThickness" Value="0"/> <Setter Property="BorderBrush" Value="#574dd8"/> <Setter Property="FontSize" Value="12"/> <Setter Property="Foreground" Value="Black"/> <Setter Property="Width" Value="50" /> </Style> <Style TargetType="{x:Type Label}"> <Setter Property="Margin" Value="0"/> <Setter Property="BorderThickness" Value="0"/> <Setter Property="BorderBrush" Value="#574dd8"/> <Setter Property="FontSize" Value="12"/> <Setter Property="Foreground" Value="Black"/> </Style> <Style TargetType="{x:Type TextBox}"> <Setter Property="Margin" Value="2"/> <Setter Property="Padding" Value="1"/> <Setter Property="Width" Value="auto"/> <Setter Property="HorizontalAlignment" Value="Left"/> <Setter Property="BorderThickness" Value="1,1,1,1"/> <Setter Property="BorderBrush" Value="#574dd8"/> <Setter Property="Background" Value="Transparent"/> <Setter Property="FontSize" Value="16"/> <Setter Property="Foreground" Value="Black"/> <Style.Triggers> <Trigger Property="IsFocused" Value="True"> <Setter Property="BorderThickness" Value="1,1,1,2"/> <Setter Property="BorderBrush" Value="#100873"/> <Setter Property="Background" Value="Transparent"/> </Trigger> </Style.Triggers> </Style> <Style TargetType="{x:Type Slider}"> <Setter Property="Foreground" Value="#574dd8" /> <Style.Triggers> <Trigger Property="IsFocused" Value="true"> <Setter Property="Foreground" Value="#100873" /> </Trigger> </Style.Triggers> </Style> </Window.Resources> <Grid> 19

<Grid.RowDefinitions> <RowDefinition Height="auto"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="auto"/> </Grid.ColumnDefinitions> <StackPanel Orientation="Vertical"> <GroupBox Header="Prezentacija" Width="auto" Grid.Row="0" Grid.Column="0"> <Expander Name="EXPprezentacija" IsExpanded="True"> <StackPanel Orientation="Vertical" Background="BurlyWood"> <Canvas Name="CVSprezentacija" Height="400" Width="400"> <TextBlock Name="tba" FontSize="12" Foreground="black" Text="A" Visibility=" <TextBlock.RenderTransform> <ScaleTransform ScaleY="-1.0" /> </TextBlock.RenderTransform> </TextBlock> <TextBlock Name="tbb" FontSize="12" Foreground="black" Text="B" Visibility=" <TextBlock.RenderTransform> <ScaleTransform ScaleY="-1.0" /> </TextBlock.RenderTransform> </TextBlock> <TextBlock Name="tbc" FontSize="12" Foreground="black" Text="C" Visibility=" <TextBlock.RenderTransform> <ScaleTransform ScaleY="-1.0" /> </TextBlock.RenderTransform> </TextBlock> <TextBlock Name="tbd" FontSize="12" Foreground="black" Text="D" Visibility=" <TextBlock.RenderTransform> <ScaleTransform ScaleY="-1.0" /> </TextBlock.RenderTransform> </TextBlock> <TextBlock Name="tbda" FontSize="12" Text="D" Visibility="Hidden"> <TextBlock.RenderTransform> <ScaleTransform ScaleY="-1.0" /> </TextBlock.RenderTransform> </TextBlock> <TextBlock Name="tbca" FontSize="12" Text="C" Visibility="Hidden"> <TextBlock.RenderTransform> <ScaleTransform ScaleY="-1.0" /> </TextBlock.RenderTransform> </TextBlock> <TextBlock Name="tbba" FontSize="12" Text="B" Visibility="Hidden"> <TextBlock.RenderTransform> <ScaleTransform ScaleY="-1.0" /> </TextBlock.RenderTransform> </TextBlock> <TextBlock Name="tbaa" FontSize="12" Text="A" Visibility="Hidden"> <TextBlock.RenderTransform> <ScaleTransform ScaleY="-1.0" /> </TextBlock.RenderTransform> </TextBlock>

20

<TextBlock Name="tbdv" FontSize="12" Text="D" Visibility="Hidden"> <TextBlock.RenderTransform> <ScaleTransform ScaleY="-1.0" /> </TextBlock.RenderTransform> </TextBlock> <TextBlock Name="tbcv" FontSize="12" Text="C" Visibility="Hidden"> <TextBlock.RenderTransform> <ScaleTransform ScaleY="-1.0" /> </TextBlock.RenderTransform> </TextBlock> <TextBlock Name="tbbv" FontSize="12" Text="B" Visibility="Hidden"> <TextBlock.RenderTransform> <ScaleTransform ScaleY="-1.0" /> </TextBlock.RenderTransform> </TextBlock> <TextBlock Name="tbav" FontSize="12" Text="A" Visibility="Hidden"> <TextBlock.RenderTransform> <ScaleTransform ScaleY="-1.0" /> </TextBlock.RenderTransform> </TextBlock> <Canvas.RenderTransform> <ScaleTransform CenterX="200" CenterY="100" ScaleX="1" ScaleY="-1" /> </Canvas.RenderTransform> </Canvas> <CheckBox Name="CHBprezentacijaBrzine" FontSize="12">Brzine</CheckBox> <CheckBox Name="CHBprezentacijaUbrzanja" FontSize="12">Ubrzanja</CheckBox> <CheckBox Name="CHBprezentacijaPoluge" FontSize="12">Plan brzina i ubrzanja</Che <GroupBox Header="Animacija" Width="auto" Background="White"> <StackPanel Orientation="Vertical"> <Slider Minimum="1" Maximum="300" IsSnapToTickEnabled="True" HorizontalAlignment="Left" TickFrequency="1" Width="300" Name="SLDanimacija"></Slider> <StackPanel Orientation="Horizontal"> <Button Name="BTNpokreni">Pokreni</Button> <Button Name="BTNstani">Stani</Button> </StackPanel> </StackPanel> </GroupBox> </StackPanel> </Expander> </GroupBox> <GroupBox Header="Kut pogonske poluge" Width="auto" Grid.Row="0" Grid.Column="0"> <StackPanel Orientation="Vertical"> <Slider Minimum="0" Maximum="360" IsSnapToTickEnabled="True" HorizontalAlignment="Left" TickFrequency="1" Width="360" Name="SLDpreznetacija"></Slider> <StackPanel Orientation="Horizontal"> <Label>Pogonski kut</Label>

21

<TextBox Name="TXTpogonskiKut" Width="50"></TextBox> <Button Name="BTNIzracun">Izraun</Button> <Button Name="BTNgraf">Graf</Button> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>Pogon [rpm]</Label> <TextBox Name="TXTrpm" Width="50">12</TextBox> </StackPanel> </StackPanel> </GroupBox> </StackPanel> <StackPanel Orientation="Vertical" Grid.Column="1"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="auto"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="auto"/> </Grid.ColumnDefinitions> <GroupBox Name="GRBkinematika" Header="Kinematika" Grid.Column="0" Height="auto"> <StackPanel Name="STPkinematika" Orientation="Vertical"> <Label Name="LBLbrzinaA">Brzina tocke A</Label> <Label>Ubrzanje tocke A</Label> <Label Name="LBLbrzinaB">Brzina tocke B</Label> <Label>Ubrzanje tocke B</Label> <Label Name="LBLbrzinaD">Brzina tocke D</Label> <Label>Ubrzanje tocke D</Label> <Label Name="LBLbrzinaC">Brzina tocke C</Label> <Label>Ubrzanje tocke C</Label> </StackPanel> </GroupBox> <GroupBox Header="X os" Grid.Column="1" Height="auto"> <StackPanel Name="STPxOs" Orientation="Vertical"> <Label Name="LBLVAX" Style="{StaticResource styleLabelValue}"></Label> <Label Name="LBLAAX" Style="{StaticResource styleLabelValue}"></Label> <Label Name="LBLVBX" Style="{StaticResource styleLabelValue}"></Label> <Label Name="LBLABX" Style="{StaticResource styleLabelValue}"></Label> <Label Name="LBLVDX" Style="{StaticResource styleLabelValue}"></Label> <Label Name="LBLADX" Style="{StaticResource styleLabelValue}"></Label> <Label Name="LBLVCX" Style="{StaticResource styleLabelValue}"></Label> <Label Name="LBLACX" Style="{StaticResource styleLabelValue}"></Label> </StackPanel> </GroupBox> <GroupBox Header="Y os" Grid.Column="2" Height="auto"> <StackPanel Name="STPyOs" Orientation="Vertical"> <Label Name="LBLVAY" Style="{StaticResource styleLabelValue}"></Label> <Label Name="LBLAAY" Style="{StaticResource styleLabelValue}"></Label> <Label Name="LBLVBY" Style="{StaticResource styleLabelValue}"></Label> <Label Name="LBLABY" Style="{StaticResource styleLabelValue}"></Label> <Label Name="LBLVDY" Style="{StaticResource styleLabelValue}"></Label> <Label Name="LBLADY" Style="{StaticResource styleLabelValue}"></Label>

22

<Label Name="LBLVCY" Style="{StaticResource styleLabelValue}"></Label> <Label Name="LBLACY" Style="{StaticResource styleLabelValue}"></Label> </StackPanel> </GroupBox> </Grid> <StackPanel Orientation="Vertical"> <StackPanel Orientation="Horizontal"> <Label>Kutna brzina poluge r1</Label> <Label Name="LBLomega1" Style="{StaticResource styleLabelValue}"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>Kutna brzina poluge r2</Label> <Label Name="LBLomega2" Style="{StaticResource styleLabelValue}"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>Kutna brzina poluge r3</Label> <Label Name="LBLomega3" Style="{StaticResource styleLabelValue}"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>Kutna brzina poluge r5</Label> <Label Name="LBLomega5" Style="{StaticResource styleLabelValue}"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>Kutno ubrzanje poluge r1</Label> <Label Name="LBLalpha1" Style="{StaticResource styleLabelValue}"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>Kutno ubrzanje poluge r2</Label> <Label Name="LBLalpha2" Style="{StaticResource styleLabelValue}"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>Kutno ubrzanje poluge r3</Label> <Label Name="LBLalpha3" Style="{StaticResource styleLabelValue}"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>Kutno ubrzanje poluge r5</Label> <Label Name="LBLalpha5" Style="{StaticResource styleLabelValue}"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>Kut fi2</Label> <Label Name="LBLfi2" Visibility="Visible"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>Kut fi3</Label> <Label Name="LBLfi3" Visibility="Visible"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>Kut fi5</Label> <Label Name="LBLfi5" Visibility="Visible"></Label> </StackPanel>

</StackPanel>

23

</StackPanel> </Grid> </Window>

7.2

XAML prozora sa grafovima

<Window x:Class="grafovi" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="grafovi" Height="auto" Width="400"> <Grid> <StackPanel Orientation="Vertical"> <GroupBox Header="Grafovi"> <StackPanel Orientation="Vertical"> <Canvas Name="CVSgraf" Height="400" Width="360" Background="BurlyWood"> </Canvas> <Button Name="BTNgrafClear">Oisti povrinu</Button> </StackPanel> </GroupBox> <GroupBox Header="Informacije"> <StackPanel Orientation="Vertical"> <StackPanel Orientation="Horizontal"> <CheckBox Name="CHBva">Brzina tocke A</CheckBox> <Rectangle Fill="Cyan" Width="10" Height="10"></Rectangle> <Label Name="LBLvaABS"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <CheckBox Name="CHBvb">Brzina tocke B</CheckBox> <Rectangle Fill="Magenta" Width="10" Height="10"></Rectangle> <Label Name="LBLvbABS"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <CheckBox Name="CHBvc">Brzina tocke C</CheckBox> <Rectangle Fill="White" Width="10" Height="10"></Rectangle> <Label Name="LBLvcABS"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <CheckBox Name="CHBvd">Brzina tocke D</CheckBox> <Rectangle Fill="Lime" Width="10" Height="10"></Rectangle> <Label Name="LBLvdABS"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <CheckBox Name="CHBaa">Ubrzanje tocke A</CheckBox> <Rectangle Fill="Crimson" Width="10" Height="10"></Rectangle> <Label Name="LBLaaABS"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <CheckBox Name="CHBab">Ubrzanje tocke B</CheckBox> <Rectangle Width="10" Height="10" Fill="Blue"></Rectangle> <Label Name="LBLabABS"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <CheckBox Name="CHBac">Ubrzanje tocke C</CheckBox> <Rectangle Width="10" Height="10" Fill="Gray"></Rectangle>

24

<Label Name="LBLacABS"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <CheckBox Name="CHBad">Ubrzanje tocke D</CheckBox> <Rectangle Fill="Gold" Width="10" Height="10"></Rectangle> <Label Name="LBLadABS"></Label> </StackPanel> </StackPanel> </GroupBox> </StackPanel> </Grid> </Window>

7.3

Visual Basic kod osnovnog prozora

Class Window1 p1 i p2 su korijeni kvadratne jednadzbe javno dostupni Public p1, p2 As Single javno dostupan timer koji upravlja intervalom animacije Public dt As New System.Windows.Threading.DispatcherTimer varijabla koja govori da li je timer ukljucen, tj, da li se animacija vrti Public animt As Boolean Public Shared g As Boolean Public nW As New grafovi Private Sub SLDpreznetacija_ValueChanged(ByVal sender As Object, ByVal e As System.Windows.RoutedPro TXTpogonskiKut.Text = SLDpreznetacija.Value izracun() nacrtaj() fuk() If SLDpreznetacija.Value = 360 And animt = True Then SLDpreznetacija.Value = 1 End If End Sub Private Sub izracun() definiranje kuteva poluga i kutne brzine pogonske poluge Dim fi1, fi2, fi3, fi5, w1 As Single w1 = (TXTrpm.Text) * Math.PI / 30 fi1 = TXTpogonskiKut.Text kvadratna(-1.8 * Math.Cos(TXTpogonskiKut.Text * Math.PI / 180) + 3, 2 * Math.Sin(TXTpogonskiKut. If p1 > p2 Then fi2 = 2 * Math.Atan(p1) * (180 / Math.PI) Else fi2 = 2 * Math.Atan(p2) * (180 / Math.PI) End If

kvadratna(-0.2 * Math.Cos(TXTpogonskiKut.Text * Math.PI / 180) + 1, 2 * Math.Sin(TXTpogonskiKut. If p1 > p2 Then fi3 = 2 * Math.Atan(p1) * (180 / Math.PI) Else fi3 = 2 * Math.Atan(p2) * (180 / Math.PI) End If

25

fi5 = 180 * Math.Asin((200 - (50 * Math.Sin(TXTpogonskiKut.Text * Math.PI / 180))) / 317.65) / M

Dim w2, w3, w5 As Single w5 = (-50 * w1 * Math.Cos(fi1 * Math.PI / 180)) / (317.65 * Math.Cos(fi5 * Math.PI / 180)) w2 = (w1 * 50 * Math.Sin((fi1 - fi3) * Math.PI / 180)) / (125 * Math.Sin((fi3 - fi2) * Math.PI / w3 = (w1 * 50 * Math.Sin((fi1 - fi2) * Math.PI / 180)) / (125 * Math.Sin((fi3 - fi2) * Math.PI / LBLomega1.Content = w1 LBLomega2.Content = w2 LBLomega3.Content = w3 LBLomega5.Content = w5 Dim vax, vay, vbx, vby, vdx, vbax, vbay, vcx, vcy As Single

vax = -w1 * 50 * Math.Sin(fi1 * Math.PI / 180) vay = w1 * 50 * Math.Cos(fi1 * Math.PI / 180) vbx = -w3 * 125 * Math.Sin(fi3 * Math.PI / 180) vby = w3 * 125 * Math.Cos(fi3 * Math.PI / 180) vbax = -w2 * 125 * Math.Sin(fi2 * Math.PI / 180) vbay = w2 * 125 * Math.Cos(fi2 * Math.PI / 180) vdx = 50 * w1 * (-Math.Sin(fi1 * Math.PI / 180) + Math.Cos(fi1 * Math.PI / 180) * Math.Tan(fi5 * vcx = vbx - ((125 * w2) * Math.Sin(fi2 * Math.PI / 180)) vcy = vby + ((125 * w2) * Math.Cos(fi2 * Math.PI / 180)) dodjeljivanje razlicitim label-ima odgovarajuce vrijednosti LBLVAX.Content = vax LBLVAY.Content = vay LBLVBX.Content = vbx LBLVBY.Content = vby LBLVDX.Content = vdx LBLVDY.Content = 0 LBLVCX.Content = vcx LBLVCY.Content = vcy LBLfi2.Content = fi2 LBLfi3.Content = fi3 LBLfi5.Content = fi5 kutna ubrzanja alpha2 i alpha 3 Dim a2, a3, a5 As Single ubrzanja zglobnih tocaka Dim aax, aay, abax, abay, abx, aby, adx, ady, acx, acy As Single

a2 = ((Math.Pow(w2, 2) * 50 * Math.Cos((fi2 - fi3) * Math.PI / 180)) + (Math.Pow(w1, 2) * 50 * M aax = -Math.Pow(w1, 2) * 50 * Math.Cos(fi1 * Math.PI / 180) aay = -Math.Pow(w1, 2) * 50 * Math.Sin(fi1 * Math.PI / 180) abax = (-a2 * 50 * Math.Sin(fi2 * Math.PI / 180)) - (Math.Pow(w2, 2) * 50 * Math.Cos(fi2 * Math. abay = (a2 * 50 * Math.Cos(fi2 * Math.PI / 180)) - (Math.Pow(w2, 2) * 50 * Math.Sin(fi2 * Math.P abx = aax + abax aby = aay + abay a3 = (-Math.Pow(w3, 2) * 125 * Math.Cos(fi3 * Math.PI / 180)) / (125 * Math.Sin(fi3 * Math.PI / a5 = ((50 * Math.Pow(w1, 2) * Math.Sin(fi1 * Math.PI / 180)) + (50 * Math.Pow(w1, 2) * Math.Sin( acx = abx - (Math.Pow(w2, 2) * 125 * Math.Cos(fi2 * Math.PI / 180)) acy = aby + (a2 * 125 * Math.Cos(fi2 * -Math.PI / 180)) LBLAAX.Content = aax LBLABX.Content = abx LBLAAY.Content = aay LBLABY.Content = aby LBLalpha2.Content = a2

26

LBLalpha3.Content = a3 LBLalpha5.Content = a5 LBLalpha1.Content = 0 LBLACX.Content = acx LBLACY.Content = acy

adx = ((-Math.Pow(w1, 2) * 50 * Math.Cos((fi1 - fi5) * Math.PI / 180)) - (Math.Pow(w5, 2) * 317. ady = 0 LBLADY.Content = ady LBLADX.Content = adx End Sub Private Sub kvadratna(ByVal a As Single, ByVal b As Single, ByVal c As Single) Dim d As Double d = Math.Sqrt(-4 * a * c) p1 = (-b + d) / (2 * a) p2 = (-b - d) / (2 * a) End Sub Private Sub nacrtaj() brise sve podelemente canvasa prije nego ih ponovo nacrta CVSprezentacija.Children.Clear() definiranje duzina poluga mehanizma Dim r1, r2, r3, r4, r5 As Single r1 = 50 r2 = 125 r3 = 125 r4 = 100 r5 = 317.65 definiranje linija koje predstavljaju poluge mehanizma L1=r1 Dim L1 As New Line L1.X1 = 100 L1.Y1 = -100 L1.Stroke = System.Windows.Media.Brushes.Black L1.StrokeThickness = 2 L1.X2 = L1.X1 + (r1 * Math.Cos(TXTpogonskiKut.Text * Math.PI / 180)) L1.Y2 = L1.Y1 + (r1 * Math.Sin(TXTpogonskiKut.Text * Math.PI / 180)) l2=r2 Dim L2 As New Line L2.Stroke = System.Windows.Media.Brushes.Black L2.StrokeThickness = 2 L2.X1 = L1.X2 L2.Y1 = L1.Y2 L2.X2 = L2.X1 + (r2 * Math.Cos(LBLfi2.Content * Math.PI / 180)) L2.Y2 = L2.Y1 + (r2 * Math.Sin(LBLfi2.Content * Math.PI / 180)) L3=r3 Dim L3 As New Line L3.Stroke = System.Windows.Media.Brushes.Black L3.StrokeThickness = 2 L3.X1 = L1.X1 + 100 L3.Y1 = L1.Y1 L3.X2 = L2.X2 L3.Y2 = L2.Y2 L4=r2 produzetak Dim L4 As New Line L4.Stroke = System.Windows.Media.Brushes.Black

27

L4.StrokeThickness = 2 L4.X1 = L2.X2 L4.Y1 = L2.Y2 L4.X2 = L4.X1 + (r2 * Math.Cos(LBLfi2.Content * Math.PI / 180)) L4.Y2 = L4.Y1 + (r2 * Math.Sin(LBLfi2.Content * Math.PI / 180)) L5=r5 Dim L5 As New Line L5.Stroke = System.Windows.Media.Brushes.Black L5.StrokeThickness = 2 L5.X1 = L1.X2 L5.Y1 = L1.Y2 L5.X2 = L5.X1 + (317.65 * Math.Cos(LBLfi5.Content * Math.PI / 180)) L5.Y2 = L5.Y1 + (317.65 * Math.Sin(LBLfi5.Content * Math.PI / 180)) If CHBprezentacijaPoluge.IsChecked Then L1.X2 = 200 L1.Y2 = 0 L2.X2 = 200 L2.Y2 = 0 L5.X2 = 200 L5.Y2 = 0 L4.X2 = 200 L4.Y2 = 0 End If definiranje linija brzina Dim va As New Line va.Stroke = System.Windows.Media.Brushes.Green va.StrokeThickness = 3 va.X1 = L1.X2 va.Y1 = L1.Y2 va.X2 = va.X1 + LBLVAX.Content va.Y2 = va.Y1 + LBLVAY.Content Dim vb As New Line vb.Stroke = System.Windows.Media.Brushes.Green vb.StrokeThickness = 3 vb.X1 = L2.X2 vb.Y1 = L2.Y2 vb.X2 = vb.X1 + LBLVBX.Content vb.Y2 = vb.Y1 + LBLVBY.Content Dim vd As New Line vd.Stroke = System.Windows.Media.Brushes.Green vd.StrokeThickness = 3 vd.X1 = L5.X2 vd.Y1 = L5.Y2 vd.X2 = vd.X1 + LBLVDX.Content vd.Y2 = vd.Y1 + LBLVDY.Content Dim vc As New Line vc.Stroke = System.Windows.Media.Brushes.Green vc.StrokeThickness = 3 vc.X1 = L4.X2 vc.Y1 = L4.Y2 vc.X2 = vc.X1 + LBLVCX.Content

28

vc.Y2 = vc.Y1 + LBLVCY.Content definiranje linija ubrzanja Dim aa As New Line aa.Stroke = System.Windows.Media.Brushes.Red aa.StrokeThickness = 3 aa.X1 = L1.X2 aa.Y1 = L1.Y2 aa.X2 = aa.X1 + LBLAAX.Content aa.Y2 = aa.Y1 + LBLAAY.Content Dim ab As New Line ab.Stroke = System.Windows.Media.Brushes.Red ab.StrokeThickness = 3 ab.X1 = L2.X2 ab.Y1 = L2.Y2 ab.X2 = ab.X1 + LBLABX.Content ab.Y2 = ab.Y1 + LBLABY.Content Dim ad As New Line ad.Stroke = System.Windows.Media.Brushes.Red ad.StrokeThickness = 3 ad.X1 = L5.X2 ad.Y1 = L5.Y2 ad.X2 = ad.X1 + LBLADX.Content ad.Y2 = ad.Y1 + LBLADY.Content Dim ac As New Line ac.Stroke = System.Windows.Media.Brushes.Red ac.StrokeThickness = 3 ac.X1 = L4.X2 ac.Y1 = L4.Y2 ac.X2 = ac.X1 + LBLACX.Content ac.Y2 = ac.Y1 + LBLACY.Content dodavanje linija canvasu If CHBprezentacijaPoluge.IsChecked = False Then tba.Foreground = System.Windows.Media.Brushes.Black tbb.Foreground = System.Windows.Media.Brushes.Black tbc.Foreground = System.Windows.Media.Brushes.Black tbd.Foreground = System.Windows.Media.Brushes.Black CVSprezentacija.Children.Add(L1) CVSprezentacija.Children.Add(L2) CVSprezentacija.Children.Add(L3) CVSprezentacija.Children.Add(L4) CVSprezentacija.Children.Add(L5) CVSprezentacija.SetLeft(tba, L1.X2) CVSprezentacija.SetTop(tba, L1.Y2) CVSprezentacija.Children.Add(tba) tba.Visibility = Windows.Visibility.Visible CVSprezentacija.SetLeft(tbb, L2.X2) CVSprezentacija.SetTop(tbb, L2.Y2) CVSprezentacija.Children.Add(tbb) tbb.Visibility = Windows.Visibility.Visible CVSprezentacija.SetLeft(tbc, L4.X2) CVSprezentacija.SetTop(tbc, L4.Y2)

29

CVSprezentacija.Children.Add(tbc) tbc.Visibility = Windows.Visibility.Visible CVSprezentacija.SetLeft(tbd, L5.X2) CVSprezentacija.SetTop(tbd, L5.Y2) CVSprezentacija.Children.Add(tbd) tbd.Visibility = Windows.Visibility.Visible End If If CHBprezentacijaBrzine.IsChecked Then CVSprezentacija.Children.Add(va) CVSprezentacija.Children.Add(vb) CVSprezentacija.Children.Add(vd) CVSprezentacija.Children.Add(vc) End If If CHBprezentacijaUbrzanja.IsChecked Then CVSprezentacija.Children.Add(aa) CVSprezentacija.Children.Add(ab) CVSprezentacija.Children.Add(ad) CVSprezentacija.Children.Add(ac) End If If CHBprezentacijaPoluge.IsChecked = True And CHBprezentacijaBrzine.IsChecked Then tbav.Foreground = System.Windows.Media.Brushes.Green tbbv.Foreground = System.Windows.Media.Brushes.Green tbcv.Foreground = System.Windows.Media.Brushes.Green tbdv.Foreground = System.Windows.Media.Brushes.Green CVSprezentacija.SetLeft(tbav, va.X2) CVSprezentacija.SetTop(tbav, va.Y2) tbav.Visibility = Windows.Visibility.Visible CVSprezentacija.Children.Add(tbav) CVSprezentacija.SetLeft(tbbv, vb.X2) CVSprezentacija.SetTop(tbbv, vb.Y2) tbbv.Visibility = Windows.Visibility.Visible CVSprezentacija.Children.Add(tbbv) CVSprezentacija.SetLeft(tbcv, vc.X2) CVSprezentacija.SetTop(tbcv, vc.Y2) tbcv.Visibility = Windows.Visibility.Visible CVSprezentacija.Children.Add(tbcv) CVSprezentacija.SetLeft(tbdv, vd.X2) CVSprezentacija.SetTop(tbdv, vd.Y2) tbdv.Visibility = Windows.Visibility.Visible CVSprezentacija.Children.Add(tbdv) End If If CHBprezentacijaUbrzanja.IsChecked And CHBprezentacijaPoluge.IsChecked Then tbaa.Foreground = System.Windows.Media.Brushes.Red tbba.Foreground = System.Windows.Media.Brushes.Red tbca.Foreground = System.Windows.Media.Brushes.Red tbda.Foreground = System.Windows.Media.Brushes.Red CVSprezentacija.SetLeft(tbaa, aa.X2) CVSprezentacija.SetTop(tbaa, aa.Y2) tbaa.Visibility = Windows.Visibility.Visible CVSprezentacija.Children.Add(tbaa) CVSprezentacija.SetLeft(tbba, ab.X2) CVSprezentacija.SetTop(tbba, ab.Y2)

30

tbba.Visibility = Windows.Visibility.Visible CVSprezentacija.Children.Add(tbba) CVSprezentacija.SetLeft(tbca, ac.X2) CVSprezentacija.SetTop(tbca, ac.Y2) tbca.Visibility = Windows.Visibility.Visible CVSprezentacija.Children.Add(tbca) CVSprezentacija.SetLeft(tbda, ad.X2) CVSprezentacija.SetTop(tbda, ad.Y2) tbda.Visibility = Windows.Visibility.Visible CVSprezentacija.Children.Add(tbda) End If End Sub Private Sub fuk() If g = True Then If nW.CHBva.IsChecked Then Dim vas As Single vas = Math.Sqrt(Math.Pow(LBLVAX.Content, 2) + Math.Pow(LBLVAY.Content, 2)) nW.LBLvaABS.Content = vas Dim va As New Ellipse va.StrokeThickness = 2 va.Width = 2 va.Height = 2 va.Fill = System.Windows.Media.Brushes.Cyan nW.CVSgraf.SetLeft(va, TXTpogonskiKut.Text) nW.CVSgraf.SetBottom(va, nW.LBLvaABS.Content) nW.CVSgraf.Children.Add(va) End If If nW.CHBvb.IsChecked Then Dim vbs As Single vbs = Math.Sqrt(Math.Pow(LBLVBX.Content, 2) + Math.Pow(LBLVBY.Content, 2)) nW.LBLvbABS.Content = vbs Dim vb As New Ellipse vb.StrokeThickness = 2 vb.Width = 2 vb.Height = 2 vb.Fill = System.Windows.Media.Brushes.Magenta nW.CVSgraf.SetLeft(vb, TXTpogonskiKut.Text) nW.CVSgraf.SetBottom(vb, nW.LBLvbABS.Content) nW.CVSgraf.Children.Add(vb) End If If nW.CHBvd.IsChecked Then Dim vds As Single vds = Math.Sqrt(Math.Pow(LBLVDX.Content, 2) + Math.Pow(LBLVDY.Content, 2)) nW.LBLvdABS.Content = vds Dim vd As New Ellipse vd.StrokeThickness = 2 vd.Width = 2 vd.Height = 2 vd.Fill = System.Windows.Media.Brushes.Lime nW.CVSgraf.SetLeft(vd, TXTpogonskiKut.Text) nW.CVSgraf.SetBottom(vd, nW.LBLvdABS.Content) nW.CVSgraf.Children.Add(vd) End If If nW.CHBaa.IsChecked Then Dim aas As Single

31

aas = Math.Sqrt(Math.Pow(LBLAAX.Content, 2) + Math.Pow(LBLAAY.Content, nW.LBLaaABS.Content = aas Dim aa As New Ellipse aa.StrokeThickness = 2 aa.Width = 2 aa.Height = 2 aa.Fill = System.Windows.Media.Brushes.Crimson nW.CVSgraf.SetLeft(aa, TXTpogonskiKut.Text) nW.CVSgraf.SetBottom(aa, nW.LBLaaABS.Content) nW.CVSgraf.Children.Add(aa) End If If nW.CHBab.IsChecked Then Dim abs As Single abs = Math.Sqrt(Math.Pow(LBLABX.Content, 2) + Math.Pow(LBLABY.Content, nW.LBLabABS.Content = abs Dim ab As New Ellipse ab.StrokeThickness = 2 ab.Width = 2 ab.Height = 2 ab.Fill = System.Windows.Media.Brushes.Blue nW.CVSgraf.SetLeft(ab, TXTpogonskiKut.Text) nW.CVSgraf.SetBottom(ab, nW.LBLabABS.Content) nW.CVSgraf.Children.Add(ab) End If If nW.CHBad.IsChecked Then Dim ads As Single ads = Math.Sqrt(Math.Pow(LBLADX.Content, 2) + Math.Pow(LBLADY.Content, nW.LBLadABS.Content = ads Dim ad As New Ellipse ad.StrokeThickness = 2 ad.Width = 2 ad.Height = 2 ad.Fill = System.Windows.Media.Brushes.Gold nW.CVSgraf.SetLeft(ad, TXTpogonskiKut.Text) nW.CVSgraf.SetBottom(ad, nW.LBLadABS.Content) nW.CVSgraf.Children.Add(ad) End If If nW.CHBvc.IsChecked Then Dim vcs As Single vcs = Math.Sqrt(Math.Pow(LBLVCX.Content, 2) + Math.Pow(LBLVCY.Content, nW.LBLvcABS.Content = vcs Dim vc As New Ellipse vc.StrokeThickness = 2 vc.Width = 2 vc.Height = 2 vc.Fill = System.Windows.Media.Brushes.White nW.CVSgraf.SetLeft(vc, TXTpogonskiKut.Text) nW.CVSgraf.SetBottom(vc, nW.LBLvcABS.Content) nW.CVSgraf.Children.Add(vc) End If If nW.CHBac.IsChecked Then Dim acs As Single acs = Math.Sqrt(Math.Pow(LBLACX.Content, 2) + Math.Pow(LBLACY.Content, nW.LBLacABS.Content = acs Dim ac As New Ellipse ac.StrokeThickness = 2

2))

2))

2))

2))

2))

32

ac.Width = 2 ac.Height = 2 ac.Fill = System.Windows.Media.Brushes.Gray nW.CVSgraf.SetLeft(ac, TXTpogonskiKut.Text) nW.CVSgraf.SetBottom(ac, nW.LBLacABS.Content) nW.CVSgraf.Children.Add(ac) End If End If End Sub Private Sub TXTrpm_TextChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.TextChange stringIntegerCheck(sender.text, sender) End Sub provjera unosa numerickih vrijednosti Public Sub stringIntegerCheck(ByVal textS As String, ByVal salje As Object) Dim sCount As Integer = textS.Count If sCount > 0 Then Dim karakter As Integer For i As Integer = 0 To sCount - 1 karakter = Asc(textS.Substring(i, 1)) Select Case karakter Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 Case Else salje.Text = textS.Substring(0, i) Exit Sub End Select Next Exit Sub End If End Sub Private Sub BTNIzracun_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArg SLDpreznetacija.Value = TXTpogonskiKut.Text izracun() nacrtaj() End Sub Private Sub dt_plus() SLDpreznetacija.Value = SLDpreznetacija.Value + 1 End Sub Private Sub BTNpokreni_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArg dt.Interval = TimeSpan.FromMilliseconds(SLDanimacija.Value) AddHandler dt.Tick, AddressOf dt_plus dt.IsEnabled = True animt = True dt.Start() End Sub Private Sub BTNstani_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) animt = False dt.Stop() dt.IsEnabled = False End Sub Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handle animt = False g = False End Sub Private Sub BTNgraf_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) nW.Show() g = True

33

End Sub End Class

7.4

Visual Basic kod prozora sa grafovima

Partial Public Class grafovi Private Sub grafovi_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs e.Cancel = True Window1.g = False Me.Hide() End Sub Private Sub BTNgrafClear_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventA CVSgraf.Children.Clear() End Sub End Class

34

Literatura
[1] Robert L. Norton, DESIGN OF MACHINERY: An Introduction to the Synthesis and Analysis of Mechanisms and Machines, WCB/McGraw-Hill, 1999. [2] Matejiek, Franjo, Kinematika sa zbirkom zadataka, Strojarski Fakultet u Slavonskom Brodu, 2009. c [3] Visual Basic .NET Informacije na http://msdn.microsoft.com/en-us/vbasic/ms789056 [4] Visual Basic 2008 Express Edition Informacije na http://www.microsoft.com/express/Windows/

35

You might also like