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.
© Copyright 2024