
3D-tulostimet ovat usein tehtaalta/toimittajalta saapuessaan niin sanotusti tehdasasetuksissaan, eli koneisiin on asennettu jotkin vakiomalliset yleissäädöt, jotka enempi tai vähempi pitävät paikkansa valmistettaville laitteille. Ymmärrettävästä syystä laitevalmistajalla ei ole aikaa tuunata ja hiplata jokaista yksilöä erikseen kuntoon, koska se nostaisi laitteen yksikkökustannuksia liikaa ja näin laitteen myyntihintaa.
3D-tulostimien omistajat joutuvatkin useimmiten opiskelemaan uusia asioita itse, ja esimerkiksi askelmoottorien kalibrointi on yksi sellainen asia.
Tässä kirjoituksessa ei käsitellä levellointia, mikä sekin on kalibrointia, vaan tulostimen moottoreiden kalibrointia. Tulostimen moottoreita ohjataan askelilla ja englanninkielinen termi on steps.
Tässä kirjoituksessa koitan käydä yksinkertaisesti ja vaihe vaiheelta läpi, kuinka pursotin ja XYZ-moottorit saadaan kalibroitua käyttämällä apuna vain työntömittaa ja viivoitinta. Lisäksi tarvitset ohjelmiston, minkä avulla tulostimelta (sarjaportista) voidaan lukea tietoa ja komentaa sitä. Tällaisia ohjelmia ovat esimerkiksi: Pronterface tai Repetier-Host. Tässä kirjoituksessa käytetään jälkimmäistä.
Tulostin kannattaa valmistella niin, että alusta on puhdas tulostimessa on asennettuna sellaista lankaa mihin voidaan tussilla tehdä merkki. Eli jokin vaalea väri esimerkiksi.
Nämä ohjeet pätevät yleisesti mihin tahansa 3D-tulostimeen, jonka ohjainlaitteen ohjelmistona toimii Marlin-ohjelmisto tai jokin sen variantti. Kunhan laite tottelee G-koodeja, niin kalibroinnin pitäisi onnistua.
HUOM! Tulostimelle syötettävät G-koodit ovat ohjeessa omassa kappaleessa omalla rivillään paksunnettuna ja punaisella värillä.
Miksi kalibrointi kannattaa tehdä?
Tulostimen kalibrointi ei ole välttämättä pakollista, riippuen toki siitä mitä tulostimella tehdään tai kuinka hyvin valmistajan oletusasetukset pitävät paikkansa. Mutta yleensä se on hyvä tehdä, koska sillä optimoidaan ennen kaikkea langan pursotusta ja laitteen tarkkuutta. Kalibroitu tulostin pystyy tuottamaan virtuaalisen 3D-mallin tarkemmin oikeaksi kappaleeksi, kuin kalibroimaton tulostin. Kalibrointi on myös hauska tapa opetella 3D-tulostimen käyttöä käsin ohjaamalla, mutta tiettyä varovaisuutta on syytä noudattaa.
Varoituksen sana
Tässä kirjoituksessa esiintyy komentoja jotka voivat vahingoittaa tulostinta, jos komentoja kirjoitetaan väärässä järjestyksessä. Jos teet tätä toimintoa ensimmäistä kertaa, ole valmiina katkaisemaan tulostimesta virta jos jokin näyttää menevän pieleen. Pieleen menemisellä tarkoitetaan sitä, että tulostin yrittää esimerkiksi liikkua liikealueen ulkopuolelle tai suutin painautuu ja vääntyy tulostusalustaa vasten. Nämä ovat kuitenkin vikatilanteita, joita ei pitäisi syntyä jos ohjeita noudatetaan tarkoin. Vastuu on kuitenkin aina tekijällä.
Kirjoitus on jaettu muutamaan vaiheeseen ja klikkaamalla pääset hyppäämään suoraan kirjoituksen eri kohtaan:
- Tulostimen kytkeminen tietokoneeseen
- Käytettävien G-koodien ja kalibrointimetodin selitys
- Pursotinmoottorin kalibrointi
- XY-moottoreiden kalibrointi
- Z-moottorin kalibrointi
Vaihe 1 - Tulostimen kytkeminen tietokoneeseen
Aloitetaan käynnistämällä 3D-tulostin virtakytkimestä ja kytkemällä tietokone USB-kaapelilla tietokoneeseen. Tulostimissa on tyypillisesti joko USB-B tai micro/mini-USB liitin, mihin kaapeli kytketään. Kaapelin kytkennän jälkeen tulostin käynnistyy uudestaan ja näkyy tietokoneelle virtuaalisena sarjaporttina.
Ensiksi tarkistetaan sarjaportin numero, mikä tietokoneella tulostimelle on. Tämä onnistuu laitehallinnasta (Device Manager) ja sen voit avata monella eri tavalla. Yksi helpoin tapa on painaa näppäimistöltä Windows-näppäintä ja kirjoittaa käyttöjärjestelmän kielestä riippuen joko "laitehallinta" tai "device manager". Toinen vaihtoehto on käyttää Windows+X näppäinyhdistelmää ja valita laitehallinta esiin ilmestyvästä listasta.

