KIHUn blogi: Teknologiakehitystä yrityksen ja erehdyksen kautta – tarina päkiänousu-testilaitteesta

Haaste

KIHUn kahvipöydässä keskusteltiin päkiänousu-testin tekemisestä ja asioista, jotka tulokseen voivat vaikuttaa. Fysioterapeutit normalisoivat nousukorkeuden mittanauhan avulla, metronomi määrää tahdin ja suorituksen toivottu suoritustekniikka kerrotaan ennen testiä. Testaajan täytyy samanaikaisesti seurata nousukorkeutta, toistojen välistä aikaa ja tekniikan puhtautta. Toistomäärän vaikuttaa esimerkiksi se, kuinka paljon seinästä otetaan tukea. Paljon tarkkailtavaa ja suuri mahdollisuus erilaisiin tuloksiin testaajien välillä.

 

Kuva 1. Päkiälle nousu -testi alkuperäisessä muodossaan.

Ratkaisun hahmottelu

KIHUn tuore innovaatiotiimi päätti pohtia teknologista ratkaisua fysioterapeuttien heittämään haasteeseen. Mahdollisia ratkaisuja löytyi nopeasti useita:

  1. Jalan ympärille sijoitetut laser-valokennot voisivat mitata, milloin kantapää on nousut tarpeeksi korkealle.
  2. Kantapäähän kiinnitetty magnetometri mittaisi kantapään etäisyyttä magneettisesta alustasta.
  3. Puhelimen kamerakuvasta tekoäly tai pikselilaskenta mittaisi nousukorkeuden.
  4. Jalkaterän liike määritettäisiin syvyyskameran tuottamasta luurankomallista.

Yksinkertaisin ratkaisu on kuitenkin yleensä paras. Jalkaterän liikettä katsoessamme päädyimme käyttämään kiihtyvyysanturia. Toinen hyvä vaihtoehto olisi ollut kiihtyvyysanturin, gyroskoopin ja magnetometrin sisältävä IMU-anturi, mutta ”Keep It Simple, Stupid” -ohjenuora ohjasi käyttämään pelkkää kiihtyvyysanturia.

Yleensä kiihtyvyysanturia käytettäessä maanvetovoima on häiriötekijä, mutta tällä kertaa sitä päätettiin käyttää hyväksi. Mikäli kiihtyvyysanturi on vaakasuorassa maanpintaan nähden, Y-akselin kiihtyvyys on 0G, ja mikäli anturi on pystysuorassa, kiihtyvyys on 1G. Jalan suhteellisen kiinteä rakenne, varvas-nilkka-suunnassa, estää pääosin kaiken muun kiihtyvyyden vaikutuksen anturin Y-akseliin, ja muutokset signaalissa voidaan huoletta olettaa olevan anturin kulman aiheuttamia.

 

Kuva 2. Anturin sijainti jalkaterässä.

 

Alustavat testit suoritettiin kiihtyvyysanturilla, jonka mittausalue oli +-4G. Anturissa oli analogiset ulostulot kiihtyvyyssignaalille, joka muutettiin digitaaliseen muotoon Arduino Unon 10-bittisellä AD-muuntimella. 10-bittinen AD-muunnin mahdollistaa 0–5 voltin kiihtyvyyssignaalin muuntamisen 1024 erillisen kiihtyvyystasoon. AD-muuntimen 1024 tasoa jakautuu tasan anturin 8G:n (+-4G) mittausalueen kesken. Maanvetovoiman 1G:n mittaamiselle jäi siis ainoastaan 128 mahdollista arvoa. Oletettavasti päkiälle noustessa jalkaterän kulma voi muuttua noin 40°, mutta maanvetovoima vaikuttaa anturiin kulmissa 0°–90°, jolloin yhden asteen muutos vastaa AD-muuntimessa yhtä tai kahta yksikköä. Signaalihäiriö oli testien mukaan noin 2 mittayksikkö, joten toivottua yhden asteen tarkkuuta ei kyseisellä anturilla voitu saavuttaa. Suuret kiitokset kaikille Kihulaisille, joiden satojen päkiänousujen kiihtyvyysdatasta sain alkutestien aikana nauttia.

 

Kuva 3. Päkiänousun aiheuttama signaali oli selkeätulkintaista.

Osien valinta

