CNC elektroniikka – Arduino, A4988 ja GRBL-asennus
Oman CNC-koneen rakentaminen on yksi harrastuselektroniikan palkitsevimmista projekteista. Olipa kyseessä puun jyrsintä, PCB-levyjen valmistus tai laserkaiverraus, kaiken ytimessä on toimiva CNC elektroniikka. Tässä oppaassa käymme vaihe vaiheelta läpi, miten rakennat DIY CNC -ohjaimen käyttäen Arduino Nanoa, A4988-askelmoottoriajureita ja GRBL-firmwarea. Lopputuloksena sinulla on täysin toimiva 3-akselinen CNC-ohjain, joka ymmärtää G-koodia.
Sisällysluettelo
CNC elektroniikka – tarvittavat komponentit
CNC-koneen elektroniikan rakentamiseen tarvitset seuraavat peruskomponentit:

- Ohjain: ATmega328P Nano -ohjain – GRBL-firmwaren sydän. ATmega328P-mikrokontrolleri 16 MHz kellotaajuudella, USB Type-C -liitännällä ja CH340-sarjapiirillä.
- Askelmoottoriajurit: 3 kpl A4988 stepper driver -ajureita (yksi per akseli). Tukee jopa 2A virtaa per käämi ja 1/16-mikroaskellusta.
- Askelmoottorit: 3 kpl NEMA17 59Ncm stepper -moottoreita. 1,8° askelkulma, 2,0A nimellisvirta ja 59 Ncm pitomomentti riittävät useimpiin harrastus-CNC-koneisiin.
- CNC Shield: V4 (Nanolle) tai V3 (Unolle) – yksinkertaistaa johdotusta merkittävästi.
- Virtalähde: 12V 5A–10A tasavirtalähde moottoreille.
- Rajakytkimet: 3–6 kpl mekaanisia mikrokytkimiä kotiaseman hakuun.
- Lisätarvikkeet: Johtoja, 100µF kondensaattoreita, jäähdytysrivat A4988-ajureille.
Kevyempiin rakennelmiin voit harkita myös NEMA17 40Ncm stepper -moottoria, joka tarjoaa pienemmän vääntömomentin mutta riittää esimerkiksi laserkaiverruskoneisiin.

