Servon liikeradan mittaus

Sisällysluettelo

1. Miksi tämä tehtiin

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.

2. Mitä tässä tapahtuu

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.

3. Miten toteutettu

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.

Kytkentä
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
}

4. Mihin tätä voi käyttää

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.

5. Rajaukset ja jatkokehitys

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.