Esimerkki elektroniikkasuunnittelusta: tee-se-itse moottoriohjain

Petteri Aimonen

CNC-jyrsimen PC:llä toimivan liikeohjaimen ja moottorien väliin tarvitaan moottoriohjain. Se lukee PC:ltä tulevat logiikkatasoiset eli pienen jännitteen ohjaussignaalit ja ohjaa näiden perusteella isompaa jännitettä ja virtaa jolla itse moottori toimii.

Moottoriohjaimia on valmiina saatavilla monenlaisia. En kuitenkaan löytänyt juuri täsmälleen sellaista kuin olisin halunnut, ehkä siksi että valikoimat ovat komponenttipulan vuoksi kallistuneet ja harventuneet. Päädyin siis suunnittelemaan oman. Tämä artikkeli on samalla eräänlainen johdatus elektroniikkasuunnittelun maailmaan.

Moottoriohjaimen toimintaperiaate

Perusperiaatteeltaan DC-moottoriohjain ei eroa paljon audiovahvistimesta: sisään tulee heikko signaali, jolla ohjataan isompaa tehoa. Moottoriohjaimet toteutetaan yleensä D-luokan vahvistimena eli kytkentä on on/off -tyyppinen lineaarisen ohjauksen sijaan. Tämä vähentää hukkalämpöä. Moottorin nopeutta ohjataan PWM-signaalilla, eli kytkemällä jännitettä päälle ja pois n. 50 kHz taajuudella ja muuttamalla on- ja off-aikojen suhdetta toisiinsa. Moottorin käämi toimii alipäästösuotimena joka keskiarvoistaa jännitteen.

Toisaalta moottoriohjain muistuttaa myös Buck-hakkurilla toimivaa jännitemuunninta, erona se että muuntimeen kuuluva käämi ei ole piirilevyllä vaan moottorin sisällä. Buck-hakkurin ulostulojännite on pienempi kuin syöttöjännite, mutta ulostulovirta on suurempi kuin syöttövirta. Jos moottoriohjaimen sijoittaa moottorin lähelle, voi syöttöjohto virtalähteeltä olla ohuempi ja siten taipuisampi.

Lohkokaavio

Elektroniikkalaitetta suunnitellessa kannattaa aluksi miettiä lohkokaaviotasolla mitä laitteen pitää tehdä.

Moottoriohjainten perusrakenne on nykyään lähes aina sama: neljästä FETistä eli transistorista muodostuva H-silta. Isotehoisia FETejä ei pysty suoraan ohjaamaan logiikkasignaaleilla, joten väliin tarvitaan myös FET-ohjainpiiri. Yleensä ohjainpiiri tarvitsee myös 12 V käyttöjännitteen, jonka voi tuottaa Buck-hakkurilla.

Omat vaatimukseni moottoriohjaimelle olivat:

  • Vähintään 60 V syöttöjännitekesto. Labilla on käyttöön sopiva järeä 48 V virtalähde, ja tällä jännitteellä syöttökaapelit voi pitää sopivan ohuina jotta ne saa kulkemaan mekaniikan mukana. Jarrutuksista aiheutuu yleensä jännitepiikkejä, joten jännitteenkestossa pitää olla jonkin verran varaa.
  • Virranrajoitus. Jos moottorin pyöriminen estyy, virtaraja estää sen käämejä sulamasta. Lisäksi säädettävällä virtarajalla voi rajoittaa maksimivoimaa tilanteen mukaan.
  • Optoerotetut tulosignaalit. Tämä sekä vähentää teho-elektroniikan ohjaussignaaleihin aiheuttamia häiriöitä, että suojaa PC:tä ja FPGA-korttia vikatilanteissa.

Osien valinta

Seuraavaksi täytyy löytää osat, joilla lohkokaavion toiminnot pystyy toteuttamaan. Mikropiirejä on jopa nykyisen komponenttipulan aikana saatavilla hurja määrä erilaisia. Valintaan vaikuttavat ainakin piirin saatavuus, hinta ja helppokäyttöisyys. Helppokäyttöisyyden merkitystä ei pidä aliarvioida: siihen vaikuttaa mm. piirin dokumentaation laatu, tarvittavien muiden osien määrä, sekä kuinka helppo piiri on juottaa piirilevylle. Suurilla komponenttijakelijoilla kuten Digikey ja Mouser on omat hakukoneensa, joilla osia voi hakea hinnan ja esimerkiksi jännitekeston perusteella, mutta dokumentaatioon eli datalehteen joutuu tutustumaan joka piirin kohdalla erikseen.