Moottoreiden kiinnittämiseen runkoon suosittelemme NEMA17 moottoripidikettä, joka on CNC-työstettyä anodisoitua alumiinia ja sopii matalan profiilinsa ansiosta erinomaisesti CNC-projekteihin.
A4988-ajurin asennus ja Vref-säätö
A4988 on CNC-harrastajien suosituin askelmoottoriajuri. Se ohjaa moottoria vain kahdella signaalilla – STEP (askel) ja DIR (suunta) – mikä tekee kytkennästä yksinkertaisen. Ennen ajurien asentamista CNC-shieldiin on tärkeää säätää virranrajoitus oikein.
Mikroaskelluksen valinta
A4988 tukee viittä eri mikroaskellustasoa, jotka valitaan MS1-, MS2- ja MS3-pinneillä (CNC-shieldissä jumpperein):
- Täysi askel (MS1=LOW, MS2=LOW, MS3=LOW): 200 askelta/kierros
- 1/2 askel (MS1=HIGH): 400 askelta/kierros
- 1/4 askel (MS2=HIGH): 800 askelta/kierros
- 1/8 askel (MS1=HIGH, MS2=HIGH): 1600 askelta/kierros
- 1/16 askel (MS1=HIGH, MS2=HIGH, MS3=HIGH): 3200 askelta/kierros
CNC-käytössä 1/8 tai 1/16 mikroaskellus on tyypillisin valinta. 1/16 antaa tasaisimman liikkeen mutta rajoittaa maksiminopeutta.
Vref-jännitteen laskeminen ja säätö
Virranrajoitus säädetään A4988:n pienellä potentiometrillä. Oikea Vref-jännite lasketaan kaavalla:
Vref = Imax × 8 × Rcs
Missä Imax on moottorin nimellisvirta ja Rcs on A4988-piirilevyn virtamittausvastuksen arvo. Yleisimmät arvot ovat 0,068Ω (merkintä R068) tai 0,100Ω (merkintä R100).
Esimerkki NEMA17 59Ncm -moottorille (2,0A) ja 0,068Ω vastuksilla:
Vref = 2.0 × 8 × 0.068 = 1.088V
Suositeltu aloitusarvo (70-80%): ~0.8V
Mittaus ja säätö:
- Kytke A4988:lle vain logiikkajännite (5V ja GND Arduinosta).
- Aseta yleismittari DC-jännitemittaukselle.
- Kytke miinusjohto GND:hen ja plusjohto potentiometrin metallipintaan.
- Käännä potentiometriä pienellä ruuvimeisselillä: myötäpäivään = enemmän virtaa.
- Säädä laskettuun Vref-arvoon.
- Kiinnitä aina jäähdytysripa A4988-siruun ennen moottoreiden käyttöä!
⚠️ VAROITUS: Älä koskaan kytke tai irrota askelmoottoreita ajurin ollessa jännitteellinen! Tämä tuhoaa A4988-ajurin välittömästi.
GRBL-firmwaren asennus Arduinolle
GRBL on avoimen lähdekoodin CNC-ohjausfirmware, joka muuntaa G-koodin askelmoottoreiden liikkeiksi. Se on suunniteltu nimenomaan ATmega328P-mikrokontrollerille ja tukee 3-akselista ohjausta, rajakytkimiä sekä kara-/laserohjausta. GRBL-asennus on DIY CNC -ohjaimen tärkein vaihe.
Asennusohjeet vaihe vaiheelta
- Asenna Arduino IDE osoitteesta arduino.cc/en/software.
- Lataa GRBL 1.1 GitHubista: github.com/gnea/grbl (Code → Download ZIP).
- Pura ZIP-tiedosto haluamaasi kansioon.
- Arduino IDE:ssä: Sketch → Include Library → Add .ZIP Library.
- Valitse puretusta kansiosta grbl-alikansio (EI grbl-master-kansiota!).
- Avaa: File → Examples → grbl → grblUpload.
- Kytke Arduino Nano USB-kaapelilla (käytä datakaapelia, ei pelkkää latauskaapelia).
- Valitse kortti: ”Arduino Nano” ja oikea COM-portti.
- Tärkeää CH340-Nanolle: Valitse Tools → Processor → ”ATmega328P (Old Bootloader)”.
- Klikkaa Upload ja odota latauksen valmistumista.
Asennuksen varmistaminen
Avaa Serial Monitor (Tools → Serial Monitor) ja aseta baudinopeus 115200. Sinun pitäisi nähdä:
Grbl 1.1h ['$' for help]
Kirjoita $$ ja paina Enter nähdäksesi kaikki GRBL-asetukset. Jos näet sekavia merkkejä, tarkista baudinopeus – sen on oltava 115200.
Kytkentä ja johdotus
CNC Shield yksinkertaistaa johdotusta huomattavasti, mutta on tärkeää ymmärtää pinnikartta myös ilman shieldiä. GRBL 1.1:n pinnikartta CNC Arduino -ohjauksessa:
Toiminto Arduino-pinni
──────────────────────────────
X Step D2
Y Step D3
Z Step D4
X Direction D5
Y Direction D6
Z Direction D7
Stepper Enable D8
X Limit D9
Y Limit D10
Z Limit D12
Spindle PWM D11
Spindle Dir D13
Coolant A3
Probe A5
Huomaa: GRBL 1.1:ssä Z-rajakytkimen pinni on D12 (ei D11), koska D11 käytetään karan PWM-ohjaukseen.
A4988-ajurin kytkentä ilman CNC-shieldiä
A4988 pinni → Kytkentä
───────────────────────────────────
VMOT → Virtalähde + (12V)
GND (moottori) → Virtalähde -
VDD → Arduino 5V
GND (logiikka) → Arduino GND
STEP → D2/D3/D4 (X/Y/Z)
DIR → D5/D6/D7 (X/Y/Z)
ENABLE → D8 (LOW = käytössä)
SLEEP → Yhdistä RESET-pinniin
RESET → Yhdistä SLEEP-pinniin
1A, 1B → Moottorin käämi 1
2A, 2B → Moottorin käämi 2
Tärkeää: Lisää 100µF elektrolyyttikondensaattori VMOT:n ja GND:n väliin lähelle A4988-ajuria jännitepiikkien suodattamiseksi!
Virtalähde
Tyypillinen harrastus-CNC käyttää 12V tasavirtavirtalähdettä. Kolmen NEMA17-moottorin järjestelmään suositellaan vähintään 5A:n virtalähdettä, mieluiten 10A. CNC Shield V4:n kanssa älä ylitä 12 V:n jännitettä. Jos tarvitset alempaa jännitettä esimerkiksi tuulettimille, LM2596 step-down -jännitemuunnin on kätevä ratkaisu jännitteen alentamiseen.