Optimitilanteessa olisin käyttänyt vain yhtä akselia mittaavaa 1G:n anturia ja esimerkiksi 16-bittistä AD-muunninta. Nämä komponentit ovat kuitenkin huomattavan kalliita ja vaikeasti hankittavia. Onneksi Adafruitin valikoimista löytyi MMA8451-kiihtyvyysanturi +-2G:n mittausalueella ja sisäänrakennetulla 14-bittisellä AD-muuntimella. Tällä anturilla voidaan teoriassa saavuttaa 0.02° erottelukyky, mikä varmasti päihittää tarkkasilmäisimmänkin mittanauhan käyttäjän.

Tarpeita vastaavan valmiin laitteen googlaustuloksen ollessa 404 ja teorian onnistuneen testaamisen jälkeen alkoi yhteensopivien osien pohdinta.

Laite tarvitsi:

  1. Kiihtyvyysanturin
  2. Mikrokontrollerin tulkitsemaan kiihtyvyysanturin dataa ja laskemaan toistoja
  3. Näytön esittämään tuloksia
  4. Äänilähteen kertomaan tahtia
  5. Sähköä
  6. Käyttöliittymän

Kiihtyvyysanturi oli jo löytynyt ja seuraavana piti etsiä sopiva mikrokontrolleri. SparkFunin Microview on ATmega328F -pohjainen laite, josta minulla oli jo hyviä kokemuksia. Laite on sormenpään kokoinen ja sisältää prosessorin lisäksi kirkkaan OLED-näytön. Kotelon varovaisen poistamisen jälkeen fyysinen koko oli tähän projektiin täydellinen.

Mikrokontrollerin perusteita: https://www.youtube.com/watch?v=wCY0FmrDRlQ

Jottei erillistä metronomia enää tarvita, suunnitelma sisälsi pietso-kaiuttimen. Alkuperäinen tarkoitus oli käyttää kaikukammiolla varustettua elementtiä, mutta tilan puutteen vuoksi paljas elementti liimattaisiin kotelon kanteen. Microview pystyy tuottamaan pietsolla ääntä ilman erillistä vahvistinta ja hyvä niin, koska laitteen tilavuus ja paino täytyi minimoida. Laitteen käyttämiseen jäi tilaa yhdelle napille, eli käyttölogiikan miettiminen tulisi olemaan seikkailu.

 

Kuva 4. Näytön mahdollistamat 99999 toistoa riittävät päkiätestiin melko suurella varmuudella.

 

Vaikeimmaksi osioksi osoittautui virtalähde. Paras ratkaisu olisi käyttää ladattavaa litiumakkua, mutta koska Microview vaatii vähintään 5 voltin käyttöjännitteen, tarvitsisi 3.7 voltin litiumakku seurakseen jännitteennostimen. Lisäksi akun lataus tarvitsee komponentteja, joille ei tilaa ollut. Kaksi CR2032-paristoa sarjassa tuottaisi riittävän jännitteen, mutta jatkuva purkuvirta ei riittäisi kaikille komponenteille. Hetkellinen virta riittäisi, mutta datalehtien mukaan vain muutamiksi sekunneiksi. Myöskään muiden pienten paristotyyppien virta ei riittäisi. Virtalähde oli siis vielä ratkaisematta…

Kotelointi

Osien tarkan mittaamisen jälkeen loin niistä digitaaliset kopiot 3D-suunnitteluohjelmaan. Paristokotelo määritteli laitteen ulkomitat. Tetris-taidot osoittautuivat hyödyllisiksi ja kaikki osat mahtuivat lopulta kotelon sisään. Mittaustaitoni eivät olleet aivan yhtä hyviä, mutta jo toinen 3D-tulostettu kotelo oli pienen puukotuksen ja viilauksen jälkeen riittävän hyvä.

 

Kuva 5. Kotelo oli kelvollinen yllättävän pienellä hiomisella.

Ohjelmointi

Microview tarvitsee erillisen ohjelmointilaitteen, mikä lienee pienen koon vaatimia kompromisseja. Kaikki komponentit huterasti kiinni ohjelmointilaitteeseen, Arduino IDE käyntiin, puolituntia copy-pastea, muutama hämmentävä virheilmoitus ja laitteen käyttölogiikka näytti tältä:

  1. Testattava siirtyy alimpaan hyväksyttävään yläasentoon ja testaaja painaa nappia.
  2. Laite mittaa keskiarvon kiihtyvyyden alipäästösuodatetusta Y-arvosta yhden sekunnin ajalta.
  3. Testattava siirtyy ylimpään hyväksyttävään ala-asentoon ja testaaja painaa nappia.
  4. Testi alkaa äänimerkistä ja sekunnin välein kuuluva metronomi käynnistyy.
  5. Laite tarkistaa 2400 millisekunnin välein onko sekä ylä- että ala-asennossa käyty.
  6. Mikäli molemmissa on oltu, testi jatkuu ja näytön laskuriarvo kasvaa.
  7. Jos 2400 millisekunnissa ei ole ehditty käydä ylhäällä ja alhaalla, antaa laite äänimerkin.
  8. Mikäli käyttäjä kiristää tahtia ja/tai nousukorkeutta, testi jatkuu.
  9. Testi päättyy toiseen epäonnistuneeseen päkiänousuun.
  10. Testin voi käynnistää napista uudelleen samoilla kalibrointiarvoilla tai kalibroinnin voi tehdä uudelleen käynnistämällä laitteen uudelleen.