Aloitin valikoinnin FET-ohjaimesta, jossa päädyin ST:n L6393-piiriin. Se ohjaa kahta FET:iä, joten tähän kytkentään niitä tarvitaan kaksi. Sopivien FET:ien hinnat länsimaalaisilla jakelijoilla tuntuvat nousseen rajusti, joten käänsin katseeni kiinalaisen LCSC:n sivuille. Sieltä löytyikin edullinen PTD15N10, joka maksoi vain kymmenesosan siitä mitä vastaava osa Digikeyllä. FET-ohjainten tarvitseman 12 voltin käyttöjännitteen tuottamiseksi valitsin LCSC:ltä SY8502-hakkuriregulaattorin, etupäässä siksi että se vaatii vain vähän muita osia ympärilleen.

Optoerottimien valinnassa täytyy huomioida niiden viive. Tässä nopeat PWM-signaalit tarvitsevat nopean optoerottimen TLP2270, mutta virtarajan status-signaaleille riittää tavallinen LTV-356. Nopeat optoerottimet tarvitsevat erillisen käyttöjännitteen, jonka voi tehdä 5 voltin lineaariregulaattorilla tuosta jo saatavilla olevasta 12 voltin linjasta.

Lopuksi kytkentään kannattaa ripotella erinäisiä suojaus- ja suodatusosia. Kaikille käyttöjännitteille tarvitaan riittävä määrä kondensaattoreita tasaamaan jännitettä – riittävän määrän voi joko arvailla datalehtien pohjalta tai pyrkiä laskemaan. Laitoin lisäksi 48 voltin käyttöjännitteelle TVS-diodin estämään ylijännitepiikkejä sekä yhteismuotokuristimen vähentämään EMC-häiriöitä.

Kytkentäkaavion suunnittelu

Osien väliset kytkennät esitetään lohkokaaviota tarkemmin kytkentäkaaviossa, jossa näkyy kunkin komponentin jokainen johdin erikseen. Johtimien sijainti ei kuitenkaan välttämättä ole sama kuin todellisessa maailmassa, vaan ne sijoitellaan kytkentäkaavioon selkeys edellä.

Kytkentäkaavion voi piirtää paperillekin, mutta tarkoitukseen soveltuvia ohjelmia on saatavilla ilmaiseksi. Itse käytän KiCad:ia, joka on avoimen lähdekoodin sovelluksista suosituin. Muita avoimen lähdekoodin sovelluksia ovat mm. aloittelijoille suunnattu Fritzing sekä varsin uusi tulokas Horizon EDA. Suljetun lähdekoodin puolelta ilmaiseksi käytettävissä on selainpohjainen EasyEDA sekä Autodesk Eagle. Sovelluksissa on valmiina iso määrä valmiiksi piirrettyjä symboleita komponenteille, mutta joskus haluamansa osan symbolin voi joutua lisäämään itse tai lataamaan esimerkiksi SnapEDA-sivustolta.

Usein mikropiirin datalehdessä on valmiita esimerkkikytkentöjä, joita kannattaa hyödyntää oman kytkennän pohjana. Lisäksi kannattaa tarkistaa onko valmistajalla saatavilla soveltamisesimerkkejä (application note) tai kytkentäkaavioita kokeilualustoista (evaluation board). Jos käyttää mikropiiriä siihen mihin se on tarkoitettu, valmiita esimerkkejä yleensä löytyy.

On olemassa myös simulaattoriohjelmia, jotka pyrkivät mallintamaan todellisten osien käyttäytymistä. Käytettyjen mallien todenmukaisuudella on kuitenkin rajoitteensa, eivätkä ohjelmat sisällä läheskään kaikkien olemassaolevien mikropiirien malleja. Ilmaisohjelmista maininnan arvoisia ovat Analog Devicesin LTSpice ja Texas Instrumentsin jakelema PSPICE. Vapaana lähdekoodina on saatavilla ngspice ja Qucs, mutta niihin on usein vaikea löytää yhteensopivia komponenttimallitiedostoja.

Moottoriohjaimen kytkentäkaavion yhdistelin pitkälti datalehtien esimerkeistä, sekä oman aiemman osaamisen pohjalta.

Piirilevyn suunnittelu

Vähänkään monimutkaisemman kytkennän kokoaminen helpottuu paljon, kun sitä varten suunnittelee piirilevyn. Samat ohjelmat joilla voi suunnitella kytkentäkaavioita sisältävät myös piirilevysuunnittelutoiminnon.

Yksinkertaisia piirilevyjä pystyy valmistamaan Hacklabilla syövytystekniikalla. Nykyään tehdasvalmisteisen levyn tilaaminen maksaa kuitenkin vain n. 10 euron luokkaa. Kotitekoiseen verrattuna tehdaslevyyn saa suoraan johtimia kummallekin puolelle piirilevyä, valmiit läpikuparoinnit reikiin sekä juotteenestopinnoitteen ja painetun osasijoittelukaavion.