GRBL-asetukset ja kalibrointi
GRBL-asennus ei ole valmis ennen kuin asetukset on kalibroitu koneellesi. Tärkeimmät asetukset syötetään Serial Monitorin kautta.
Askelta per millimetri ($100–$102)
Tämä on CNC-koneen tarkkuuden perusta. Laskukaava riippuu mekaanisesta rakenteesta:
Hihnavetoiselle akselille (GT2-hihna):
askelta/mm = (askelta_per_kierros × mikroaskellus) / (hihnan_jako × hammaspyörän_hampaat)
Esimerkki: NEMA17, 1/16 mikroaskellus, GT2 (2mm), 20-hampainen hihnapyörä:
askelta/mm = (200 × 16) / (2 × 20) = 80
→ $100=80
Kierretankovetoiselle akselille (T8-kierretanko):
askelta/mm = (askelta_per_kierros × mikroaskellus) / nousu_per_kierros
Esimerkki: NEMA17, 1/16 mikroaskellus, T8 (8mm nousu, 4 alkua):
askelta/mm = (200 × 16) / 8 = 400
→ $100=400
Tärkeimmät GRBL-asetukset
$1=255 Moottorit aina lukittuina (estää liikkeen pysähdyksissä)
$3=0 Suunnan kääntö (bitmask: X=1, Y=2, Z=4, esim. $3=3 kääntää X+Y)
$5=0 Rajakytkimien invertointi (1 = NC-kytkimille)
$100=400 X askelta/mm (laske omalle koneellesi)
$101=400 Y askelta/mm
$102=400 Z askelta/mm
$110=500 X maksiminopeus (mm/min)
$111=500 Y maksiminopeus (mm/min)
$112=500 Z maksiminopeus (mm/min)
$120=10 X kiihtyvyys (mm/s²)
$121=10 Y kiihtyvyys (mm/s²)
$122=10 Z kiihtyvyys (mm/s²)
Syötä asetukset yksi kerrallaan Serial Monitoriin, esimerkiksi $100=400 ja paina Enter.
Rajakytkimet ja kotiasema
Rajakytkimet ovat olennainen osa turvallista CNC-konetta. Ne mahdollistavat kotiaseman haun (homing) ja estävät koneen ajamisen mekaanisten rajojen yli.
Kytkintyypit
- Normally Closed (NC) – suositeltu: Kytkin on normaalisti kiinni ja avautuu lauetessaan. Katkennut johto havaitaan heti virheenä.
- Normally Open (NO): Yksinkertaisempi mutta vähemmän turvallinen – katkennut johto ei aiheuta hälytystä.
Kytkentä
GRBL:n rajakytkinpinnit ovat D9 (X), D10 (Y) ja D12 (Z). Pinnit käyttävät sisäisiä ylösvetovastuksia. Kytke kytkimen C-pinni (common) Arduinon rajakytkinpinniin ja NC/NO-pinni GND:hen.
Kotiaseman asetukset
$5=1 Rajakytkimien invertointi (NC-kytkimille)
$21=1 Hard limits käyttöön (hätäpysäytys)
$22=1 Homing-sykli käyttöön
$23=0 Homing-suunnan invertointi
$24=25 Homing-syöttönopeus (mm/min)
$25=500 Homing-hakunopeus (mm/min)
$26=250 Homing-debounce (ms)
$27=1.0 Homing pull-off (mm)
Kotiaseman haku käynnistetään komennolla $H. Kone liikkuu ensin nopeasti ($25) rajakytkimelle, peruuttaa ja lähestyy hitaasti ($24) tarkan aseman löytämiseksi.
Häiriöiden vähentäminen
Rajakytkimet ovat herkkiä sähköisille häiriöille. Lisää 0,1µF keraaminen kondensaattori signaalin ja GND:n väliin Arduino-päässä. Pidä rajakytkimien johdot erillään moottori- ja virtajohdoista, ja käytä mahdollisuuksien mukaan suojattua kaapelia.
Kara- ja laserohjaus
GRBL tukee sekä karan (spindle) että laserin ohjausta D11-pinnin PWM-signaalilla.
Karaohjaus
Karan nopeutta ohjataan 0–5V PWM-signaalilla. Tyypillisesti D11-pinnin signaali ohjaa MOSFET-transistoria (esim. IRF540), joka kytkee karamoottorin. Asetukset:
$30=24000 Karan maksiminopeus (RPM)
$31=0 Karan miniminopeus (RPM)
G-koodi:
M3 S12000 Kara päälle, 12000 RPM
M5 Kara pois
Laserohjaus
Lasermoduulin TTL-tulo kytketään D11-pinniin. Lasermoodi aktivoidaan asetuksella $32=1, jolloin laser sammuu automaattisesti G0-pikaliikkeiden aikana – tärkeä turvallisuusominaisuus.
$32=1 Lasermoodi päälle
G-koodi:
M3 S255 Laser täydellä teholla
M3 S128 Laser 50% teholla
M5 Laser pois
Vianetsintä ja yleiset ongelmat
CNC-elektroniikan rakentamisessa kohtaa väistämättä ongelmia. Tässä yleisimmät ja niiden ratkaisut:
- Moottorit tärisevät mutta eivät pyöri: Käämien johdotus on väärin. Vaihda yhden käämin johtojen paikkaa (esim. 1A ja 1B keskenään).
- Moottorit hyppäävät askelia: Vref on liian matala, kiihtyvyys liian suuri tai mekaaninen kitka liian korkea. Nosta Vref-arvoa ja laske $120–$122 kiihtyvyysarvoja.
- Serial Monitor näyttää sekavia merkkejä: Väärä baudinopeus – aseta 115200.
- Arduino ei näy tietokoneella: Asenna CH340-ajuri. Protocachen ATmega328P Nano käyttää CH340-sarjapiiriä.
- A4988 kuumenee voimakkaasti: Vref on liian korkea, jäähdytysripa puuttuu tai moottorin virta ylittää ajurin kapasiteetin.
- Rajakytkimet laukeavat satunnaisesti: Sähköinen häiriö – lisää suodatuskondensaattoreita, käytä NC-kytkentää ja suojattua kaapelia.
- Moottori pyörii väärään suuntaan: Käytä $3-asetusta suunnan kääntämiseen (bitmask: X=1, Y=2, Z=4). Esimerkiksi
$3=3kääntää X- ja Y-akselit.
G-koodilähettimet – ohjelmistovalinnat
GRBL-asennus on valmis, mutta tarvitset vielä tietokoneohjelman G-koodin lähettämiseen CNC Arduinolle. Suosituimmat vaihtoehdot:
- Universal Gcode Sender (UGS): Suosituin ja monipuolisin. Java-pohjainen, toimii kaikilla käyttöjärjestelmillä. 3D-visualisointi ja makrot.
- Candle: Kevyt ja helppokäyttöinen, erinomainen aloittelijoille. Sisäänrakennettu G-koodin visualisointi.
- LaserGRBL: Suunniteltu erityisesti laserkaiverrukseen. Voi tuoda kuvia suoraan ja muuntaa ne G-koodiksi.
- bCNC: Python-pohjainen, edistyneet ominaisuudet kuten automaattinen pinnan tasaus ja PCB-jyrsintä.
- CNC.js: Selainpohjainen käyttöliittymä, voidaan ajaa Raspberry Pi:llä etäkäyttöä varten.
Suositellut tuotteet CNC-projektiin
Kaikki tarvitsemasi komponentit löydät Protocachen verkkokaupasta – lisää suoraan ostoskoriin:
Yhteenveto
DIY CNC -ohjaimen rakentaminen Arduino Nanolla, A4988-ajureilla ja GRBL-firmwarella on kustannustehokas ja opettavainen projekti. Tärkeimmät vaiheet ovat: komponenttien hankinta, A4988:n Vref-säätö, GRBL:n asennus, johdotus, kalibrointi ja rajakytkimien asennus. Kun nämä perusasiat ovat kunnossa, sinulla on luotettava CNC-ohjain, joka toimii ammattimaisten G-koodilähettimien kanssa.
Kaikki tässä oppaassa mainitut komponentit – ATmega328P Nano -ohjain, A4988-askelmoottoriajurit ja NEMA17 59Ncm -askelmoottorit – löydät Protocachen verkkokaupasta. Aloita oma CNC-projektisi jo tänään!
💡 Vinkki: Jos sinulla on kysyttävää CNC-elektroniikan rakentamisesta tai komponenttivalinnoista, ota rohkeasti yhteyttä – autamme mielellämme projektisi alkuun!