Mikrokontrolleriohjelmoinnin perusteita: https://www.youtube.com/watch?v=fR9ECvCwaLM

Kaikki vaikutti toimivan USB-virtaa käytettäessä, mutta varsinainen virtalähde piti yhä ratkaista. Virtajohto tietokoneesta ei ollut houkutteleva vaihtoehto. Unettoman yön jälkeen päätin kuitenkin kokeilla paristoja. Näyttö vilkkui eikä kiihtyvyysanturi käynnistynyt. Onneksi pieni koodin optimointi auttoi ja laite toimi.

 

Kuva 6. Ohjelmointivaiheessa vanhat projektit olivat oivallinen copy-pasten lähde.

Kokoaminen

Tilanpuutteesta johtuen osat piti juottaa toisiinsa kotelon sisällä, mikä aiheutti omat haasteensa. Epoksi ja kuumaliima peittävät kaikki laitekehityksen likaiset salaisuudet. Kaikki pysyy paikoillaan, mutta mahdolliset korjaukset ovat lähes mahdottomia.

 

Kuva 7. Tetris-taidoista ja liimasta on aina apua.

Prototyypin jatkokehitys

Laite saatiin käyttöön ja se toimii ensimmäiseksi prototyypiksi jopa yllättävän hyvin. Toki suunnittelemalla piirilevyn itse, laitteesta saisi huomattavasti pienemmän. Tällöin jalkaterän muoto ei haittaisi anturin kiinnitystä pieni kokoisissakaan testattavissa. Metronomin äänen kuulee, mutta se saisi olla voimakkaampi. Äänen paineen nosto vaatisi vahvistimen tai kaikukotelon käyttämistä, mikä taas vaatisi lisää tilaa. Sähkön saanti on edelleen mahdollinen ongelma ja hyvänä varotoimena paristot tulisi vaihtaa kymmenen mittauksen jälkeen, mutta eihän niitä kukaan laske.

Suurin heikkous ei kuitenkaan ole laitteessa itsessään vaan testattavan maksiminousukorkeuden määrittämisessä. Kalibroitaessa testattava voi heilua tai nousta omaa todellista maksimiaan alemmas. Ehkä kiila jalan alla kalibroinnin aikana olisi toimiva ratkaisu tarkempiin ja toistettavampiin tuloksiin.

 

Kuva 8. Kihulaisten pohkeet olivat vielä hellinä alkutesteistä, mutta onneksi nuorisossa oli voimaa.

 

Projektin jälkeen löytyi myös valmis kehitysalusta, joka sisältää valmiissa paketissa kaiken tämänkin projektin vaatiman. M5StickC Plus on ESP32-pohjainen laite, josta löytyy näyttö, IMU, akku ja paljon muuta laitekehityksessä tarvittavaa. Hinta on lisäksi erittäin halpa (20 $). Ehkä jo seuraava projekti käyttää kyseistä alustaa.

 

Kuva 9. M5StickC Plus on tutustumisen arvoinen kehitysalusta.

Kiinnostaako yhteistyö KIHUn kanssa?

Jos sinulla tai edustamallasi lajilla on tarpeita teknologiakehitykseen tai jos olet kiinnostunut esimerkiksi työharjoittelusta vastaavissa projekteissa, niin ota rohkeasti yhteyttä. Myös yhteistyö yritysten kanssa ja kaikki teknologiset ideat suomalaisen huippu-urheilun tukemiseen ovat erittäin tervetulleita.

P.S. Samaa anturia voi käyttää myös vatsalihasliikkeiden laskemiseen. Mitä käyttökohteita sinä keksit?

 

Kirjoittaja Sami Vierola työskentelee KIHUssa laboratorioinsinöörinä ja koordinoi innovaatiotiimin toimintaa.