Tulostimen pitäisi näkyä tietokoneella kohdassa Ports (Portit). Teksti COM ja numero sen perässä kertoo sarjaportin numeron ja se vaihtelee, joten sinun tulostimesi voi olla jokin muukin kuin kuvassa esitetty. Jos et ole varma missä portissa tulostimesi on, niin käytä USB-johtoa irti tietokoneesta ja katso mikä portti häviää. Kytke USB-johto takaisin samaan USB-liittimeen, niin saman COMx:n pitäisi ilmestyä takaisin ja voidaan päätellä, että tulostimesi on juurikin se COM-portti.

Kun portin numero on tiedossa, avataan Repetier-Host ja asetetaan yhteysasetukset kuntoon tulostimen asetuksista (Määritykset -> Tulostimen asetukset / Config -> Printer Settings). Jos käyttöliittymän kieli on englanti, sen voit vaihtaa Config->Language -valikosta, mutta se ei ole pakollista.

Nyt kun asetukset on laitettu, otetaan yhteys tulostimeen:

Log-ikkunasta nähdään tulostimen lähettämät tiedot tietokoneelle. Jos log-ikkuna ei ole näkyvissä, klikkaa hiirellä load-kuvakkeen vieressä olevaa Log-painiketta.
Alla on listattu minun tulostimeni lähettämät tiedot tietokoneelle. Lista on varsin pitkä mutta ei hätää, tästä listasta emme ole vielä kiinnostuneita. Alla on merkitty kuitenkin punaisella muutama hyödyllinen tieto, mitä logista selviää:
11:24:55.883 : start
11:24:55.883 : echo: External Reset
11:24:55.883 : Marlin 1.1.6.0 <-- Firmiksen versio
11:24:55.883 : echo: Last Updated: 2020-04-29 | Author: CR-10 V3
11:24:55.883 : echo:Compiled: Apr 29 2020
11:24:55.883 : echo: Free Memory: 2002 PlannerBufferBytes: 1232
11:24:55.883 : echo:V41 stored settings retrieved (498 bytes; crc 24682)
11:24:55.899 : echo: G21 ; Units in mm
11:24:55.899 : echo: M149 C ; Units in Celsius
11:24:55.899 : echo:Filament settings: Disabled
11:24:55.899 : echo: M200 D1.75 <-- Filamentin halkaisija
11:24:55.899 : echo: M200 D0
11:24:55.899 : echo:Steps per unit:
11:24:55.899 : echo: M92 X80.00 Y80.00 Z400.00 E382.14 <-- nykyiset e-stepsit
11:24:55.914 : echo:Maximum feedrates (units/s):
11:24:55.914 : echo: M203 X500.00 Y500.00 Z5.00 E25.00
11:24:55.914 : echo:Maximum Acceleration (units/s2):
11:24:55.914 : echo: M201 X500 Y500 Z100 E1000
11:24:55.930 : echo:Acceleration (units/s2): P R T
11:24:55.930 : echo: M204 P500.00 R500.00 T1000.00
11:24:55.946 : echo:Advanced: S T B X Z E
11:24:55.952 : echo: M205 S0.00 T0.00 B20000 X10.00 Y10.00 Z0.40 E5.00
11:24:55.952 : echo:Home offset:
11:24:55.952 : echo: M206 X0.00 Y0.00 Z0.00
11:24:55.952 : echo:Material heatup parameters:
11:24:55.952 : echo: M145 S0 H205 B50 F255
11:24:55.952 : M145 S1 H240 B70 F255
11:24:55.952 : echo:PID settings:
11:24:55.968 : echo: M301 P19.47 I1.59 D59.40 <-- suuttimen PID arvot
11:24:55.968 : echo: M304 P201.86 I10.67 D954.96 <-- pedin PID arvot
11:24:56.056 : N1 M11034 11:24:56.056 : N2 M11536
11:24:56.056 : N3 M10536 11:24:56.056 : N4 M11435
11:24:56.056 : N5 M111 S698 11:24:56.056 : N6 T060
11:24:56.056 : N7 M8028 11:24:59.041 : echo:TF card ok 11:24:59.044 : Init power off infomation. 11:24:59.044 : size: 11:24:59.044 : 585 11:24:59.049 : init valid: 11:24:59.049 : 0 11:24:59.049 : 0 11:24:59.061 : echo:TF card ok 11:24:59.063 : Init power off infomation. 11:24:59.063 : size: 11:24:59.063 : 585 11:24:59.070 : init valid: 11:24:59.070 : 0 11:24:59.070 : 0 11:24:59.101 : N8 M220 S100105
11:24:59.101 : N9 M221 S100105 11:24:59.102 : N10 M111 S686
11:24:59.103 : Cap:EEPROM:1
11:24:59.106 : Cap:AUTOREPORT_TEMP:1
11:24:59.106 : Cap:PROGRESS:0
11:24:59.108 : Cap:PRINT_JOB:1
11:24:59.108 : Cap:AUTOLEVEL:0
11:24:59.108 : Cap:Z_PROBE:0
11:24:59.111 : Cap:LEVELING_DATA:0
11:24:59.114 : Cap:SOFTWARE_POWER:0
11:24:59.114 : Cap:TOGGLE_LIGHTS:0
11:24:59.115 : Cap:CASE_LIGHT_BRIGHTNESS:0
11:24:59.115 : Cap:EMERGENCY_PARSER:0
11:24:59.115 : N11 T010 11:24:59.158 : X:0.00 Y:0.00 Z:0.00 E:0.00 Count X:0 Y:0 Z:0 11:24:59.158 : N12 M155 S183
11:24:59.174 : echo:DEBUG:INFO,ERRORS
11:24:59.174 : echo:Active Extruder: 0
11:24:59.174 : echo:DEBUG:INFO,ERRORS
11:24:59.174 : echo:Active Extruder: 0
Yhteys 3D-tulostimeen on nyt kunnossa ja voidaan aloittaa kalibrointirutiini.
Vaihe 2 - G-koodit ja kalibrointimenetelmä
G-koodit ovat komentoja, jotka 3D-tulostin tulkitsee ja muuttaa printterin toiminnoiksi. Kaikki mitä tulostin tekee, johtuu G-koodista ja sitä voidaan syöttää joko käsin (kuten tässä tehdään tietokoneohjelman avulla) tai muistikortilta (kuten tulostaessa).
Tulostimelle syötettävät G-koodit ovat ohjeessa omalla rivillään paksunnettuna ja punaisella värillä.
G-koodit, joita tulostin tukee riippuu sen ohjainohjelmistosta eli firmwaresta (puhekielessä firmis). Yleisimmät komennot ovat printteristä huolimatta aina tuettu, kuten lämmitys, pursotus, liikkeet jne. Listan eri komennoista näet Marlin-ohjelmiston kotisivuilta: https://marlinfw.org/meta/gcode/.
Tässä tehtävässä kalibroinnissa tarvitaan seuraavia komentoja ja ne on selitetty alle. Huom! Kaikki G-koodit eivät ala G-kirjaimella ja tarkempi syntaksi kannattaa tarkistaa komentojen-kotisivuilta linkistä yllä. Kaikkia koodeja ei ole tarpeellista tässä vaiheessa vielä muistaa tai ymmärtää, vaan ne on selitetty "auki" siinä ohjeen vaiheessa, kun kyseinen koodi vastaan tulee.
G-komento | Selitys | Esimerkki |
---|---|---|
G28 | Kotiutuskomento kaikille akseleille. Printteri ajaa akselit kotiasentoon. | G28 |
M104 | Asettaa suuttimen lämpötilan ilman odottelua. | M104 S215 |
M109 | Asettaa suuttimen lämpötilan mutta ei suorita muita komentoja ennen kuin lämpötila on saavutettu. | M109 S215 |
G90 | Asettaa liikkeet absoluuttiseen moodiin, eli liikutaan tulostimen koordinaatistossa suhteessa nollapaikkaan. | G90 |
G91 | Asettaa liikkeet suhteelliseen moodiin, eli liikkeet ovat suhteessa nykyiseen sijaintiin | G91 |
G92 | Asettaa nykyisen sijainnin nollapaikaksi tulostimen koordinaatistossa. Voidaan käyttää myös asettamaan yksittäinen tai useampi akseli nollaan. | G92 X0 G92 Y0 Z0 |
M83 | Asettaa pursottimen suhteelliseen moodiin, jolloin filamenttia voidaan syöttää suhteessa nykysijaintiin | M83 |
M92 | Asettaa moottorien askellukset halutuksi. | M92 X85.00 |
M503 | Printterin tietojen kysely. | M503 |
M500 | Säätöjen tallennus tulostimen muistiin. | M500 |
G1 | Liikekomento XYZE -akseleille. Esimerkissä X-akselia liikutetaan 10mm positiiviseen suuntaan (oikealle). | G1 X10 |
Kalibrointimenetelmä on varsin yksinkertainen ja se voidaan purkaa osiin näin:
- Liikutetaan moottoria halutun määrän verran
- Mitataan paljonko moottori oikeasti liikkui
- Lasketaan paljonko askelia oikeasti tarvitaan verrattuna nykyisiin askeleihin
- Syötetään uudet askeleet ohjelmistolle ja tallennetaan ne muistiin
- Toistetaan mittaus ja korjataan tarvittaessa
Vaihe 3 - Pursotinmoottorin kalibrointi
Ennen kalibroinnin aloitusta otetaan talteen nykyiset moottorien askeleet eli stepsit, lähettämällä tulostimelle komennon M503 tai lukemalla ne listasta joka tulostui kun yhteys printteriin muodostettiin:
M503
11:24:55.899 : echo:Steps per unit:
11:24:55.899 : echo: M92 X80.00 Y80.00 Z400.00 E382.14
Tässä vaiheessa tarvitaan E-kirjaimen jälkeen olevaa lukua ja se otetaan talteen, eli 382.14 merkitään muistiin. E tarkoittaa extruderia eli pursotinmoottoria. Asetetaan jo tässä vaiheessa pursotin suhteelliseen moodin, niin lankaa voidaan helposti G1-komennoilla syöttää:
M83

