Nopeuta autoteollisuuden ja IoT:n BLDC-moottorisovellusten kehittämistä A4964KJPTR-T-moottorinohjaimella

Kirjoittaja Jacob Beningo

Julkaisija DigiKeyn kirjoittajat Pohjois-Amerikassa

Harjattomia DC-moottoreita (BLDC) käytetään yhä useammin monissa erilaisissa sovelluksissa esineiden internetin (IoT) kauko-ohjatuista autotallinoven avaajista ja autonikkunoista satelliittien työntövoiman ohjaimiin. BLDC-moottorien käyttöön tarvitaan kuitenkin monimutkaisia, usein erikoistuneita ohjausalgoritmeja, joten tavallisen insinöörin on vaikea saada moottori käyttökuntoon kohtuullisessa ajassa.

Suunnittelijat joutuvat yleensä valitsemaan käyttöön joko ohjelmistopohjaisen, mikrokontrollerissa toimivan ratkaisun, jolloin ohjelmistoratkaisusta saadaan joustava, mutta mikrokontrolleri joutuu huolehtimaan laskennasta, tai erillisen integroidun piirin (IC). Jälkimmäinen vaihtoehto sisältää kaikki BLDC-moottorinohjaimen toiminnot ja huolehtii ohjauksesta isäntäkoneen sijaan.

Tässä artikkelissa käsitellään mikrokontrolleripohjaisen ohjelmistoratkaisun ja erillisen laitteistosiruratkaisun välisiä eroja. Sen jälkeen tutustutaan tarkemmin Allegro MicroSystems A4964KJPTR-T ‑moottorinohjaimeen, joka on suunniteltu yksinkertaistamaan BLDC-moottorin ohjausta etenkin autoalan sovelluksissa. Artikkelissa esitetään vuorovaikutusta A4964KJPTR-T-ohjaimen kanssa ja kuvaillaan eräitä parhaita käytäntöjä, joiden avulla odottamattomalta käyttäytymiseltä voidaan välttyä.

BLDC-moottorit (erittäin) lyhyesti

BLDC-moottorit tuottavat vääntöä tehokkaasti laajalla nopeusalueella. Ne ovat myös hiljaisia, eikä niissä esiinny harjallisten moottorien mekaanista kitkaa. BLDC-moottoreita ohjataan virralla, ei jännitteellä, minkä vuoksi ne sopivat käytettäväksi hyvin monenlaisissa sovelluksissa. Saatavana olevien moottorien muodot, koot ja hinnat vaihtelevat.

Esimerkiksi TRINAMIC Motion Control QBL4208-41-04-006 on 24 volttia ja 4 000 kierrosta minuutissa (RPM) tarjoava moottori, joka tuottaa enintään 0,06 Newtonmetrin (Nm) vääntömomentin (kuva 1). Tätä kevyttä moottoria (paino 300 grammaa (g)) voi ohjata useilla eri tavoilla, esimerkiksi anturittomasti sähkömotorisen vastavoiman (BEMF) perusteella tai käyttämällä sijainnin raportoivia, integroituja antureita.

Kuva: TRINAMIC QBL4208-41-04-006 on 24 voltin ja 4 000 RPM:n BLDC-moottoriKuva 1: QBL4208-41-04-006 on 24 voltin ja 4 000 RPM:n BLDC-moottori, joka tuottaa maksiminopeudella hieman yli 0,06 Nm:n väännön. (Kuvan lähde: TRINAMIC Motion Control GmbH)

Jos vääntöä tarvitaan enemmän, TRINAMIC Motion Control QBL4208-41-04-025 voi olla sopiva vaihtoehto (kuva 2). Tämä 24 voltin ja 4 000 RPM:n BLDC-moottori tuottaa hieman yli 0,25 Nm:n väännön.

Kuva: TRINAMIC Motion Control QBL4208-41-04-025 on 24 voltin ja 4 000 RPM:n BLDC-moottoriKuva 2: TRINAMIC Motion Control QBL4208-41-04-025 on 24 voltin ja 4 000 RPM:n BLDC-moottori, joka tuottaa maksiminopeudella hieman yli 0,25 Nm:n väännön. (Kuvan lähde: TRINAMIC Motion Control GmbH)

