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.