Seuraavaksi merkitään tulostuslankaan työntömitan avulla tarkalleen 120.00 millimetrin päähän merkki. Merkin tulee olla tämän matkan päässä siitä pinnasta, mistä voidaan luotettavasti mitata ennen syöttömoottorille menoa. Mitan voi ottaa ja merkin tehdä myös ennen Bowden putkea, jos tulostimesi on esimerkiksi Ender 3 tai vastaava.
Pursotinmoottori kalibroidaan ensin, joten se on syytä laittaa lämpeämään pursotusta varten. Asetetaan tulostuspää sellaiseen lämpötilaan, missä filamenttia normaalistikin pursotetaan ulos suuttimesta. Tässä tapauksessa 215 C. Lämpötilan voi asettaa Repetier-Host ohjelmassa joko käsiohjauksen ikkunasta tai sitten G-koodilla M104 S215 tai jos halutaan olla varmoja M109 S215.
M109 S215
M109 komennon jälkeen on odotettava että suutin lämpeää. Muut komennot menevät jonoon suoritettavaksi ja mitään ei tapahdu, ennen kuin suutin on tavoitelämpötilassa.
Kun tulostuspää on kuumana ja halutussa tulostuslämpötilassa, suoritetaan pursotuskäsky komennolla G1 E100 F100. Tämä komento pursottaa suuttimesta lankaa ulos 100 mm nopeudella 100 mm/min. Jos E-kirjaimen paikalla on XYZ, niin tulostimen pää liikkuu johonkin suuntaan ja näin voidaan tulostinta ohjata yksinkertaisesti käsin.
G1 E100 F100
Jos mitään ei pursotu, niin lähetä tulostimelle komento M83 ja kokeile uudestaan. Mikäli vieläkään ei mitään tapahdu, niin tarkista tulostimen suuttimen oikea lämpötila.
Kun pursotus on suoritettu, mitataan filamentin pituus merkin ja aiemman mittauskohdan väliltä eli samasta paikasta.