BLDC-moottoreita ohjataan kolmen vaihdejohtimen kautta. Johtimien tuottama magneettikenttä vaikuttaa kestomagneetteihin, jotka puolestaan liikuttavat staattoria ja saattavat moottorin pyörimisliikkeeseen.

Teoriassa tämä voi kuulostaa yksinkertaiselta, mutta käytännössä BLDC-moottorin ohjaus on melko monimutkaista, ja suunnittelijat joutuvat valitsemaan joko moottorin käytön ohjelmistokehyksen avulla tai erillisen laitteistosiruratkaisun käytön.

Ohjelmisto- ja laitteistopohjaiset ratkaisut

BLDC-moottorin ohjaustapaa valittaessa on otettava huomioon lukuisia seikkoja, jotka voidaan jakaa periaatteessa kolmeen ryhmään:

  • osakustannukset vs. työvoimakustannukset
  • kortin kompleksisuus vs. ohjelmiston kompleksisuus
  • kunnossapitoaika ja ‑kustannukset.

Laitteistonäkökulmasta ohjelmistoon perustuva ratkaisu voi tuntua houkuttelevalta, koska erilliseen siruun perustuva ratkaisu lisää järjestelmän komponenttikustannuksia. Erillisen sirun kustannuksen voi välttää ostamalla hitusen kalliimman mikrokontrollerin, johon kaikki ohjausalgoritmit sijoitetaan. Ratkaisu saattaa vaikuttaa kaikin puolin hyvältä, mutta kehitystiimit jättävät usein ottamatta huomioon osan päätöksen vaikutuksista.

Osakustannukset tosiaankin alenevat, mutta mikrokontrollerin täytyy pystyä käsittelemään BLDC:n tiladata ja ohjaamaan moottoria jatkuvasti. Jos mikrokontrolleri yrittää lisäksi ottaa näytteitä muista antureista, olla yhteydessä radioon ja ohjata muita laitteita, ohjelmiston kehitys- ja ylläpitokustannukset karkaavat helposti käsistä.

Toisaalta mikrokontrolleriin sijoitetulla ohjelmistopohjaisella ratkaisulla moottorin ohjausalgoritmeja voidaan hienosäätää joustavasti. Ohjelmiston ei myöskään aina tarvitse olla hirmuisen monimutkainen.

Moottorin ohjausalgoritmin siirtäminen mikrokontrolleriin vaatii tyypillisesti lisää RAM-muistia ja paljon flash-muistia. Jos tiimi kuitenkin käyttää Texas Instruments F280049CRSHSR ‑moottorinohjausmikrokontrollerin kaltaista juuri tähän tarkoitukseen suunniteltua mikrokontrolleria, algoritmit on koottu mikrokontrollerin ROM-muistissa sijaitsevaan kirjastoon. Sovellukseen tarvitsee silloin vain lisätä kirjaston käyttöön tarvittavat funktiokutsut, ja varsinainen raaka työ tapahtuu kirjastossa.

BLDC-moottorin pyörittämiseen vaaditaan kuitenkin ohjelmiston lisäksi myös laitteistoa. Kuvan 3 esimerkissä käytetään C2000-mikrokontrolleria, joka kuuluu samaan perheeseen kuin F280049CRSHSR. Kuvasta käyvät ilmi BLDC-moottorin ohjaukseen tarvittavat osat sekä mahdolliset valinnaiset osat. Mikrokontrollerin lisäksi tarvitaan jonkinlainen kolmivaihetehoaste, joka pystyy ohjaamaan BLDC-moottorin kolmea vaihetta ja saamaan moottorin pyörimään.

Kaavio: Texas Instrumentsin C2000-mikrokontrollerit (suurenna napsauttamalla)Kuva 3: Texas Instrumentsin C2000-mikrokontrollerit on suunniteltu moottorin ohjaussovelluksia varten. Kuvan esimerkkisovelluksessa mikrokontrolleri on sijoitettu keskelle ja BLDC-moottorin käyttämiseen tarvittavat pakolliset ja valinnaiset piirit sen ympärille. (Kuvan lähde: Texas Instruments)

Mikrokontrollerin käyttö moottorin ohjaukseen on tosiaan kiinnostava vaihtoehto, mutta miltä erillinen laitteistoratkaisu sitten näyttää? Tutustutaan esimerkkinä Allegro MicroSystemsin A4964KJPTR-T-moottorinohjainsiruun.

