BLDC moottorin ohjain, tämä elektroniikkapiiri on suunniteltu KiCAD ohjelmalla. Mikrokontrollerina toimii ARM Cortex M4 pohjainen mikrokontrolleri. Mikrokontrollerin kellotaajuus on 144Mhz, joka on toteutettu ulkoisella 16Mhz kristallilla.
Moottorin virtoja mitataan alemman mosfetin ja maan välille sijoitettujen shunttivastusten avulla, shunttivastuksen jännite vahvistetaan 100-kertaiseksi erillisellä vahvistimella. Vaiheiden jännitteet mitataan
Piirin arkkitehtuuri
Piirin arkkitehtuuri yksinkertaistettuna, piirilevy koostuu low voltage puolesta, johon kuuluu mikrokontrolleri sekä käyttöliittymä liitännät. Teho elektroniikan osasta, joka vastaa moottorin ohjaamisesta. Mittauselektroniikasta, jonka tehtävänä on mitata moottorin jännitteitä ja virtoja.
Elektroniikkapiirin suunnittelu
Elektroniikkapiiri on suunniteltu KiCAD ohjelmalla. KiCAD on täysin ilmainen ohjelmisto elektroniikkapiirien suunnittelemiseen. Piirin simuloimiseen on käytetty LTSpice ohjelmistoa, joka on myös täysin ilmainen.
Elektroniikkapiiri KiCAD
Alipäästösuodatin suunnittelu LTSpice
Elektroniikka levyjen valmistus
Elektroniikkalevyt suunniteltiin niin, että suurin osa osista on pintaliitoskomponentteja, jotka valmistaja voi kiinnittää. Vain johdot piti kiinnittää myöhemmin itse.
Elektroniikkapiirin kotelointi
Kotelo valmistettiin 3D tulostamalla asa muovista, koteloon lisäksi tehtiin sovitteet, että jäähdytyssiilet saatiin kiinnitettyä mosfettien päälle. Kotelon kiinnitys onnistuu M3 pulteilla.
Moottorin ohjaimen testaaminen
Moottorin ohjaimeen lisättiin yksinkertainen firmware ohjelma, joka pyörittää moottoria SPWM menetelmällä. Moottorin hallintaan käyettiin SWDIO liitäntää ja STM32CubeMonitor -ohjelmistoa.
Firmware päivitys - ADC sampling
Ongelmia oli saada mosfettien ohjaaminen ja ADC sampling toimimaan niin, että kun alempi Mosfet ohjataan auki luettaisiin virran-mittaus arvo shuntti resistorin ylitse.
Alunperin käytössä oli Edge-Aligned PWM, kun PWM signaaleja on yhteensä 3 kappaletta ja jokaiselta yritetään lukea virta-arvo oli se haastavaa.
Tästä aiheutui paljon ongelmia ajoitukseen liittyen ja useasti ADC lukemissa oli paljon kohinaa.
Ratkaisu löytyi kun PWM generointi muutettiin Center Aligned PWM muotoon ja asetettiin ADC triggeröinti tämän syklin keskikohtaan. Näin virta arvo luetaan täsmälleen PWM pulssin keskipisteessä ja voidaan samalla kertaa lukea virta arvot kaikille kolmelle eri moottorin vaiheelle.
Firmware päivity - Kaavio
Ohjelman toimintaa muutettiin huomattavasti, enemmän closed loop sopivaksi, kun ADC sampling oli saatu toimimaan paremmin. Tarkoituksena on ajaa FOC ohjelmaa 6khz taajuudella, PWM signaalin taajuus on 24khz ja jokaiselta pwm sykliltä kerätään mittaus-arvot. Neljän mittausarvon jälkeen, mitatut arvot annetaan FOC control looppiin, joka laskee tarvittavat virrat seuraavalle syklille.
USB data loggaus
Virtojen sampling nopeus on niin suuri ettei normaalilla SWDIO debuggauksella, nähnyt kaikkia arvoja, joten loggaamiseen otettiin käyttöön USB tiedonsiirto. Mitatut arvot lähetetään USB väylää pitkin tietokoneelle ja tietokoneella voidaan python skriptin avulla lukea tarkasti kaikki mitatut arvot. Tietokoneelle saadaan nyt siirrettyä data suoraan mikrokontrollerin rekisteristä, jota luetaan 24 000 mittausta/sekunnissa/moottorin vaiheelta. Lopulta tähän on tarkoitus lisätä loputkin virta-arvot ja jännitteet yhteensä 6 eri mittausta, tämän jälkeen dataa logataan jo 24000*6 = 144 000 / sekunnissa
Kotelo
Alumiinista valmistettu kotelo elektroniikkapiirille, alumiinikotelon tarkoitus on suojata ohjainta ja se toimii samalla myös jäähdytyslevynä mosfeteille. Mosfetit johtavat lämpöä alumiiniin lämpöäjohtavan liiman avulla.
Uusi ohjelma moottorin ohjaamiseen
Visual studiolla tehty sovellus moottorin ohjaamiseen. Ohjelmisto on tehty C# kielellä. Ohjelman avulla moottoria voidaan ohjata ja logata reaaliaikaisi arvoja moottorinohjaimelta.
Uusi moottorin ohjaus algoritmi - Field oriented control
Uusimmalla firmwarella toimii field oriented control aika hyvin, parannettavaa vielä on mutta perustoiminnolta moottori pyörii hyvin.
Muutokset 6/2025
Muutokset koostettuna kesäkuu 2025
Space Vector Modulation
PWM ohjaus on muutettu Space Vector Modulation -pohjaiseksi, SVM ohjaamisella saadaan FOC toimimaan huomattavasti tarkemmin ja hyödynnettyä suurempi osa VBus jännitteestä.
Moottorin vaiheen yli oleva jännite on suhteellinen muihin moottorin vaiheisiin, moottorin 0-taso on 50% Duty cycle, joka antaa vaihejännitteeksi 1/2*Vbus jännitteen.
HFI - High Frequency Injection
Moottorin ohjaamiseen on lisätty myös HFI mahdollisuus. HFI taajuus on tällä hetkellä 2 kHz, korkeataajuisen signaalin avulla voidaan mitata moottorin induktanssi tarkemmin. HFI voidaan myös myöhemmin käyttää moottorin asennon estimoimiseen.
TIMx pohjainen ADC
Aikaisemmin ADC triggeroitiin erillisellä Interrupt funktiolla, tarkka triggerointi oli tärkeää että moottorin vaiheiden virta voidaan mitata tarkasti minimoiden mosfettien transientti jännitteet. Interrupt pohjainen triggerointi kuitenkin aiheutti paljon viiveitä ja ongelmia koodiin. Uusi menetelmä käyttää kokonaan TIM4 pohjaista triggerointia, joka on konfiguroitu tarkasti seuraamaan TIM1, joka tuottaa PWM ohjauksen.
CMSIS - Digital filter
ADC arvojen suodattamiseen on lisätty lisäksi CMSIS DSP pohjainen digitaalinen Butterworth 2nd suodatin. Tämä suodatin voidaan todennäköisesti korvata dynaamisella FIR suodattimella myöhemmin.
Hardware V2.00 - Elektroniikkasuunnittelu
Uuden elektroniikkalevyn suunnittelu ja muutokset, uusi piirilevy suunnitellaan KiCAD 9 -ohjelmalla. Uudella levyllä on tarkoitus parantaa signaalipolkuja ja vähentää kohinaa mittauksissa. Virransiirtoa on myös tehostettu huomattavasti, tehopuoli on siirretty vasemmalle reunalle ja pienjännite puoli oikealle reunalle korttia. Moottorin vaiheiden mittaaminen on muutettu In-line virranmittaukseen.