Nyt mitattu uusi pituus kertoo meille seuraavaa:
- Tulostimelta pyydettiin pursottamaan 100 mm lankaa
- Tulostin pursotti oikeasti 120 - 24.98 = 95.02 mm lankaa
- Johtopäätös: tulostin pursottaa liian vähän eli alipursottaa.
Koska nykyiset stepsit E-moottorille on 382.14, voidaan laskea uusien askelien arvo seuraavalla kaavalla:
Merkki_filamentissa - mitattu_matka = todellinen_matka
120 - 24.98 = 95.02
Nykyiset_stepsit/todellinen_matka * haluttu_matka = oikeat_stepsit
382.14 / 95.02 * 100 = 402.1679646
Uudet oikeat askeleet voidaan pyöristää kahteen desimaaliin, eli 402.18. Tämä arvo voidaan nyt syöttää tulostimelle komennolla:
M92 E402.18
Tallennetaan uusi arvo muistiin komennolla M500. Tarkistus komennolla M503.
M500
M503
Nyt kannattaa tehdä uusi merkki uudelleen 120 mm:n päähän filamenttiin ja toistaa mittaus. Kun arvot ovat oikein, niin lankaa tulostuu tasan 100mm, ei enempää eikä vähempää.
Vaihe 4 XY-moottoreiden kalibrointi
Seuraavaksi kalibroidaan XY-moottorit mitan ja osoittimen avulla. Tavoitteena on liikuttaa akselia 100mm kerrallaan yhteen suuntaan ja mitata todellinen kuljettu matka. Jälleen otetaan stepsit talteen ennen kuin muutetaan mitään, komennolla M503. Tällä kertaa olemme kiinnostuneita tietenkin X ja Y -askelista ja luvut 80.00 merkitään talteen.
M503
11:24:55.899 : echo:Steps per unit:
11:24:55.899 : echo: M92 X80.00 Y80.00 Z400.00 E402.18
Osoittimena olen käyttänyt suuttimen puhdistukseen tarkoitettua neulaa, mutta tässä voi käyttää muutakin välinettä. Aluksi ennen muuta ajetaan moottorit kotiasentoon kotiutuskäskyllä:
G28
Seuraavaksi tulostuspäätä liikutetaan G1 XYZ komennoilla niin, että mitta ja osoitin voidaan kiinnittää. Esimerkiksi kuvassa suutin on kotiutuksen jälkeen ensin ajettu ensin ylös G1 Z50 komennolla ja sen jälkeen G1 Xnn ja G1 Ynn komennoilla sopivaan kohtaan (nn = numero). Nämä koordinaatit vaihtelevat sen mukaan kuinka itse teet tämän kalibroinnin, mutta tässä omat luvut:
G1 Z50
G1 X100
G1 Y80
Mitta asetetaan tulostusalustalle sopivaan kohtaan ja osoittimen voi kiinnittää tulostuspäähän esimerkiksi teipillä, kuten kuvassa.