Allegro MicroSystemsin A4964KJPTR-T-moottorinohjain

Allegro MicroSystemsin A4964KJPTR-T-moottorinohjainsiru on erillinen BLDC-moottorinohjain, joka sisältää kaikki moottorin käyttöön tarvittavat ominaisuudet (kuva 4). Tämä siru on suunniteltu erityisesti autoteollisuuden tarpeisiin ja käytettäväksi N-kanavan MOSFET-transistorien kanssa. Käynnistys ja kommutointi tapahtuvat ilman antureita, joten lisälaitteita tarvitaan vain muutama. A4964KJPTR-T toimii myös laajalla jännitealueella – 5,5–50 volttia – joten se sopii käytettäväksi lähes kaikissa vakiosovelluksissa, myös ajoneuvojärjestelmissä.

Ehkä kiinnostavin A4964KJPTR-T-ohjaimen ominaisuus on mahdollisuus liittää se SPI-rajapinnan (Serial Peripheral Interface) kautta mikrokontrolleriin tai keskitettyyn elektroniseen ohjausyksikköön (ECU) moottorin toiminnan eri rekistereiden konfigurointia varten. Mikrokontrollerin ei tietenkään tarvitse olla yhtä tehokas kuin silloin, jos se suorittaa moottorin ohjausalgoritmit itse.

Kaavio: Allegron BLDC-moottorinohjain A4964KJPTR-T (suurenna napsauttamalla)Kuva 4: BLDC-moottorinohjain A4964KJPTR-T toimii 5,5–50 voltin jännitealueella ja huolehtii käynnistyksestä ja kommutoinnista ilman antureita. Moottorin nopeus voidaan konfiguroida SPI-rajapinnan kautta tai erillisellä PWM-signaalilla. (Kuvan lähde: Allegro MicroSystems)

Toinen, kiinnostava vaihtoehto on mahdollisuus ohjata moottorin nopeutta A4964KJPTR-T-moottorinohjaimella myös ilman SPI:tä yksinkertaisesti pulssinleveysmodulaatiosignaalilla (PWM). Moottorin asetukset voidaan tallentaa haihtumattomaan muistiin, kun moottori käynnistetään, jolloin moottorin ohjaukseen riittää pelkkä PWM-signaali.

Konfiguroinnin kannalta A4964KJPTR-T-ohjaimessa on 32 osoitteellista 16-bittistä rekisteriä sekä tilarekisteri. Tilarekisteri on erikoinen siinä mielessä, että sen viisi ensimmäistä bittiä lähetetään SPI-rajapinnan jokaisen luku- ja kirjoitustoiminnon mukana, jolloin ohjelmisto pystyy tarkistamaan yleisen tilan ja havaitsemaan mahdolliset viat tai ongelmat. Tilarekisterit voidaan lukea sirulle kirjoituksen yhteydessä kokonaan, koska A4964KJPTR-T ei lähetä dataa takaisin.

Kaksi sirun 32:sta osoitteellisesta rekisteristä on erikoisrekistereitä: rekisteri 30 on kirjoitusoikeudellinen ja rekisteri 31 lukuoikeudellinen. Kehittäjä voi käyttää kirjoitusoikeudellista rekisteriä moottorin kysyntätulon eli käyttönopeuden määrittämiseen määrittämällä arvon väliltä 0–1023. Lukuoikeudellisen rekisterin data puolestaan muuttuu vain rekisteriin 29 eli takaisinluvun valintarekisteriin kirjoitetun, pyydetyn datan perusteella. Tämän rekisterin avulla voidaan hakea esimerkiksi seuraavia telemetriatietoja:

  • diagnostiikka
  • moottorin nopeus
  • keskimääräinen syöttövirta
  • syöttöjännite
  • sirun lämpötila
  • kysyntätulo
  • käytetty sillan huippukäyttöjakso
  • käytetty vaiheen kompensointi.

Näiden erikoisrekisterien lisäksi jäljellä olevilla 30 rekisterillä voidaan säätää kyseessä olevaa moottorisovellusta ja ottaa virranrajoituksen ja hilaohjaimen vikojen kaltaisia vikoja käyttöön tai poistaa niitä käytöstä.

