Servon käyttäytyminen voi muuttua jo ennen varsinaista vikaantumista, esimerkiksi värinän, resonanssin tai mekaanisen kitkan kasvaessa. Tämän vaiheen tarkoitus onkin tuottaa luotettavaa mittausdataa servon liikeradasta, jotta liikkeen poikkeamat voidaan tunnistaa reunalaitteessa. Liikerata päätellään liikkeen aikaisesta kiihtyvyys-/värinädatasta ja ohjauskulmasta. Kun mittaus tehdään mikrokontrollerilla lähellä lähdettä, data saadaan kerättyä reaaliaikaisesti ja siirrettyä eteenpäin analysointia ja visualisointia varten ilman että mittausvaihe riippuu muista järjestelmän osista.
Servon ohjaus voidaan ajatella olevan koneen tai laitteen normaalia toimintaa. Tähän on liikeradan mittausominaisuus vain liitetty kylkeen kiinni. Mittausjakso käynnistyy, kun servoa halutaan ohjata. Tässä servo ajetaan yhden syklin läpi kulmavälillä 0–180 astetta ja takaisin nollaan. Liikkeen aikana kiihtyvyysanturi mittaa servon värinää ja kiihtyvyyttä, joka luetaan mikrokontrollerille ADC:n kautta. Jokaisesta mittauspisteestä tallennetaan myös servon hetkellinen ohjauskulma. Jakson lopuksi koko mittausajo kootaan yhdeksi JSON-paketiksi ja lähetetään UART-yhteyden yli reunalaitteelle, jossa poikkeamien tunnistaminen tehdään ML-mallin avulla.
Toteutus on rakennettu modulaarisesti siten, että servon ohjaus, anturin luku ja datan siirto ovat omia kokonaisuuksia. Servon liikettä ohjataan PWM-signaalilla (GPIO 16) ja ohjauslogiikka on toteutettu tilakoneena, jotta toiminta pysyy selkeänä ja helposti seurattavana myös vikatilanteissa. 3-akselisen kiihtyvyysanturin arvot luetaan ADC-kanavista (GPIO 26, 27 ja 28) ja kerätään puskuriin mittausjakson aikana. Kun mittausjakso päättyy data muunnetaan JSON-muotoon ja lähetetään UART:n (GPIO 0 ja 1) kautta reunalaitteelle.
| Laite | Pico Pin | Kuvaus |
|---|---|---|
| Servo signaali | GPIO 16 | PWM-ohjaus |
| Painike | GPIO 15 | Active LOW |
| ADXL335 X | GPIO 26 | ADC0 |
| ADXL335 Y | GPIO 27 | ADC1 |
| ADXL335 Z | GPIO 28 | ADC2 |
| UART TX | GPIO 0 | Datan lähetys |
| UART RX | GPIO 1 | Datan vastaanotto |
JSON-paketin muoto:
{
"measurements": [
{
"time_ms": 0,
"angle": 0,
"acceleration": {
"x": 2048,
"y": 2048,
"z": 2048,
"total": 3547
}
},
// ... lisää mittauksia
],
"total_measurements": 1000,
"duration_ms": 5400
}
Tätä mittausvaihetta käytetään ennakoivan kunnonvalvonnan perustana, kun halutaan havaita servon normaalista liikkeestä poikkeavia ilmiöitä ja reagoida niihin ennen toimintahäiriötä. Mittausajo tuottaa reunalaitteelle aineiston, josta ML-malli tekee inferenssin, ja samalla sama mittausdata voidaan ohjata pilveen koneoppimismallin koulutusta ja validointia varten.
Nykyisessä toteutuksessa mittauksissa käytetään ensisijaisesti ADC:n raaka-arvoja, jolloin yksiköiden absoluuttinen tulkinta riippuu kalibroinnista ja asennuksesta. Nämä arvot eivät ole kovin helposti ihmisen luettavissa, koska ne eivät ole esim. g-arvoja. Mittausjakso lähetetään yhtenä kokonaisuutena jakson lopuksi, mikä yksinkertaistaa vastaanottoa, mutta ei tarjoa reaaliaikaista pistekohtaista streamia. Tulosten toistettavuuteen vaikuttavat myös fyysiset tekijät, kuten anturin kiinnitys servoon, kuorma sekä virtalähteen ja mekaanisten toleranssien vaihtelu. Jatkokehityksessä keskeisiä parannuksia ovat anturin kalibrointi ja muuntaminen g-arvoiksi, viestikehyksen eheyden varmistaminen siirron vastaanotossa, sekä vaihtoehtoisesti mittauspisteiden lähetys jatkuvana streamina. Tämä toki vaatii sen, että mittauspisteen lähetys ei viivästä seuraavan mittauspisteen lukua.