Automaattinen pesäpallon syöttölaite - Automaatio

AALTO YLIOPISTON TEKNILLINEN KORKEAKOULU
Automaattinen pesäpallon
syöttölaite
AS-0.3200 Automaatio- ja systeemitekniikan projektityöt
Tekijät:
Reidar Udd 67449W
Olli Mäentaka 64376E
Dan Anttila 66917W
Osasto:
Valvoja:
Työmäärä:
Aloitusajankohta:
Lopetusajankohta:
Automaatio- ja systeemitekniikka
Jussi Suomela
3 op per tekijä
7.9.2010
7.12.2010
Työn tavoitteena on suunnitella ja rakentaa automaattinen pesäpallon syöttölaite. Laite on
maksimissaan 30 sentin korkuinen ja syöttölautasen kokoinen. Toiminta on seuraava.
Lyöjä pyytää syötön esimerkiksi (jalka)nappia painamalla. Kone odottaa vakioajan +
satunnaisajan, jonka jälkeen ampuu pallon ilmaan. Syötön korkeus on sekä säädettävissä
vakioksi että asetettavissa satunnaiseksi järkevälle välille. Syöttötarkkuuden on oltava
riittävä, jotta pallo pudotessaan osuu takaisin lautaselle. Toimilaite voi olla sähköinen tai
pneumaattinen. Sähköisen toimilaitteen on toimittava 12 tai 24 voltin tasavirralla tai 240
voltin vaihtovirralla. Pneumaattisen toimilaitteen on toimittava painealueella 4-9 bar.
Työhön kuuluu laitteen suunnittelu, komponenttien hankinta, rakentaminen, laitteen
ohjauksen ja toimintojen ohjelmointi, laitteen testaus, demonstrointi sekä työn raportointi.
Mekaniikan rakentamisessa saa tarvittaessa tukea Tapio Leppäseltä. Hyväksytyt
komponenttihankinnat saa laskuttaa laitokselta. Työn kesto on puoli vuotta ja se soveltuu
2-3 hengen ryhmälle. Työn laajuus on noin 3op/henkilö.
2
Sisältö
1.
Esipuhe ...................................................................................................................................................... 3
2.
Johdanto .................................................................................................................................................... 3
3.
Fysiikka ...................................................................................................................................................... 4
3.1.
Teoria ................................................................................................................................................. 4
3.2.
Laskut................................................................................................................................................. 6
4.
Laitteet....................................................................................................................................................... 7
4.1.
Elmo Cello digitaalinen servo-ohjain ................................................................................................. 7
4.2.
Maxon harjallinnen 250W sähkömoottori ja planeettavaihde ......................................................... 8
4.3.
Enkooderi HEDS-5540 ........................................................................................................................ 8
4.4.
Solenoidi ............................................................................................................................................ 8
4.5.
Jännitelähteet .................................................................................................................................... 9
4.6.
Kytkennät......................................................................................................................................... 10
5.
Mekaniikka .............................................................................................................................................. 13
5.1.
Varsi ja kiinnityskehikko .................................................................................................................. 13
5.2.
Latauslaite........................................................................................................................................ 14
6.
Ohjelmointi .............................................................................................................................................. 16
7.
Tulokset ................................................................................................................................................... 19
7.1.
Osumatarkkuus................................................................................................................................ 19
7.2.
Satunnainen heittokorkeus ............................................................................................................. 20
8.
Ajankäyttö ............................................................................................................................................... 21
9.
Yhteenveto ja loppukommentit .............................................................................................................. 22
10.
Liitteet.................................................................................................................................................. 23
10.1.
Fysiikan esimerkkejä eri arvoilla .................................................................................................. 23
10.2.
Käytetyt osat ................................................................................................................................ 24
10.3.
Kytkentäkaaviot ........................................................................................................................... 25
10.4.
Ohjelmakoodi kommentoituna ................................................................................................... 26
10.5.
Taulukot ajankäytöstä ................................................................................................................. 28
10.6.
Käyttöohje ................................................................................................................................... 31
3
1. Esipuhe
Haluamme kiittää osaston henkilökuntaa heidän antamista tuesta ja neuvoista tätä projektia tehdessä.
Erityisesti haluamme kiittää Sami Kielostoa, jolta saimme usein neuvoa elektroniikkaan liittyen, Tapio
Leppästä joka auttoi mekaniikan kanssa ja ohjaajaamme Jussi Suomelaa joka järjesti meille tilat ja laitteet.
2. Johdanto
Tämä dokumentti on kurssiin Automaatio- ja systeemitekniikan projektityöt suoritettavan projektin
loppudokumentti. Projektin nimi on ”Automaattinen pesäpallon syöttölaite” ja sen alkuperäinen
tehtävänanto on esitetty etusivulla.
Projektissa suunnitellaan ja rakennetaan automaattinen pesäpallon syöttölaite. Syöttölaitteen toiminnot
ovat pallon heittäminen ilmaan napin painalluksella ja automaattinen seuraavan pallon lataus
heittolaitteeseen. Heiton korkeutta säädetään säätövastuksella jonka lisäksi kytkimellä määritetään jos
heittokorkeuteen halutaan satunnaisuutta vai ei. Virtalähteinä käytetään neljän jännitelähteen pakettia,
jonka kanssa on kytketty rinnan kolme 12 V akkua, joihin sähkömoottori voi syöttää virtaa jarrutuksen
yhteydessä.
Valmis laite on tehtävänannossa määritettyjä mittoja paljon suurempi. Tämä johtuu käytettävissä olevasta
sähkömoottorista sekä sen yhteydessä olevasta vaihteistosta, joka vaatii pitkä varren (1,5 m) heittääkseen
pallon tarpeeksi korkealle ilmaan. Muut tehtävänannon vaatimukset on saavutettu. Alla selitetään projektin
kaikki osa-alueet.
4
3. Fysiikka
Konelukkarin toiminta voidaan mallintaa suhteellisen yksinkertaisesti perusfysiikan avulla. Heittotilanteessa
moottori alkaa kääntää heittovartta ala-asennosta ennalta määrätyllä teholla, kunnes heittovarren ollessa
vaaka-asennossa, moottori jarruttaa täydellä teholla ja varsi pysähtyy pallon jatkaessa matkaansa suoraan
ylöspäin.
3.1.
Teoria
Moottorinohjainta ohjelmoitaessa moottorille menevälle virralle on asetettu yläraja. Heittotilanteessa
moottorille syötetään suhteellisen tasaisesti maksimivirtaa, jolloin moottorin tuottama teho saadaan
kaavasta
,
jossa P on teho, U jännite ja I virta.
Koska moottorissamme käytössä olleessa vaihteistossa on suuri välityssuhde, vaihteiston hyötysuhde on
huono. Moottorilta vaihteiston kautta varrelle syötetty teho saadaan kaavasta
,
jossa Pout on ulos saatava teho ja hyötysuhde
Moottorin hyötykäyttöön tuottama energia sitoutuu konelukkarin eri osiin: Pallon ja varren
potentiaalienergiaksi sekä pallon, varren, vaihteiston ja moottorin liike-energiaksi. Potentiaalienergiat
saadaan laskettua kaavalla
,
jossa E on potentiaalienergia, m on massa, g on painovoimavakio ja h korkeusero.
Pallon potentiaalienergiaa laskettaessa korkeuserona h on pallon sijainti heiton alussa ja heittovarren
ollessa vaaka-asennossa. Varren potentiaalienergiaa laskettaessa korkeusero h on noin puolet palloon
verrattuna johtuen painopisteestä.
Pallon liike-energia saadaan kaavasta
,
jossa v on nopeus.
Nopeutena käytetään pallon nopeutta hetkellä, jolloin heittovarsi on vaakatasossa ja juuri aloittamassa
jarrutuksen.
Moottorin, vaihteiston ja varren liike-energiat saadaan kaavalla
,
jossa J on yhteenlaskettu hitausmomentti ja
,
kulmanopeus. Varren hitausmomentti lasketaan kaavalla
5
jossa r on säde.
Moottorin ja vaihteiston hitausmomentit ovat saatu valmistajan tuotekatalogista.
Kun tiedetään pallon haluttu nousukorkeus, saadaan tarvittava lähtönopeus kaavoista


