3D-printeri kontrollerid peavad tegema palju asju väga-väga kiiresti. Kinemaatika ja dünaamika arvutuste tegemine, saates samal ajal tuhandeid täpselt sünkroniseeritud samm-impulsse sekundis, on tõesti väga raske . Vanemates 3D-printerikontrollerites kasutatav 8-bitine mikrokontrollerite sari on põhimõtteliselt 1990. aastate lõpu ajastu Mr Coffee protsessor. Need on protsessori aja jooksul täielikult ära kasutatud, täites lihtsate (nt ristkülikukujuliste) printerite põhifunktsioonid ja täiendava arvutuskoormuse lisamine ähmastab need ja põhjustab aeglustusi, kogelemist, pause jne.
"Aga minu 8-bitine printer töötab hästi," ütlete te. Ei, see pole nii. Teie printimise jõudlus on sellega piiratud, olenemata sellest, kas saate sellest aru või mitte. Viilutajad varjavad teie eest nüüd automaatselt palju püsivara jõudluse puudujääke. Näiteks perimeetrite printimiskiiruse olulise aeglustamise tavapraktika on suuresti tingitud sellest, et 8-bitistel protsessoritel on ebapiisavad ressursid kaheks:
- mitme gkoodi segmendi kõverate tsentripetaalse kiirenduse arvutuste tegemine
- Gcode edastamisel / töötlemisel ja gcode liikumise planeerimisel palju väga väikeste segmentidega, näiteks orgaaniliste mudelite või siledate kaaridega
Kui esitatakse koos väga väikeste seeriatega segmendid sujuva kaare või keeruka kõverana, lämmatab 8-bitine püsivara tõenäoliselt käsu töötlemise vajaliku kiiruse ja viib prindile kogelemise. Need uskumatult lühikesed pausid võimaldavad ekstruuderis jääksurvel ekstra plastikut välja suruda, muutes trükisele veidi hinge. Nii et enamik viilutajaid kümnendavad kõverad ja väljastavad gcode vähendatud eraldusvõimega, et püsivara koormust kergendada. Probleem on lahendatud, eks?
Kuid on veel üks probleem - kõigi suuremate avatud lähtekoodiga 3D-printeri kontrollerite aluseks olevad GRBL-i liikumisjuhtimise algoritmid olid loodud paljude otseteede ja häkkimistega, et 8-bitised protsessorid saaksid piisavalt kiiresti käituda. Näiteks vaatleb põhialgoritm kiiruse või kiiruse muutust ainult kahe segmendi vahelises nurgas ja kasutab seda, et otsustada, millal liikumissuunas aeglustada / kiirendada. See ei arvuta ega arvesta tsentripetaalset / radiaalset kiirendust. Karbiliste ja väikese eraldusvõimega mudelite printimisel on see tõeliselt tõhus häkkimine, kuid see ebaõnnestub siledate kurvide korral, kus on palju väikeseid segmente. Püsivara ei tuvasta ühtegi märkimisväärset kiiruse muutust tahvlikõvera kahe peaaegu lineaarse segmendi nurgas ja seega ei aeglusta kõverat. Nii et keerukas geomeetria trükitakse efektiivselt püsikiirusel ja kiirendamata.
Komplekssete perimeetrite kiirendamata printimine tähendab, et hea kvaliteedi saavutamiseks peab käskitav etteandekiirus olema väga madal. Enamik printereid on keerulistes perimeetrites piiratud umbes 40 mm / s või vähem, vaatamata sellele, et enne muude kiirusepiirangute saavutamist on võimalik töötada madala keerukusega täites 80–120 mm / s.
Käsu töötlemiskiiruse piirangute vahel ja vähese energiatarbega protsessorite poolt nõutavad puudused liikumise planeerimisel peavad printimiskiirused olema praktikas palju väiksemad, kui füüsika ja printeri riistvara seda rangelt nõuavad. See kõik pärineb 8bit protsessoritelt. Lahendused ja parimad tavad selle probleemiga toimetulemiseks on nii sügavalt sisse lülitatud tööriistakettidesse ja ökosüsteemi, et väga vähesed inimesed mõistavad, et probleem on isegi olemas. Kuid see on tõeline piir, millest on võimalik üle saada: range protsessor, mis töötab rangema liikumisplaneerijaga, võib luua parema printimiskvaliteediga suurema keskmise printimiskiiruse.
Nagu öeldud, liiguvad ARM-il põhinevad püsivara vaid aeglaselt arenenumate liikumiskorraldajate poole. See on praegu suur arengupiirkond, mis tegelikult viib eelseisva nihke madalama hinnaga ARM-idelt nagu Cortex M3 veelgi kiiremate protsessorite poole. Tegelikult ei ole 84 MHz Arduino Due maksimeerimine hunniku püsivara funktsioonide abil nii raske.
8-bitiste protsessorite kasutamine muudab printerid ka LOUDERiks. Tüüpilise 8-bitise printeri protsessori aja suurim tarbija on samm-katkestus, mis käivitab mootori liikuma panemiseks samm-impulsid. On üsna tüüpiline, kui Atmega AVR-is> 60% kõigist taktsüklitest kasutatakse astmeliste impulsside käivitamiseks. Kuna see toimub katkestusena, pigistatakse muud töötlemistoimingud, mida printer peab tegema, - näiteks kiirenduse arvutused ja kütteseadme juhtimine - samm-katkestuse sündmuste vahel lühikestesse ruumidesse.
Ilma püsivara hoolika kujunduseta "tõrjuvad" samm-impulsid muud funktsioonid, nagu LCD-ekraanide värskendused ja kiirendusarvutused, täielikult välja. Suuremate liikumiskiiruste võimaldamiseks ilma kõiki protsessori ressursse kasutamata on 8-bitistel tarkvararakenditel režiim nimega "sammude kahekordistamine", mis käivitab kaks (või neli või kaheksa) astmelist impulssi samm-sammult nii, et pool (või veerand või kaheksas) ), sest sama liikumiskiiruse saamiseks võib kasutada paljusid astmelisi katkestusi. See tava vähendab protsessori kitsaskohti, kuid põhjustab mootori karedamat ja valjemat liikumist, kuna samm-impulsse lastakse pigem purske kui püsiva sagedusega. Tegelikult langeb mootori mikrotaseme tase funktsionaalselt jämedamale režiimile, kui astmeline katkestus tulistab topelt- või neljakordseid samme. Nii et mootorid muutuvad valjemaks, vähem täpseks ja äärmuslikel juhtudel võib neil olla resonantsiga probleeme.
Huvitav kõrvalmõju on see, et kui vahetate Marlini-põhise printeri 1/16 mikrotasemelt 1/32 mikrostempelile ja hoiate samu printimiskiirusi, hakkab püsivara lihtsalt kahekordistama, langetades teie efektiivse mikrotaseme astme paremale tagasi 1/16-ni.
ARM-põhised püsivara kasutavad ka sammude kahekordistamist, kuid lubatavad sammude määrad on enne kahekordse / neljarattalise astme kasutamist tavaliselt ~ 8 korda kõrgemad. See võib tähendada suuremat kiirust ja / või sujuvamat liikumist.
Delta kinemaatika, automaatse nivelleerimise funktsioonid, suurte printerite jaoks ülisuure sammulugemisega käikude arvutamine ja muud täiustatud funktsioonid võtavad kõik 8-bitises protsessoris
palju kella tsükleid. Kehv püsivara kujundus või hooletult funktsiooni lisamine, mis nõuab mõnda täiendavat ruutjuurt ja trig-funktsiooni, võib protsessori täielikult ummistada. Selline funktsioonide hiilimine ja koodipuhumine on aja jooksul tõsiselt mõjutanud Marlini jõudlust, kuna inimesed küsivad üha enam vana AVR-i.
Võrdluseks - 32-bitisel protsessoril pole ainult kiirem kell ja rohkem taktsükleid, vaid see suudab ka palju keerukamat matemaatikat teha vähemate tsüklitega, kuna sellel on spetsiaalne riistvaraline funktsionaalsus, mis hoolitseb paljudest sammudest, mida 8-bitine protsessor tarkvaras tegema peab.
Kas 8bit protsessorid töötavad? Muidugi, nad töötavad üllatavalt hästi selle nimel, mis nad on ja mida me neilt küsime. Kuid need piiravad vaieldamatult tänapäevaste 3D-printerite jõudlust ja funktsioone. Isegi tänapäeva praeguse 32-bitiste protsessorite põlvkonna maksimeerivad juba kiirprinterid ja matemaatikat nõudvad funktsioonid. 8-bitine protsessor on juba kaks põlvkonda maas, mis kvalifitseeruks "moodsaks" 3D-printeri kontrolleriks.