VAASAN YLIOPISTO TEKNILLINEN TIEDEKUNTA AUTOMAATIOTEKNIIKKA Juha Tuomas Niemi KUULAPELI LabVIEW-toteutus Diplomityö, joka on jätetty tarkastettavaksi diplomi-insinöörin tutkintoa varten Vaasassa 31.12.2006. Työn valvoja Jarmo Alander Työn ohjaaja Janne Koljonen 2 ALKULAUSE Olen tehnyt diplomityöni aiheesta, jonka laajuus oli niin suuri, että se oli jaettava kah- teen osa-alueeseen. Toisen osa-alueen tekijänä on insinööri Ismo Tupamäki. Diplomityö on tehty Seinäjoen ammattikorkeakoulun tiloissa, varastohuoneessa 244. Esitän kiitok- seni diplomityön valvojana toimineelle professori Jarmo Alanderille, sekä ohjaajana toimineelle diplomi-insinööri Janne Koljoselle, jonka opastukset ja kannustukset olivat ensisijaisen tärkeitä hankkeemme onnistumisen kannalta. Lisäksi kiitän kollegaani insi- nööri Ismo Tupamäkeä hyvästä yhteistyöstä, Juho Seppälää pelikehikon rakentamisesta, tiedostusvastaavaa Pia-Mari Riihilahtea tiivistelmän englannin kielen tarkastuksesta, lehtori Anna-Kaisa Alataloa suomen kielen kieliopin tarkastuksesta ja KLTITE03MA– luokkaa (Honkala, Saarinen, Siirilä ja Tuuri) rakennesuunnistelusta ja muita kollegoja kannustuksesta. Lämmin kiitos Merville kannustuksesta ja tuesta. Seinäjoella 31.12.2006 Juha Niemi 3 VAASAN YLIOPISTO Teknillinen tiedekunta Tekijä: Juha Niemi Diplomityön nimi: Kuulapeli: LabVIEW-toteutus Valvojan nimi: Jarmo Alander Ohjaajan nimi: Janne Koljonen Tutkinto: Diplomi-insinööri Laitos: Sähkö- ja automaatiotekniikan laitos Koulutusohjelma: Sähkö- ja energiatekniikan koulutusohjelma Suunta: Automaatiotekniikka Opintojen aloitusvuosi: 2000 Diplomityön valmistumisvuosi: 2006 Sivumäärä: 100 TIIVISTELMÄ Työssä toteutettiin kuulapeli, jossa kuulaa liikutetaan neliön muotoisen tasopinnan kal- tevuutta muuttamalla. Peli on moottoroitu ja ohjauksessa voidaan käyttää LabVIEW tietokoneohjelmaa, joka on toteutettu graafisella ohjelmointikielellä. Pelaaja voi ohjata tasojen kaltevuutta joko manuaalisesti Joystick-ohjaimen avulla tai automaattiajolla, jolloin pelin ylle sijoitettu kamera seuraa kuulan etenemistä tasolla ja mittaa kuulan sijainnin. LabVIEW-ympäristöön rakennettu ohjelma käsittelee mittaus- tiedon ja lähettää ohjauskäskyn PD-säätimen kautta tason kaltevuutta sääteleville as- kelmoottoreille kahta erillistä I2C-väylää pitkin. Työ jaettiin laajuutensa vuoksi kahteen osaan. Tässä osassa käsitellään lähinnä pelin mekaniikkaa, turvallisuutta ja ohjausta. Ismo Tupamäen toteuttamassa osassa käsitel- lään pelin käyttöliittymää ja konenäköä. Kuulapelillä suoritettiin useita testiajoja manuaali- ja automaattiohjauksilla. Manuaa- liohjauksella taso seurasi erinomaisesti joystick-ohjaimen liikkeitä sekä x että y- suuntien kallistuksissa. Pelaajan taidoista riippuen, kuulan liikuttelu tasolla onnistui varsin hyvin. Automaattiohjauksella paikannus ja säätö toimivat hyvin ja kuula pysähtyi jokaisella testiajolla määriteltyyn kohtaan tasoa keskimäärin 33 sekunnissa. Askelmoottorien hita- us, tasopinnan kuperuus ja kuulan pinnan epätasaisuus vaikeuttivat hiukan kuulan ohjat- tavuutta. AVAINSANAT: LabVIEW, graafinen ohjelmointi, askelmoottori, PID-säätö, I2C, pelit 4 UNIVERSITY OF VAASA Faculty of technology Author: Juha Niemi Topic of the Thesis: Ball balancing game: LabVIEW-implementation Supervisor: Jarmo Alander Instructor: Janne Koljonen Degree: Master of Science in Technology Department: Department of Electrical Engineering and Automation Degree Programme: Degree Programme in Electrical and Energy Engineering Major of Subject: Automation Year of Entering the University: 2000 Year of Completing the Thesis: 2006 Pages: 100 ABSTRACT This project develops a ball balancing game, where a ball is moved through changing the inclination angle of a rectangular play arena. The game is motorized and can be con- trolled by a program implemented as LabVIEW graphical program modules. The player can control the inclination angle of the play arena manually with a Joystick. An automatic drive can also be used for controlling; a camera is located above the game arena and it tracks the progress of the ball on the surface by measuring its position. A program built in the LabVIEW platform processes the measurement data and sends the command through a PD controller to the step motors that control the angle of the plane surface. The data goes through two different I2C connectors. The project is divided into two different theses, due to the extent of the project. This thesis focuses mainly on the mechanics, safety and controls of the game. In the second thesis done by Ismo Tupamäki the focus will be on the operating system and machine vision. Several test runs were made using both manual and automatic controls. When using the manual control, the surface followed the joystick movements in the x and y direction excellently. Depending on the player’s skill, he / she was quite successful in controlling the ball movements. With automatic control, the location and adjustment worked well and the ball stopped in the predetermined place within 33 seconds on the average. Because of the slow speed on the step motor, the platform’s convex surfaces and the ball’s uneven surface the ball’s manoeuvrability is slightly complicated. KEYWORDS: LabVIEW, graphical programming, stepper motor, PID-controller, I2C 5 SISÄLLYSLUETTELO ALKULAUSE 2 TIIVISTELMÄ 3 ABSTRACT 4 SISÄLLYSLUETTELO 5 LYHENNE JA MUUTTUJALUETTELO 8 1. JOHDANTO 10 1.1. Työn vaiheet 11 1.2. Automaatiopelit 12 1.3. Tavoitteet 16 1.4. Kuulapelin toiminta 16 1.5. Sisältö 17 1.6. LabVIEW 18 1.6.1. LabVIEW’n taustoja 18 1.6.2. LabVIEW-ohjelmien rakenne 19 1.6.3. Graafisen ohjelmoinnin etuja 22 1.6.4. Graafisen ohjelmoinnin haittoja 23 1.7. Säätötekniikka 23 1.7.1. Takaisinkytketty säätö 24 1.7.2. PID-säädin 25 1.7.3. Stabiilisuus ja epästabiilisuus 27 1.7.4. PID-säätimen virittäminen 28 1.7.5. PID ja sumea säätö 28 1.7.6. PID ja geneettiset algoritmit 29 1.8. I²C – väylä 29 1.8.1. Yleistä 30 1.8.2. I²C:n linjat 30 1.8.3. Isäntä-renki-väylä 31 6 2. RAKENNE JA MEKANIIKKA 33 2.1. Kuulapelin rakenne 33 2.2. Askelmoottorit 37 2.2.1. Yleistä 37 2.2.2. Askelmoottorin toimintaperiaate 39 2.2.3. Muuttuvan reluktanssin moottori 40 2.2.4. Kestomagnetoitu askelmoottori 41 2.2.5. Hybridimoottori 42 2.3. Pelikuulan testaaminen 43 3. PELIN OHJAUS 48 3.1. Manuaaliohjaus 49 3.2. Automaattiajo 51 3.2.1. Sysäyskäyttö 52 3.2.2. Perusajo 56 3.2.3. PD-säätö 58 3.3. Rajat 62 3.4. Valintakytkin 64 3.5. Askelmoottoreiden ohjaus 64 4. TULOKSIA 67 4.1. Nopeuden säätö 67 4.1.1. Kuvaajan tulkitseminen 68 4.1.2. Mittaukset ja kommentit 68 4.1.3. PD-säädön parametriviritys 73 4.2. Tulosten tarkastelu 77 4.3. Kokemuksia ja ongelmia 79 5. YHTEENVETO 82 5.1. Tulevaisuus 84 VIITTEET 85 LIITTEET 90 7 Liite 1. Askelmoottoreiden kytkennät K8005 ohjainkorttiin. 90 Liite 2. CB-68LPR-kortti. 91 Liite 3. NI 6221 kytkentä 92 Liite 4. Askelmoottorin ohjainkortti K8005 93 Liite 5. Käsiajon ohjauskaavio. 94 Liite 6. Automaattiajon ohjauskaavio. 95 Liitteet 7 - 11. Kuvakelohkoluettelo 96 8 LYHENNE JA MUUTTUJALUETTELO α Pelitason kallistuskulma sα Aseteltava sysäyskulma maxα Pelitason kallistuksen ääriraja-arvo ω Kulmanopeus Rv /= )(te Paikannustiedon ja kohdekoordinaatin välinen erosuure )(1 te Muokattu erosuurearvo PD-säädön käyttöön soveltuvaksi PE Potentiaalienergia LE Lineaarienergia RE Rotaatioenergia g Maan vetovoima 9,81 m/s² h Kuulan putoamismatka J Kuulan hitausmomentti DK Derivointivahvistus pK Vahvistus L Pelitason pituus m Kuulan massa Tm Kuulan paikannustieto tasolla ),( yx mm= xm Kuulan paikannustieto / x-akseli ym Kuulan paikannustieto / y-akseli vx m Kuulan paikannustieto viiveellä / x-akseli yvm Kuulan paikannustieto viiveellä / y-akseli R Kuulan säde Tr Kohdekoordinaatit ),( yx rr= xr Kohdekoordinaatti / x-akseli yr Kohdekoordinaatti / y-akseli 9 pu Liukupotentiometrin arvo, mikä ilmoittaa tasokaltevuuden )(tu Lähtösignaaliarvo PD-säädöltä )()( 21 tutu += )(1 tu Lähtösignaaliarvo P-säädöltä )(1 teK P= )(2 tu Lähtösignaaliarvo D-säädöltä dt tde KD )(1= )(3 tu Lähtösignaaliarvo, joka on lisätty tasapainotila-arvoon )(5,2 tu+= )(4 tu Lähtösignaaliarvo, joka on vähennetty tasapainotila-arvosta )(5,2 tu−= Tv p Aseteltava perusnopeus ),( pypx vv= pxv Aseteltava perusnopeus / x-akseli pyv Aseteltava perusnopeus / y-akseli sv Aseteltava sysäysnopeus / kallistus spv Aseteltava sysäysnopeus / sysäyksen palautus 10 1. JOHDANTO Kuulapeli, jossa kuula ohjataan määrättyä reittiä pitkin erilaisten esteiden ja reikien ohitse manuaalisesti, on ollut suosikkipeli kaikenikäisille jo useiden vuosikymmenten ajan. Pelaaminen vaatii melkoista näppäryyttä ja kokemusta. Tässä diplomityössä esitel- tävä peli on kehitelty alkuperäisestä mallista. Automaatio (äly) on yhdistetty peliin ku- van 1 esittämällä tavalla tuomaan lisää haasteita ja mielenkiintoa pelaajalle. Kuva 1. Kuulapelin rakenne. 11 1.1. Työn vaiheet Idea kuulapelin automatisoimiseksi syntyi suunnittelupalaverissa Tupamäen Ismon kanssa. Mietimme mahdollista yhdessä toteutettavaa diplomityöaihetta, missä molem- milla olisi omat tutkimuskohteensa. Keskustelimme erilaisista vaihtoehdoista, mutta mikään ei tuntunut tarpeeksi haasteelliselta ja mielenkiintoiselta, kunnes keksimme kuu- lapelin. Olimme molemmat omistaneet kyseisen pelin joskus nuoruudessamme, joten sen toiminta oli hyvinkin tuttua. Ideoimme erilaisia asioita, mitä kaikkea voisimme työ- hömme liittää automaation saralta. Esille tulivat ohjaus- ja säätömenetelmät, mekaniik- ka, kuulan seurantajärjestelmä, käyttöliittymä yms. eli todella paljon selvitettäviä asioi- ta. Lisäksi kuulapeli tulisi rakentaa mahdollisimman halvalla, mikä toisi oman haasteen- sa automatisointiin. Ohjaajamme Janne Koljosen avustamana teimme työnjaon siitä, mitä osioita kumpikin osapuoli käsittelee opinnäytetyössään. Tässä osassa käsitellään lähinnä pelin mekaniik- kaan, turvallisuuteen ja perussäätöihin liittyviä asioita. Ismo Tupamäen opinnäytteessä käsitellään pelin käyttöliittymää ja kuvankäsittelyä. Kuulapelin suunnittelu aloitettiin kesällä 2005 pelin mekaniikan suunnittelulla. Syksyllä valittiin pelille käyttöympäristö, graafinen ohjelmointiympäristö LabVIEW. Ohjelmaan tutustuminen ja sen käytön opetteleminen työn ohessa vei lähes koko alkusyksyn. Lop- pusyksystä pelissä oli jo hieman ohjaukseen ja kuulan seurantaan liittyvää toimintaa. Alkukeväästä 2006 työ eteni hyvin hitaasti, johtuen työkiireistä, mutta loppukeväällä pelin toiminta parani koko ajan. Ongelmia oli runsaasti: yhden selvittyä tilalle ilmestyi aina uusi. Ensimmäinen takaraja itse opinnäytetyön valmistumiselle oli kesäkuu 2006. Kesällä 2006 työ eteni hyvin, säätö ja kuulan seuranta toimivat jo välttävästi ja parani- vat koko ajan. Ainoastaan kameran kuvausnopeuden ja säädön nopeuden kanssa oli on- gelmia. Jos nopeutta lisäsi, prosessoritehot nousivat 100 %:iin ja järjestelmä kaatui. On- gelmat selvisivät kohta kohdalta, joten peli oli toiminta- ja testauskuntoinen 09.10.2006. 12 1.2. Automaatiopelit Flipperi, ehkä kaikista tunnetuin kuulapeli, sähköistyi 1930-luvulla. Tämä mahdollisti automaattisen pistelaskusysteemin. Aluksi flipperissä kuula vain siirrettiin peliin ja toi- vottiin mahdollisimman hyviä pisteitä. Pelattavaksi flipperi tuli vuonna 1947, jolloin pelilaudan alareunaan asennettiin mailat, joilla kuulaa yritettiin pitää kentällä mahdolli- simman kauan (Vartiainen 1992). Automaattipelien alkutaipaleelta lähtien erilaiset testerit olivat jo erittäin suosittuja. Eri- tyisessä suosiossa olivat voimatesterit, ja shokkerit, jotka antoivat käyttäjälleen sähköis- kuja. Niiden väitettiin parantavan kaiken mahdollisen reumatismista päänsärkyyn. Sit- temmin tulivat reaktiotesterit, mistä hyvä esimerkki oli Speden Speleissä käytetty speedmaster-tyyppinen peli (Vartiainen 1992). Ensimmäiset levyautomaatit olivat pelkkiä kolikoilla toimivia gramofoneja. Ne soittivat ainoastaan yhtä kappaletta. Sähköllä vahvistettua ääntäkin saatiin odottaa aina 1920- luvun lopulle. Moderni jukebox syntyi 1930-luvulla, jolloin asiakkaat pääsivät itse va- litsemaan kappaleet. Suurin harppaus tapahtui 50-luvun alussa, kun vanhat savikiekko- levyt korvattiin (nopeuden 45 rpm.) vinyylilevyillä (Vartiainen 1992). Laitteita, joihin liittyy kuulan tai pallon tasapainotus, on kehitelty monenlaisia niin mal- liltaan kuin ohjaukseltaankin. Muun muassa Ka Cheok ja Nan Loh (1987) julkaisussa esitellään laite, joka koostuu metallisesta kuulasta, joka vierii kahden vierekkäin olevan kaarikiskon päällä. Kaarikiskot on kiinnitetty omalla radalla kulkevaan, servomoottoril- la liikuteltavaan vaunuun. Vaunun radan kaltevuutta voidaan muuttaa halutun suurui- seksi (ulkoinen häiriö). Servomoottorin akseliin on kytketty takogeneraattori osoitta- maan servomoottorin pyörimisnopeutta. Kuulan ja vaunun asematieto saadaan liukupo- tentiometreiltä. Laite tasapainottaa metallikuulan kaarien lakipisteeseen ja paikantaa vaunun keskelle rataprofiilia. Ohjausjärjestelmää testattiin kahdella tavalla: ilman ulkoisia häiriöitä, jol- loin vaunu liikkui kiskoilla, joiden kaltevuus oli 0º ja ulkoisen häiriön kanssa, jolloin 13 kiskojen kaltevuus oli > 0º. Kyseisen järjestelmän säätöön kehitelty, potentiometreiltä tulevia paikkatietoja ja moottorin takometriltä tulevaa nopeustietoa käsittelevä liikeyhtä- lö, on annettu matriisimuodossa. Näiden tietojen perusteella säätö laskee oikeanlaiset ohjausparametrit (nopeus, suunta) ja lähettää ne vaunua ohjaavalle servomoottorille (Ka Cheok ja Nan Loh 1987). E. Laukonen ja S. Yurkovich (1993) suunnittelivat pallon tasapainotuslaitteen, jossa PID-säädin ohjaa DC-moottoria, joka kallistelee keskiosastaan laakeroitua palkkia mo- lempiin suuntiin 50:1 välityssuhteen kautta. Laitteen tarkoitus on paikantaa pallo palkin keskikohtaan. Järjestelmässä on 32 valotransistoria (5V jännitesyötöllä) asennettuna palkin runkoon ja kaksi valonlähdettä, jotka valaisevat palkkia ylhäältä. Potentiometri, joka on kytketty palkin varteen, mittaa palkin kallistuskulmaa. Valotransistorit lähettä- vät pallon paikannustietoa ja potentiometri lähettää palkin kallistuskulmatietoa PID- säätimelle. PID-parametrit on valittu sellaiseksi, että DC-moottori toimii mahdollisim- man nopeasti, eivätkä säätöarvot ylity. Nykyään tietokoneet ja konenäkö ovat tulleet automaattipeleihin vahvasti mukaan. Esi- merkiksi Kostamo, Hyötyniemi & Kuosmanen (2005) toteuttivat pelin, missä palloa pidetään kuperan levyn päällä, joko tietokoneohjatusti tai käyttäjäohjatusti. Tietokoneel- la ohjatussa ajossa konenäkö paikantaa pallon ja laskee levyn kääntökulman. Käyttäjä- ohjatussa ajossa pelaaja voi vertailla omia taitojaan tietokonetta vastaan, ohjaten itse levyä ja yrittäen saada pallon levyn keskipisteeseen nopeammin kuin tietokone ja yrittää pitää se siellä. Levyn kallistelu on hoidettu kiinnittämällä levy ristinivelellä keskipisteestään laitteen runkoon ja kiinnittämällä levyn reunoille kaksi lineaarimoottoria 90 asteen kulmassa toisiinsa nähden. Tällöin ajamalla lineaarimoottorien karoja ylös tai alas saadaan levy kallistettua haluttuun kulmaan (Kostamo 2005). Pallon paikantamiseen käytetään konenäköä, jossa pallo kuvataan 30 kertaa sekunnissa videokameralla. Paikkatietoa ei kuitenkaan aivan suoraan käytetä hyväksi säädössä, vaan pallon paikan ja nopeuden laskemiseksi käytetään Kalman-suodatinta. Kalman- 14 suodattimen käytössä on se hyvä puoli, että se ottaa huomioon myös edelliset mittauk- set, jolloin saadaan tarkempi arvio pallon paikasta ja nopeudesta (Kostamo 2005). Kameralla otettu kuva viedään tietokoneelle. Tietokoneeseen ohjelmoitu säätäjä laskee halutun alustalevyn kulman pallon paikan ja nopeuden perusteella. Toisin sanoen pallon paikkaa ja nopeutta kerrotaan eri vakioilla, jotka on laskettu säätäjää suunniteltaessa, ja kun nämä tulot lasketaan yhteen, saadaan haluttu levyn kulma. Haluttu levyn kulma syötetään servo-ohjaimelle ohjearvoksi. Servo-ohjaimen tehtävä on ohjata lineaarimoot- toreille annettavaa virtaa ja säätää näin moottorien karojen paikkaa (Kostamo 2005). Koska lineaarimoottorit saavat aikaan lineaariliikkeen ilman mekaanista välitystä, ovat ne käytännössä lähes kulumattomia ja välyksettömiä. Lisäksi moottoreilla on erittäin hyvät dynaamiset ominaisuudet ja niillä päästää jopa 10 g:n kiihtyvyyksiin (Kostamo 2005). Dieter Zöpel (1998) toteutti laitteen, jonka toimintaperiaate on pitää kuula keskellä ta- soa samalla tavalla, kuin esimerkiksi tarjoilija tasapainottaa tarjotinta. Laite koostuu alumiinirungosta, tasosta, videokamerasta ja kahdesta muuttuvan reluktanssin askel- moottorista. Tason kallistelua ohjataan kahdella ortogonaalisella akselilla, joita askel- moottorit ohjaavat hihnojen välityksellä. Taso kallistu 15° molempiin suuntiin. Video- kamera on sijoitettu metrin korkeudelle tason yläpuolelle, josta paikannustieto välittyy 40 ms välein ohjaukselle. Säätö perustuu anturi- ja paikannustietojen muutoksiin reaaliajassa. Näiden muutosten perusteella säädin laskee oikeanlaiset kallistuskulmat tasolle. Ohjaus on toteutettu nel- jällä tietokoneella, joista ensimmäinen selvittää pallon sijainnin. Toinen tietokone las- kee tason kallistuskulmat α ja β . Tietokoneet kolme ja neljä kallistavat tasot todelli- siin kulmiin α ja β . Tietokoneiden välinen tiedonsiirto on toteutettu Can-väylällä (Zö- pel 1998). 15 Manuaaliajossa joystick-ohjaimelta lähtevä ohjaustieto välittyy tietokoneelle kaksi, joka laskee tason kallistuskulmat. Kallistustiedot välittyvät tietokoneille kolme ja neljä, jotka ohjaavat tasoja kallistelevia askelmoottoreita (Zöpel 1998). Dadios, Baylon, De Guzman, Florentino, Lee & Zulueta (2000) tutkivat konenäön ja sumean logiikan käyttöä pallon tasapainotuksessa. Testauslaite koostuu alumiinisesta palkista, jonka pituus on 600 mm, leveys 25 mm ja korkeus 11 mm. Palkki on kiinnitet- ty keskiosastaan kuulalaakerin välityksellä DC-moottoriin, joka pystyy kallistamaan palkkia 20º molempiin suuntiin. Potentiometrillä, joka on kytketty palkin varteen, mita- taan palkin kallistuskulmaa. Paineantureilla, jotka on sijoitettu palkkiin, mitataan pallon sijaintia. Palkkien päihin on asennettu puskurit, estämään pallon putoamisen. Ko- nenäköjärjestelmän kamera on sijoitettu n. 90 cm korkeudelle palkin yläpuolelle. Konenäköjärjestelmä määrittelee pallon paikan ja nopeuden. Konenäköjärjestelmä mää- rittelee tarkkaan pienimmänkin mahdollisen välimatkan, jonka pallo voi edetä palkilla. Vaikka pallo ei olisi yhteydessä palkkiin paineanturien välityksellä, niin konenäköjär- jestelmä tietää silti pallon paikan, antaen johdonmukaista tietoa järjestelmän hallitsemi- seksi. Tasapainotukseen voidaan käyttää sekä marmori että golf-palloja. Säädössä käy- tetään neljää muuttujaa: kulmanopeus, pallon paikkatieto, pallon nopeus ja palkin kallis- tuskulma. Kyseiset muuttujatiedot välittyvät sumealle logiikalle, joka ohjaa kulmia sää- televää DC-moottoria. Testiajoissa seurattiin kahta eri parametria, nimittäin poikkeamaa ja asetusaikaa. Sumea logiikka tasapainottaa pallon keskimäärin 4 mm toleranssilla noin 5,6 sekunnissa (Dadios 2000). Vaasan yliopistossa Koljonen (2004) toteutti pelin nimeltään Virtual Keeper, missä animoitu maalivahti pyrkii torjumaan pelaajan heittämän pallon. Maalin kuva ja maali- vahti animoidaan videotykillä valkokankaalle. Tässä pelissä konenäön avulla lasketaan maalia kohden heitetyn pallon lentorata. Kyseisen tiedon avulla animoitu maalivahti päättää, pallon ja maalin leikkauspisteen perusteella, minkälaisen torjunnan se esittää, eli mihin kohtaan maalia torjunta kohdistuu. Lisäksi simulaattori ilmoittaa heitetyn pal- lon lentonopeuden, sekä tilastoja parhaista nopeuksista. 16 1.3. Tavoitteet Asetimme tavoitteet, jälkikäteen arvioiden, vähän turhankin korkealle eli nimesimme pelillemme viisi tasoporrasta, joista toteuttaisimme vähintään kolme ensimmäistä tasoa. Tasot olivat seuraavat: 1. Mahdollistaa pallon kuljettamisen alkupisteestä kohdepisteeseen Joystick-ohjaimen avulla. 2. Edellisen toiminnan lisäksi konenäkö valvoo suoritusta, estäen mm. seinämiin tör- mäilyt. 3. Tietokone ohjaa konenäön opastamana pallon kohdepisteeseen ohjelmoitua reittiä pitkin. 4. Tietokone ohjaa pallon maaliin konenäön avulla etsien itse reitin. 5. Tietokone etsii nopeimman mahdollisen (optimaalisen) reitin lähdöstä maaliin. Työn edetessä jouduimme hiukan tinkimään tavoitteistamme, toteuttaen tasot 1 ja 3. Loput kolme tasoa jätimme mahdolliseen tulevaisuudessa tapahtuvaan jatkokehittelyyn. 1.4. Kuulapelin toiminta Pelin ohjain on toteutettu LabVIEW-nimisellä, graafisella ohjelmointiympäristöllä, mi- hin kaikki pelin vaatimat toiminnat on koottu yksittäisistä ohjelmamoduuleista eli virtu- aali-instrumenteista. Pelissä on kaksi toiminnallista tasoporrasta, käsi- ja automaattiajo. Käsiajossa pelikuula on tarkoitus kuljettaa Joystick-ohjaimen avulla haluttuun kohtaan tasoa, väistellen mahdollisia esteitä. Mekaaniset äärirajat estävät tasojen liiallisen kallis- tumisen. Tasojen kaltevuutta seuraavat liukupotentiometrit ohjaavat tasot takaisin vaa- katasoon aina, kun Joystick-ohjaimesta päästetään irti. Joystick-ohjaimen herkkyyttä on mahdollista säätää käyttöliittymässä sijaitsevalla virtuaalipotentiometrillä. Automaattiajossa annetaan käyttöliittymässä sijaitsevilla säätimillä x- ja y- koordinaattiarvot eli paikka, mihin halutaan pelikuulan tasolla kulkeutuvan. Kamera 17 seuraa pallon kulkua, lähettäen tietyin väliajoin x-y-koordinaattia pallon sijainnista ns. takaisinkytkentätietona säätimeen. Eroelin vertaa takaisinkytkentätietoa asetusarvoon ja lähettää erosuureen kallistuskulmia ohjaavalle säädölle. Kyseinen säätö vaikuttaa taso- jen kallistuskulmia ohjaavien askelmoottoreiden suuntaan ja kallistuskulmiin. Askel- moottorien suuntatietoon vaikuttavat myös erosuureen napaisuus, sekä x- ja y-akseleille sijoitettujen liukupotentiometrien ääriraja-asetukset. Automaattiajoon on myös mahdollista määritellä jokin erillinen rataprofiili, jota pitkin pelikuulan halutaan kulkevan. Kamera seuraa tässäkin tilanteessa teräskuulaa ja ohjaa sen edellä mainittujen menetelmien avulla määriteltyä rataprofiilia pitkin. 1.5. Sisältö Ensimmäinen luku sisältää edellisten lisäksi perusasioita LabVIEW-ohjelmointiympä- ristöstä, mm. taustoista ja ohjelmien rakenteesta. LabVIEW-ohjelmointiympäristö on esitelty tarkemmin Ismo Tupamäen diplomityössä. Lisäksi ensimmäisessä luvussa käsi- tellään, mitä säädöllä tarkoitetaan ja tutustutaan lähemmin PID-säätimeen ja sen virit- tämiseen, sekä esitellään I2C-sarjaväylä. Luvussa kaksi esitetään kuulapelin prototyyp- pi ja muutama rakenneidea mahdolliseen jatkokehittelyyn. Lisäksi tutustutaan erilaisiin askelmoottorityyppeihin ja niiden toimintaan, sekä etsitään kuulapelille paras mahdolli- nen pelikuula erilaisten testien avulla. Luvussa kolme esitetään LabVIEW-sovelluksella toteutetun ohjelman rakenne, koskien kuulapelin manuaali- ja automaattiajoa. Kuulapeli vaatii toimiakseen muutakin kuin hyvin suunnitellun mekaniikan ja toimivan säätöjärjestelmän, nimittäin tarkat säätöparametrit, oikeanlaisen pelivälineen ja tarkan paikannustiedon. Tämän vuoksi kuulapelillä on suoritettava erilaisia testiajoja, jotta nämä edellä luetellut asiat saataisiin kohdalleen. Luvussa neljä haetaan säätimelle par- haat mahdolliset säätöparametrit kokeellisesti, suoritetaan tuloksien tarkastelu ja kerro- taan kuulapelin suunnittelun ja rakentamisen tuomista kokemuksista. Kappaleessa viisi tehdään yhteenveto toteutuksesta ja suunnitelma, kuinka kuulapeliä voisi jatkokehittää. 18 1.6. LabVIEW LabVIEW on monipuolinen teollisuusautomaation, elektroniikan testauksen ja suunnit- telun ohjelmisto. Sen erinomainen graafisen suunnittelun kehitysympäristö on uudista- nut automaation ja mittausten suunnittelun. LabVIEW tarjoaa tehokkaan tavan mitata, analysoida ja esittää mittaustietoja tuotekehityksen kaikissa vaiheissa prototyypin suun- nittelusta tuotantotestaukseen. Se on avoin alusta, joka on yhteensopiva satojen kame- roiden, moottorikäyttöjen, TEDS-yhteensopivien anturien (älykkäät anturit) ja toimilait- teiden, OPC-käyttöisten teollisuuslaitteiden sekä yli 4 000 GPIB-, VXI-, PXI-, PCI-, sarja-, Ethernet- ja USB-liitäntäisten mittauslaitteiden kanssa. LabVIEW-ohjelmistoa on saatavana Windows-, Macintosh- ja Linux-käyttöjärjestelmiin (National Instruments 2006). Kuulapelin älynä toimii LabVIEW, graafinen ohjelmointiympäristö. Toisin sanoen kuu- lapelin kaikki ohjaus- ja säätoiminnot on ohjelmoitu LabVIEW-ohjelmiston erilaisista ohjelmamoduuleista ja yksittäisistä komponenteista. Tässä luvussa tutustutaan edellä mainitun ohjelmointiympäristön perusasioihin. 1.6.1. LabVIEW’n taustoja LabVIEW on graafinen ohjelmointiympäristö, jonka National Instruments kehitti noin kaksikymmentä vuotta sitten Macintosh-ympäristöön hyödyntääkseen tuon ajan tieto- koneita mittaustietojen käsittelyssä. National Instruments on yksi maailman suurimmis- ta PC-mittauskorttien valmistajista. LabVIEW-ohjelmasta on vuosien myötä kehittynyt valmistajakohtainen graafinen ohjelmointikieli, joka toimii nykyään myös muissa käyt- töjärjestelmissä. LabVIEW-ohjelman alkuperäinen käyttötarkoitus on lähinnä mittaus- tietojen keruu ja analysointi. Tämän vuoksi välineen käyttöliittymätoiminnoissa ovat hyvin edustettuina erilaiset painonapit, vierityspalkit ja piirturit. ASCII-merkkien syöt- töönkin on omat välineensä. Ohjelma voi tallettaa tietoa merkkimuodossa, jolloin se on helposti siirrettävissä Win- dows-välineillä esimerkiksi Exceliin jatkokäsittelyä varten. Muut talletusmuodot ovat numeerinen sellaisenaan ja numeerinen pakattuna. Nopeissa ja laajoissa mittaussovel- 19 luksissa tietoa voi nopeasti kerääntyä hyvinkin paljon, jopa useita kymmeniä megatavu- ja. Tämän vuoksi tiedon pakkaus on olennaisen tärkeää. Hyvät tietokantalinkit välinees- tä vielä puuttuvat (National Instruments 2006). LabVIEW-ohjelmalla tehdään esimerkiksi kuva-analyysejä. Graftek on yksi tällainen, jolla on sovelluksia mm. liekin analysointiin kolmiulotteisesti. Samoin on Helsingin teknillisessä korkeakoulussa tehty keinohorisontilla toteutettu lentosimulaattori. Ohjel- man sponsorina on ollut Ilmavoimat, jolla on puolestaan ollut antaa malliksi oikea USA:sta ostettu lentosimulaattori (Narikka 1996: 5). 1.6.2. LabVIEW-ohjelmien rakenne LabVIEW-ohjelma perustuu niin sanottujen ohjelmamoduulien eli virtuaali- instrumenttien (VI) käyttöön. Virtuaali-instrumenttien ulkonäkö ja toiminta on raken- nettu mukailemaan mahdollisimman tarkasti fyysisiä eli olemassa olevia laitteita ja komponentteja. Yksittäisellä instrumentilla on vain rajallinen määrä ominaisuuksia, kuten esimerkiksi ulkoisen analogiasignaalin mittaus tai mitatun signaalin graafinen esittäminen. Tästä johtuen varsinaiset LabVIEW-sovellukset ovat useista eri toimintoja simuloivista virtuaali-instrumenteistä koottuja kokonaisuuksia, joista jokaisella on oma tarkoituksensa (National Instruments 2006). Riippuen valituista instrumenteista käyttäjä pystyy myös itse muuttamaan mitattavan prosessin kulkua muuttamalla prosessin parametreja. Muutosten vaikutus on helppo nähdä välittömästi PC:n näytöltä. Juuri tämä ominaisuus tekee LabVIEW-ohjelmasta ihanteellisen tutkimus-, testaus- ja opetuskäyttöön. Olkoon ohjelma sitten liitetty johon- kin fyysisesti olemassa olevaan prosessiin, kuten laboratoriotyökokonaisuuteen, tai teh- täessä pelkkä ohjelmapohjainen simulaatio, LabVIEW on turvallinen vaihtoehto proses- sin säädön tutkimiseen tai harjoitteluun. Ohjelman tietokanta sisältää useita valmiita VI- kokonaisuuksia, mutta käyttäjä voi myös muokata olemassa olevia instrumentteja itse tai luoda kokonaan uusia (National Instruments 2006). 20 LabVIEW-sovelluksessa yksittäinen ohjelmamoduuli on siis nimeltään virtuaali- instrumentti eli VI. Käytännössä ohjelmamoduulien nimen laajenteena on vi eli ohjel- ma voi olla nimeltään vaikka PID.vi. On huomattava, että nimi ei välttämättä ole täs- sä tapauksessa DOS-tyyppinen tiedostonimi, vaan DOS-tiedostona on kirjasto (llb), jossa on VI:ja. Tämä johtuu siitä, että yhteensopivuuksien (Mac, Unix, DOS) vuoksi LabVIEW-ohjelmassa on sallittu jo alusta lähtien yli kahdeksanmerkkiset nimet (Na- tional Instruments 2006). Jos tarkastellaan VI:n rakennetta, niin huomaamme sen muodostuvan kahdesta eri osas- ta: Front Panel, missä sijaitsee etupaneeli eli käyttöliittymä (kuva 2), ja Block Diagram, missä sijaitsee varsinainen ohjelma eli ohjelman looginen toiminta (kuva 3) (Narikka 1996: 4). Kuva 2. Front Panel-ikkunassa sijaitsee etupaneeli eli käyttöliittymä. Ohjelmasta näky- vä etupaneeli muistuttaa fyysistä laitetta, koska se muodostuu napeista, mittareista, näy- töistä, säätimistä, sekä muista hallintaan liittyvistä toiminnoista. Näyttöön voidaan ge- neroida data hiirellä tai näppäimistöllä käsin ja muutokset ovat heti nähtävillä näytöl- lä. Tämä osa ohjelmasta on käyttäjän nähtävissä ja käytettävissä (Narikka 1996: 4). 21 Kuva 3. Block Diagram-ikkunassa, sijaitsee varsinainen ohjelma eli ohjelman looginen toiminta. Ohjelma on toteutettu graafisesti ja se muodostuu kuvakelohkoista. LabVIEV ohjelma voi muodostua itse pääohjelmasta sekä sen sisällä olevista pienemmistä alioh- jelmista (Narikka 1996: 4). Kuvan kytkennässä kameralta tulevista paikannustiedoista ),( yx mm otetaan näytteitä ),( yvvx mm yhden sekunnin välein. VI:n pääohjelma sijaitsee lohkokaaviossa. Ohjelma on toteutettu graafisesti ja se muo- dostuu kuvakelohkoista. LabVIEW ohjelma voi muodostua itse pääohjelmasta sekä sen sisällä olevista pienemmistä aliohjelmista. Alemman tason ohjelmia eli aliohjelmia kut- sutaan nimellä (SubVI) ja niitä voidaan käyttää itsenäisesti, kuten myös ylemmän tason pääohjelmia. Itse pääohjelma kannattaa jakaa näihin pienempiin aliohjelmiin, koska silloin kokonaisuus pysyy selkeämpänä ja toimintaa on helpompi ymmärtää (Kauhanen 1995: 9). LabVIEW’n hyvä puoli on juuri se, että toimivia tuloksia saadaan aikaan hyvinkin yk- sinkertaisella kuvakelohkokytkennällä ja kytkentöjen toimivuus on suhteellisen helppo testata. Yleisesti ohjelman suunnittelu kannattaa aloittaa etupaneelin (Front panel) puo- lelta siten, että haetaan tarvittavat ohjaukseen ja valvontaan liittyvät kuvakelohkot Cont- 22 rol-valikosta ja asetetaan ne etupaneeliin. Etupaneelissa ei haettujen kuvakelohkojen yhdistäminen onnistu, joten siirrytään seuraavaksi lohkokaavion (Block Diagram) puo- lelle. Etupaneeliin haetut kuvakelohkot näkyvät lohkokaavion puolella kytkennällisessä muodossa. Valitsemalla lohkokaavion Functions-valikosta ohjauksen apuvälineitä ja kytkemällä (langoittamalla) ne halutulla tavalla etupaneeliin haettujen kuvakelohkojen kanssa, saadaan aikaiseksi halutunlaisia toimintoja. (Lohilahti 2002). Liitteessä 7 on esitelty kuvakelohkoluettelo, josta näkyy kaikki tässä opinnäytetyössä esitetyt kuvakelohkot ja niiden selitykset. 1.6.3. Graafisen ohjelmoinnin etuja LabVIEW-ratkaisun periaatteiden selittäminen jollekin asiasta kiinnostuneelle, on syn- taksista johtuen yleensä varsin vaivatonta (Narikka 1996). Jos LabVIEW-sovelluksen lohkokaaviossa esitetty kytkentä kirjoitettaisiin auki sanalli- seen muotoon, esimerkiksi Java-kielellä, niin ohjelmaa tulisi todella paljon (Nadin 2004). Kysymyksessä on tietovuo-ohjelmointi, joten ohjelman sisäisiä apumuuttujia ei tarvita, jolloin niiden kanssa ei voi tulla ongelmiakaan. Lisäksi tyyppitarkastukset tulevat auto- maattisesti tehdyksi siinä vaiheessa, kun tietopisteet kytketään toisiinsa (Nadin 2004). Vektori- ja klusterimuotoiselle tiedolla on graafisessa ohjelmoinnissa kehittyneempiä käsittelytapoja kuin monissa ns. peruskielissä. Kielestä löytyvät perusstruktuurit peräk- käisyydelle ja iteraatiosilmukoille, joten ohjelman voi halutessaan tehdä myös perinteis- tä ohjelmaa vastaavaksi. Oletusarvoisesti ohjelmointi on kuitenkin tapahtumaohjattua (Nadin 2004). Voi asioida I/O-korttien kanssa, edellyttäen sopivaa ajuria. Siihen puoleen National In- struments on eräänä alan (=kortti-alan) suurista valmistajista paneutunut todella huolel- 23 la, sillä ilmaisia ajureita löytyy sekä omiin että kilpailijoiden kortteihin runsaasti (Na- rikka 1996). Ohjelmaan voi tulla tietoa ja tapahtumia satunnaisesti monesta eri kohteesta, ja ohjelma selviytyy siitä kuten ohjelmoitava logiikka tai automaatiojärjestelmä eli tapahtuma- ohjatusti (Narikka 1996). Analogiasignaaleja voidaan käsitellä jatkuvina signaaleina, joten abstraktiotaso on sel- västi korkeampi kuin perinteisillä kielillä (Narikka 1996). 1.6.4. Graafisen ohjelmoinnin haittoja Ohjelma on nopeuden ja muistitilan suhteen tehottomampaa kuin esimerkiksi Java. Toi- saalta, jos tarvitaan todella nopea mittaus, niin se ei ole kiinni sovelluksen nopeudesta. Silloin pitää olla kortti, jossa on prosessorit itsessään ja joka osaa tallettaa tietoja sekä toimittaa niitä eteenpäin silloin kun (LabVIEW:lle) sopii (Nadin 2004). LabVIEW saa asiat näyttämään siltä, että toiminta on reaaliajassa, johtuen käyttöjärjes- telmäympäristöistä ja mahdollisesta tietojen tallennuksesta levylle. Jos sovellus on pieni eikä talleta levylle, niin silloin lähes ajantasainen toiminta on mahdollisuuksien rajoissa. Yleensä se riittää useille teollisuussovelluksille. Varsinaiseen ajantasaiseen toimintaan tarvitaan oikea automaatiojärjestelmä, ohjelmoitava logiikka yms. tai täytyy hankkia erillisellä prosessorilla varustettu kortti, jolle LabVIEW toimii vain isäntänä (Narikka 1996). 1.7. Säätötekniikka Käytännön säätötehtävissä takaisinkytketyllä säädöllä pyritään pitämään jokin kemialli- sen, fysikaalisen tai muun vastaavan järjestelmän suure tai suureet (esimerkiksi pitoi- suus, pyörimisnopeus, teho, lämpötila, pinnankorkeus, paine yms.) vakiona tai muutta- maan niiden arvoa halutun suuruisiksi erilaisista järjestelmässä vaikuttavista häiriöistä riippumatta. Säädön onnistuminen riippuu säädettävien suureiden ja toimisuureiden lukumäärästä, niiden välisistä vuorovaikutuksista säädettävässä järjestelmässä, häiriöi- 24 den laadusta ja ajallisesta käyttäytymisestä sekä tietysti valitusta säädintyypistä ja pa- rametreista (Nihtilä, Oksanen & Eriksson 2002: 2). Perus-säätimessä eroelin vertaa takaisinkytkentätietoa ja asetusarvoa keskenään, lähet- täen erosuureen suuruisen ohjauskäskyn toimilaitteelle. Näin toimii myös kuulapeliin rakennettu säädin, se vertaa firewire-kameralta tulevaa kuulanpaikannustietoa asetusar- voon ja lähettää erosuureen suuruisen ohjauskäskyn tasojen kaltevuutta ohjaaville as- kelmoottoreille. Tässä luvussa kerrotaan, mitä säädöllä tarkoitetaan, ja tutustutaan tarkemmin PID- säätimeen ja sen virittämiseen. 1.7.1. Takaisinkytketty säätö Kuvassa 4 on esitetty takaisinkytketyn säätöjärjestelmän periaatteellinen rakenne. Ase- tusarvo r(t) on säätöjärjestelmän ulkopuolelta tuleva ohje, jota säädetyn suureen y(t) halutaan seuraavan. Erosuure e(t) on asetusarvon ja säädetyn suureen erotus, jonka perusteella säädin muodostaa toimilaitetta ohjaavan säätösuureen u(t). Toimilaite voi olla vaikkapa toimimoottorilla ohjattava säätöventtiili (Eriksson 2002:2). Kuva 4. Takaisinkytketyn säädön periaatekuva. Takaisinkytketty säätöjärjestelmä toimii siten, että jos prosessin säädetty suure alkaa kasvaa esimerkiksi häiriön vaikutuksesta, kasvaa myös mittaussuure, minkä seuraukse- na erosuure puolestaan pienenee. Myös säätimen lähtösuure pienenee pienentäen pro- sessin lähtösuuretta kohti asetusarvoa (Eriksson 2002:2). säädetty suure y(t) säätösuure u(t) asetusarvo r(t) erosuure e(t) Säädin Toimilaite Prosessi Mittalaite 25 Säätimen tehtävä on siis huolehtia siitä, että säädetty suure seuraa mahdollisimman hy- vin asetusarvoa torjuen mahdolliset säätöjärjestelmän ulkopuolelta tulevat häiriötekijät. 1.7.2. PID-säädin Yksi säätötekniikan perussäätimistä on PID-säädin (Proportional – Integral – Derivate). Kuva 5. PID-säätimen yleinen rakenne. Säätimen ulostulo koostuu kolmesta eri termistä: ∫ ++= dt de KedtKeKu DIp (1) Suhdeosalla (P) tarkoitetaan toimintoa, jossa säätimen ulostulo (ohjaussuure) on suo- raan verrannollinen säätimen sisäänmenoon. Tavallisesti sisäänmenona käytetään erosuuretta (e), joka on asetusarvon ja mittausarvon erotus (r-m). Tällöin P-osan ulostu- lon itseisarvo on sitä suurempi, mitä kauempana säädettävän suureen arvo on toivotusta arvosta. Vahvistus PK kuvaa säätötoimenpiteen voimakkuutta. P-termille on tyypillistä se, että se ei pysty kompensoimaan erosuuretta kokonaan (Knuutila, Lindqvist & Räty 2000). Integroivalla osalla (I) tarkoitetaan seuraavanlaista toimintoa: Kun syntyy ykkösaske- leen suuruinen erosuure, alkaa ohjaussuure integroida erosuureen pinta-alaa. Ohjaussuu- re muuttuu suoraviivaisesti erosuureen ollessa vakio niin kauan kuin erosuure on ole- massa. Erosuureen mentyä nollaan jää ohjaussuure vakioarvoon ja pysyy siinä, kunnes 26 syntyy negatiivinen erosuure, jolloin ohjaussuure pienenee vakionopeudella niin kauan kuin erosuure on olemassa (Kuva 6). Integroivan termin vahvistuksena käytetään integ- rointivahvistusta Kr (Knuutila 2000). Kuva 6. I-säätimeen syötetään erosuureena yksikköaskelfunktio. Kun ohjaussuure on muuttunut ykkösen verran (=erosuure), niin integrointiaika Ti on kulunut. Integrointiai- ka tarkoittaa aikaa, missä integraattorin lähtö saavuttaa sisääntuloarvon ja se määrite- tään kuvassa 6 esitetyllä tavalla (Halme 1992). Derivoiva osa (D) tarkastelee erosuureen muutosnopeutta, ja sen kohdalla puhutaan derivointivahvistuksesta DK . D-säätö reagoi toimintatapansa mukaisesti hyvin nopeasti ja aggressiivisesti syntyvään erosuureeseen. Derivoivaa osaa kutsutaan myös enna- koivaksi säädöksi, koska se pyrkii kompensoimaan poikkeaman jo siinä vaiheessa, kun se on vasta muodostumassa (Knuutila 2000). Käytännössä PID-säätimestä käytetään usein yksinkertaistettuja versioita. Useissa käy- tännön tilanteissa saavutetaan riittävän hyvä säätötarkkuus, vaikka kaikkea PID- säätimen potentiaalia ei hyödynnettäisikään. Tällöin voidaan tarpeettomaksi katsottu tai joissain tilanteissa jopa ongelmia tuottava termi jättää säädöstä kokonaan pois. Tyypilli- siä ovat esimerkiksi PI- ja PD-säätimet (Wikipedia 2006). 27 1.7.3. Stabiilisuus ja epästabiilisuus Järjestelmä on epästabiili (kuva 7), jos muutos tulosuureessa saa aikaan sen, että vaste kasvaa rajattomasti. Kuva 7. Epästabiili järjestelmä, missä vaste kasvaa rajatta, eikä lähesty mitään raja- arvoa (Tervo 2006). Vastaavasti systeemi on stabiili (kuva 8), jos vaste saavuttaa jonkin vakioarvon äärelli- sessä ajassa. Järjestelmä on myös stabiili, jos se oskilloi (värähtelee) vakioamplitudilla (stabiili, mutta ei asymptoottisesti stabiili) (Tervo 2006). Kuva 8. Järjestelmä on stabiili, kun rajattu tulo aiheuttaa rajatun lähdön (Tervo 2006). 28 1.7.4. PID-säätimen virittäminen PID-säädin voidaan virittää useilla erilaisilla tavoilla. Yksiselitteisesti oikeita arvoja säätimen parametreille ei voida nimetä. Valittavat parametriarvot riippuvat sekä säädet- tävän suureen käyttäytymisestä että säädölle asetetuista tavoitteista. Käytännön tilan- teissa jonkin tietyn ominaisuuden parantaminen voi aiheuttaa jonkin toisen ominaisuu- den huononemisen. Esimerkiksi vahvistusta kasvattamalla saadaan säätöpiiri reagoi- maan asetusarvon muutoksiin nopeasti, mikä on säädön kannalta positiivinen asia. Toi- saalta vahvistuksen lisäys vaikuttaa järjestelmään myös negatiivisesti, heikentäen stabii- lisuutta (Eriksson 2002:7-11). Tavallisesti viritys suoritetaan etsimällä P-säätimen kriittisen vahvistuksen arvo. Tällöin säätöpiiri toimii stabiilisuusrajalla ja alkaa värähdellä vakioamblitudilla. Kriittisen vah- vistuksen ja kriittisen värähtelyn jaksonajan avulla voidaan arvioida sopivia säätimen parametreja (Eriksson 2002:7-11). Käytännössä säätimen hienovirityksessä käytetään myös yrityksen ja erehdyksen mene- telmää. Tällöin on tunnettava, miten kukin termi vaikuttaa säätöön. Vahvistuksen (P) kasvattaminen lisää säädön nopeutta, vähentäen pysyvän tilan poikkeamaa. Lisäksi se heikentää stabiilisuutta eli kasvattaa säädön asettumisaikaa ja maksimipoikkeamia. Pai- nottamalla integroivaa termiä (I) pysyvän tilan virhe poistuu. Tällöin säädön nopeus kasvaa ja stabiilius jälleen heikkenee. Käyttämällä derivoivaa termiä (D) voidaan stabii- lisuutta jossain tapauksissa parantaa. Derivoivan termin käyttö ei kuitenkaan ole kaikis- sa tilanteissa mahdollista (Eriksson 2002:7-11). 1.7.5. PID ja sumea säätö Sumea säätö on yksi sumean logiikan laajimmista sovellutusalueista. Sen etuna voidaan pitää yksinkertaisuutta ja luonnollista ajattelutapaa, joka tekee säädöstä helpommin ymmärrettävää. Sumeaa säädintä käytetään normaalisti prosessin säätimenä. Säädintä voidaan käyttää myös PID-säädön rinnalla esimerkiksi muutostilanteissa. Lisäksi sitä voidaan käyttää laskemaan PID-säätimen parametrit eri toimintapisteissä. Sumean sää- dön tärkein etu on järjestelmän ymmärrettävyys. Säätimen muodostaminen on mahdol- 29 lista ilman hankalia matemaattisia malleja, ja se on mahdollista virittää ilman matema- tiikan tai säätötekniikan tuntemusta. Haittapuolena voidaan pitää vaikeata simulointia ja testattavuutta (Laurikkala 2006). 1.7.6. PID ja geneettiset algoritmit PID-säätimen vahvistusparametrien optimoinnissa eri toimintapisteissä on käytetty myös geneettisiä algoritmeja, jotka ovat uudehko tulokas oppivien ja älykkäiden mene- telmien joukossa. Geneettisillä algoritmeilla pyritään löytämään jonkun annetun kohde- funktion minimi tai maksimi. Geneettinen algoritmi käyttää erilaisia rinnakkaisia ratkai- suyritteitä (joukkoa, sukupolvea), joista genetiikasta tutuilla operaatioilla, risteytyksellä ja mutaatiolla, pyritään muodostamaan parempia ratkaisuyritteitä. Paremmuus mitataan laskemalla kohdefunktion arvot näille yritteille. Menetelmän voisi tiivistää tapana kehit- tää uusia muunnelmia nykyisestä ratkaisusta erehdyksen testinä, joka hylkää syntyneistä ratkaisuista huonoiten toimivat (Törmänen 1997). Kuulapelin automaattiohjaus on toteutettu kahdella PD-säätimellä (x- ja y-akselit). Ky- seiset säätimet ajavat tasot haluttuihin kulmiin kuulan paikan ja nopeuden perusteella. 1.8. I²C – väylä Philipsin kehittämää yksinkertaista ja yleiskäyttöistä kaksi-johtimista IIC-sarjaväylää (Inter-Integrated Circuit bus, IIC, I2C tai I²C) käytetään lähinnä kulutus-, auto- ja teolli- suuselektroniikan sovelluksissa. Näissä sovelluksissa tarvitaan yleensä jotakin älykästä ohjainta, joka on tavallisesti mikro-ohjain. Ohjaimen lisäksi järjestelmään tarvitaan joi- takin yleiskäyttöisiä oheispiirejä, kuten näyttö, näppäimistö, ohjaimen tulo- ja lähtölii- täntöjä, ulkoisia muisteja tms. Lisäksi tarvitaan joitain sovellukseen liittyviä erikoispii- rejä (Koskinen 2002: 286). Kuulapelin tasojen kallistuksia ohjaavien askelmoottoreiden ohjainkortit on kytketty tietokoneeseen I2C-sarjaväylien välityksellä. Molemmilla korteilla on omat väylänsä. Tässä luvussa on esitetty I2C-sarjaväylän periaate. 30 1.8.1. Yleistä Väylään kiinnitettävien solmujen maksimikuormituskapasitanssiksi on sovittu 400 pf, joka vastaa noin kymmenen metrin pituista väylää ja muutamaa solmua. Eri osoitteita solmuille on käytettävissä kaikkiaan 127 kpl. I²C on todellinen väyläprotokolla, jossa on kehykseen upotettu vastaanottajan osoite ja jossa viestin luotettavuutta parannetaan kuittausmenetelmällä. I²C-protokolla ei tunne tarkistussummaa eikä virhekehyksiä. Se on siis suhteellisen yksinkertainen tiedonsiirtotapa, joka sopii luotettavuudeltaan kes- kinkertaisiin ratkaisuihin (Philips Semiconductors 2000). I²C on sarjaväylä, johon voidaan liittää useita erilaisia muisti- ja I/O-piirejä, LCD- ohjaimia sekä erilaisia dataliityntöjä. Sitä käytetään mm. kulutuselektroniikkatuotteissa, erityisesti TV:n sisäisenä väylänä se on suosittu. Useissa mikrokontrolleissa, mm. mo- nissa Philipsin tuotteissa I²C-väyläohjain on sisäänrakennettuna. I²C-väylän simuloimi- nen ohjelmallisesti tavallisia I/O-linjoja käyttäen on mahdollista, mutta edellyttää kak- sisuuntaista porttia ja open-collector-tyyppistä lähtöä (Koskinen 2002: 287). 1.8.2. I²C:n linjat I²C sarjaväylässä on kaksi linjaa, nimittäin tietolinja (SDA) ja kellolinja (SCL). Väylä on synkroninen, joten tiedon tulee olla tahdissa kellolinjan kanssa. I²C-protokollassa datalla on kaksi tilaa: 1 ja 0 (kuva 9). Väylän open-collector-tyyppisyys vastaa tilannet- ta, jossa linja kelluu 1:llä ja 0:lla linja on vedetty alas aktiivisesti. Siten 1 on resessiivi- nen bitti ja 0 on dominoiva bitti (Philips Semiconductors 2000). Tätä ominaisuutta käytetään hyväksi datan kuittauksessa odotustilan generoinnissa. Tie- to siirretään kahdeksan bitin pituisina tavuina. Tavujen määrä yhdessä kehyksessä ei ole rajoitettu. Jokaista tavua seuraa kuittausbitti. Kuittauksen tekee vastaanottava solmu. Kuittauksessa vastaanottaja kirjoittaa dominoivan 0 lähettävän ressessiivisen 1-bitin päälle. Mikäli vastaanottaja ei kykene tilapäisesti ottamaan vastaan seuraavaa tavua jonkin muun kiireellisen tehtävän vuoksi, se voi vetää kellolinjan alas, jolloin lähettäjä (isäntä) jää odottamaan (Philips Semiconductors 2000). 31 Kuva 9. I2C-väylä on toteutettu open-collector tyyppisillä ohjainpiireillä. Siten loogi- nen 0 (dominoiva bitti) yliajaa loogisen 1 (ressessiivinen bitti) (Philips Semiconductors 2000). 1.8.3. Isäntä-renki-väylä Kuva 10. Liikennöinti I2C-väylässä tapahtuu seuraavasti: Mikrokontrolleri (isäntä) lä- hettää käynnistysehdon laittamalla SDA:n alas ja kohta perään SCL:n alas. Tällöin kaikki muut laitteet alkavat kuunnella väylää. Seuraavaksi isäntä lähettää 7 tai 10 bitti- sen osoite tiedon, joka kertoo mihin laitteeseen isäntä haluaa olla yhteydessä ja heti pe- rään tieto siitä mihin suuntaan (kirjoittaa/lukea) haluaa liikennöidä. Toiset laitteet otta- vat bitit vastaan ja vertaavat omiin tunnuksiinsa. Jos tunnus ei ole sama, laite jää odot- tamaan lopetus ilmoitusta ja jos tunnus täsmää, laite kuittaa signaalin. Kun kättely on hoidettu, isäntä aloittaa tiedon siirron. Kun tiedonsiirto saadaan loppuun, isäntä lähettää pysäytysehdon laittamalla SDA:n ja SCL:n ylös (Koskinen 2002: 286). 32 I²C on isäntä-renki-väylä. Kaikki lähetys on synkronoitu isännän kellosignaaliin, joten masteri aloittaa ja lopettaa viestin. Viestiin kuuluu tyhjiä kenttiä, joita renki-solmu voi täydentää kesken viestin lähetyksen. Renki tunnistaa itselleen kuuluvan lähetyksen vies- tin alussa olevasta 7-bittisestä osoitteesta. Näin I²C-verkossa voi olla 127 eri I²C- solmua. I²C on moni-isäntäinen väylä. Tämä tarkoittaa, että väylällä voi olla useita sol- muja, jotka voivat aloittaa viestin. Tilannetta, jossa useat isännät pyrkivät lähettämään tietoa yhtä aikaa, hallitaan väyläarbitroinnilla. Arbitroinnilla se solmu, joka lähettää 1:n (resessiivinen) samaan aikaan jonkun toisen solmun lähettämän 0:n kanssa, häviää väy- läkilvan ja vetäytyy lähetyksestä (Koskinen 2002: 286). 33 2. RAKENNE JA MEKANIIKKA Tässä luvussa käsitellään lyhyesti kuulapelin rakennetta ja mekaniikkaa, sekä valitaan kuulapelille sopivin pelikuula erilaisten testien avulla. Mitään tarkkoja mitoituksia tai teknisiä arvoja ei rakenteesta esitetä, vaan ainoastaan prototyypin erilaisia rakennerat- kaisuja, mahdollista myöhempää jatkokehittelyä varten. 2.1. Kuulapelin rakenne Kuulapeli koostuu kolmesta sisäkkäisestä puukehikosta (kuva 11), jotka on yhdistetty toisiinsa laakerien ja holkkien välityksellä. Pelitaso on sijoitettu sisimpään kehikkoon, ja se on vaihdettavissa. Kuva 11. Kuulapeli muodostuu kolmesta sisäkkäisestä puukehikosta, jotka on laakeroi- tu yhteen. 34 Tasojen kallistuskulmia ohjaavat askelmoottorit on sijoitettu pelitason alla olevaan run- koon kuvan 12 mukaisesti. Ne liikuttavat pelitasoja vaijerien välityksellä, sekä x- että y- suunnissa. Askelmoottorit ovat tyypiltään muuttuvan reluktanssin moottoreita (kuva 22) ja ohjaustavaltaan bipolaarisia (kuva 18). Kuva 12. Askelmoottorit on kiinnitetty pelin runkoon kulmaraudoilla. Vaijereihin on kiinnitetty tasojen kaltevuuskulmia seuraavat liukupotentiometrit (kuva 13) ja laatikon kylkiin on sijoitettu kaltevuuden äärirajoja valvovat mekaaniset anturit (kuva 14). Kuva 13. Tason kaltevuutta seuraavan liukupotentiometrin kiinnitys. Askelmoottorit ja rajat on kytketty ohjauskeskukseen (kuva 15). Kyseinen keskus sijait- see pelitason alla olevassa rungossa. 35 Kuva 14. Rajojen, potentiometrien ja askelmoottorien sijainti ja kytkentä pelikehikolla. Kuva 15. Ohjauskotelo ja sen sisältämät komponentit. 36 Pelin kamera ja halogeenivalaisimet on kiinnitetty (prototyypissä) sitä varten suunnitel- tuun telineeseen (kuva 16). Kuva 16. Kuulapelin halogeenivalaisimet ja Firewire-kamera. Edellä esitetyt kuvat ovat valmiista prototyypistä, mutta ne eivät selvitä, minkälainen pelin rakenne voisi olla jatkokehittelyn jälkeen. Lähtökohta kuulapelin rakennesuunnittelulle oli turvallisuus, toimivuus ja kestävyys. Lisäksi kuulapelin siirtäminen paikasta toiseen tulisi olla mahdollisimman vaivatonta. Näiden alkuehtojen perusteella syntyi kuvan 17 mukainen rakenne-ehdotus. Teline, johon kamera ja halogeenivalaisimet kiinnitetään, on siirrettävää mallia ja lisäksi sen saa kolmeen osaan. Pelin jalat ovat myös irrotettavissa ilman työkaluja, ja ne voi- daan taittaa yhteen. Suojaseinät saa poistettua nostamalla ne irti pidikkeistään, ja pelita- son saa pelikehikosta irti suhteellisen vaivattomasti. Firewire-kamera 37 Kuva 17. Kuulapelin rakenne-ehdotus jatkokehitystä varten. 2.2. Askelmoottorit Askelmoottoreita on monenlaisia, niin rakenteeltaan kuin ohjaustavoiltaan. Rakenteensa puolesta toisistaan eroavat esimerkiksi muuttuvan reluktanssin moottori, kestomagnetoi- tu askelmoottori ja hybridimoottori. Ohjaustavoista tyypillisiä ovat bipolaarinen- ja uni- polaarinen ohjaus (Keinänen, Kärkkäinen, Metso & Putkonen 2002:138–139). Kuulapelin motoriikka on hoidettu askelmoottoreilla. Tässä luvussa kerrotaan yleisesti, minkälaisia askelmoottoreita on olemassa ja kuinka ne toimivat. 2.2.1. Yleistä Askelmoottori sopii erityisen hyvin tietokoneella tai ohjelmoitavalla logiikalla tapahtu- vaan ohjaukseen, koska ohjauspulssit ovat kaksitilaisia. Ohjaustapoina käytetään joko bipolaarista- tai unipolaarista ohjausta. Nämä liittyvät ohjaustransistorien kahteen erilai- seen kytkentätapaan (Keinänen, Kärkkäinen, Metso & Putkonen 2002:138–139). Kameran ja halogeenivalaisimien teline, siirrettävä. Suojaseinät, muovia. Irtojalat Pelikehikko 38 Kuva 18. Bipolaarinen ohjaus mahdollistaa virran kulkemisen molempiin suuntiin moottorin käämissä (Airila 1999: 35–36). Kuvan 18 bipolaarisen ohjauksen etuna on hyvä hyötysuhde ja moottorista saatavat maksimaaliset ominaisuudet. Ohjausta käytetään suurta suorituskykyä vaativiin toimin- toihin. Bipolaarinen ohjauspiiri on monimutkaisempi kuin vastaava unipolarinen ohja- uspiiri (Airila 1999: 35–36). Kuva 19. Unipolarisella ohjauksella virta kulkee yhteen suuntaan moottorin käämissä (Airila 1999: 35–36). 39 Kuvan 19 unipolarinen ohjaus mahdollistaa yksinkertaisemman ohjauspiirin käytön ja vähäisemmät kustannukset, mutta moottorista ei saada maksimaalisia ominaisuuksia (Airila 1999: 35–36). 2.2.2. Askelmoottorin toimintaperiaate Askelmoottorin staattori muodostuu sähkömagneetista ja roottori kestomagneetista. Roottorin kestomagneetin muodostavat N- ja S-navat. Staattorikäämityksien muodos- tama magneettikenttä vetää puoleensa näitä magneettinapoja saaden aikaan roottorin kääntymisen askelittain. Askelluskulma riippuu moottorin magneettinapojen lukumää- rästä. Tarkoilla askelmoottoreilla askelluskulma on alle yhden asteen (Kankaanpää 2003). Kuva 20. Kokoaskelluksen toimintakaavio. Staattorikäämityksien muodostama mag- neettikenttä vetää puoleensa roottorin magneettinapoja saaden aikaan roottorin käänty- misen askelittain (Harries 1997). Staattorikäämien askellusjärjestystä muuttamalla voidaan muuttaa moottorin pyörimis- suuntaa ja askellustaajuutta muuttamalla moottorin pyörimisnopeutta (kuva 20) (Kan- kaanpää 2003). 40 Kuva 21. Puoliaskelluksen toimintakaavio. Ohjaus tuodaan välillä aina vierekkäisille käämeille yhtä aikaa, jolloin roottori kääntyy käämien muodostamien magneettikenttien resultantin suuntaisesti (Harries 1997). Tarkkuutta voidaan kasvattaa myös käyttämällä puoliaskelohjausta. Tällöin ohjaus tuo- daan välillä aina vierekkäisille käämeille yhtä aikaa, jolloin roottori kääntyy käämien muodostamien magneettikenttien resultantin suuntaisesti. Tällöin askellustarkkuus kak- sinkertaistuu, mutta nopeus vastaavasti puolittuu (kuva 21). Askellustarkkuutta voidaan lisätä vielä jakamalla askeleet useampiin osiin (mikroaskellus) (Kankaanpää 2003). Askelmoottoreita on pääasiassa kolmea eri tyyppiä. Ne ovat muuttuvan reluktanssin moottori (kuva 22), kestomagnetoitu askelmoottori (kuva 23) ja hybridimoottori (kuva 24) (Airila, 1999: 28–31). 2.2.3. Muuttuvan reluktanssin moottori Muuttuvan reluktanssin moottori on rakenteeltaan selkein. Se koostuu monihampaisesta metallisesta roottorista ja metallisesta käämitetystä staattorista, jossa käämit kiertävät roottorin säteen ympäri. Kun osaan staattorin käämeistä johdetaan jännite, pyrkii rootto- rin hammastukset asettumaan muodostuvan magneettikentän suuntaisesti, aiheuttaen vääntömomentin roottorin akselille. (Jones 2004:2). 41 Kuva 22. Muuttuvan reluktanssin askelmoottori koostuu monihampaisesta metallisesta roottorista ja metallisesta käämitetystä staattorista, jossa käämit kiertävät roottorin sä- teen ympäri. Kun jännitettä ohjataan eri käämeihin 1, 2 ja 3 tietyssä järjestyksessä (C on yhteydessä maahan), saadaan aikaan jatkuva kiertoliike (Jones 2004:2). 2.2.4. Kestomagnetoitu askelmoottori Kestomagnetoitu askelmoottori on suhteellisen epätarkka, mutta edellistä voimakkaam- pi askelmoottorityyppi. Sen roottorin metallinen hammastus on korvattu kestomagnee- tilla, jossa napaisuus vaihtelee roottorin pyörimissuunnassa. Tästä johtuen momentin aiheuttava magneettikenttä on voimakkaampi, kehittäen suuremman vääntömomentin (Jones 2004:2). Kuva 23. Kestomagnetoidun askelmoottorin (unipolar) roottorissa on metallinen ham- mastus korvattu kestomagneetilla, jossa napaisuus vaihtelee roottorin pyörimissuunnas- sa. Käämit ovat kaksiosaisia. Kun jännitettä ohjataan eri käämeihin 1-a, 2-b, 2-c ja 2-d tietyssä järjestyksessä, saadaan aikaan jatkuva kiertoliike (Jones 2004:2). 42 2.2.5. Hybridimoottori Hybridimoottori yhdistää edellisten moottorityyppien parhaat puolet. Se on voimak- kaampi ja tarkempi kuin edelliset, mikä näkyy myös sen hinnassa. Hybridimoottori koostuu kestomagneettisydämisestä hammastetusta metalliroottorista, jossa magneetti- kenttä on akselin suuntainen, ja metallisesta staattorista, jossa samaan napapariin on sijoitettu kahden vaiheen käämitys. Tällä tavalla saadaan voimakkaampi magneettikent- tä ja suurempi vääntömomentti, sekä suuremmalla määrällä roottorin hammastusta suu- rempi määrä askeleita eli pienempi askellus (Jones 2004:2). Kuva 24. Hybridi askelmoottori koostuu kestomagneettisydämisestä hammastetusta metalliroottorista, jossa magneettikenttä on akselin suuntainen, ja metallisesta staattoris- ta, jossa samaan napapariin on sijoitettu kahden vaiheen käämitys (Jones 2004:3). Askelmoottoreita on myös muita tyyppejä, mutta tällä hetkellä enemmänkin erikoisso- vellutuksissa, joissa edellisten askelmoottoreiden ominaisuudet eivät riitä. Näistä mai- nittakoon levymagneettimoottori, jossa roottori on valmistettu magnetoidusta levystä, jonka napaisuus vaihtelee pyörimisliikkeen suunnassa. Tällä saavutetaan muun muassa pieni inertia (liikemäärä) ja optimaalisempi magneettivuo (Nevalainen 2004: 3). Kuulapeliin valittiin muuttuvan reluktanssin askelmoottorit bipolaarisella ohjauksella. Paras ja helpoin vaihtoehto ohjaukseen olisi ollut servomoottori tai lineaarimoottori nopeutensa ja tarkkuutensa vuoksi, mutta niiden kallis hinta esti kyseisten moottorien käytön. Kytkentä on esitetty liitteessä 1. 43 2.3. Pelikuulan testaaminen Kitka eli liikevastus on kahden kappaleen pintamolekyylien keskinäisestä vetovoimasta johtuva liikettä vastustava voima, joka ilmenee kahden toisiaan koskettavan pinnan vä- lissä. Kitkan voittamiseksi kappaleen on tehtävä työtä yhtälön FsW = mukaisesti, mis- sä vakiovoima F vetää kappaletta omaan suuntansa matkan s . Tällöin kappaleeseen varastoitunut energia muuttuu muun muassa lämmöksi (Mäkelä 1997). Kitkan eri lajeja ovat vierimiskitka, pyörimiskitka sekä liukumiskitka. Lepokitka pyrkii vastustamaan liikkeelle lähtöä, ja liikekitka pyrkii pysäyttämään jo alkaneen liikkeen. Lepokitka on aina suurempi kuin kappaleen liikekitka, minkä seurauksena kappaleen lähdettyä liikkeelle se on helpompi pitää liikkeessä. Kitkakertoimet eri aineiden välille on määritelty kokeellisesti, ja ne ovat suuruudeltaan aina pienempiä kuin 1. Kitkavoima on vektorisuure, ja sillä on siis suuruuden lisäksi aina myös suunta. Kitkaa voidaan usein pienentää muun muassa pintoja tasoittamalla tai käyttämällä voiteluainetta, sekä muuttamalla liukumiskitka vierimiskitkaksi (Wikipedia 2006). Ensimmäisenä kriteerinä pelikuulalle oli pitää lepokitka mahdollisimman pienenä. Liian suuri lepokitka aiheuttaa sen, että tasoja täytyy kallistaa melkoisesti kuulan liikkeelle saattamiseksi. Kallistuksen seurauksena kuulan lähtönopeus saattaa nousta niin suurek- si, että kuulaa on vaikea hallita. Tutkittavana oli 11 erilaista kuulatyyppiä taulukon 1 mukaisesti. 1,34 V:n muutos tasapainotilasta kumpaan tahansa suuntaan aiheutti 0,7±0,1 cm kallis- tuksen pelitason keskiviivaan nähden. Mittaus suoritettiin työntömitalla. Tason leveys keskiviivasta kallistuksen mittauskohtaan on 37,2±0,3 cm. Mittaus suoritettiin rullami- talla. Kallistuskulma on tällöin sin α = 0,7±0,1 cm / 37,2±0,3 cm, joten α = 1,1±0,1º, (2) 44 toisin sanoen 1,3±0,05 V vastaa 1,1±0,1º, joten 1 V±0,05 V vastaa 0,8±0,1º kallistusta. Testaus suoritettiin y-akselilla, jonka äärirajat ovat 0 V ja 5 V ja tasapainotila 2,5 V. Taulukko 1 Testattavat kuulat. Muoto Materiaali Pinta Halkaisija / mm Paino / g 1. kuula teräs, kiiltävä sileä 20,0±0,1 28,2±0,1 2. kuula teräs. kiiltävä sileä 16,0±0,1 16,7±0,1 3. kuula teräs, kiiltävä sileä 8,0±0,1 2,1±0,1 4. kuula teräs, maalattu sileä 20,0±0,1 28,2±0,1 5. kuula marmori, maalattu epätasainen 24,5±0,1 18,5±0,1 6. golf-pallo kumi epätasainen 39,5±0,1 25,8±0,1 7. kuula muovi sileä 35,5±0,1 5,1±0,1 8. kuula muovi sileä 14,0±0,1 1,4±0,1 9. kuula lasi sileä 16,0±0,1 5,4±0,1 10. kuula kumitettu teräs sileä 22,0±0,1 26,5±0,1 11. kuula kumitettu muovi sileä 22,0±0,1 8,4±0,1 Itse mittauksessa pelitaso asetettiin tasapainotilaan ja kuula asetettiin pelitasolle. Tasoa kallistettiin hitaasti, kunnes kuula lähti vierimään. Jokaisella kuulalla tehtiin viisi sa- manlaista testausta, ja näistä laskettiin keskiarvo. Kuulien ja tason epätasaisuudet aihe- uttivat hiukan ongelmia mittauksissa. Kuula saattoi jäädä joissakin mittauksissa kiinni alustaansa, mikä johtui alustan epätasaisuuksista. Tasoa piti tällöin kallistaa melkoisesti, ennen kuin kuula lähti liikkeelle. Jos kyseinen kulma-arvo poikkesi huomattavasti nel- jästä muusta mittauksesta, niin sitä ei otettu huomioon keskiarvossa. Saadut tulokset on esitetty taulukossa 2. Seuraavaksi selvitettiin laskennallisesti, minkälainen nopeus kullakin kuulalla oli 10 cm etenemisen jälkeen. Nopeuden laskemiseen käytettiin seuraavanlaista kaavaa (M. Mäke- lä, R. Mäkelä & Siltanen 1997): Kuula on pudonnut maan vetovoiman vaikutuksessa matkan .sinθLh = (3) 45 Kuulalle on tällöin tullut energiaa .sinθmgLmghEP == (4) Kyseinen energia on mennyt kuulan rotaatioenergiaksi 2/2ωJER = (5) ja lineaarienergiaksi .2/2mvEL = (6) Energia säilyy, joten .LRP EEE += (7) Tällöin 2/2/sin 22 mvJmgL += ωθ (8) .2/2/sin 22 mvJmgL +=⇔ ωθ Kun kuula vierii, Rv /=ω (9) 2/2/)5/2(sin 2222 mvRvmRmgL +=θ (10) 22 5/2sin2 vvgL +=⇔ θ 5/7sin2 2vgL =⇔ θ .7/sin102 θgLv =⇔ 46 Kun esimerkiksi kiiltävän teräskuulan mittausarvot sijoitetaan kaavaan, saadaan kysei- sen kuulan nopeudeksi 4,9±0,5 cm/s 10±0,3 cm vierimisen jälkeen. Virheen määrittely muodostui suhteellisen hankalaksi, koska kuulat saattoivat jumittua tasopintaan kuulan tai tasopinnan epätasaisuuksien vuoksi useammassakin mittauksessa. Tällöin ne vaativat huomattavasti suuremman, edellisistä mittauksista poikkeavan kallistuksen irrotakseen. Tämän vuoksi virhemarginaalit ovat epätarkkoja, mutta suuntaa antavia. Tulokset on esitetty taulukossa 2. Seuraavaksi selvitettiin kuulan kimmoisuus. Tasoa kallistettiin 1,13° ja päästettiin kuula vapaasti vierimään ylälaidasta alalaitaan, ja mitattiin kyseiseen matkaan käytetty aika ja se, kuinka kauas kuula kimposi takaisin alalaitaan osuessaan. Jokaisella kuulalla tehtiin jälleen viisi samanlaista testausta, ja näistä laskettiin keskiarvo. Lisäksi mittauksesta laskettiin kuulan keskinopeus. Tulokset on esitetty taulukossa 2. Taulukko 2 Testattujen kuulien valintakriteerit pelikuulaksi. Muoto Keskiarvo / o/Lα Nopeus 10cm:n Jousto sei- Keskinopeus jälkeen cm / s nästä / cm cm / s 1. kuula 0,7±0,1 13,1±0,5 10,0 ±0,6 31,3±0,5 2. kuula 0,7±0,1 13,1±0,5 12,2 ±0,7 30,8±0,5 3. kuula 0,8±0,1 14,0±0,5 0,6 ±0,1 30,0±0,5 4. kuula 0,8±0,1 14,0±0,5 11,0 ±0,6 29,9±0,5 5. kuula 0,9±0,3 14,8±0,8 3,8 ±0,6 31,3±0,8 6. golf-pallo 1,1±0,3 16,4±0,8 5,5 ±1,0 24,6±0,8 7. kuula 0,8±0,2 14,0±0,6 yli reunan 28,5±0,6 8. kuula 1,1±0,2 16,4±0,6 1,3 ±0,1 28,2±0,6 9. kuula 0,8±0,1 14,0±0,5 8,2 ±1,2 31,8±0,5 10. kuula 0,8±0,1 14,0±0,5 2,9 ±0,2 29,7±0,5 11. kuula 1,0±0,1 15,6±0,5 1,4 ±0,1 28,9±0,5 Kuulien liikkeellelähtökulmat Lα vaihtelivat välillä 0,7° - 1,1° (taulukko 2.2). Mitä suurempi liikkeellelähtökulma Lα on, sitä suuremmaksi kuulan lähtönopeus Lv nousee, mikä vaikeuttaa kuulan hallittavuutta. Kuulien 5 ja 6 epätasainen pinta aiheutti aina vä- lillä sen, että kuula lähti liikkeelle hyvinkin suurella kulma-arvolla Lα . Tästä johtuen kuulat 5 ja 6 hylättiin välittömästi niiden pintojen epätasaisuuksien vuoksi. Kuulat 3 ja 7 47 hylättiin kokonsa ja keveytensä vuoksi, koska esimerkiksi kameraseuranta kyseisillä kuulilla oli erittäin vaikeaa. Kuulien 1, 2, 4 ja 9 hallittavuus oli erittäin hankalaa. Esi- merkiksi törmätessään seinään pienelläkin nopeudella kimmoisuus oli suhteellisen suuri ja liikkeen hallinta vaikeaa. Lisäksi heijastavan tai läpinäkyvän pintamateriaalin vuoksi kameraseuranta oli kyseisillä kuulilla melko vaikeaa. Kuula 8 oli hiukan epäsymmetri- nen, joten sen meno oli tasolla hiukan nykivää. Kuulat 10 ja 11 olivat hyvinkin soveltu- via pelin käyttökuuliksi. Kuulan 10 kimmoisuus oli hiukan suurempi kuin kuulan 11 mikä vaikutti kyseisen kuulan hallittavuuteen. Kuula 11 oli pintaväriltään musta, joten se erottui kameraseurannassa erittäin hyvin. Näiden seikkojen vuoksi pelikuulaksi valit- tiin kuula numero 11. 48 3. PELIN OHJAUS Kuulapelin ohjaus on toteutettu LabVIEW:n graafisessa ohjelmointiympäristössä. Tässä luvussa esitetään laaditun ohjelman rakenne kohta kohdalta. Kuva 25. Pelin manuaali- ja automaattiohjauksen toimintaidea. 49 3.1. Manuaaliohjaus Kuten jo aikaisemmin mainittiin, LabVIEW-ohjelma perustuu niin sanottujen ohjelma- moduulien eli virtuaali-instrumenttien (VI) käyttöön. Nimi virtuaali-instrumentti on tullut siitä, että instrumenttien ulkonäkö ja toiminta on rakennettu mukailemaan mah- dollisimman tarkasti fyysisiä eli olemassa olevia laitteita ja komponentteja (National Instruments 2006). Manuaaliohjaukseen käytettävä Joystick-ohjain on liitetty tietokoneeseen USB-portin kautta. LabVIEW-sovelluksessa on Joystick-ohjaimelle oma virtuaali-instrumenttinsa (Initialize Joystick.vi), joka sisältää kyseiselle ohjaimelle tarvittavat liityntäasetukset. Tämä ei kuitenkaan vielä yksistään riitä Joystick-ohjaimelta lähetetyn tiedon hyödyntä- miseen. Kyseinen tieto täytyy vielä muuntaa ohjaukseen soveltuvaksi. Tätä toimenpidet- tä varten on oma virtuaali-instrumenttinsa (Acquire Input Data.vi). Joystick-ohjaimessa on yleensä sauvaohjain, jolla voidaan säätää potentiometrien arvoja x- ja y-suunnissa, sekä useita painonappeja erilaisia käyttöjä varten. Nämä tiedot tulevat jakamattomana ryhmätietona aina Unbundle.vi-moduulille saakka. Kyseisellä elementil- lä ryhmätieto jaetaan yksilötietoihin kuvan 26 esittämällä tavalla. Kuva 26. Joystick-ohjain tarvitsee omat virtuaali-instrumenttinsa, jotta sen ohjauskäs- kyt saadaan hyödynnettyä ohjelmassa. 50 Sekä x- että y-suunnille on rakennettu kuvan 27 mukainen ohjaustoiminta. Aluksi ohja- uspiiri tutkii, onko Joystick-ohjaimelta tuleva tieto positiivinen vai negatiivinen, eli se selvittää ohjaussauvan kääntösuunnan. Tämä tieto välittyy suuntatietona askelmoottoril- le. Joystick tieto Kuva 27. Joystick-ohjaimen nopeustieto muutetaan positiiviseksi ja kalibroidaan as- kelmoottorin ohjaukseen soveltuvaksi. Liukupotentiometrin maksimikallistusasetus huolehtii, ettei tasoa kallisteta liikaa. Jos kyseinen kallistusasetus ei toimi, niin lopulli- sena turvarajana ovat mekaaniset äärirajat, jotka vikatilanteessa pysäyttävät askelmoot- torin. 51 Kun Joystick-ohjaimen kahvasta päästetään irti, niin taso palautuu vaaka-asentoon au- tomaattisesti määrätyllä (säädettävällä) nopeudella. Joystick-ohjain ei kuitenkaan vält- tämättä mene kyseisessä palautuksessa täysin nollatilaan, vaan se saattaa lähettää edel- leen pientä nopeusarvoa prosessiin. Tämä aiheuttaisi korjaamattomassa tilassa, ettei taso pysähtyisikään vaaka-asentoon vaan jatkaisi kallistusta toiseen suuntaa. Kyseisen on- gelman torjumiseksi Joystick-ohjaimen syöttämälle arvolle on laitettu pieni toleranssi. Joystick-ohjaimen herkkyyttä voidaan säätää ns. virtuaalipotentiometrillä. Askelmootto- rin ohjaus tapahtuu skaalalla 0 – 255. Nolla vastaa askelmoottorin maksiminopeutta ja 255 hitainta mahdollista nopeutta. Nopeustiedot, suuntatiedot ja pysäytyskäskyt välitty- vät askelmoottorin ohjaimelle I2C-väylää pitkin 8-bittisinä jonoina. Ohjaimen prosesso- reihin ohjelmoitu C-kielinen ohjelma muuntaa bittijonot askelmoottorin ohjaamiseen sopiviksi käskyiksi. Kyseisen potentiometrin avulla voidaan Joystick-ohjaimen alkuar- voa nolla, joka on askelmoottorin suurin mahdollinen nopeus, nostaa alkamaan jostakin suuremmasta luvusta, jolloin nopeusskaalaus olisikin vastaavasti välillä säätöarvo - 255. Käsiohjauksen ohjauskaavio on esitetty kokonaisuudessaan liitteessä 5. 3.2. Automaattiajo Automaattiajossa tietokoneelle määritellään kohdekoordinaatit ),( yx rr= Tr eli kohde- piste, johon kuulan halutaan tasolla siirtyvän. Kuula etenee kohti tavoitepistettä tietoko- neohjatusti. Firewire-kamera seuraa kuulan kulkua tasolla, ja se lähettää kuulan paikka- tietoa takaisinkytkentätietona säätimelle 133 ms väliajoin. Säädin määrittelee mihin suuntaan ja kuinka nopeasti tasoja pitää kulloinkin kallistaa, ja ohjaa kuulan tavoitepis- teeseen. Automaattiajossa käytetään kahta eri ajotyyppiä, nimittäin sysäys- ja perusajo. Sy- säysajo saa kuulan liikkeelle aloituksessa ja silloin, kun kuula pysähtyy tavoitepisteen ulkopuolelle. Perusajossa PD-säädin ohjaa liikkuvaa kuulaa kohti tavoitepistettä. Se 52 kuinka edellä mainitut ajot on toteutettu ja mitä niillä tarkoitetaan, käsitellään seuraavis- sa luvuissa. 3.2.1. Sysäyskäyttö Kun kohdekoordinaatit ),( yx rr= Tr on määritelty ja asetetaan ohjaus ajotilaan tai kun kuula pysähtyy ajotilanteessa tavoitepisteen ulkopuolelle, lähettäen saman koordinaat- tiarvon kahteen kertaan xvx mm = ( xvm = paikannustieto viiveellä), niin säädin aiheuttaa sysäyskäytön saadakseen kuulan liikkeelle. Tällöin taso kallistuu jyrkästi tavoitepisteen ),( yx rr= Tr suuntaan saavuttaen asetellun sysäyskulman sα (kuva 28). Liukupoten- tiometriltä tulevan arvon pu käsittely säätimessä ja edelleen toimintaohjeen siirto as- kelmoottorille vie kuitenkin tietyn ajan. Tämän vuoksi askelmoottori ei ehdi reagoida heti säätöön, vaan ajaa tason sysäyskulman sα yli. Se kuinka paljon sysäyskulman sα yli mennään, riippuu pelkästään aseteltavasta askelmoottorin sysäysnopeudesta sv ku- van 28 mukaisesti. Kuula lähtee liikkeelle suhteellisen suurella nopeudella, joten lähtösysäyksen nopea vastakallistus (palautus) tasapainotilaan hidastaa kuulan nopeutta. Tasapainotilan koh- dalla )0( °=α ohjaus siirtyy perusajoon, jolloin PD-säätö tulee mukaan ohjaukseen ja joko vahvistaa tai heikentää tasapainotilan yliajoa, riippuen kuulan nopeudesta ja PD- säätöarvoista ),( DP KK . Tasapainotilalla tarkoitetaan tilannetta, jossa taso on täysin vaakatasossa )0( °=α . Esimerkiksi kuvassa 28 on suurella sysäysnopeudella )40( =sv ylitetty sysäyskulma sα 0,75 asteella ja tasapainotila 0,4 asteella, sysäysajan t ollessa kaksi sekuntia. Kun sysäyskulma sα on suuri, kuulan nopeus nousee liikkeellelähtötilanteessa suureksi, jol- loin D-säätö dt tde KD )(1 reagoi voimallisemmin, ja aiheuttaa suhteellisen suuren vasta- kallistuskulman tasolle, hidastaen kuulan nopeutta. Pienellä nopeudella 200( =sv ) sy- 53 säyskulma sα on ylitetty 0,2 asteella ja tasapainotila 0,2 asteella, sysäysajan t ollessa neljä sekuntia. Kuva 28. Sysäysnopeuden sv vaikutus säädetyn sysäyskulman sα ylitykseen sysäys- käytön myötäkallistuksessa ja PD-säädön vaikutus tasapainotilan )0( °=sα ylitykseen sysäyskäytön vastakallistuksessa. Erittäin pienellä sysäysnopeudella )230( =sv sysäyskulma sα ja tasapainotila eivät enää ylity. Kyseiset mittaukset ovat tehty y-akselilla ja ovat suuntaa antavia. Sysäysaika t pitää kutakuinkin paikkansa, mutta virhemarginaali sysäyskulmasta sα vaihtelee hiu- kan joka sysäyskerralla. Tämä edellä mainittu sysäyskäyttö suoritetaan sen vuoksi, että kuulan lepokitka ylittyisi ja kuula lähtisi suhteellisen tasaisesti liikkeelle. Sysäyskäyttö on toteutettu kuvan 29 mukaisella kytkennällä. Kamera seuraa koko ajan kuulan liikkumista, lähettäen x- ja y-koordinaatteja ),( yx mm= Tm takaisinkytkentätie- tona säätöjärjestelmään tietyin väliajoin. 54 Kuva 29. Lähtötilanteessa tai jos kuula pysähtyy ajotilanteessa tavoitepisteen ),( yx rr= Tr ulkopuolelle, sysäyskäyttö saa sen liikkeelle. Sysäyskäyttö on toteutettu kuvan mukaisella kytkennällä. Kun ohjaus asetetaan ajotilaan, sysäyskäyttö tapahtuu automaattisesti, ja se saa kuulan liikkeelle. Kun kuula liikkuu, sysäystoiminta pysyy lukkiutuneena pitoon eli se ei vaiku- ta ohjaukseen. Jos kuula pysähtyy ja lähettää samat koordinaatit kaksi kertaa peräkkäin ( xvx mm = ), pito purkaantuu ja edellä mainittu sysäystoiminta toistuu ja saa kuulan taas liikkeelle. Jos kuula saavuttaa tavoitepisteen r kesken sysäyskäytön, niin askelmootto- rit ajavat tasot ensin tasapainotilaan ja vasta sitten säädin lähettää askelmoottoreille py- säytyskäskyn (kuva 34) ja toiminta pysähtyy. 55 Säädin säilyttää edellisen koordinaatin ja vertaa sitä uuteen koordinaattiin kuvan 30 mukaisella ohjauksella. Pidon saa purettua myös käyttöliittymässä sijaitsevasta kuit- tauspainikkeesta kesken ajon. Kuva 30. Kameralta tulevista paikannustiedoista ),( yx mm otetaan näytteitä ),( yvvx mm yhden sekunnin välein. Kuvassa 30 olevalla kytkennällä otetaan kameralta tulevista paikannustiedoista ( yx mm , ) näytteitä ( yvvx mm , ) yhden sekunnin välein ja verrataan niitä kuvan 31 mukaisella kyt- kennällä toisiinsa. Jos kyseiset arvot ovat samat ( xvx mm = ), niin kuula on silloin pysäh- tynyt. Jos tavoitepistettä ei ole kyseisessä tilanteessa vielä saavutettu, niin säädin toteut- taa sysäysajon tavoitepisteen suuntaan, saadakseen kuulan taas liikkeelle. 56 Kuva 31. Jos kuula pysähtyy tavoitepisteen ulkopuolelle ja lähettää samat paikannus- tiedot ( xvx mm = ) kaksi kertaa peräkkäin, lähtee tieto sysäyskäytölle. 3.2.2. Perusajo Kun sysäysajo on jäänyt pitoon, järjestelmä ohjautuu perusajolle. Perusajossa tasot kal- listuvat kolmannella säädettävällä nopeudella ),( pypxp vv= Tv (kuva 29) ja tasojen kallis- tuskulmat ),( yx αα ohjautuvat PD-säädöllä. Perusajossa erosuure e kerrottuna vahvistuksella pK määrittelee ensisijaisesti tasojen kallistuskulmien suuruudet, joita D-termi redusoi suuntaan tai toiseen tilanteesta riippu- en (kuva 32). PD-säädön toiminta on esitetty tarkemmin luvussa 3.2.3. Kuva 32. Perusajon ohjausperiaate. PD-säädöltä tuleva positiivinen tai negatiivinen lähtösignaaliarvo )(tu lisätään tasapainotila-arvoon )(5,2)(3 tutu += ja vähennetään tasapainotila-arvosta )(5,2)(4 tutu += . Saatuja arvoja verrataan liukupotentiometriltä tulevaan jännitearvoon 3uu p < ja 4uu p > . 57 Jos jompikumpi sallituista sen hetkisistä äärirajoista ylittyy, vertailijalta lähtee FALSE- käsky, tällöin TAI-portti saa invertterin kautta TRUE-käskyn ja asettaa kyseisen ohja- uksen pitoon, jolloin tasapainotilaohjaus (kuva 33) palauttaa tason tasapainotilaan tai sen lähelle (yli tai ali), riippuen kuulan nopeudesta ja D-parametristä. Kuulan nopeus nousee joskus niin suureksi, että säätö ei D-säädöstä huolimatta ehdi ohjata askelmoot- toria, vaan ääriraja ylittyy. Tällöin tasapainotilaan ajo rauhoittaa tilannetta. Kuva 33. PD-säädöltä tuleva positiivinen tai negatiivinen lähtösignaaliarvo )(tu lisä- tään tasapainotila-arvoon. Mitä lähempänä tasapainotilaa se on, sitä pienemmäksi läh- tösignaaliarvo )(tu muuttuu, riippuen myös D-säädön reagoinnista (ks. PD-säätö). Se kumpi vertailijoista on käytössä, riippuu siitä, kumpi äärirajoista on ylitetty. Kun haluttu raja on saavutettu, pito purkautuu ja ajo poistuu tasapainotila-ajosta. Kun kuula saavuttaa tavoitepisteen toleranssin rajoissa, säädin lähettää pysäytyskäskyn askelmoottorille kuvan 34 mukaisella kytkennällä. 58 Kuva 34. Kun kuula saavuttaa tavoitepisteen ),( yx rr= Tr toleranssin rajoissa, säädin lähettää askelmoottorille pysäytyskäskyn. Kuvassa 34 asetusarvoa r verrataan mittausarvoon )(tm . Saatua erosuuretta )(te verra- taan toleranssiarvoon (5 = 3,7 cm). Jos erosuure )(te on pienempi kuin toleranssiarvo ja taso on tasapainotilassa, niin askelmoottorille lähtee pysäytyskäsky. 3.2.3. PD-säätö Asetusarvo r säädetään virtuaalipotentiometrillä, ja mittausarvo )(tm saadaan takaisin- kytkennän kautta firewire-kameralta ja konenäkömoduulista. Kameran tarkkuus on 160 x 120 pistettä, ja se näyttää myös pelin reunat. Itse pelitason kooksi muodostuu 100 x 100 pistettä, joten erosuure )(te vaihtelee välillä ±100 pistettä (ääriarvot). PD-säädön ohjaussuureen täytyy olla välillä 0 - 1, minkä vuoksi mittausarvo )(tm ja asetusarvo r kerrotaan 0,01:llä seuraavasti: )(01,0)(1 tmtm ×= (11) rr ×= 01,01 (12) Tämän jälkeen kyseiset arvot soveltuvat PD-säädön käyttöön. PD-säädön toiminta on esitetty kuvassa 35. 59 Kuva 35. PD-säädön toteutus kuulapelissä. PD-säätimen derivoiva termi toimii ennusta- jana, sillä se ottaa huomioon erosuureen muuttumisnopeuden. Jos positiivinen erosuure on kasvamassa, se vahvistaa P-termin vaikutusta, jos taas pienenemässä, se heikentää vaikutusta. Mittausarvo )(1 tm ja asetusarvo 1r käsitellään eroelimessä seuraavasti: )()( 11 tmrte −= (13) Eli mitä kauempana kuula on tavoitepisteestä, niin sitä suurempi on erosuure )(1 te )1( max =e . Tämän jälkeen erosuure )(1 te kerrotaan aseteltavalla vahvistusarvolla pK seuraavasti: )()( 11 teKtu P= (14) Mitä suurempi vahvistusarvo valitaan, sitä jyrkemmin taso kallistuu, silloin kun kuula on maksimietäisyydellä tavoitepisteestä (kuva 36). Vahvistuksen arvolla 3=pK kallis- tus menee ääritilanteessa yli sallitun kulma-arvon maxα . 60 Kuva 36. Vahvistuksen vaikutus kallistuskulmiin erisuuruisilla )(te :n arvoilla, D- termin vaikutusta ei kyseisessä kuvassa ole huomioitu. Erosuureen muuttumisnopeutta aikayksikössä seurataan viivästämällä paikannustietoa )(1 tm ja vähentämällä viivästytetystä paikannustiedosta )(1 tm v alkuperäinen arvo seu- raavasti: )()( )( 11 1 tmtm dt tde v −= (15) Näin saatu arvo kerrotaan vielä aseteltavalla derivointikertoimella DK seuraavasti: dt tde Ktu D )( )( 12 = (16) Jos derivointikerroin DK on nolla, ainoastaan vahvistus on mukana säädössä. Jos deri- vointikerroin DK valitaan liian suureksi, niin kuulan liikkuessa hiukankin nopeammin säätö ajaa tasot äärirajoille ja toiminta pysähtyy. Lopullinen kaltevuusohjauksen lähtösignaali )(tu muodostuu näistä kahdesta edellä lasketusta P- ja D-kertoimesta seuraavasti: 61 )()()( 21 tututu += (17) Jos kuulan nopeus )(tvk on suuri eli positiivinen erosuure on kasvamassa, D-termi vah- vistaa P-termin vaikutusta, jos taas pienenemässä, se heikentää vaikutusta. Kuva 37. Kallistuskulman (keskimmäinen kuvaaja) ja PD-säädön (alin kuvaaja) vaiku- tus kuulan liikkeeseen (ylin kuvaaja) kullakin ajan hetkellä t . Kuvassa 37 on esitetty kuulapelin säädön idea kuvaajan avulla. Aluksi seurataan kuulan etenemistä y-akselilla. Kun asetusarvo on valittu ja järjestelmä asetetaan ajotilaan, taso kallistuu tavoitepisteen suuntaan ja suorittaa sysäyskäytön (1). Kuula lähtee vierimään suhteellisen suurella nopeudella, mutta lähtösysäyksen nopea palautus tasapainotilan yli hidastaa kuulan nopeutta (2). Säädin reagoi heti tasapainotilaan ja ohjaa perusajon pääl- 62 le, mutta askelmoottori ajaa tason jonkin verran tasapainotilan yli. Tasapainotilan yli- tyksen suuruus riippuu kuulan nopeudesta D-säädön mukaisesti. Sysäyskäyttö jää pitoon, ja taso ohjautuu perusohjauksella. Alkusysäyksen (1) jälkeen kuula ei ole vielä saavuttanut tavoitepistettä, joten vastakallistus vaihtuu pieneksi P- säädöstä johtuvaksi myötäkallistukseksi, jota D-säätö rajoittaa. Kuula lähestyy tavoite- pistettä suhteellisen suurella nopeudella, jolloin D-säätö vaimentaa hiukan kuulan liiket- tä vaihtamalla tason kallistussuuntaa (3). Kuulan nopeus hidastuu edelleen D-säädön vaikutuksesta (4). D-säädön aseteltava DK -vahvistusarvo ei ole aivan kohdallaan, joten kuula liikkuu hetken tavoitepisteestä poispäin. Säätöpiiri reagoi välittömästi muutok- seen, mikä aiheuttaen myötäkallistuksen (6). Se saa kuulan taas etenemään kohti tavoi- tepistettä, saavuttamaan tavoitepisteen toleranssin rajoissa (7) ja pysähtymään siihen. X-akselilla tapahtuu vastaavanlainen sysäyskäyttö, kuten y-akselillakin (1). Sysäyskäy- tön jälkeinen vastakallistus jää suhteellisen pieneksi D-termin reagoidessa myötäkallis- tuksen puolesta (2). D-säädön aseteltava DK -vahvistusarvo ei ole x-kallistuksen sää- dössäkään aivan kohdallaan. Kuulan vauhti nousee suureksi, joten D-termi reagoi liian- kin nopeasti, mikä aiheuttaa suuren vastakallistuspyynnön. Askelmoottori ei ehdi täysin reagoida kyseiseen pyyntöön, vaan aloittaa vastakallistuksen vasta kuulan ylittäessä tasapainotilan. Tällöin D-säätö reagoi kuulan vauhtiin vahvistamalla P-säätöä, ja se ai- heuttaa suuren vastakallistuksen (4). Kuulan suunta vaihtuu ja se etenee jälleen kohti tavoitepistettä. Taso kallistuu kohti tasapainotilaa ja antaa kallistussysäyksen vastakkai- selle puolelle (5). D-säätö reagoi vaimentamalla P-säädön vaikutusta, mikä hidastaa kuulan kulkua tavoitepisteen tuntumassa (6), joten kuula saavuttaa tavoitepisteen (7) ja pysähtyy. 3.3. Rajat Rajat on asennettu kuvan 14 mukaisiin kohtiin pelikehikossa. Rajojen kytkennät on suo- ritettu liitteen 2 mukaisesti kytkentäalustalle CB-68LPR. Sieltä rajatiedot kulkeutuvat 63 SCH-68-EPM SHIELDED-välikaapelia pitkin tietokoneessa sijaitsevaan tiedonkeruu- korttiin NIPCI-6221. Tiedonkeruukortilta tiedot saadaan ohjelman käyttöön tiedonkeruusovellusten toteutta- miseen tarkoitetun DAQ-assistant-apuohjelman avulla. Kuva 38. Pelin tasojen ohjauksissa käytetyt rajatiedot ovat mekaanisilta rajoilta tulevat digitaaliset 0/1-tiedot ja liukupotentiometriltä tulevat analogiset 0-5 V jännitetiedot. Nämä tiedot saadaan DAQ-assistant-apuohjelman avulla pelin ohjauksen käyttöön, va- litsemalla Block Diagram -ikkunaan tätä toimintaa varten tarkoitetun virtuaali- instrumentin (DAQ assistant express vi). Rajatiedot siirtyvät ohjelman käyttöön globaalien muuttujien välityksellä (kuva 38). Globaali muuttuja on funktion ulkopuolella esitelty muuttuja, jonka arvo on käytettävis- sä ja muunneltavissa ilman rajoituksia. 64 Kallistuskulmia seurataan x- ja y-akseleihin yhdistetyillä potentiometreillä. Tiedot po- tentiometreiltä tulevat jännitetietoina 0 – 5 V. Eli tasojen tasapainopiste sijaitsee jänni- tearvona ilmaistuna noin 2,5 V kohdalla ja ääriarvot (max. kallistukset) noin 0 V ja 5 V kohdilla. Turvarajat ovat mekaanisia kytkimiä, jotka toimivat ns. äärirajoina potentiometrien pet- täessä. Tiedot turvarajoilta tulevat 0-1-tietoina. 3.4. Valintakytkin Askelmoottorien tiedot vastaanotetaan kolmiportaisessa valintaikkunassa (Case Structu- re). Se, mikä toiminta (ikkuna) on milloinkin käytössä, valitaan käyttöliittymän valinta- kytkimellä. Valintakytkimen demo-asennon ohjaamaksi voidaan rakentaa joku oma sovellus, esi- merkiksi rataprofiili, jota pitkin kuulan halutaan kulkevan. Automaatioasennossa toimii automaattiajo (kappale 3.1) ja käsiasennossa manuaaliajo (kappale 3.2). Valittaessa valintakytkimen asennoksi 2 askelmoottorien ohjaukset tapahtuvat säätimen kautta. Täl- löin kolmiportaisen valintaikkunan ikkuna numero kaksi välittää tiedot säätimeltä as- kelmoottorien ohjausparametreille globaalien muuttujien välityksellä. Sisempi silmukka (for-loop) määrittelee, kuinka usein kyseinen ohjaus käydään lukemassa. For-silmukan yläosassa on kello, joka määrittelee lukuajan, esim. 10 tarkoittaa sitä, että toiminta käy- dään läpi kerran 10 ms:ssa. Manuaaliajossa valintakytkin on asennossa 3. Tällöin Joystick-ohjaimelta lähetetyt oh- jauspyynnöt välittyvät valintaikkunan kolme kautta askelmoottoreille globaalien muut- tujien välityksellä. Automaattiohjauksen ohjauskaavio on esitetty liitteessä 6. 3.5. Askelmoottoreiden ohjaus Edellä mainitut toimenpiteet eivät saa vielä askelmoottoreita liikkumaan, vaan niille tarvitaan vielä erilliset ohjaimet. Kun askelmoottorille tulee ensimmäisen kerran tietoja, 65 ohjelma käy lukemassa askelmoottorin alustustiedot, kuten ohjainkortin numeron, rin- nakkaisportin numeron, eli paikan mihin I2C-väylä on liitetty, sekä I2C-väylän määrit- telyt. Alustustiedot luetaan yhden ainoan kerran käynnistyksen yhteydessä. Alustuksen jälkeen ohjelma siirtyy lukemaan ikkunaa 1 (kuva 39), missä sijaitsevat as- kelmoottorin käyttöön tarvittavat ohjaustiedot. Kuva 39. Askelmoottorien ohjauskäskyt kulkeutuvat kyseiseen tarkoitukseen rakennet- tuihin ohjelmamoduuleihin eli virtuaali-instrumentteihin. Kyseinen moduuli on raken- nettu päällekkäin oleviin ikkunoihin (Stacked Sequence Structure), joilla on peräkkäi- nen suoritusjärjestys. Kyseiset ohjaukset on sijoitettu while-silmukkaan, joten ohjausviestit kulkeutuvat sinne niin kauan kun silmukan asetusarvo on true. 66 Niin kauan kun säätimeltä tai Joystick-ohjaimelta ei tule stop-käskyä (false), askelmoot- tori pysyy käynnissä. Askelmoottorin pyörimissuuntaa ohjataan true- ja false-käskyillä. Rakennettu ohjelma vertaa nykyistä nopeus-, suunta- ja moottorinumerotietoa edellisiin tietoihin. Jos joku näistä tiedoista on muuttunut, se välittyy I2C-väylää pitkin askel- moottorin ohjainkortille ja siitä edelleen askelmoottorille. Kuulan liikettä tasolla voidaan seurata mm. kuvan 40 mukaisesta kuvaajasta. Kyseisestä kuvasta selviää kohdepiste ja kuulan eteneminen kohti kohdepistettä sekä x- että y- suunnissa. Kuva 40. Kuulan liikkeen esittäminen kuvaajalla. Maksimietäisyys kertoo kuulan etäi- syyden kohdepisteestä lähtötilanteessa sekä x- että y-akselien suhteen (kuvassa 74,050× cm 37= cm ja aikajana kertoo muun muassa, koska kuula tavoittaa kohdepis- teen (kuvassa 23 s). 67 4. TULOKSIA Kuulapeli vaatii toimiakseen muutakin kuin hyvin suunnitellun mekaniikan, toimivan säätöjärjestelmän ja oikeanlaisen pelivälineen, nimittäin tarkat säätöparametrit, ja tarkan paikannustiedon. Tässä luvussa haetaan säätimelle parhaat mahdolliset säätöparametrit kokeellisesti. Ismo Tupamäen diplomityössä keskitytään lähinnä kuulan paikannuksen konenäkö toteutukseen. 4.1. Nopeuden säätö Tasoa kallistavien askelmoottoreiden nopeutta voidaan säätää sekä perusajossa pv että sysäysajossa. Lisäksi sysäysajossa voidaan säätää erikseen sekä sysäysnopeutta sv että sysäyksen palautusnopeutta spv . Nopeutta säädetään numeroarvoin, välillä 0 – 255, mis- sä 0 tarkoittaa maksiminopeutta maxv ja 255 tarkoittaa miniminopeutta minv . (Nopeus- tiedot, suuntatiedot ja pysäytyskäskyt välittyvät askelmoottorien ohjaimille I2C-väylää pitkin 8-bittisinä jonoina). Kyseisillä nopeuksilla on suuri merkitys säädön onnistumi- selle eli sille, kuinka nopeasti ja tasaisesti kuula saavuttaa kohdepisteensä ),( yx rr= Tr vai saavuttaako se sitä ollenkaan. Nopeussäädön lisäksi kohdepisteen löytymistä edesauttaa kallistuskulman säätöön pe- rusajossa vaikuttava PD-säätö. Aluksi tutkitaan nopeuden vaikutusta ohjaukseen. Säädetään PK - ja DK -parametrit suhteellisen hyvin toimiviin arvoihin: x-suunnan säätö, PK = 0,7 ja DK = 20.000.000, ja y-suunnan säätö, PK = 0,4 ja DK = 25.000.000. Nämä kyseiset parametrit määriteltiin kokeellisesti tietyllä askelmoottorinopeudella ),,( spsp vvv ja todettiin suhteellisen hyvin toimiviksi. PK ja DK –parametrien tarkasteluun palataan nopeusarvojen tutkimisen jäl- keen. Tällöin nopeuden ja PD-säädön yhteisvaikutus saadaan viritettyä tarkemmaksi. 68 Kuulan sijainti lähtötilanteessa on pelitason vasen alareuna, koordinaatteinaan (33, 10). Kohdearvoksi määriteltiin (84, 60) eli suurin piirtein laudan keskikohta. Nopeusarvojen asettamisen jälkeen kuulan kulkua kohti kohdekoordinaattia seurattiin yhden minuutin ajan. Kuulan sijaintipisteet ),( yx mm= Tm päivittyivät x-y-kuvaajaan 0,5 sekunnin vä- lein. 4.1.1. Kuvaajan tulkitseminen Kuvaajat on esitetty allekkain samalla aikajanalla (kuva 8.1). Ylimmäisessä kuvaajassa on esitettynä kohdepiste kohdassa 0=e (harmaa viiva). Kuulan etenemistä kohti tavoi- tepistettä ),( yx rr= Tr x-akselilla kuvaa musta viiva )(tex ja y-akselilla harmaa viiva )(tey . Keskimmäisessä kuvaajassa on esitetty tasojen tasapainopiste )0( °=α harmaalla viivalla. X-tason kallistuksia tasapainotilan molemmin puolin kuvaa musta viiva )(txα ja y-tason kallistuksia harmaa viiva )(tyα . Alimmaisessa kuvaajassa on esitetty PD- säädön vaikutus säätöön. Silloin kun säätö ei vaikuta, 0=u V (harmaa viiva). PD- säädön vaikutusta x-tason kallistuksessa )(txα kuvataan mustalla viivalla )(tu x ja y- tason kallistuksessa )(tyα harmaalla viivalla )(tu y . 4.1.2. Mittaukset ja kommentit Mittauksia suoritettiin useilla nopeusarvoilla hakien säädön kannalta parasta nopeutta. Osa saaduista tuloksista, lähinnä ääriarvot ja parhaat arvot, on esitetty kuvissa 41 – 45. Ensimmäinen mittaus suoritettiin suurilla nopeuksilla, ja etsittiin maksimaalisia äärira- joja nopeuden suhteen. Sekä x, että y-akseleille asetettiin seuraavanlaiset nopeudet: 30=pv , 30=sv ja 30=spv . Perusnopeudella pv tarkoitetaan sitä nopeutta, millä säädin ohjaa askelmoottoreita (ta- sokaltevuuksia xα ja yα ), kun kuula jo liikkuu. Sysäysajo sisältää syvän kallistuksen (liikkeellelähtösysäys sv ) ja palautuksen tasapainotilaan (sysäyksen palautus spv ). Näil- le molemmille voidaan asetella omat nopeutensa. 69 Suoritettiin kaksi ajoa, joista molemmat kokeilut kaatoivat koko säätöjärjestelmän siinä vaiheessa, kun ohjaus siirtyi perusajolle, joten lisäkokeilut todettiin turhaksi. Seuraava mittaus suoritettiin edelleen suurilla nopeuksilla. Sekä x- että y-akseleille ase- teltiin nopeudet: 40=pv , 40=sv ja 40=spv . Suoritettiin kolme ajoa, joista yksikään ei löytänyt tietään perille asti, ja yksi ajo kaatoi koko säätöjärjestelmän. Ilmaus ”perille asti” tarkoittaa sitä, että kuula saavuttaa asetel- lun kohdekoordinaatin ),( yx rr= Tr toleranssin rajoissa, jolloin toiminta pysähtyy ja kuula pysyy määritellyssä kohteessa liikkumattomana. Jo ensimmäinen ajo näytti, että tason ja kuulan epätasaisuudet, sekä askelmoottorien hitaus, tuovat ongelmia säätöön. Kuulan pysähtyessä se saattaa kiinnittyä tasopintaan niin tiukasti, että edes sysäyskäyttö ei saa sitä heti liikkeelle. Lisäksi tason kuperuus vaikeuttaa kuulan pysähtymistä tietyissä kohdin tasoa. Testiajoesimerkeissä seurataan tapahtumia aika-janan suhteen. Esimerkiksi jos sysäys- käyttö on tapahtunut 5s päästä siitä, kun automaattiajo on alkanut, sitä merkitään ( 5=t s). 70 Kuva 41. Testiajo suurilla nopeuksilla 40=pv , 40=sv ja 40=spv , jossa liikkeelle- lähtösysäys 5,1( =t s) ajaa x-akselin kaltevuuden xα lähes äärirajaan asti, mikä saa kuu- lan vierimään suurella nopeudella kohti tavoitepistettä, y-akselilla sysäyskäyttö jää jos- tain syystä vajaaksi. Pikainen vastakallistus 5,2( =t s) hidastaa kuulan liikettä jonkin verran. Säätö siirtyy perusajoon tason saavutettua tasapainopisteen )0( °=α . PD-säätö tulee mukaan ohjaukseen, mikä aiheuttaa tason kallistuksen vastakkaiseen suuntaan ja hidas- taa hiukan kuulan etenemistä. Kuula ylittää tavoitepisteen suhteellisen suurella nopeu- della 4( =t s). D-säätö reagoi tasapainopisteen )0( °=α ylitykseen nopeasti, mikä te- hostaa P-säädön vaikutusta ja pysäyttää kuulan etenemisen tavoitepisteestä poispäin 6( =t s). Kuula pysyy hetken aikaa lähes paikoillaan (jumittuu alustaan), mutta liikkuu kuitenkin sen verran, että sysäysohjaus ei mene päälle. Taso tekee edestakaisia liikkeitä tasapainotilan molemmin puolin irrottaen kuulan 10( =t s). Taso kallistuu jälleen jyr- kästi tavoitepisteen suuntaan, ja ylittää sen hetkisen äärirajan suuren perusnopeuden pv 71 vuoksi. Vaikka D-säätö reagoi jatkuvasti nopeisiin kallistuksiin, niin askelmoottori ei ehdi reagoida jokaiseen käskyyn. Tämän vuoksi kuula etenee rauhattomasti sekä x- että y-akselilla saavuttamatta koskaan tavoitepistettä ),( yx rr= Tr . Tätä nopeutta voidaan pitää perusnopeuden maksimi äärirajana. Koska suurien nopeuksien äärirajat löytyivät, niin seuraavaksi aseteltiin nopeudet: 230=pv , 230=sv ja 230=spv eli erittäin hitaat nopeudet. Suoritettiin kolme ajoa, joista kuula löysi tiensä tavoitepisteeseen toleranssin rajoissa kaksi kertaa. Kuva 42. Testiajo pienillä nopeuksilla 230=pv , 230=sv ja 230=spv , jossa liikkeel- lelähtösysäys 2( =t s) kallistaa tasoja vain hyvin vähän, joten kuula irtoaa x-akselilla vasta kallistuksen xα ollessa suurimmillaan ja y- akselilla vasta sysäyksen palautukses- sa. Lisäksi sysäysaika muodostuu suureksi (noin 2,5 s) mikä vaikeuttaa kuulan ohjatta- vuutta tasolla. 72 Ohjauksen siirryttyä perusajolle 5,3( =t s) PD-säätö tulee mukaan ohjaukseen. PD-säätö reagoi heti kuulan nopeuteen ja etäisyyteen tavoitepisteestä, mutta hitaasta perusnopeu- desta pv johtuen askelmoottorin hitaat liikkeet eivät ehdi ohjata tasoja säädön edellyt- tämällä tavalla. Kuula pysähtyy jatkuvasti aiheuttaen aina hitaan sysäyskäytön, mutta löytää kuitenkin useimmiten tavoitepisteen, epävarmasta ohjauksesta huolimatta. Tätä pienempiä nopeuksia ei tarvinnut enää testata, eli tätä nopeutta voitiin pitää hitaan nopeuden äärirajana. Seuraavaksi testattiin nopeuksia välillä 230–150, ja perusajon oh- jattavuus parani koko ajan. Seuraavaksi testattiin säätöä nopeuksilla 150=pv , 150=sv ja =spv 150. Suoritettiin kolme ajoa, joista kaksi löysi tiensä perille määritellyssä ajassa. Perusnopeus sv näytti hyvältä, koska se ohjasi kuulaa kohti tavoitepistettä suhteellisen hallitusti. Mutta kun kuula pysähtyi, aiheuttaen sysäyskäytön ( sps vv , ), niin se karkasi hyvinkin kauas tavoi- tepisteestä, koska sysäyskäyttö oli liian hidas. Koska perusnopeus näytti suhteellisen hyvältä, niin seuraavaksi testattiin sysäysnopeuksia välillä 150 – 20. Toimivuus parani koko ajan, kunnes päästiin seuraaviin sysäysnopeuksiin: x-akseli, 70=sv ja 20=spv , y-akseli, 45=sv ja 35=spv . Kolmesta testiajosta kaikki löysivät tiensä perille asti määritellyssä ajassa. Sysäyskäyttö sai kuulan tasaisesti liikkeelle ja askelmoottori ehti reagoida PD-säädöltä tuleviin ohja- uskäskyihin )(tu x ja )(tu y ohjauksen siirryttyä perusajoon. Kuula eteni x-akselin suun- taisesti ))(( tex tavoitepisteen tuntumassa suhteellisen pienin poikkeamin, y-akselilla ))(( tey tuli heittoa hieman enemmän, mikä johtui sysäysajosta. Kyseiset arvot valittiin kuulapelin nopeusarvoiksi, mutta PD-parametrien ),( DP KK virittämisen jälkeen pala- taan vielä y-akselin sysäysajoon. 73 4.1.3. PD-säädön parametriviritys Säätimelle asetetut vaatimukset (stabiilius, nopeus ja tarkkuus) ovat osittain ristiriitaisia, koska esimerkiksi nopeuden lisääminen huonontaa järjestelmän suhteellista stabiiliutta. Tämän vuoksi joudutaan aina tekemään kompromissi eri vaatimusten välillä. On pyrit- tävä suureen nopeuteen ja tarkkuuteen ilman että joudutaan niin lähelle värähtelyrajaa, että häiriöt voisivat tehdä järjestelmän epästabiiliksi. Kuulapelin säätimen parametrointi on aika hankalaa millään tietyllä menetelmällä, joten pelin PD-säädin viritetään kokeellisesti. Nopeusparametrit aseteltiin seuraavasti: 150=pxv , 70=sxv ja 20=spxv , 150=pyv , 45=syv ja 35=spyv . Kuulan sijainti lähtötilanteessa on sama kuin edellisessäkin mittauksessa, eli pelitason vasen alareuna, missä koordinaattipisteet ovat (33, 10). Kohdearvoksi määriteltiin jäl- leen (84, 60) eli suurin piirtein laudan keskikohta. Aseteltiin PK ja DK -parametrit sää- timeen ja seurattiin kuulan kulkua kohti kohdekoordinaattia yhden minuutin ajan. Kuu- lan sijaintipisteet päivittyivät kuvaajaan 0,5 sekunnin välein. Ensimmäisessä mittauksessa molempien askelmoottoreiden ohjauksien PK - ja DK - parametrit asetettiin nollaksi, jolloin PD-säätö ei vaikuttanut prosessiin. Tällä mittauk- sella haettiin vertailukohde tuleville mittauksille. 74 Kuva 43. Testausajo ilman PD-säätöä ( 0=PK ja 0=DK ). Kuula etenee kohti tavoi- tepistettä ),( yx rr= Tr pelkästään sysäyskäyttöjen ohjaamana. Eli aina, kun kuula tasol- la pysähtyy, sysäyskäyttö laittaa sen jälleen liikkeelle. Pieni liike, joka näkyy tasojen kallistuksissa, johtuu siitä, että taso hakee jatkuvasti tasapainotilaa )0( °=α , jota se ei kuitenkaan koskaan pysty saavuttamaan. Vertailuarvona tasapainotilassa, ilman PD- säätöä, on toleranssiton luku (2,5), joka ylittyy tai alittuu koko ajan, mikä aiheuttaa edestakaista ajoa. Seuraavaksi etsittiin vahvistuksen PK arvo, missä säätö lähtee värähtelemään. Vahvis- tuksen arvo 4=PK oli aivan liian suuri, mikä aiheuttaa säätöjärjestelmän kaatumisen. Vahvistuksen arvolla 3=PK säätöjärjestelmä ei enää kaatunut, mutta lähti värähtele- mään ja ylitti kallistuksen ääriraja-arvot useaan otteeseen. Kyseisen testiajon kuvaaja on esitetty kuvassa 44. 75 Kuva 44. Testausajo PD-parametriarvoilla 3=PK ja 0=DK . Tasot kallistelevat tasa- painotilan molemmin puolin epämääräisesti, mikä aiheutti täysin hallitsemattoman oh- jauksen kuulalle. Seuraavaksi kokeiltiin vahvistuksen arvoja 21−=PK ja ohjaus parani koko ajan. Vah- vistuksen arvolla 1=PK otettiin D-vahvistus DK mukaan säätöön. DK -arvon suuruus- luokka määriteltiin virtuaalisen mittapään avulla testiajotilanteessa. Erosuure )(te vaih- teli välillä 0 - 1, joten D-termi muodostui hyvin pieneksi. DK -vahvistusarvoja testattiin välillä 77 103101 ×−× , kunnes löydettiin sopivin vaihtoehto, mikä oli molemmilla, sekä x- että y-akselilla 7105,1 × . Tämän jälkeen säädettiin vielä vahvistuksen PK -parametria ja todettiin, että 1=PK on paras vaihtoehto molempien suuntien ),( yx säädöissä. Tä- män lisäksi säädettiin vielä y-akselin sysäysajon palautusta hiukan nopeammaksi 20=spyv . Kyseiset parametriarvot valittiin kuulapelin säätöarvoiksi. Testiajoja valituil- 76 la säätöarvoilla suoritettiin kaiken kaikkiaan 10 kpl, joista yksi on esitetty kuvassa 45 ja tulokset on esitetty taulukossa 3. Kuva 45. Testausajo 1 parhailla parametriarvoilla. Sysäyskäyttö saa kuulan tasaisesti liikkeelle. Perusohjaukseen siirryttäessä PD-säätö saa kuulan liikkeet hyvin hallintaansa ja ohjaa sen suhteellisen joustavasti tavoitepisteeseen. 77 Taulukko 3. Testiajot valituilla nopeus- ja PD-parametriarvoilla. Testiajo t / s 1 10 2 32 3 32 4 60 5 12 6 80 7 35 8 8 9 30 10 32 Pisin aika t tavoitepisteen löytymiseen oli 80 s ja lyhyin 8 s. Tavoitepisteen löytymi- seen vaikutti tasopinnan epätasaisuus (keskeltä hiukan kupera) ja kuulan pinnan epäta- saisuus. Tavoitepiste löytyi suhteellisen nopeasti jokaisella mittauksella, mutta kuula saattoi vieriä hitaasti kohteen yli kuperuuden vuoksi tai pysähtyä tavoitealueen ulkopuo- lelle, jolloin sysäyskäyttö aiheutti pienen karkaamisen. 4.2. Tulosten tarkastelu Nopeutta säädetään numeroarvoin välillä 0 – 255, missä 0 tarkoittaa maksiminopeutta maxv ja 255 tarkoittaa miniminopeutta minv . (Nopeustiedot, suuntatiedot ja pysäytyskäs- kyt välittyvät askelmoottorien ohjaimille I2C-väylää pitkin 8-bittisinä jonoina). Nope- usparametreja valittaessa, testattiin perusnopeutta ( pv ) ja sysäysnopeuksia ( sps vv , ) useilla erisuuruisilla nopeusarvoilla. PD-säätimien parametrit ( DP KK , ) olivat tällöin aseteltu suhteellisen hyvin toimiviin arvoihin. Liian nopea perusnopeus 80pv taas aiheutti sen, että vaikka PD-säätö reagoi heti kuulan nopeuteen ja etäisyyteen tavoitepisteestään, niin askelmoottorien hitaat liikkeet eivät ehtineet ohjata tasoa säädön edellyttämällä tavalla. 78 Testien perusteella perusnopeus 150=sv näytti molempien akselien suhteen parhaalta, koska se ohjasi kuulaa kohti tavoitepistettä suhteellisen hallitusti. Tason edestakaisen kallistelun (sysäyksen) tarkoitus on saada paikallaan oleva kuula mahdollisimman tasaisesti liikkeelle, viemättä kuulaa kuitenkaan kovin kauas irtoamis- pisteestään. Hitaat (>80) sysäysnopeudet ( sps vv , ) veivät kuulan hyvinkin kauas ir- toamispisteestään, nostaen samalla kuulan nopeuden vaikeasti hallittavaksi. Tämän vuoksi sysäysnopeudet ( sps vv , ) valittiin mahdollisimman suuriksi, eli sellaisiksi, että askelmoottorien vääntömomentit ja kuulapelin mekaniikka kestivät nopeat sysäysajot häiriöttä. Kuulapelille valittiin seuraavanlaiset sysäysnopeudet: 70=sxv ja 20=spxv , 45=syv ja 35=spyv . Kuulapelin säätimen parametrointi oli aika hankalaa millään tietyllä menetelmällä, joten pelin PD-säädin viritettiin kokeellisesti. PD-säätö tulee mukaan ohjaukseen heti sy- säysajon jälkeen, kun säätö siirtyy perusajoon. Aluksi etsittiin vahvistuksen PK äärira- ja-arvo, jossa säätö lähti värähtelemään. Kun tämä löytyi, testattiin pienempiä vahvis- tuksen PK arvoja, kunnes löydettiin suhteellisen toimiva arvo. Derivointivahvistuksen DK suuruusluokka määriteltiin virtuaalisen mittapään avulla testiajotilanteessa. Erosuu- re vaihteli välillä 0-1, joten D-termi muodostui hyvin pieneksi. Kun PK ja DK suuruus- luokat olivat selvillä, suoritimme kuulapelillä useita testiajoja erilaisilla PK ja DK ar- voilla, kunnes sopivin vaihtoehto löytyi. Sopivin DK parametri oli molemmilla, sekä x- että y-akselilla 7105,1 × ja vahvistuksen PK -parametri 1. Valituilla parametreilla suoritettiin 10 testausajoa. Kuula pysähtyi tavoitepisteeseen joka testausajolla, mutta ajat vaihtelivat 8s ja 80s välillä. Tavoitepisteen löytymiseen vaikutti tasopinnan epätasaisuus (keskeltä hiukan kupera) ja kuulan pinnan epätasaisuus. Tavoi- tepiste löytyi suhteellisen nopeasti jokaisella mittauksella. Kuula saattoi kuitenkin vieriä hitaasti kohteen yli tason kuperuuden vuoksi tai pysähtyi tavoitealueen ulkopuolelle 79 hiljaisesta nopeudesta ja kuulan pinnan epätasaisuudesta johtuen. Sysäyskäyttö sai kui- tenkin kuulan taas liikkeelle, mutta aiheutti pienen karkaamisen. 4.3. Kokemuksia ja ongelmia LabVIEW oli toteutusympäristönä aluksi melko hankala, johtuen tekijöiden kokemat- tomuudesta. Lähes kaikki toiminnat toteutuivat yrityksen ja erehdyksen kautta. Esimer- kiksi Joystick-ohjauksen x- ja y-suuntien ohjaukset (askelmoottorit) tuottivat aluksi yli- pääsemättömiä vaikeuksia ohjelmankiertoa säätelevien kellopulssien määrittelyjen suh- teen: Kaksi samassa kytkennässä olevaa kelloa aiheuttivat aikapulssien vääristymistä, mikä vaikeutti askelmoottorien tahdistamista. Toiminta korjaantui siirtämällä molem- mat dimensiot omiin silmukoihinsa ja käyttämällä tietojen siirrossa globaaleja muuttu- jia. Askelmoottoriohjauksessa ongelmaksi muodostui Ismo Tupamäen valmistama ohjain- kortti, joka yhdistettiin suoraan rinnakkaisporttiin. Kortin komponentit paloivat useaan otteeseen, joten työhön hankittiin valmiit kortit Vaasan elektroniikkakeskuksesta. Han- kittujen ohjainkorttien askelmoottorit olivat aivan liian pienitehoiset ohjaamaan pelin tasoja, joten kortteihin hankittiin suurempitehoiset (ja -kokoiset) askelmoottorit. Vaikka askelmoottorien ottama virta ei noussutkaan yli askelmoottorien ohjainkorttien kestora- jan, niin silti toisesta ohjainkortista paloi komponentteja yksi kerrallaan. Spesifikaatioi- den mukaan kaiken piti olla kunnossa. Kun tämä tapahtuma toistui useaan otteeseen, niin kortin kaikki komponentit vaihdettiin virtakestoltaan suurempiin. Epäilimme moot- torilta porttiin päin tulevan virtapiikin aiheuttavan komponenttien tuhoutumisen, jolloin diodisuojaus olisi auttanut, mutta emme lähteneet tutkimaan asiaa sen syvällisemmin. Komponenttien vaihdon jälkeen ongelmat poistuivat. Työ eteni ja syntyneet ongelmat selvisivät suhteellisen vaivattomasti, kunnes ilmeni aivan uudenlainen ongelma. Tietokoneen prosessoritehot nousivat 100 % automaat- tiajolla, ja kone jumittui kesken ohjelman suorituksen. Saimme prosessoritehot pie- nemmiksi pudottamalla ohjelman kiertonopeutta. Tämä auttoi prosessoritehoon, mutta 80 ohjelman toiminta huononi entisestään. Lukunopeuden pienentäminen vaikutti muun muassa potentiometreiltä ja kameralta tulevien tietojen käsittelynopeuteen. Pitkän selvi- tyksen jälkeen vika löytyi laaditun ohjelman rakenteesta, eli kun tietyt ohjelman osat yhdistettiin järjestelmään globaalien muuttujien välityksellä, prosessoritehojen kanssa ei ollut enää ongelmia. X- ja y-ajoissa ilmeni edelleen ristiriitoja. Yritimme ratkaista ristiriidat rakentamalla ohjelmallisesti vuorottelun, eli x- ja y-ajot toimivat vuorotellen tietyn ajan. Käsiajo- ominaisuudet paranivat huomattavasti, mutta automaattiajossa ilmeni edelleen jumittu- mista. Automaattiajoon liittyvässä säädössä tasot eivät ehtineet alkuunkaan mukaan haluttuun toimintaan. Vika ilmeni I2C-väylän viestien törmäilyillä. Tämän vuoksi asen- simme järjestelmään toisen I2C-väylän y-akselin ohjaukseen. Asentamisessa oli omat hankaluutensa, mutta saimme sen lopulta toimimaan. Käsi- ja automaattikäyttö toimi tältä osin erinomaisesti, eikä enää ilmennyt jumittumista. Pitkällisten kokeilujen jälkeen toiminta saatiin kuitenkin suhteellisen varmaksi ja säätö alkoi totella asetusarvoja ja kuula löysi tiensä kohteeseen. Kun kuulapelin mekaniikka ja ohjaus saatiin toimintavarmaksi, suoritettiin useita peli- kuulaan ja säätöön liittyviä testejä. Pelikuulan valintakriteereinä olivat näkyvyys kame- rassa ja hallittavuus. Testattavana oli yksitoista erikokoista ja painoista kuulaa, joilla tehtiin lähtökitka-, nopeus- ja kimmoisuustestit. Kaksi kuulaa oli edellä mainittujen tes- tien valossa yli muiden, joten näkyvyys kamerassa ratkaisi valinnan. Pelikuulaksi valit- tiin musta, hiiriohjaimesta otettu kuula. Tämän jälkeen haettiin säätöön oikeanlaiset parametrit kokeilumenetelmällä. Aluksi testattiin erisuuruisia nopeusparametreja perusajoon sekä sysäysajoon. Sysäysajossa oli omat nopeussäädöt, kallistukseen ja palautukseen. Ennen nopeusparametrien testausta valittiin perusajoon vaikuttavaan PD-säätöön suhteellisen hyvin toimivat parametriar- vot. Nopeuksia testattiin useilla eri arvoilla ja tultiin siihen tulokseen, että perusajon täytyi olla suhteellisen hidas ja sysäysajon täytyi olla erittäin nopea kuulan hallinnan 81 tähden. Kun nopeusarvot olivat kohdallaan, testattiin PD-säätöä erilaisilla PK ja DK - parametriarvoilla. Ongelmista huolimatta, kuulapelin prototyyppi saatiin toimintakuntoiseksi (kuva 46). Kuva 46. Tekijä testaamassa omia taitojaan. 82 5. YHTEENVETO Kuulapeli on taitopeli, jossa kuula ohjataan tasoja kallistamalla määrättyä reittiä pitkin haluttuun kohteeseen, joko manuaalisesti tai automaattiajolla. Kuulapeli koostuu kol- mesta hieman erikokoisista neliönmuotoisista puukehikoista, jotka on aseteltu sisäkkäin ja yhdistetty laakerien välityksellä toisiinsa. Askelmoottorit on kiinnitetty pelin runkoon ja ne ohjaavat vaijerien välityksellä tasojen kaltevuuksia. Askelmoottorien ohjainkortit sijaitsevat pelin runkoon sijoitetussa ohjauskotelossa ja ne ovat yhdistetty tietokonee- seen kahdella erillisellä I2C-väylällä (molemmilla askelmoottoreilla omansa). Tasokul- mia seuraavat potentiometrit ja äärirajat on yhdistetty ohjauskeskuksessa sijaitsevan CB-68LPR-kortin kautta tietokoneeseen SCH-68-EPM SHIELDED välikaapelilla. Pelin ohjaimena tietokoneessa toimii LabVIEW, graafinen ohjelmointiympäristö, mihin kaik- ki pelin vaatimat toiminnat on koottu yksittäisistä ohjelmamoduuleista eli virtuaali- instrumenteista. Kuulapelissä on kolme erilaista toimintoa: • Tietokoneelle määritellään kohdekoordinaatit eli tavoitepiste, jo- hon kuulan halutaan tasolla siirtyvän. Kuula etenee tavoitepisteen tietokoneohjatusti. • Tietokoneelle määritellään kohdekoordinaatit eli rataprofiili, jota pitkin kuulan halutaan tasolla kulkevan. Kuula etenee määriteltyä rataprofiilia tietokoneohjatusti. • Käyttäjä ohjaa itse kuulan tavoitepisteeseen Joystick-ohjaimen avulla. Manuaaliajossa käyttäjä ohjaa kuulan tavoitepisteeseen Joystick-ohjaimen avulla. Joys- tick-ohjain on liitetty tietokoneeseen USB-portin kautta. Automaattiajossa Firewire-kamera seuraa kuulan kulkua tasolla, ja se lähettää kuulan paikkatietoa takaisinkytkentätietona säätimelle 133 ms väliajoin (kuvankäsittely on esi- 83 tetty tarkemmin Ismo Tupamäen diplomityössä). Tietokone paikantaa kuulan ja laskee, mihin kulmaan tasot kannattaa kääntää, jolloin paikannus onnistuu nopeasti. Säädön toimintaperiaate on seuraavanlainen: Automaattiajossa käytetään kahta eri ajo- tyyppiä, sysäys- ja perusajo. Sysäysajo saa kuulan liikkeelle aloituksessa ja silloin kun kuula pysähtyy tavoitepisteen ulkopuolelle ja lähettää kaksi samaa paikannustietoa pe- räkkäin. Sysäysajolla tarkoitetaan sellaista tason nopeaa kallistusta ja sen palautusta, mikä saa kuulan liikkeelle. Sysäysajon jälkeen kuulapeli siirtyy automaattisesti perus- ajoon. Perusajossa PD-säätö ohjaa kuulaa erosuureen ja kuulan sen hetkisen nopeuden perusteella. P-säätö määrittelee tason äärikallistuspisteen, mikä on suoraan verrannollinen erosuu- reeseen eli mitä pidempi matka tavoitepisteeseen on, sitä jyrkemmin taso kallistuu. D- säätö joko vahvistaa tai heikentää P-säätöä seuraavasti: Kun kuula lähestyy tavoitepistettä D-säätö alkaa heikentää P-säädön vaikutusta, se kuinka suuri D-säädön vaikutus on, riippuu kuulan senhetkisestä nopeudesta ja D- vahvistuksesta. Jos tavoitepiste ylittyy ja kallistus-suunta muuttuu vastakkaiseksi, D- säätö vahvistaa P-säätöä niin kauan, kunnes kuulan suunta jälleen muuttuu kohti tavoi- tepistettä. Jos kallistuksen senhetkinen ääriraja ylittyy esimerkiksi kuulan nopeuden vuoksi, askelmoottorit ajavat tasot automaattisesti tasapainotilaan, hilliten kuulan ete- nemistä. Kun kuula saavuttaa tavoitepisteen toleranssin rajoissa, askelmoottoreille välit- tyy I2C-väylää pitkin pysäytyskäsky ja toiminta pysähtyy. Kuulapeliä voidaan käyttää automaatioalan-opetuksessa, viihdykkeenä erilaisissa tilai- suuksissa ja mahdollisessa graafiseen ohjelmointiin kohdistuvassa opetus- ja tutkimus- työssä. 84 5.1. Tulevaisuus Kuulapelin kehitystyö on vasta alussa. Ainoastaan edellä mainittu pohjatyö kyseisen laitteen automatisoimiseksi ja mekanisoimiseksi on tehty. Tulevaisuudessa kuulapeliin olisi mahdollisuus kehitellä runsaasti uusia ominaisuuksia, sillä esimerkiksi viidestä pelin toiminnallisesta tavoiteportaasta (kappale 1.3) käytettiin ainoastaan kaksi, ja lisä- tavoitteitakin varmasti löytyy, esimerkiksi peliin voisi lisätä vaikkapa verkkopelatta- vuusmahdollisuuden. Kuulapeli sopisi mm. koulujen vapaa-ajantiloihin, kerhoihin ja huoltoasemille flipperin tyyliseksi harrastepeliksi. Lisäksi kuulapeli sopisi monipuolisuutensa vuoksi oppilaitok- siin esimerkiksi automaatio- ja tietotekniikka-alan opetusvälineeksi. Toisin sanoen, kuu- lapeli on mahdollista jatkokehittää kaupalliseksi tuotteeksi, jolloin sen on täytettävä vaaditut turvallisuusvaatimukset, joista seuraavassa lyhyt selvitys: Koneita koskevat tekniset vaatimukset sekä koneen vaatimustenmukaisuuden osoitta- minen on yhdenmukaistettu Euroopan talousalueella. Kun tuote on valmistettu yhden- mukaistetun standardin mukaan ja sen vaatimustenmukaisuuden arviointimenettely on ao. direktiivin tai direktiivien mukainen, myös viranomaiset katsovat tuotteen täyttävän turvallisuusvaatimukset. Tällöin tuotteeseen voidaan kiinnittää CE-merkintä ja saattaa se markkinoille (Pahkala, Siirilä 1999). Kuulapelin jatkokehittely edellyttää, että joku innostuu jatkokehittämään suunniteltua prototyyppiä. Työ sopisi päättötyöksi jollekin markkinointihenkiselle automaatioalan diplomi-insinööriopiskelijalle tai automaatioalan insinööriopiskelijalle, jolla on jonkin verran pohjatietoa LabVIEW-ohjelmoinnista. 85 VIITTEET Airila, Mauri (1999). Mekatroniikka. 5. painos. Helsinki: Otatieto Oy. Dadios, E.P, R. Baylon, R. De Guzman, A. Florentino, R.M. Lee & Z. Zulueta (2000). Vision guided ball-beam balancing system using fuzzy logic. Industrial Electronics Society. IECON 2000, 26th Annual Conference of the IEEE, vol. 3, sivut 1973 – 1978. Jones, Douglas (2004). Stepping motors fundamentals. University of Iowa. Saatavana World Wide Webistä: http://ww1.microchip.com/downloads/en/AppNotes/00907a. pdf. Halme, Terho (1992). Säätö- ja ohjaustekniikka. Oppikirja. Opetushallitus. Helsinki: Valtion painatuskeskus. Harries, Ian (1997). Sequences for a Four-Phase Unipolar Permanent Magnet Stepper Motor. Saatavana World Wide Webistä: http://www.doc.ic.ac.uk/~ih/doc/stepper/control2/sequence.html, tilanne 20.06.2006. Johansson, Erik (2000). Säätötekniikka 2000. Iisalmi: IS-PRINT. Kankaanpää, Matti (2003). Käyttötekniikan laboraatio. Askelmoottori. Seinäjoen ammattikorkeakoulu. Keinänen, Toimi, Pentti Kärkkäinen, Tommi Metso & Kari Putkonen (2002). Logiikat ja ohjausjärjestelmät. Porvoo: WS Bookwell Oy. 86 Knuuttila, Aarne, Atte Lindqvist & Harri Räty (2004). Säätöpiirit. Teknillinen Korkeakoulu. Tuotantoautomaatio-kurssin seminaariesitelmä. Saatavana World Wide Webistä: http://www.tkk.fi/Yksikot/Konepaja/Opinnot/Kurssiesitteet/Tuotantoauto- maatio /v2004/H_1_Saatopiirit1.pdf. Koljonen, Janne (2004). Virtual Keeper – Java-pohjainen konenäkösovellus. Vaasan yliopisto. Diplomityö. Saatavana World Wide Webistä: http://lipas.uwasa.fi/~jako/publications/VirtualKeeper.doc. Koskinen, Jari (2002). Mikrotietokonetekniikka, sulautetut järjestelmät. Keuruu: Otavan Kirjapaino Oy. Kostamo, Jari, Heikki Hyötyniemi & Petri Kuosmanen (2005). Ball balancing system: An educational device for demonstrating optimal control. Computational Intelligence in Robotics and Automation, 2005. CIRA 2005. Proceedings. 2005 IEEE Interna- tional Symposium on 27-30 June 2005, sivut 379 – 384. Laukonen, Eric & Stephen Yurkovitch (1993). A ball and beam testbed for fuzzy Identi fication and control design. American Control Conference, San Francisko, CA, sivut 665 – 669. Laurikkala, Mikko (2006). Sumea säätö, ACI-41050 Sumea laskenta. Luentomateriaali. Saatavana World Wide Webistä: http://www.ac.tut.fi/aci/courses/ACI-41050/Luennot/Luento6-2006-6s.pdf. Loh, Nan & Ka Cheok (1987). A ball balancing demonstration of optimal and distur bance-accomodating control. Control Systems Magazine, IEEE, vol 7, Issue 1, sivut 54 – 57. Lohilahti, Jarmo (2002). Ilmavirtauksen mittaus käyttäen ristikorrelaatiota. The Man chester Metropolitan University. Opinnäytetyö. 87 Mäkelä, Mikko, Riitta Mäkelä & Olavi Siltanen (1997). Insinöörikoulutuksen fysiikka. Jyväskylä: Gummerus Kirjapaino Oy. Nadin, Mihai (2004). Visual Programming Languages – Efficiency of the Visual Driv ing Technology. Saatavana World Wide Webistä: http://www.utdallas.edu/~pds017300/nadin/VPL.pdf. Narikka, Jorma (1996). LabVIEW-ohjelmointi. Ohjelmistotekniikan seminaarityö. Jy väskylän Yliopisto. Saatavana World Wide Webistä: http://www.mit.jyu.fi/opiskelu/seminaarit/ohjelmistotekniikkaLabIEW/#1.%20Esi- puhe. National Instruments. Kotisivut. http://www.ni.com , tilanne 10.10.2006. National Instruments (2005). Getting Started with LabVIEW version 8.0. Irland. National Instruments (2003). Labvíew 7 express user manual. Irland. National Instruments (2006). Controlling an X-Y stage with a Joystick. Saatavana World Wide Webistä: http://zone.ni.com/devzone/cda/tut/p/id/3161. National Instruments (2006). Motion Control with USB Joystick. Saatavana World Wide Webistä: http://zone.ni.com/devzone/cda/epd/p/id/4726. Nevalainen, Ari (2004). Askelmoottorit ja mikroaskellus, 183116 Kone, 24501 Meka- troniikan perusteet, 7.12.2004. Nihtilä, Markku (1976), Timo Oksanen (2001) & Lasse Eriksson (2002). P-, PI- ja PID – Säätö. Teknillinen korkeakoulu. Automaatio- ja säätötekniikan laboratoriotyöt. 88 Philips Semiconductors (2000). The I2C-bus specification. Saatavana World Wide We bistä: http://www.nxp.com/acrobat_download/literature/9398/39340011.pdf Siirilä, Tapio (1999). EU-Määräysten mukainen koneiden turvallisuus. Keuruu, Otavan Kirjapaino Oy. Säätötekniikan matematiikan verkkokurssi. Dynaamisen järjestelmän stabiilisuus. Saatavana World Wide Webistä: http://www.control.hut.fi/Kurssit/AS-74.1102/verkkokurssi/Teoria/dynaaminen/dyn- stabiilisuus.html. Tervo, Kalevi (2006). Säätötekniikan matemaattinen verkkokurssi. Teknillinen korkea koulu, systeemitekniikan laboratorio. Saatavana World Wide Webistä: http://www.control.hut.fi/Kurssit/AS-74.2111/materiaali.html. Tilanne 9.10.2006. Törmänen, Pasi (1997). Geneettisten algoritmien käyttö tutkittaessa sumean logiikan hyötyä PID-säädössä - esimerkkinä taajuusmuuttajan sisäiset säätäjät. Vaasan yli- opisto. Pro gradu-tutkielma. Vaittinen, Reijo & Jari Savolainen (2001). Säätötekniikan perusteita. Saarijärvi: Gum merus kirjapaino Oy. Vartiainen, Lauri (1992). Peliautomaattisivu. Saatavana World Wide Webistä: http://www.huvipuisto.net/games/games. Velleman. Kotisivut. http://www.velleman-kit.com/nl/en/product/view/?id=337828, tilanne 03.12.2006. Wexon, kotisivu. http://www.wexon.fi/perus.php?id=119, tilanne 15.10.2006. Wikipedia. Vapaa tietosanakirja. PID-säädin. Saatavana World Wide Webistä: http://fi.Wikipedia.org/wiki/PID-s%C3%A4%C3%A4din). 89 Wikipedia. Vapaa tietosanakirja. Kitka. Saatavana World Wide Webistä: http://fi.Wikipedia.org/wiki/Kitka. Zopel, D (1998). A Versatile Real-Time Experiment: Balancing a Ball on a Flat Board. sivut. Real-Time Systems Education III, sivut 98 – 104. 90 LIITTEET Liite 1. Askelmoottoreiden kytkennät K8005 ohjainkorttiin. Askelmoottoreina käytetään bipolaarisella ohjauksella toteutettuja muuttuvan reluktans- sin moottoreita. Ohjainkortit on yhdistetty I2C-väylien välityksellä tietokoneeseen (Vel- leman 2006). 91 Liite 2. CB-68LPR-kortti. Digitaalisten ja analogisten tietojen keruukortti (CB-68LPR-kortti), sijaitsee kuulapelin ohjauskeskuksessa ja siihen on kytketty muun muassa kuulapelin äärirajat ja liukupo- tentiometrit. PC NIPCI - 6221Kortti Välikaapeli SCH-68-EPM 92 Liite 3. NI 6221 kytkentä (National Instruments 2006). CB-68LPR-kortti yhdistetään tietokoneessa sijaitsevaan NIPCI – 6221 korttiin SCH-68- EPM-välikaapelilla, jonka kytkentä on esitetty alla olevassa kuvassa. 93 Liite 4. Askelmoottorin ohjainkortti K8005 (Velleman 2006). Soveltuu bi- ja unipolarmoottoreille (maksimi 1A). Mahdollisuus suureen tarkkuuteen (jopa 0,9 astetta tai vieläkin parempi käytettäessä alennusvaihdetta). Samalla kun moot- toria ohjataan, on mahdollista tarkistaa kytkimien tila tai ajaa toista moottoria. Hätä- pysäytys on aina mahdollista suorittaa erillisen signaalin avulla (Velleman 2006). 94 Liite 5. Käsiajon ohjauskaavio. Käsiajossa pelikuula kuljetetaan Joystick-ohjaimen avulla haluttuun kohtaan tasoa, väis- tellen mahdollisia esteitä. Mekaaniset äärirajat estävät tasojen liiallisen kallistumisen. Tasojen kaltevuutta seuraavat liukupotentiometrit ohjaavat tasot takaisin vaakatasoon aina, kun Joystick-ohjaimesta päästetään irti. 95 Liite 6. Automaattiajon ohjauskaavio. Automaattiajossa käytetään kahta eri ajotyyppiä, nimittäin sysäys- ja perusajo. Sy- säysajo saa kuulan liikkeelle aloituksessa ja silloin, kun kuula pysähtyy tavoitepisteen ulkopuolelle. Perusajossa PD-säädin ohjaa liikkuvaa kuulaa kohti tavoitepistettä. 96 Liitteet 7 - 11. Kuvakelohkoluettelo Kaikki tässä opinnäytetyössä esitetyt kuvakelohkot ja niiden selitykset. For-silmukka toistaa silmukkaa n-kertaa ja i ilmoittaa silmukan toistot välillä 0 – (n-1). Erillisellä ajastimella määritellään silmu- kan toistonopeus. While-silmukka toistaa silmukkaa aina, kun silmukkaehto on false ja i ilmoittaa silmukan toistot. Erillisellä ajastimella määritellään silmukan toistonopeus. Case-valinta, voidaan kytkeä useita ohjauskaavioita rinnakkain. Tarvittava valinta suoritetaan joko numeroarvoilla (useampi, kuin kaksi ohjausta) tai true / false lauseilla. Kytkin, lähettää true/false-tyyppistä ohjaustietoa (boolean). Suorakaiteen muotoinen merkkivalo, toimii true/false-tyyppisellä ohjauksella (boolean). Pyöreä merkkivalo, toimii true/false-tyyppisellä ohjauksella (boo- lean). Kytkin, lähettää true/false-tyyppistä ohjaustietoa (boolean). Lineaarinen säätö, esim. joystick-ohjaimen herkkyys. Asetusarvojen syöttö ohjelmaan, esim. PID-säätimen parametrit. Mittari, esim. askelmoottorin nopeuden esittäminen. 97 Kuvaaja, esim. säädön, tasokallistuksien ja kuulan etenemisen esi- tys aikayksikössä. Yhteenlasku Vähennyslasku Kertolasku Jakolasku Muuttaa luvun etumerkin vastakkaiseksi. Pyöristää luvun x lähimpään kokonaislukuun y. Syöttää arvoa 20 ohjaukseen. Lähettää true-tyyppistä tietoa ohjaukseen (boolean). Lähettää false-tyyppistä tietoa ohjaukseen (boolean). Jos tulo x on samansuuruinen kuin tulo y, niin lähtö on tosi. Muis- sa tapauksissa lähtö on epätosi. Jos tulo x on erisuuri kuin tulo y, niin lähtö on tosi. Muissa tapauk- sissa lähtö on epätosi. Jos tulo x on suurempi kuin tulo y, niin lähtö on tosi. Muissa tapa- uksissa lähtö on epätosi. 98 Jos tulo x on pienempi kuin tulo y, niin lähtö on tosi. Muissa tapa- uksissa lähtö on epätosi. Jos tulo x on suurempi tai yhtä suuri kuin tulo y, niin lähtö on tosi. Muissa tapauksissa lähtö on epätosi. Jos tulo x on pienempi tai yhtä suuri kuin tulo y, niin lähtö on tosi. Muissa tapauksissa lähtö on epätosi. Jos tulo x on 0, niin lähtö on tosi. Muissa tapauksissa lähtö on epä- tosi. Jos tulo x on erisuuri kuin 0, niin lähtö on tosi. Muissa tapauksissa lähtö on epätosi. Jos tulo x on suurempi kuin 0, niin lähtö on tosi. Muissa tapauksis- sa lähtö on epätosi. Jos tulo x on pienempi kuin 0, niin lähtö on tosi. Muissa tapauksis- sa lähtö on epätosi. Invertteri, muuttaa tiedon tosi epätodeksi, ja päinvastoin (boolean). Vaihtelee tulotietoja x ja y, riippuen siitä, onko ohjaustieto s, tosi vai epätosi. Jos s on tosi, lähtö on x ja jos s on epätosi, lähtö on y. Lukunopeus, esim. silmukan sisällä olevat ohjelmat luetaan 100 ms välein. JA-veräjä, jos x ja y ovat samoja, lähtö on tosi (ja-portti). Voidaan käyttää joko boolean (tosi, epätosi) tai numeroarvoja (0, 1). 99 TAI-veräjä, jos jompikumpi tuloista (x, y) toteutuu, niin lähtö on tosi. Voidaan käyttää joko boolean (tosi, epätosi) tai numeroarvoja (0, 1). Lokaali muuttuja on funktion sisäpuolella esitelty muuttuja, jonka arvo on käytettävissä ja muunneltavissa ilman rajoituksia. Globaali muuttuja on funktion ulkopuolella esitelty muuttuja, jon- ka arvo on käytettävissä ja muunneltavissa ilman rajoituksia. Joystick-ohjaimen liityntäasetukset (Initialize Joystick.vi). Muuntaa joystick-ohjaimelta tulevan tiedon ohjaukseen soveltu- vaksi tiedoksi (Acquire Input Data.vi). Jakaa ryhmässä tulevan tiedon yksittäisiin tietoihin (Unbun- dle.vi). Esimerkiksi, joystick-ohjaimen x, y ja z-akselien ryh- mäohjaustieto eritellään yksittäisiksi tiedoiksi. Toleranssi Viivästetty signaali Silmukan lukunopeus, silmukan sisällä olevat ohjelmat luetaan tietyin aseteltavin välein. 100 Näytteen otto. Esimerkiksi kameralta tulevista paikannustiedoista ),( yx mm otetaan näytteitä ),( yvvx mm 1s välein. Takaisinkytkentä Pelin tasojen ohjauksissa käytetyt rajatiedot (digitaaliset ja analogi- set) saadaan DAQ-assistant-apuohjelman avulla pelin ohjauksen käyttöön. Signaalin jakaminen. Tiedonsiirto johto, ryhmätieto (9 kpl true-false tietoa), vaalean punainen. Viivytetty signaali, sininen. Tiedonsiirto johto, boolean-tieto (true / false), vihreä. Tiedonsiirto johto, 64-bittinen liukuluku, oranssi. Tiedonsiirto johto, 32-bittinen kokonaisluku, sininen.