Erilliset moottorinohjaimet ovat kiinnostava vaihtoehto, koska ne kokoavat kaikki moottorin käyttämiseen tarvittavat konfiguroinnit yhteen pariksi tusinaksi konfigurointirekisteriksi. Mikrokontrollerin muita ohjelmistoja tarvitaan silloin huomattavasti vähemmän. Ehkä vieläkin suurempi merkitys on sillä, että erillinen moottorinohjain voi alentaa ohjelmistokehityksen ja ‑ylläpidon kustannuksia dramaattisesti. BLDC:n käyttö vaatii silloin vain PWM:n lähettämisen, mistä ei aiheudu lisäkuormitusta mikrokontrollerille, tai moottoribitin ottamisen käyttöön ja SPI:stä saatavan kysyntätulon toimittamisen BLDC:n pyörittämiseen.

A4964KJPTR-T-moottorinohjaimen käyttövinkkejä

A4964KJPTR-T:n rajapinta on melko yksinkertainen. Tässä on kuitenkin kehittäjille joitakin vinkkejä kehitystyön helpottamiseksi ja nopeuttamiseksi:

  • Tilarekisteri palautetaan SPI-rajapintaan jokaisen sirulle kirjoituksen yhteydessä, eikä sitä ole saatavana erillisenä, osoitteellisena rekisterinä. Ohjainkoodin täytyy siis hakea tilatieto valvomalla SPI-väylän SDO-riviä sirulle kirjoituksen aikana.
  • Vikatiedot sisältyvät tilarekisteriin. Sirun tilan yleiskatsaus on mukana myös jokaisen SPI-tapahtuman viidessä ensimmäisessä bitissä, kun mikrokontrolleri toimittaa osoitteen käyttötiedon. Tämän datan avulla voidaan päätellä, onko ongelmia esiintynyt.
  • Muistikartassa on kaksi erikoisrekisteriä, joista toista voi vain lukea ja toiseen vain kirjoittaa. Tämä on selkeää, mutta kirjoitettavasta rekisteristä ei pidä yrittää lukea, sillä muuten ohjelma kirjoittaa lukusekvenssissä mahdollisesti käytettävän tyhjän datan rekisteriin.
  • Sirulla on jonkin verran haihtumatonta muistia, johon oletusarvot voidaan tallentaa. Nämä arvot ladataan RAM-muistiin ja niitä käytetään käynnistyksen yhteydessä. Sirun tehokkaan käynnistämisen varmistamiseksi sille täytyy ohjelmoida ”turvalliset” käynnistysarvot.
  • Jos päätelaitteen toimintaympäristö on meluisa tai siinä on paljon säteilyä, sovelluskoodi kannattaa suunnitella niin, että se vahvistaa konfigurointidatan säännöllisesti uudelleen. Sirun konfigurointi tallennetaan RAM-muistiin, mikä tarkoittaa, että kosmiset säteet, bitinsiirrot ja muut elektroniikan kanssa toisinaan esiintyvät harvinaiset tapahtumat voivat vaikuttaa siihen.

Yhteenveto

BLDC-moottorisovelluksia käytetään melko yleisesti muun muassa autoteollisuudessa ja IoT-sovelluksissa, mutta niiden käyttö voi olla hankalaa. Ohjelmistoa voi yksinkertaistaa käyttämällä A4964KJPTR-T:n kaltaista erillistä BLDC-moottorinohjainta, joka huolehtii kaikista moottorin ohjaukseen liittyvistä toiminnoista.

Vuorovaikutukseen sirun kanssa tarvitaan edelleen ohjelmistoa, mutta ohjelmiston suorittavan mikrokontrollerin tarvitsee vain määrittää konfigurointiasetukset, minkä jälkeen A4964KJPTR-T huolehtii moottorin käytöstä. Kehittäjät, jotka noudattavat edellä esitettyjä vinkkejä, säästävät melkoisesti aikaa ja vaivaa yrittäessään käyttää A4964KJPTR-T-moottorinohjainta.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Tietoja kirjoittajasta

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is an embedded software consultant. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees, including a Masters of Engineering from the University of Michigan.

Tietoja tästä julkaisijasta

DigiKeyn kirjoittajat Pohjois-Amerikassa