Viime vuosina harrastajien suosiossa on ollut erityisesti kiinalainen JLCPCB, jossa piirilevyn valmistus maksaa halvimmillaan 2 dollaria. Kun tähän lisää toimituskulut ja arvonlisäveron, nousee hinta yleensä reiluun 10 dollariin. Varteenotettava vaihtoehto on hiljattain hinnotteluaan uudistanut alankomaalainen Aisler, jossa piirilevyn valmistus maksaa halvimmillaan n. 10 euroa, mutta hintaan kuuluu ilmainen toimitus kirjeitse EU-alueella. JLCPCB:lle tehdään Hacklabilla ajoittain kimppatilauksia toimituskulujen säästämiseksi.

Kytkentäkaavion osavalinnat ja niiden väliset kytkennät saa automaattisesti tuotua piirilevysuunnitelmaan. Useimmissa ohjelmissa ne näkyvät valkoisina viivoina joita kutsutaan ”rotanpesäksi” (ratsnest):

Ensimmäinen vaihe piirilevyn suunnittelussa on siirrellä osat siten, että rotanpesä olisi mahdollisimman siisti ja esimerkiksi liittimet ja kiinnitysreiät ovat järkevissä paikoissa:

Osien välille piirretään yhdistävät johtimet. Ennen johtimien piirtämistä täytyy asettaa käytettävät suunnittelurajat (design rules), eli kuinka leveitä johtimien täytyy olla ja kuinka isoja läpivientireikiä käytetään. Hyvät perusasetukset ovat 0.4 mm läpivientireiät ja 0.2 mm leveät johtimet, näillä tehty piirilevy kelpaa käytännössä mille tahansa tehtaalle.

Piirtämisen aikana usein keksii vielä pieniä parannuksia osien sijoitteluun jotta johtimet saa kulkemaan helpommin. Sähköisesti parasta on usein varata yksi kerros yhtenäiselle maatasolle ja pitää suurin osa johtimista samalla puolella komponenttien kanssa:

Piirilevyohjelmissa on suunnittelurajojen tarkistustoiminto (DRC, Design Rule Check), jolla voi varmistaa etteivät mitkään johtimet tule liian lähelle toisiaan. Lopuksi kannattaa vielä siistiä osasijoittelupainatus (silkscreen) ja tarkistaa 3D-toiminnolla että kaikki näyttää järkevältä:

Perinteinen muoto piirilevyjen valmistustiedostoille on Gerber-formaatti. Kullakin piirilevytehtaalla on usein omat ohjeensa eri sovelluksille siitä, miten saa parhaiten toimivan tiedoston ulos, ja yleensä piirilevytehtaan nettisivuilla pystyy vielä tarkistamaan että tiedostojen tuonti on onnistunut oikein. Esimerkiksi Aislerille saa myös ladattua suoraan KiCad-tiedostot, jolloin yksi välivaihe jää pois.

Piirilevyn kokoonpano juotospastan avulla

Yksittäiset piirilevyt voi koota käsin juotoskolvia käyttäen, mutta jos tarpeen on tehdä useampi piirilevy tai komponenttien alla on juotettavia jäähdytysalueita (exposed pad), on helpompaa käyttää juotospastaa. Juotospastaa varten tarvitaan levitysmaski, jonka voi tilata piirilevyn yhteydessä. Hacklabin laserleikkurilla voi myös tehdä kertakäyttöisiä maskeja vahapaperista, mutta en ole toistaiseksi kokeillut sitä itse.

Levitysmaski asetetaan piirilevyn päälle ja kohdistetaan silmämääräisesti johtimiin. Piirilevyn ympärille kannattaa asettaa samanpaksuisia levyjä useampi, jotta maski pysyy suorassa. Juotospasta levitetään muovikortilla, ja samalla painetaan toisen käden sormilla voimakkaasti jotta maski pysyy paikallaan:

Aikanaan juotospastan kanssa oli haasteena sen säilytys, sillä pasta kovettui purkkiin muutamassa kuukaudessa ja vaati vähintään jääkaappisäilytyksen. Kemia on kuitenkin kehittynyt ja nykyään on saatavilla pastoja jotka säilyvät huoneenlämmössä useita vuosia. Hacklabin hyllyssä on samaa TS391SNL50 pastaa kuin itse käytän.

Levityksen jälkeen maski nostetaan sivuttaista liikettä välttäen pois, ja hyvällä tuurilla se jättää siistit alueet tinapastaa kunkin kuparialueen päälle. Mikäli tämä vaihe epäonnistuu, voi pastat pyyhkiä pois ja yrittää uudelleen.

