Utfordringen
Systemet skulle holde en sensorplattform i en bestemt avstand fra et objekt i bevegelse. Det krevde hele kjeden fra analog sensor og støyfiltrering, via kommunikasjon mellom to mikrokontrollere, til regulering og styring av en lineær aktuator, bygget og testet på ekte maskinvare.
Løsningen
En sensornode leser en infrarød avstandssensor, filtrerer signalet analogt og digitalt, kalibrerer målingen til millimeter og sender den over en differensiell RS422-forbindelse. En kontrollnode beregner avviket fra ønsket avstand og styrer aktuatoren med PWM og et retningssignal. En Python-applikasjon på PC-en brukes til logging og overvåking.
Hvordan det ble bygget
Prosjektet ble utviklet i et team på tre. Jeg bidro på tvers av hardware og PCB, embedded firmware og regulering, integrasjon og testing. Teamet designet et eget kretskort i KiCad med spenningsregulering, analog forsterkning, et 8.-ordens switched-capacitor lavpassfilter klokket fra mikrokontrolleren, og RS422-transceivere. Fastvaren er skrevet i C for STM32F303 med ADC-avlesning, eksponentiell glatting, seriell kommunikasjon og timerstyrt PWM. P-, PI-, PD- og PID-regulering ble testet med Ziegler–Nichols-innstilling; full PID ga ustabil oppførsel, så den endelige løsningen bruker proporsjonal regulering med dødbånd og metning.
Resultat
Systemet fungerte ende til ende, fra sensor til aktuator. Det regulerte stabilt med lite oversving og et stasjonært avvik på omtrent 3 mm. Kravet var ±2 mm, så kravet ble ikke helt nådd, og reaksjonstiden ble ikke målt eksakt.
Kontekst
Kontrollnoden venter uten tidsgrense på nye målinger, så et brudd i kommunikasjonen kan la aktuatoren fortsette med siste kommando, en manglende feilsikring som ble identifisert i evalueringen. Kretskortet måtte bygges om etter feil i pinnetilordningen.