√
,
missä korkeutena h on pallon haluttu nousukorkeus siitä pisteestä, kun heittovarsi on vaakasuorassa ja juuri
aloittamassa jarrutuksen.
Nyt kun on selvillä energiamäärä joka moottorin tulee tuottaa, sekä teho jolla moottori voi tuottaa
energiaa, voidaan kiihdytysaika t laskea kaavalla

Koska kiihdytysaika vaikuttaa oleellisesti siihen mikä on kiihdytysmatka asteina ja samalla mikä on
tarvittava potentiaalienergia pallolle ja heittovarrelle, ei energiamäärä ole tällä hetkellä vielä tiedossa.
Iteroinnilla saadaan kuitenkin laskettua lopullinen kiihdytysmatka heitolle.
Todellisuudessa kiihdytysmatka on kuitenkin pidempi, johtuen esimerkiksi siitä että sähkömoottorista ei
saada täyttä tehoa alhaisimmilla kierrosnopeuksilla.
6
3.2.
Laskut
Liitteessä 1 on laskettu lukkarillemme heittokorkeuksia, kiihdytyskorkeuksia ja kiihdytyskulmia erilaisilla
moottorin tehoilla, moottorin maksimipyörimisnopeuksilla ja varren pituuksilla. Kuvassa 1 on esitetty
havainnekuvan avulla, mitä eri termeillä tarkoitetaan konelukkarin tapauksessa. Laskuissa käytetyt arvot,
jotka eivät käy ilmi liitteen taulukosta ovat:
-
vaihteiston hyötysuhde 0.7
pallon massa 0.16 kg
varren tiheys 0.32 kg/m
vaihteiston välityssuhde 92.8:1
Eri moottorin tehoilla ja eri pyörimisnopeuksilla laskettujen arvojen on tarkoitus havainnollistaa, kuinka
konelukkarin tapauksessa monella eri asialla on paljon merkitystä lopputuloksen kannalta. Laskuissa on siis
laskettu sillä teoreettisella olettamuksella, että moottorista saadaan täysi teho koko kiihdytyksen ajalta ja
että varsi pysäytetään salamannopeasti sen saavuttaessa vaakatason. Todellisuudessa näin ei kuitenkaan
ole, joten tarvittavat kiihdytysmatkat ovat todellisuudessa suurempia ja lukkarin on entistä vaikeampi
toteuttaa alkuperäiset vaatimukset koon suhteen.
Kuva 1 Fysiikkalaskuissa käytettyjen muuttujien selitykset
7
4. Laitteet
Projektityössä käytettiin ainoastaan Automaatio- ja systeemitekniikan osastolla aikaisemmin käytössä
olleita laitteita, mistä seurasi että kaikki laitteet eivät olleet optimaaliset tähän projektiin. Näistä
tärkeimmät ovat Maxon 250 W sähkömoottori planeettavaihteella ja Elmo moottorinohjain. Uuden pallon
lataamista hallitaan solenoidilla. Kaikkien käytössä olleiden laitteiden mallit ja ominaisuudet on esitetty
liitteessä 2.
4.1.
Elmo Cello digitaalinen servo-ohjain
Moottoria ohjataan Elmo Motion Controlin SimpleIQ sarjan digitaalisella servo-ohjaimella Cello. Cello on
älykäs moottorinohjain jonka ominaisuuksiin kuuluu automaattinen PID-parametrien viritys sekä useiden
takaisinkytkentöjen, sisääntulojen ja ulostulojen hallinta.
Laitteessa on 17 sisäänmenoa ja viisi ulostuloa. Toteutuksessa käytetään neljää sisäänmenoa ja yhtä
ulostuloa.
Kuva 2 Elmo Motion Control Cello moottorinohjain
8
Kuvassa 2 nähdään Cellon ulkomuoto. Etu-alalla nähdään I/O portit J2 ja J1 sekä toinen kahdesta
takaisinkytkentäportista, Feedback A. Näiden kytkennät selitetään alempana.
Cellon
ohjekirjat
ovat
ladattavissa
Elmo
Motion
Controlin
http://www.elmomc.com/support/downloads-operating-manuals-main.htm.
4.2.
kotisivuilla
osoitteessa
Maxon harjallinnen 250W sähkömoottori ja planeettavaihde
Projektissa hyödynnetään osastolla aikaisemmin käytössä ollutta harjallista Maxonin valmistamaa 250 W
sähkömoottoria. Moottorin tarkka malli ei ole tiedossa. Tätä yritettiin selvittää mittaamalla moottorin
sisäinen resistanssi jonka arvoksi saatiin 5,8 Ω. Tarkalleen tätä arvoa vastaavaa mallia ei löydetty Maxonin
tuoteluettelosta. Koska emme tienneet tarkalleen kuinka paljon jännitettä moottori kestää, käytimme
maksimissaan 36 voltin jännitettä.
Moottoriin on kytketty planeettavaihde, jonka mallia ei myöskään tiedetty. Vaihteen välityssuhde
selvitettiin antamalla moottorille käsky pyöriä tietty määrä kierroksia ja tarkkailemalla kuinka monta
kierrosta akseli tämän seurauksena pyöri. Tuloksia verrattiin Maxonin tuoteluettelossa listattuihin
mahdollisiin arvoihin. Tämän perustella välityssuhteen todettiin olevan 92,8:1. Tähän projektiin olisi sopinut
paremmin alhaisemmalla välityssuhteella varustettu vaihteisto, koska silloin heittovarren kulmanopeus olisi
suurempi.
4.3.
Enkooderi HEDS-5540
Moottorin positiosta pidetään kirjaa moottoriin kiinnitetyllä EADS-5540 enkooderilla. Enkooderissa on kaksi
kanavaa + indeksikanava. Pulssimäärä kierroksella on 500.
4.4.
Solenoidi
Uuden pallon automaattista latausta varten käytetään hieman kallistettua muoviputkea, jonka päälle on
asetettu solenoidin kuvan 3 mukaisesti. Solenoidi kytketään ohjauselektroniikan kautta Cellon ulostuloon.
Elektroniikasta kerrotaan tarkemmin kappaleessa 5.2.
9
Kuva 3 Solenoidi ja sen kiinnitys palloja pitelevään muoviputkeen.
Kuvassa 3 on esitetty miten solenoidi on kiinnitetty muoviputkeen. Solenoidin tappia varten on porattu
putkeen reikä. Tappiin on kiinnitetty aluslaatta joka estää tappia tippumasta putkeen kokonaan. Kun on
aika päästää seuraava pallo kauhaan, solenoidin tappi nousee juuri sopivaksi ajaksi ylös, jotta yksi pallo
valuu putkea pitkin kauhaan.
4.5.
Jännitelähteet
Jännitelähteinä käytetään laboratorio-olosuhteissa neljän jännitelähteen pakettia ja kolmea sarjaan
kytkettyä akkua. Nämä on esitetty kuvassa 4 sekä tarkemmin liitteessä 3. Akut toimivat puskureina, joita
tarvitaan niin kiihdytyksessä kuin jarrutuksessa. Kiihdyttäessä moottori vaatii enemmän virtaa (10 A) kuin
mitä sitä pyörittävät kaksi jännitelähdettä voivat syöttää (yhteensä enintään 5 A), ja silloin loput virrasta
otetaan akuista. Jarrutuksessa moottori toimii generaattorina ja syöttää hetkellisesti enintään 10 A.
Kyseinen virtaraja on asetettu Celloon ohjelmallisesti. Koska jännitelähteet eivät voi ottaa virtaa vastaan,
akut latautuvat.
10
Kuva 4 Neljä jännitelähdettä jotka on kytketty rinnan kolmen 12 V akun kanssa.
Kytkentäkaavio josta ilmenee, miten Elmo moottorinohjain kytketään akkuihin ja jännitelähteisiin on
esitetty liitteessä 3. Samasta liitteestä ilmenee myös sisään- ja ulostulojen kytkennät.
4.6.
Kytkennät
Elmo mottorinohjaimen kytkemiseksi sähkömoottoriin käytetään kahta takaisinkytkentää, Feedback A ja B.
Feeback A on 15 pinninen D-sub ja Feedback B 15 pinninen D-sub high-density. Sisään- ja ulostuloportteja
löytyy kaksi; J1 ja J2 joiden molempien tyyppi on 15-pinninen D-Sub high-density. Elmon kytketään RS-232
portin ja RS-232-USB kaapelin avulla tietokoneen USB-porttiin. Nämä portit näkyvät kuvissa 6 ja 7, jotka on
kopioitu Cellon manuaalista.
Kuva 5 Elmo moottorin ohjaimen yksi sivu, jossa näkyy molemmat I/O portit ja toinen kahdesta takaisinkytkentä-portista
11
Kuva 6 Elmo moottorinohjaimen toinen sivu, jossa toinen kahdesta takaisinkytkentä-porteista sekä CANopen ja RS-232 portit.
Taulukossa 1 on esitetty miten portit Feedback A ja B kytketään enkooderiin. Taulukon vasemmassa
sarakkeessa on esitetty Feedback B:n pinnit ja niiden toiminnot. Taulukkoon on merkitty mitkä ovat sisäänja mitkä ulostuloja. Oikeassa sarakkeessa nähdään, mihin kukin Feedback B:n pinni kytketään. Rivit kuuluvat
siis yhteen.
Taulukko 1 Feedback A ja B:n sekä enkooderin kytkeminen
Input
Feedback B
Enkooderi
Pinni Toiminto
Pinni Toiminto
1
3
8
9
3
5
4
1
Auxiliary channel A high output
Auxiliary channel B high output
Encoder supply voltage
Encoder supply voltage return
Output
Channel A
Channel B
Vcc
GND
Feedback A
Pinni Toiminto
Output
6
7
11
12
13
15
Buffered channel A output
Buffered channel A complement output
Buffered channel B output
Buffered channel B complement output
Buffered Index output
Supply return
Input
6
5
15
14
8
9
Channel A
Channel A complement
Channel B
Channel B complement
Index
Supply return
Toteutuksessa on neljä sisäänmenoa joiden avulla ohjataan laitteen toimintaa. Nämä ovat valinta
satunnaiselle tai vakiolle heittokorkeudelle, painonappi joka laukaisee heiton, virtakytkin ja analoginen
korkeuden säätö. Nämä kaikki on kytketty I/O porttiin J2. Järjestelmässä on yksi porttiin J1 kytketty
ulostulo. Näiden porttien pinnit ja niiden toiminnot on esitetty taulukossa 2.
12
Taulukko 2 I/O porttien J1 ja J2 kytkennät
I/O J1
Pinni
Signaali
5 Programmable output 3
10 Programmable output return
I/O J2
Pinni
1
3
4
5
6
8
9
10
Signaali
Programmable input 5
Programmable input 6
Programmable input 10
Analog input 1 +
Programmable input return 5
Programmable input return 6
Programmable input return 10
Analog input 1 -
Toiminto
Solenoidin tapin nosto
Toiminto
Moodi; vakio korkeus vai satunnainen
Lähtökytkin pallon heittämiseksi
Virtakytkin, oltava päällä jotta pallo heitetään
Heittokorkeuden säätövastus
13
5. Mekaniikka
Lukkarin tärkeimmät osat ovat sähkömoottori, siihen kiinnitetty vaihteisto ja sen akseliin kiinnitetty varsi.
Toinen tärkeä osa on muoviputki johon on kiinnitetty solenoidi, joka annostelee palloja syöttökauhaan.
Tämän lisäksi laitteeseen kuuluu tralli sekä muutama lauta ja levy, joiden avulla sähkömoottori voidaan
kiinnittää pöytälevyyn esimerkiksi ruuvipuristimia käyttäen.
5.1.
Varsi ja kiinnityskehikko
Hidasta moottori-vaihteisto-yhdistelmää kompensoidaan pitkällä heittovarrella. Näin saadaan
tangenttinopeus tarpeeksi suureksi ja pallo lentämään korkealle, huonosta välityssuhteesta huolimatta.
Etäisyys moottorin akselista kauhaan on noin 1,5 metriä. Varren kiinnitystä varten osaston mekaanikko
Tapio Leppänen rakensi akseliin alumiinisen kiinnikkeen, joka näkyy kuvassa 7. Itse varsi on ilmeisesti osa
osastolla aikaisemmin rakennetusta pallopelin maalista. Varsi koostuu kahdesta putkenpalasta jotka on
yhdistetty välikappaleella. Välikappaleen takia varsi ei ole täysin jäykkä, vaan elää hieman. Tämä aiheuttaa
jonkin verran epätarkkuutta heittoon. Uutta samanlaista vartta etsittiin Etolasta, mutta ei löydetty. Varren
päässä on niin ikään välikappale, johon sovitimme juomapullosta tehdyn kauhan.
Kuva 7 Varsi on kiinnitetty moottorin akseliin alumiinisen välikappaleen avulla. Varren päässä on kauha, johon pallot laitetaan
heittoa varten. Pallot valuvat kauhaan automaattisesti muoviputken ja solenoidin avulla (selitetty alla).
14
Kuva 8 Sähkömoottori on asetettu pöydän päällä lepäävälle trallille. Koko systeemi on lukittu paikalleen lautojen, levyn ja
ruuvipuristimien avulla.
Moottorin akselin on sijaittava tarpeeksi korkealla jotta kiihdytysmatka lattiasta vaakatasoon on riittävän
pitkä. Puolentoista metrin varren kanssa sopiva korkeus on hieman pöytäkorkeutta suurempi, jolloin
moottori saavuttaa tarpeeksi suuren nopeuden pallon heittämiseksi kattoon asti. Toteutuksessa moottori
kiinnitettiin pöydän päälle kuvan 8 mukaisella tavalla. Pöydän päällä oleva tralli nostaa moottoria
korkeammalle ja suojaa pöytää vaurioilta. Trallin päälle asetetaan moottori, joka lukitaan paikalleen neljän
lankun sekä levyn avulla. Kiinnityksessä käytettiin ruuvipuristimia, jotta laite olisi helppo siirtää muualle
projektityön päätyttyä.
5.2.
Latauslaite
Jotta käyttäjä voisi keskittyä paremmin lyömiseen, tehtiin myös Cellon ohjaama latauslaite. Latauslaite on
puurakenteeseen kiinnitetty putki, johon mahtuu kerralla kahdeksan tennispalloa. Laite näkyy ylempänä
esitetyssä kuvassa 7. Putki on kallellaan, ja sille on kuusi eri asentoa jolla sen kulma voidaan muuttaa.
Putken alapäässä on solenoidi, jonka liikkuva rautasydän on tappi. Tappi on mitoitettu niin, että kun
solenoidi on aktivoituna, pallo mahtuu liikkumaan putkessa sen ohi. Solenoidi on kiinnitetty putken päälle,
joten kun solenoidi ei ole aktivoituna, tappi putoaa maan vetovoiman avulla ala-asentoonsa. Alaasennossaan tappi on noin 2 cm putken sisäpuolella, ja näin estää putkessa olevia palloja liikkumasta.
15
Solenoidi on aktivoituneena runsaat 200 ms; viimeisessä versiossa koodista se on 225 ms. Sopiva aika
löydettiin iteroimalla, mutta se riippuu putken kulmasta sekä putkessa jäljellä olevien pallojen
lukumäärästä. Jos kulma on liian jyrkkä, enemmän kuin yksi pallo saattaa ehtiä livahtaa ohi, kun taas
pienemmällä kulmalla tappi voi tulla takaisin alas liian nopeasti. Jyrkällä kulmalla pitää myös rajoittaa
pallojen lukumäärä, jotta solenoidi jaksaisi nostaa tapin. Latauslaitteen puutteellinen robustisuus ei
kuitenkaan ole kriittistä, koska tämä on opiskelijaprojekti eikä ole tarkoitettu valmiiksi tuotteeksi.
Solenoidi saa virtansa 12 V jännitelähteestä, ja vaatii tapin nostamiseen enemmän virtaa kuin Cellon
digitaaliseen ulostulon läpi voi syöttää. Tästä syystä solenoidia varten piti rakentaa hieman elektroniikkaa,
jonka kytkentäkaavio esitetty liitteessä 2. Kytkentöjä varten rakennettiin protolevy joka on esitetty kuvassa
8. Digitaalisen ulostulon virtasilmukassa virtaa ovat rajoittamassa kaksi 1 kΩ vastusta, jotka samalla tekevät
kanavatransistorin ohjausjännitteestä 6 V. Tämä jännite riittää asettamaan kanavatransistorin
kyllästystilaan. Kun kanavatransistori on kyllästystilassa, solenoidin virtasilmukka on suljettu ja solenoidi
aktivoituu. Solenoidin rinnalla on diodi, joka muodostaa solenoidin kanssa pienemmän silmukan johon
solenoidi voi purkautua kun kanavatransistori ei enää vedä. Solenoidin ja diodin sisäiset vastukset
kuluttavat solenoidin magneettikenttään varastoidun energian nopeasti. R2 on alasvetovastus, joka
varmistaa että kanavatransistori ei johda silloin kuin digitaalinen ulostulo ei ole päällä.
Kuva 9 Protolevy solenoidia ohjaavaa ulostuloa varten.
16
6. Ohjelmointi
Moottoriohjaimen ohjelmointi on toteutettu valmistajan omalla editorilla, Elmo Studiolla. Elmo Studio on
ilmainen työkalu, joka asennetaan Composer ohjelmiston mukana. Studio:ssa on apuvälineet ohjelmien
lataamiseen, tarkistamiseen ja virheiden etsintään. Ohjelmointikielen syntaksi muistuttaa C:tä, mutta
täydennettynä moottorin ohjaamiseen tarkoitetuilla erikoisfunktioilla. Ohjelmoinnin avuksi Elmo tarjoaa
myös manuaalit, tosin jotkut asiat esitettiin harmittavan puutteellisesti. Onneksi niiden tukihenkilöstö
vastasi sähköposteihin kiitettävästi, joten tarvittaessa apua oli saatavissa nopeasti.
Ohjelma koostuu main-funktiosta sekä sen kutsumista alifunktioista. Main-funktio sisältää ohjelman
logiikan ja reagoi käyttäjän antamiin syötteisiin, ja alifunktiot huolehtivat moottorin liikeratojen
hallitsemisesta main-funktion antamien parametrien avulla. Ohjelma on näin saatu jaettua helposti
ymmärrettäviin osiin, joiden keskinäinen vuorovaikutus on selkeä. Käytännössä ohjelma ajetaan
sekvenssissä, jossa kiihdytetään, jarrutetaan, peruutetaan ja ladataan seuraava pallo. Näistä vain
kiihdytyksen ja jarrutuksen kesto muuttuu halutun nousukorkeuden, eli lähtönopeuden mukaan; muut osat
pysyvät vakioina. Ohjelmassa on kaksi moodia: vakioheitot säädettävällä korkeudella tai sattumanvaraiset
heitot. Käyttäjä valitsee moodin on/off-kytkimen avulla, ja moodia voi muuttaa heittojen välillä. Jos
valittuna ovat vakioheitot, heittoviive on vakio, mutta analogisen syöttölaitteen asentoa muutamalla voi
valita heittokorkeuden viiden eri vaihtoehdon välillä. Vaihtoehtoisessa moodissa ohjelma valitsee
heittoviiveen kahden ja neljän sekunnin välillä ja nousukorkeus vaihtelee ohjelmassa asetettujen rajojen
sisällä. Nousukorkeuteen vaikutetaan ohjelmassa kiihdytysramppia muuttamalla, koska silloin pallon
lähtönopeus ja kineettinen energia voidaan ohjata. Alla oleva kuva 10 esittää ohjelman aktiviteettikaavion.
Helpon muokattavuuden saamiseksi ensimmäiseksi ohjelmassa on koottu rajat ohjaamiseen, kuten virralle
ja nopeudelle. Main funktion alussa ohjelma asettaa alussa olevien vakioiden arvot raja-arvoiksi
liikkumisessa. Se lukee myös moottorin tämänhetkisen sijainnin, ja sen perusteella laskee oikeat sijainnit
liikkeen aloittamiseen ja lopettamiseen. Näiden pisteiden avulla moottoriohjain osaa itse tehdä
optimaalisin nopeusramppi jolla saavutetaan haluttu sijainti mahdollisimman nopeasti, eli kyseessä on
”bang-bang”-ohjaus. Pallo irtoaa kupista heti kun varsi jarruttaa nopeammin kuin maan vetovoima. Koska
halutaan että pallo irtoaa silloin kun varsi on vaakatasossa, varren liikkeen pysähtymispaikka on itse asiassa
hieman korkeammalla, jotta jarrutus alkaisi sopivassa kohdassa. Oikea paikka löytyi iteroimalla. Tämä
kuitenkin tarkoittaa että jos ajetaan selvästi alhaisemmalla nopeudella, myös jarrutus alkaa myöhemmin
jolloin pallo putoaa hieman eri paikassa. Tekemämme testien perusteella (kappale 7), tarkkuus on
tehtävänannon mukainen.
17
Kuva 10 Ohjelman aktiviteettikaavio
18
Tällä hetkellä ohjelma käynnistetään ajamalla main-funktio, joka voidaan helpoiten tehdä Composer
ohjelmassa Smart Terminalin kautta. Jos haluaa että ohjelmaa käynnistyy heti kun ohjain kytketään päälle,
pitää main-funktio nimetä uudelleen. Valmistaja on nimittäin määrittänyt että autoexec() niminen funktio
ajetaan automaattisesti. Koska meidän on tarve muuttaa ja testata koodia nopealla syklillä, tietokoneen
avulla ajettava ohjelma oli kätevämpi. Ohjaimen muistissa on tietysti siihen viimeiseksi ladattu koodi, joten
hyväksyttyjen lopputestien jälkeen kyseinen muutos olisi ollut perusteltua.
Ohjelman enimmäiskoko oli Studiossa 2048 tavua, joka tarkoitti että ominaisuuksien karttuessa kommentit
piti vähentää. Tämän vuoksi suoritettavissa koodissa kommentointi voidaan pitää puutteellisena, mutta
liitteenä olevan koodi on kommentoitu paremmin helpon luettavuuden saavuttamiseksi.
19
7. Tulokset
7.1.
Osumatarkkuus
Pesäpallolukkarimme osumatarkkuutta testattiin suorittamalla useita heittoja eri lähtönopeuksilla ja
merkitsemällä kohdat joihin pallot putosivat. Tarkkailtaessa pallojen putoamiskohtia yksittäisellä
nopeudella, huomattiin että kaikki osumat osuivat halkaisijaltaan noin 15 cm suuren ympyrän alueelle.
Tarkasteltaessa heittojen putoamiskohtia kaikilla testatuilla lähtönopeuksilla, nähtiin että kaikki heitot
putosivat noin 60cm x 20cm kokoiselle alueelle. Tämä on esitetty kuvassa 11. Toisin sanoen siirtämällä
heittolautanen (halkaisija 60 cm) oikeaan kohtaan, saadaan käytännössä kaikki syötöt osumaan
heittolautaselle syötön voimakkuudesta riippumatta, kuten kuvasta 12 ilmenee.
Kuva 11 Syöttötestit eri lähtönopeuksilla.
Kuva 12 Kaikki syötöt osuvat syöttölautasen sisään.
20
Erilaiset lähtönopeudet saatiin aikaan käyttämällä potentiometriä eli säätövastusta joka on kytketty Cellon
analogia-tuloon. Muuttamalla potentiometrin vastusta, muuttui Cellolle menevä ohjausviesti joka
puolestaan muutti ohjelmassa lukkarin heittonopeutta.
7.2.
Satunnainen heittokorkeus
Eräs valinnainen toiminto pesäpallolukkarissamme on satunnainen heittokorkeus. Tällä voidaan matkia
jossain määrin oikeaa pesäpallolukkaria, sillä pesäpallolukkarit eivät todellisuudessa heitä aina
samankorkuisia syöttöjä. Kuvassa 13 on esitetty nopeuden ohjausdataa useammassa eri heittotilanteessa.
Siitä käy siis ilmi kuinka eri heitot eroavat toisistaan kun valittuna on satunnainen heittokorkeus.
Kuva 13 Nopeuden ohjausdata eri heittojen aikana
21
8. Ajankäyttö
Kaiken kaikkiaan projektiin kului aikaa hieman yli 80 tuntia per henkilö. Työmäärä jakautui kuvan 14
esittämällä tavalla. Tarkemmat työmäärät henkilöittäin on ilmoitettu liitteessä 5.
Alussa paljon aikaa vei erityisesti yhteyden saaminen Cellon ja tietokoneen välille. Vaihdoimme myös
käytettävää sähkömoottoria, sillä edellinen oli heikko ja vaihteistossa oli välystä jonka takia
moottorinohjaimen virittäminen oli hankalaa. Edellisen moottorin akseliin kiinnitetty teline oli myös
epäkäytännöllinen.
Alkuun päästyämme aikaa vei osien etsiminen, johdotusten valmistaminen ja ohjelman muuttaminen sitä
mukaa kun laitteen ominaisuuksia lisättiin.
Aikataulu pysyi kaiken aikaa hyvin hallinnassa.
Lopputestit; 5
Tutustuminen ja
Cellon virittäminen;
10
Luennot ja esitykset;
12
Fysiikan
selvittäminen; 3
Cellon ohjelmointi; 8
Dokumentointi; 10
Lukkarin mekaniikan
rakentaminen; 4
Elektroniikka ja
johdotukset; 10
Testaus ja säätö; 20
Kuva 14 Työmäärä jaettuna osiin. Työmäärän yksikkö on tässä tunteja per henkilö. Yhteensä 82 tuntia per henkilö.
22
9. Yhteenveto ja loppukommentit
Projektityössä rakennettiin laite pesäpallon automaattiseen syöttämiseen. Laitteen ominaisuudet ovat
pallon heittäminen ilmaan nappia painamalla ja seuraavan pallon automaattinen asettaminen
heittokauhaan. Käyttäjä voi säätää heiton korkeutta sekä määrittää, haluaako hän satunnaisen vai
vakiokorkuisen heiton.
Projektityön aikana ei törmätty merkittäviin ongelmiin. Syöttölaitteesta tuli pitkän heittovarren johdosta
kookas. Kaikki muut tehtävänannossa annetut ominaisuudet saatiin toteutettua.
Liitteessä 6 on käyttöohje laitteelle.
23
10.
Liitteet
10.1. Fysiikan esimerkkejä eri arvoilla
Mootorin suurin Varren
Mootorin pyörimisnopeus pituus
teho (W) (rpm)
(m)
250
4000
0,4
250
4000
0,8
250
4000
1,2
250
4000
1,6
250
4000
2
Pallon
Tarvittava
nousukorkeus Kiihdytyskulma kiihdytyskorkeus
(m)
(astetta)
(m)
0,17
9,6
0,07
0,66
10,7
0,15
1,5
13
0,27
2,66
17
0,47
4,15
23,3
0,79
250
250
250
250
6000
6000
6000
6000
0,4
0,8
1,2
1,6
0,37
1,5
3,36
5,98
32,4
36,6
44,9
59
0,21
0,48
0,85
1,37
250
250
250
8000
8000
8000
0,4
0,8
1,2
0,66
2,66
5,98
76,9
86,5
104,8
0,39
0,8
1,2
500
500
500
500
500
4000
4000
4000
4000
4000
0,4
0,8
1,2
1,6
2
0,17
0,66
1,5
2,66
4,15
4,8
5,3
6,3
8,2
10,9
0,03
0,07
0,13
0,23
0,38
500
500
500
500
6000
6000
6000
6000
0,4
0,8
1,2
1,6
0,37
1,5
3,36
5,98
16,1
17,9
21,7
28,1
0,11
0,25
0,44
0,75
500
500
500
8000
8000
8000
0,4
0,8
1,2
0,66
2,66
5,98
38,2
42,7
51,8
0,25
0,54
0,94
24
10.2. Käytetyt osat
Alla on listattu projektissa käytetyt osat ja niiden tiedot, mikäli nämä ovat tiedossa.
Moottori:
Enkooderi:
Vaihteisto:
Moottoriohjain:
4x Jännitelähteet:
Akut:
Solenoidi:
2x kytkin
1x painike
Säätövastus
Diodi
2x 1 kΩ vastus
Kanavatransistori:
Varsi:
Kuppi:
Maxon DC motor, harjallinen, 250W, 36V
HP HEDS 5540, 500 CPT
Planeettavaihteisto, n=92.8:1
Elmo Cello 30/60
Velleman, 30V, 2.5 A
2x Europower EP 5-12 (12V, 5 AH), Huanyu HYS1240 (12V, 4AH)
Tuntematon (12V)
(MOSFET, N-tyyppi) 2SK2232
150 cm, muovia
1.5L PET pullo (suuosa)
25
10.3. Kytkentäkaaviot
26
10.4. Ohjelmakoodi kommentoituna
##AALTO
#define maxSpeed 110000 //pulses per seconds (=3300rpm). Gear max 3000 rpm,
#define returnSpeed 15000
#define maxAcc 1200000 //pulses per seconds^2. High enough to hit current limits
#define maxDec 1200000
#define loadTime 225 //In ms
#define cLimit 10; //Current peak limit
#define climitTime 3; //Peak limit time allowed in seconds
function MakeThrow (int MKpoint, int MKspeed) //full acc until wanted speed
mo=1;
SP=MKspeed; //Sets the speed for the next movement
PA=MKpoint; //Point-to-point movement using specified speed
BG;
until(MS==0); //Wait until the motion stops
wait 50; //Wait some more for final stabilization
return
function ToStart (int RTSpoint, int RTSspeed) //go to home position
SP=RTSspeed;
PA=RTSpoint; //could also be jog until a switch
BG;
until(MS==0); //Wait until the motion stops
wait 1000; //Wait until the rod stops shaking
return
function LoadBall(int time)
OB[3]=1; //Activates solenoid (lets one ball pass by)
wait time;
OB[3]=0;
return
function main()
int l, random, sysTime, homepos, lowpos, highpos, level;
//Sets the limits specified at the top of the program
SP=maxSpeed;
AC=maxAcc;
DC=maxDec;
PL[1]=cLimit; //Current peak limit
PL[2]=climitTime; //Peak limit time allowed
HL[2]=150000; //Velocity limit
LL[2]=-150000; //Velocity limit (backwards)
HL[3]=20000000; //Position limit
LL[3]=-2000000;
UM=5; //Single loop position control (Cello can support five modes, depending on sensor configuration)
ol[3]=1; //Sets the output 3 logic to ‘high’ (1=on)
ob[3]=0; //Makes sure the solenoid is down
mo=1; //Turns on the motor
27
homepos=PX; //Read position from main encoder
lowpos=homepos+1500; //Lifts it off the ground (used as reference)
highpos=lowpos+13000; //Horizontal position
ToStart(lowpos,3000); //Moves slowly to the start position
while(IP >= 49217536 ) //Checks that main switch is ON
if(IP == 67043328 ) //Main switch, boring=0 (Mode), launch button ON
sysTime=TM; //Generates a random number 1-200 depending on system clock
random=sysTime%200;
if(random<0)
random=-random;
end
wait (2000);
for l=0:random
wait 10; //Adds a random delay to the static two sec.
end
MakeThrow(highpos,maxSpeed-45000+random*225); //Uses reduced velocity
ToStart(lowpos,returnSpeed);
LoadBall(loadTime);
elseif(IP == 65994752) //Main switch, boring=1 (Mode), launch button ON
wait (2000);
if(AN[1]>9) //Checks the reading from the analog input
level=5;
elseif(AN[1]>7)
level=6;
elseif(AN[1]>5.5)
level=7;
elseif(AN[1]>4.6)
level=8;
else
level=10;
end
MakeThrow(highpos,(maxSpeed/10)*level); //Velocity depends on AN
ToStart(lowpos,returnSpeed); //Return to start
LoadBall(loadTime); // Load next ball
end
end// Continues the while loop
mo=0; //Shuts down the motor
return
28
10.5. Taulukot ajankäytöstä
Dan Anttila
Päiväys
Tunnit
7.9.2010
15.9.2010
17.9.2010
21.9.2010
22.9.2010
23.9.2010
24.9.2010
28.9.2010
6.10.2010
7.10.2010
14.10.2010
18.10.2010
29.10.2010
1.11.2010
2.11.2010
4.11.2010
8.11.2010
9.11.2010
10.11.2010
23.11.2010
25.11.2010
26.11.2010
28.11.2010
29.11.2010
7.12.2010
YHT
Kuvaus
3 Luento: Aiheisiin tutustuminen ja aiheen valinta
3 Tarvittavien osien keräily, piuhojen kytkentöjen määrittely
4 Piuhojen tekeminen/kolvaus, cello tietokoneeseen kiinni
4 Cellon ja moottorin testausta, suunnitelman tekemistä
3 Cellon viritystä, PI-arvojen haussa ei onnistuttu
3 Dokumentointia
3 Tapaaminen Suomelan kanssa, cellon viritystä
4 Suunnitelman hiominen, esitys ja luento
Uusi moottori ja vaihteisto: Speksien hakemista. Ei vieläkään PI3 termejä ohjaimelle
2 Moottorin testailua ja viritystä
2 Akkujen kytkentöjen tekeminen
Lukkarin alustan ja varren pidikkeen rakentamisen
1 ohjeistaminen
3 Väliraportin teko
3 Lukkarin testausta-> pallo 1,5m korkeuteen
Pallo 2 m korkeuteen, nappien kytkeminen celloon, väliraportti
7 ja luento
2 Napit toimimaan ohjelmassa ja käytännössä
3 Dokumentointia
4 AI-säädin elmoon (potentiometri)
1 Loppudokumentin tekoa
4 Pallotelineen rakentaminen, solenoidin kiinnittäminen, testaus
4 Loppudokumentin tekoa, laitteiston viilailua
5 Lopputestit, loppudokumentin tekoa
2 Loppudokumentoinita
5 Loppudokumentointia
3 Esitys ja muiden esitysten kuuntelu.
81
29
Olli Mäentaka
Päiväys
Tunnit Kuvaus
7.9.2010
3 Luento: Aiheisiin tutustuminen ja aiheen valinta
8.9.2010
14.9.2010
15.9.2010
17.9.2010
21.9.2010
22.9.2010
23.9.2010
24.9.2010
28.9.2010
2
2
3
4
4
3
3
3
4
Tapaaminen Jussi Suomelan kanssa ja aiheeseen sekä laitteistoon
tutustuminen
Konelukkarin fysiikan selvittämistä
Tarvittavien osien keräily, piuhojen kytkentöjen määrittely
Piuhojen tekeminen/kolvaus, cello tietokoneeseen kiinni
Cellon ja moottorin testausta, suunnitelman tekemistä
Cellon viritystä, PI-arvojen haussa ei onnistuttu
Dokumentointi/tehtäväverkko, fysiikkalaskuri valmiiksi
Tapaaminen Suomelan kanssa, cellon viritystä
Suunnitelman hiominen, esitys ja luento
6.10.2010
7.10.2010
14.10.2010
Uusi moottori ja vaihteisto: Speksien hakemista. Ei vieläkään PI3 termejä ohjaimelle
2 Moottorin testailua ja viritystä
2 Akkujen kytkentöjen tekeminen
18.10.2010
29.10.2010
1.11.2010
1 Lukkarin alustan ja varren pidikkeen rakentamisen ohjeistaminen
3 Väliraportin teko
3 Lukkarin testausta-> pallo 1,5m korkeuteen
2.11.2010
4.11.2010
8.11.2010
9.11.2010
10.11.2010
25.11.2010
26.11.2010
29.11.2010
7.12.2010
YHT
7
2
3
4
1
4
6
5
3
80
Pallo 2 m korkeuteen, nappien kytkeminen celloon, väliraportti ja
luento
Napit toimimaan ohjelmassa ja käytännössä
Loppudokumentin tekoa: Fysiikka ja sähkökytkennät
AI-säädin elmoon (potentiometri)
Loppudokumentin tekoa
Loppudokumentin tekoa, laitteiston viilailua
Lopputestit, loppudokumentin tekoa
Loppudokumentin tekoa
Loppuesitys ja luento
30
31
10.6. Käyttöohje
Tarkista aluksi että tarvittavat kytkennät ovat oikein, tämän dokumentin mukaisesti. Kytke myös
jännitelähteet päälle ja akkukaapelit kiinni, ja varmista että varsi on oikeassa asennossa nojaten lattiaan.
1.
Käynnistä Composer ohjelma Windowsissa, ja valitse ’Open Communication Directly’ (kuva 15).
Muuta tarvittaessa yhteysasetukset, ja paina ’Next (kuva 16).
Kuva 15 Aloitusvalikko
Kuva 16 Yhteyden muodostus Celloon
32
2. Jos yhteyden ottaminen onnistui, näet ’Smart Terminal’ (kuva 17), jonka avulla voit lähettää
ohjaimelle komentoja.
3. Samassa kuvassa on osoitettu nuolella mistä Studio ohjelmointityökalu käynnistetään. Paina
kuvaketta ja avaa haluttu ohjelma. Jos olet varma että ohjaimessa on vielä oikea ohjelma ladattu,
voit hypätä tämän vaiheen yli.
Studio
Kuva 17 Elmo Composer - Smart Terminal
4. Tarkista että koodi on oikein, jonka jälkeen voit ladata se Celloon; nuoli kuvassa 18. Ruudun
alareunasta voit seurata prosessia.
33
Lataa
ohjaimelle
Kuva 18 Elmo Studio
5.
6.
7.
8.
9.
10.
Jos lataaminen onnistui, voit nyt palata ’Smart Terminal’-ikkunaan, ja käynnistää ohjelmaa
antamalla komennon ”xq##main()”. Varsi nousee heiton alkuasentoon, ja jos sinulla on pääkytkin
ON asennossa, myös jää siihen asentoon odottamaan laukaisukomentoa.
HUOM: Jos main()-funktion nimen muuttaa autoexec():ksi, ohjelma käynnistyy automaattisesti kun
moottoriohjaimelle kytketään virta.
Voit vaihtaa satunnaisten ja vakioheittojen välillä moodivalitsimella; 1 tarkoittaa vakioheittoja ja 0
satunnaisia. Heittotapaan voit vaikuttaa joka heiton jälkeen, ilman uudelleenkäynnistämistä.
Heittonapilla laite käynnistää heittosekvenssin, jota edeltää heittotavasta riippuvainen viive (2-4
sekuntia).
Kun moottori on saavuttanut yläasentonsa, se palaa alkuun, ja samalla lataa seuraavan pallon, jos
latauslaitteessa on vielä palloja jäljellä.
Voit sammuttaa moottorin asettamalla pääkytkin OFF asentoon, jolloin varsi laskeutuu takaisin
maahan. Tämä tapahtuu vain jos moottori on alkuasennossa, eli varsi on lähellä maata.
Voit nyt sulkea Composer ohjelman, sammuttaa jännitelähteet ja kytkeä akut irti.