Osat asetellaan paikoilleen pinseteillä. Piirilevysuunnitteluohjelmissa on erilaisia tapoja tuottaa osasijoittelukaavio, itse pidän erityisesti KiCadille tehdystä Interactive HTML BOM -lisäosasta. Asettelu on varsin nopeaa kun taulukosta näkee suoraan että esimerkiksi 100 nanofaradin kondensaattoreita tarvitaan 9 ja valmiiksi korostettuna paikat, mihin ne pitää sijoittaa.

Lopuksi tinapasta täytyy vielä sulattaa. Itse käytän tässä keittiön hellaa, jonka päälle asetettu alumiinilevy tasaa lämmön. Yksinkertaiset levyt voi kuumentaa silmämääräisesti kunnes kaikki tina on sulanut. Herkkiä osia sisältävällä levyllä kannattaa käyttää lämpömittaria, jolla saa tehtyä esilämmityksen tasaiseen 200°C lämpötilaan ja sitten nopeasti varsinaisen sulatuksen 250°C asteessa. Kun tina on sulanut, vedän koko alumiinilevyn viereiselle keittolevylle, jolloin se jäähtyy nopeasti.

Testaaminen ja korjaukset

Kun piirilevy on viimein saatu valmiiksi ja juotettua, on tietysti kiire nähdä toimiiko se. Testausta varten käyttöjännite kannattaa ottaa laboratoriovirtalähteestä, johon voi asettaa virtarajan sopivan alhaiseksi. Näin vikatilanteissakaan osat eivät helposti vaurioidu.

Usein käy niin, ettei ensimmäinen prototyyppi heti toimi. Vianselvitys voi olla haastavaa, mutta hyvä lähtökohta on miettiä millainen jännite tai signaali missäkin johtimessa pitäisi näkyä. Nämä sitten vain tarkistetaan yleismittaria ja oskilloskooppia käyttäen – aluksi että ovatko käyttöjännitteet oikein, ja siitä sitten muihin signaaleihin edeten.

Tämäkään moottoriohjain ei heti toiminut. Mittaillessa ilmeni, että kun koskin mittapäällä transistorin hilaan, muuttui kytkennän toiminta. Tästä vähän lisää selvitellen ilmeni, että olin tehnyt virheen L6393-piirin symbolia piirtäessäni: pinnit 8, 9 ja 10 oli merkitty kytkentäkaavioon väärillä nimillä. Ongelman korjaamiseksi tarvittiin vähän näppäryyttä puukon, kolvin ja ohuen kytkentäjohdon kanssa:

Seuraava iteraatio

Kun olin kotilabrassa varmistanut kytkennän toiminnan, siirryin kerhon tiloihin testaamaan sitä PC:n ja moottorien kanssa. Päädyin saman tien käyttämään testeissä varsinaista 48 V virtalähdettä, jossa ei ole nopeatoimista virtarajaa ja suojana oli vain 5 A hidas sulake. Moottoriohjain toimi huonosti, ja jossain vaiheessa testailua kävi sitten näin:

Paras arvaukseni on että jokin hyppylangoista irtosi kuljetuksessa tai oli alunperinkin huonosti juotettu. Tällöin yksi FETeistä ei toiminut oikein, ja lopulta ylikuumeni ja rikkoutui oikosulkuun. Oikosulun kautta 48 voltin jännite pääsi kulkeutumaan FETin ohjauspiirille ja sitä kautta edelleen +12 voltin linjaan, jolloin se rikkoi muutkin samaa käyttöjännitettä käyttävät piirit. Onneksi optoerottimet kuitenkin suojasivat FPGA-korttia virhejännitteeltä.

Seuraavaan versioon tarkoitus on tehdä pinnijärjestyksen lisäksi muutoksia, jotka estävät ongelmien etenemisen. Pienet sarjavastukset FETien ja ohjauspiirien välillä estävät ohjauspiirin hajoamisen FET:in mukana. Lisäksi myös +12 voltin linjaan kannattaa lisätä TVS-diodi suojaamaan ylijännitteeltä. Näiden muutosten kanssa tästäkin virheestä olisi seurannut vain yhden transistorin palaminen.

Käytännössä oppimisesta

Kirjoista lukeminen on erittäin nopea tapa oppia uutta tietoa, ja sitä kautta kannattaa opiskella niin paljon kuin jaksaa. Käytännössä testaaminen on kuitenkin nopein tapa saada selville mitä et vielä tiedä.

Tässä tapauksessa tiesin, että FETien ja ohjauspiirien välillä käytetään usein sarjavastuksia vähentämään EMC-häiriöitä. En kuitenkaan ollut ymmärtänyt että niistä on hyötyä myös vikatilojen rajaamisessa. Ylipäätänsä osaan jatkossa kiinnittää tarkemmin huomiota ylijännitteiden etenemiseen mikropiirien signaalinastoista käyttöjännitejohtoihin.

Jätä kommentti