Seuraavaksi osoitin ajetaan G1-komennoilla tai Repetier-Hostin käsisyötöllä lähemmäs mitta-asteikkoa ja johonkin tasalukuun mitan alkupäähän. Kovin suuria lukemia ei kannata käyttää, vaan liikuttaa tulostinta vähän kerrallaan.
Kun osoitin on sopivassa kohtaa asteikkoa, sanotaanko nyt vaikka että kohdassa X = 42.55 (tulostimen lukema, mitta-asteikossa vaikkapa kohdassa 2.0 cm), niin liikutetaan tulostinta komennolla G1 X142.55 100mm eteenpäin:
G1 X142.55
Osoittimen pitäisi nyt olla kohdassa 12.0 cm, mikäli askeleet eli stepsit X-moottorilla ovat oikein. Näin ei kuitenkaan minulla ollut vaan neula oli noin puoli milliä liikaa yli. Askeleet lasketaan samalla kaavalla kuin pursottimelle, eli näin:
Nykyiset_stepsit/todellinen_matka * haluttu_matka = oikeat_stepsit
80.00/100.5 * 100 = 79.60199005 --> pyöristys 79.60
Saatu uusi arvo ilmoitetaan tulostimelle ja tallennetaan muistiin.
M92 X79.60
M500
M503
Sama toimenpide toistetaan Y-akselille, X-kirjaimen tilalla on komennoissa vain Y.
Vaihe 5 - Z-moottorin kalibrointi
Z-moottori kalibroidaan samoin kuin XY-moottoritkin, mitta asteikko on vain pystyssä ja kannattaa olla tarkkana, ettei mitään jää puristumaan Z-akselin alle kun sitä lasketaan.

Yllä olevassa kuvassa on minun setuppini. Komennot eivät eroa muuten kuin että XY-kirjaimen paikalla on nyt Z. Muista tallennus M500 komennolla stepsien lähetyksen jälkeen. Tässä tapauksessa Z-akseli oli prikulleen oikein, joten muutoksia ei tarvittu. Z-akseli onkin omien havaintojen mukaan yleensä tarkin jo heti tehtaalta tullessa.
Tulostin on nyt moottoreiltaan kalibroitu ja tämä toimenpide voi olla tarpeellista toistaa esimerkiksi huollon yhteydessä (venyneet / löystyneet remmit tms.).
Jos löysit artikkelista virheitä tai jokin on esitetty epäselvästi, olisit kiltti ja ilmoittaisit siitä info-sivujen kautta. Kaikki ehdotukset artikkelin parantamiseksi otetaan huomioon aina!