úterý 13. listopadu 2012

Poznámky o konstrukci RepRap tiskárny, červen - listopoad 2012

Poznámky o konstrukci 3D tiskárny RepRap Průša Mendel
(publikováno v podstatě beze změn z mých osobních poznámek, které jsem si psal během stavby. Informaci poskytuji v dobré víře, že to někomu může být užitečné, ale bez jakékoli záruky...)

červen 2012 -
Ondřej a Kryštof Votavovi

Začátek června 2012:
Spouštíme projekt, hledáme informace po internetu. Volba poměrně rychle padá na model RepRap Průša Mendel a to z následujících důvodů:
  1. Celá konstrukce je poměrně jednoduchá a hlavně velmi detailně zdokumentovaná
  2. V ČR existuje několik stavitelů těchto strojů, včetně jejich tvůrce Jozefa Průši, tak se dají dohledat informace o českých dodavatelích některých dílů (krokové motory, kovové části …)
Rozhodl jsem se v první fázi pokud možno nevynalézat znovu kolo a pokusit se v relativně krátkém čase postavit funkční stroj a to i za cenu trochu vyšších nákladů. Například, přesto, že mám dost zkušeností se stavbou elektroniky, výrobou tištěných spojů a dokonce i programováním mikrokontrolerů, rozhodl jsem se koupit pro první verzi kompletní sestavenou elektroniku. Myslím, že mi to ušetří dost tápání a dohledávání případdných chyb. Později se rá pokusím zreplikovat vlastní elektroniku, ale na začátku chci mít něco co funguje a můžu testovat rychle komunikaci s počítačem a ovládání krokových motorů. Tento stavebnicový způsob taky zvýší pravděpodobnost, že Kryštof u projektu vydrží a neodradí ho případné problémy s laděním hardware.

8. června 2012
Dost jsem se inspiroval informacemi od Jakuba Šerého, které jsou poměrně detailní a praktické. Podle jeho rady jsem objednal krokové motory od firmy Microcon.cz . Model SX17-0905 stál včetně DPH 396kč, za 5ks a dopravu jsem komplet zaplatil 2100kč. Motory poslali obratem, měl jsem je doma za 3dny, ani mi nepotvrdili emailovou objednávku.

Obdobně jsem se dle rady J.Š. rozhodl koupit hladké a závitové tyče pro z-posun nerezové. Zde jsem použil našeho ústavního dvorního dodavatele akros.cz se sídlem v Ďáblicích. Hladká tyč byla za 97kč (2kusy po 1.2m stačí na všechny hladké díly s minimálním prořezem) a 1m závitové tyče DIN 975/A4 za 113kč (což je trochu citelný náklad navíc, když člověk potřebuje pouze 2x 210mm kousky. Ale třeba se to vrátí ve formě čistšího chodu. K tomu jsem přibral 10ks DIN 975/A4 M8 matic, také pro z-posun. Akros odpověděl do 2. dne, zboží jsem si vyzvednul osobně.

Zbylý hutní materiál v pozinkované oceli jsem nakonec objednal u firmy sroubysoukup.cz. Nějak se mi nedařilo se dostat na stránky Ferona.cz a tady měli přehledný e-shop, tak jak jsem seděl u počítače tak jsem to tam všechno rovnou zadal. Tady to trvalo poněkud déle, asi týden než zboží dodali, protože čekali na M3 červíky, které nebyly skladem. Výdejní místo mají v Jeremenkově 64, Praha 4, kde jsem si zboží osobně vyzvednul.

Ozubené řemeny jsem objednal od pikron.cz, dodají prý do 3 týdnů, každý přijde na 112kč + DPH +doprava. Uvidíme jak dorazí.

Největší objednávka je z holandské firmy reprapword.com. Tam objednávám sadu plastů včetně částí na Wade extruder (60Eur), části hot-end extruderu (34Eur), kompletní elektronika četně driverů krokových motorů (79Eur) a 0.5kg PLA 3mm vlákna pro testování. Bohužel je v tuto chvíli čekací doba na plastové díly asi 3 týdny. Tak si musíme počkat. Poprosil jsem, za by neposlali elektroniku napřed, abycom mohli otestovat komunikaci s PC a krokovými motory. Ale na to vůbec nereagovali. Celkem bez problémů se s nimi člověk domluví anglicky, konkrétně si dopisuji s Martijn Witte, <martijn@net99.nl>. Jenom neodpovídá tak docela obratem.

Zbývá ještě pár kousků hutního materiálu, např. Ložiska, křídlové matky M4 pro extruder hnací M8 šroub extruderu pro posun vlákna, ty asi koupím v železářství po jednotlivých kusech. Dále nemám drobné elektonické díly, jako mikrospínače pro konce pojezdů, ty nakoupím u GME. Musím také zprovoznit některý starší počítačový zdroj pro napájení celé sestavy. RepRap potřebuje asi 5A na 12V. Myslím, že bych doma měl nějaký mít starší ale použitelný zdroj z PC.

12. června 2012
Zatímco čekám na různé díly (zejména tištěné součásti) díval jsem se na software pro 3D design, se kterými zatím nemám mnoho zkušeností. Samotný software pro ovládání RepRap tiskárny, Skeinforge, nechám na později, v tuto chvíli jsem se chtěl trochu zorientovat v CAD softwarech, pomocí kterých se vytvoří 3D návrh. Těch je samozřejmě celá řada a tak mě zajímaly dvě klíčové věci: 1) jaký formát výstupních souborů je zapotřebí pro ovládací software RepRapu a 2) jaké jsou nástroje s pokud možno nízkou počáteční barierou, aby člověk mohl začít s jednoduchými návrhy a postupně je zesložiťovat. Odpověď na tu první otázku je celkem jednoduchá, RepRap software vyžaduje soubory ve formátu .stl, které jak jsem pochopil jsou vcelku standartní a většina CAD programů by měla být schopná je vytvořit. Na druhou otázku samozřejmě není tak jednoduchá odpověď. V tuto chvíli jsem trochu experimentoval se dvěma možnými variantami a to OpenSCAD a Google Sketchup.

OpenSCAD je založený na skriptovacím jazyce, pomocí kterého se vytváří 3D objekt z primitivních objektů jako jsou kvádry, Válce, koule a mnohostěny. Je možné je spojovat, odečítat a různě kombinovat, čímž vzniká výsledný objekt. Ačkoli by se na první pohled mohlo zdát, že je to (na dnešní dobu) těžkopádný přístup, připadá mi, že má řadu výhod. Celé vývojové prostředí je vlastně velmi jednoduché, skládá se z okna pro vkládání zdrojového textu pro skript a grafického okna, kde se zobrazuje vytvořený objekt. Samotný skriptovací jazyk je vcelku logický a vlastně stačí ovládnout pár příkazů a člověk je schopen vytvářet celkem sofistikované objekty. Výhodou je, že se vše rovnou zadává v konkrétních číselných hodnotách, což je velmi praktické pro technické kreslení. Během pár hodin testování jsem byl schopen vytvořit jednoduchou krabičku na elektroniku.

 Přidávání různých otvorů, výstupků úchytů a podobně je vcelku přímočaré. Skriptovací jazyk umožňuje vytvářet předdefinované objekty a ty pak dle potřeby kombinovat, škáloavt a podobně. V grafickém okně lze objekt intuitivně otáčet a prohlížet z různých stran. Jednoznačně je tento program horký kandidát na použití pro mé potřeby technických návrhů ve 3D. OpenSCAD je zdarma a OpenSource, běží pod Linuxem, i pod Windows (kde jsem ho zatím zkoušel).

Google Sketchup je na opačné straně spektra, jedná se o velmi sofistikovaný plně grafický a zdá se, že i velmi intuitivní program pro 3D návrhy. Primárním účelem je 3D modelování budov pro Google Earth, nicméně pro návrhy objektů pro RepRap tiskárnu je též použitelný. Zatím jsem ho vlastnoručně nezkoušel, ale sledoval jsem serii instruktážních videí od Googlu a skutečně tento program vypadá prakticky, promyšleně a dotaženě. Existuje volná a profesionální verze, nevím jak zásadní jsou omezení ve volné verzi.

Do třetice musím zmínit program Art of Illusion, což je freewarový 3D modelovací software, plně grafický a s velkým množstvím funkcí. Při velmi stručném prohlédnutí několika tutorialů mi připadá, že s tímto software by se dalo namodelovat v podstatě cokoli, včetně animací. Jen na to mít čas a energii. Nicméně pro naše účely by asi pro začátek byl tento software trochu moc komplikovaný.

Overview of some other software packages that may be worth checking can be found at: http://www.reprap.org/wiki/Useful_Software_Packages.

Další programy v řetězci jsou nástroje, které ze souboru v STL forátu, který jsme vyrobili v CAD softwaru vytvoří předpis pro tvorbu daného objektu na RepRap tiskárně. Ačkoli i zde je celá řada možných variant (Skeinforge, Slic3r …), v tuto chvíli se mi zdá, že do začátku bude nejschůdnější cesta využít integrovaného prostředí Mendel Host Software, viz. http://reprap.org/wiki/Mendel_User_Manual:_Host_Software.

14.června 2012:
Dnes si vyzvedávám další část železářství – závitové tyče, matice a podložky, takže až budou tištěné části, můžeme začít se stavbou. Do té doby si ještě můžeme přeppřipravit následující věci:
  • Nařezat závitové tyče na správnou délku (hotovo 15.7.)
  • připravit tisknoucí základnu z překližky
  • vyrobit měřicí díly pro přesné nastavení rozměrů rámu.
    26. 6. 2012
Konečně v reprapworld.com naskladnili tištěné součástky pro Průšu a mohl jsem objednat chybějící díly. Jedná se o sadu trysky extruderu, kompletní Singolulu elektroniku i s ovladači motorů, sadu plastů a 0.5kg 3mm PLA vlákna na testování. Možná dorazí do pátku, psal jsem jim, že potom budu týden pryč. Snad jsem se s tou informací dozvonil...

9.7.2012
Zásilka z reprapword.com dorazila, zdá se, že tam jsou všechny požadované položky, zatím jsem nekontroloval jednotlivé plastové díly, ani funkčnost elektroniky. Dnes v podvečer se Kryštof vrací z letního tábora, tak doufám, že bychom mohli během příštích dnů alespoň postavit základní kostru a vyzkoušet ovládání krokových motorů pomocí Singolulu elektroniky.

13. 7. 2012
Zatím jediný drobný zádrhel s doručenými díly: Ukázalo se, že tato verze plastů požaduje kovová lineární ložiska LM8UU, místo jednoduchých tištěných lineárních ložisek v originální verzi Mendel-Prusa RepRapu. Podařilo se mi najít místního dodavatele těchto ložisek za rozumnou cenu (34kč/kus) Ivan Diviš (Divis hoby na Aukru, divisi@seznam.cz 608153531). Když jsem si ložiska u něj vyzvedával, dal mi celou řadu dobrých rad ohledně konstrukce a provozu 3D tiskáren. V podstatě říkal, že spoustu lidí je v současnosti staví, ale jen málokomu dobře funguje. Že je hodně důležité, aby konstrukce byla celkově hodně tuhá aby to dobře fungovalo, že vychytání dávkování plastu v závislosti na pohybu trysky je celkem důležité pro kvalitní tisk. Mimochodem, v Kroměříži jsem nalezl ještě o pár korun levnějšího dodavatele ložisek, 30kč/kus, ale zrovna je neměl skladem a bylo by třeba čeka 3 týdny, (Ali.G.I d <ALI.G.I@seznam.cz> ). Takže to vypadá, že hlavní díly máme všechny. Začal jsem řezat závitové tyče na správné délky, jsem někde v půlce. Pak můžeme začít šroubovat rám.

3.9.2012
Během srpna jsme s Kryštofem provedli hrubou stavbu tiskárny. Zdá se, že mechanika alespoň v hrubých rysech funguje – všechny tři osy se pohybují v plném rozsahu poměrně volně, po drobných úpravách všechny díly pasují na svá místa. V podstatě bylo potřeba zvětšit některé otvory v plastech, aby do nich pasovaly příslušné díly, zejména otvory pro osy krokových motorů v plastových řemenicích bylo třeba zvětšit. Upravoval jsem také spojovací díly mezi krokovými motory a závitovými tyčemi Z-osy, aby v nich naopak osy motorů neprokluzovaly.
Nyní nás bude čekat oživení elektroniky a softwaru. Zkoušel jsem nainstalovat ovládací software na Ubuntu. Náš domácí počítač se 64-bitovým Ubuntu linuxem zatím vzdoruje. Problém je s tím, že ovládací software potřebuje Java runtime environment a jsou tam problémy s knihovnami mezi 32- a 64-bitovými verzemi. V práci se mi po určitém úsilí podařilo na 32-bitovém ubuntu nainstalovat Java Runtime Environment (JRE) . Instalace vlastního ovládacího softwaru pak byla velmi jednoduchá – zazipovaný soubor stačí rozbalit a spustit software příkazem ./reprap . JRE je třeba stáhnout z www.java.com a nainstalovat (nejdřív rozbalit archiv a posléze instalovat, návody jsou k nalezení například na:
chvíli jsem s tím zápolil a na několikátý pokus se podařilo. Zdá se mi, že nejpřímočařejší je následující postup:

For me it's a little bit different. For Ubuntu 12.04 LTS Precise (Desktop):
  1. Download jre-*.tar.gz
  2. tar -zxvf jre-*.tar.gz
  3. mkdir /usr/lib/jvm/
  4. mv jre* /usr/lib/jvm/
  5. ln -s /usr/lib/jvm/jre*/bin/java /usr/bin/
That's all. To make sure it's correct:
java -version
Asi bude nejjednodušší v prvním kroku použít domácí laptop, který má také 32-bitový Ubuntu, tak by mohla být procedura podobná. Další krok bude zkusit rozpoznat elektroniku přes USB a zkusit měřit a ovládat teplotu a točit krokovými motory...

11.9.2012

Zde je soupis software který funguje pro naši RepRap tiskárnu se Sanguinololu 1.3a a StepStick drivery pro krokové motory. Tento soubor nástrojů je výsledek poměrně strastiplného výběru, při kterém jsem probádal celou řadu slepých uliček. Ukázalo se, že pro rychlý začátek je v současnosti nejschůdnější instalovat software na Windows, u Linuxu je to vše ještě o něco komplikovanější. Výsledný set se tedy sestává z následujících komponent:

  1. Driver pro FTDI232 čip v adresáři CDM 2.08.24 WHQL Certified. Je třeba stáhnout před prvním připojením desky k počítači. Když desku připojíme, zahlásí počítač nalezení nového hardware a pak je třebva vyhledat cestu do rozbaleného adresáře pro instalování driveru. Od té chvíle je tomuto zařízení přiřazen virtuální COM port, přes který komunikuje s ovládacím programem i s vývojovým prostředím Arduino.
  2. Vývojové prostředí Arduino, verze 0023 s komponentem pro Sanguino 0023r3
    Arduino je vývojové prostředí pro desku elektroniky, která řídí tiskárnu. V našem případě tedy Sanguinolulu v 1.3a. V této fázi jsem v podstatě Arduino používal pouze pro kompilaci firmware a jeho nahrání do mikrokontroleru přez USB rozhraní. Použitá verze 0023 je sice starší verze Arduina ale současná verze 1.1 není schopná firmware zkompilovat. Komponent pro Sanguino 0023r4 také nefunguje. Uspěl jsem až s tou verzí 0023r3. Ještě poznámka: na koupené desce Sanguinololu již měl mikrokontroler nainstalovaný bootloader, takže jsem mohl přímo nahrávat firmware přez USB/COM. Alespoň tahle část fungovala vlastně bez problémů. Jinak jsem vlastně na každém kroku narazil na nějaký problém, který bylo nutno řešit, hledat informace, zkoušet různé verze....
  3. Firmware pro Sanguinolulu
    Úspěšně se mi povedlo zkompilovat a nahrát do Sanguina jak SPRINTER tak i MARLIN. V současné době používám aktuální verzi Marlin_v1. Oba firmvary stačilo stáhnout a rozbalit zazipovaný adresář a v něm pak pomocí Arduina otevřít startovací soubor projektu (Marlin.pde či Sprinter.pde). Pod tools je třeba vybrat správnou desku (tools>board>Sanguinololu ATMega 644P) a příslušný COM port, kterým komunikuje počítač s deskou.
  4. Ovládací software na PC
    Používám PRINTRUN, který na rozdíl od RepRap host software bez problémů komunikuje s Sanguinololu. Instalace byla naprosto přímočará, stačilo stáhnout a rozbalit zazipovaný adresář. Použil jsem aktuální verzi printrun-win-Mar2012-slic3r.zip.
  5. Pro tvorbu návrhů asi budu používat OpenSCAD, který již jsem testoval před časem.

Veškerý aktuální software je v adresáři software-and-drivers, včetně zazipovaných stažených souborů.

Zapojení krokových motorů: S tím jsem měl překvapivě velké problémy. První pokusy o roztočení motorů (když se mi konečně podařilo rozběhat firmware a software a deska začala komunikovat s počítačem... ) vedly pouze k vibrování motorů místo jejich otáčení. Na různých fórech na internetu jsem hledal řešení, většinou tam radili nastavovat proud pomocí trimpotů na StepStick driverech, případně měnit prodlevy mezi pulsy krokového motoru. Nic z toho nemělo vliv na chování mého motoru. Nakonec se ukázalo, že značení vinutí na Microcon krokových motorech a na konektorech na desce jsou natolik nejednoznačné, že mohou vést ke špatnému zapojení.

17. 9. 2012
      Dokončili jsme mechanickou konstrukci všech tří os, instalovali krokové motory i koncové vypínače a RepRap bezchybně běhá podle příkazů Printrun programu. Zatím jsme testovali pouze manuální ovládání jednotlivých os, dosud jsem nezkoušel poslat G-kód pro výrobu nějaké součástky. Podle předběžných testů není v pořádku kalibrace osy Z. Osy X a Y se zdají být v pořádku.
Zkoušeli jsme zahřívání a teplotní stabilizaci trysky. Zpočátku vše vypadalo dobře, po zapnutí stabilizace teplota stoupala, když se však blížila k nastavené teplotě 185°C došlo k poškození termistoru – prasknul skleněný obal. Nevím, zda to byl vadný kus a nebo nebyla správně zvolená kalibrační křivka (v nastavení firmware Merlin jsem měl zvolenu variantu 1 pro 100kOhm termistor, při pokojové teplotě dával rozumné hodnoty) a ve skutečnosti došlo k přehřátí termistoru nad jeho maximum. Ať již tak nebo tak, musím pořídit nové teplotní čidlo. Kupodivu se ukazuje, že v ČR není úplně snadné koupit skleněný NTC termistor 100kOhm (schopný měřit minimálně do 200°C, lépe do 300°C). Tak zkoumám alternavivy: Z nabídky GME připadají v úvahu dvě teplotní čidla 1) Pt teplotní čidlo PT1000, které měří v teplotním rozsahu -50°C až 500°C. Má pozitivní teplotní závislst (se vzrůstající teplotou roste odpor čidla) 2) teplotní čidlo KTY84-130 s teplotním rozsahem -40°C až 300°C a také pozitivní teplotní závislostí. Shodou okolností obě čidla mají cca 1600Ohm odpor při 185°C, přičemž KTY84-130 má strmější teplotní závislost a bude tedy poskytovat lepší teplotní rozlišení než platinové čidlo. Cena obou čidel je poměrně příznivá, PT1000 stojí 35Kč, KTY84-130 stojí 21Kč. KTY je dodáváno ve formě skleněného válečku o průměru 1.6mm, takže bude snadné ho umístnit to zahřívacího bloku, skrz který vyvrtáme odpor o patřičném průměru. Takže to asi bude první volba. Nižší teplotní rozsah by něměl vadit, i pro ABS plast by tavicí teplota něměla přesáhnout 250°C. Výhodou obou těchto čidel oproti NTC termistorům je takřka lineární závislost odporu na teplotě
Ani jedno z uvedených čidel nemá ve firmware Merlin příslušnou kalibrační křivku, takže drobnou překážkou v jejich použití bude nutnost tuto kalibrační křivku do firmware dodat. Podle stručného studia zdrojových souborů pro Merlin by to neměl být zásadní problém.

24.9.2012
Během minulého týdne jsem byl nucen podniknout cestu do hlubších vrstev Sanguinololu a Arduina. Ukázalo se totiž, že došlo nejen k poškození termistoru, ale také odešel samotný mikrokontroler v Sanguinololu elektronice (dodnes netuším proč). Naštěstí se jedná o verzi 1.3a, která má procesor v DIL patici a bylo tedy možné ho vyjmout a vyměnit za nový. Každopádně mě čekalo nahrávání bootloaderu aby byl procesor schopen nahrávat firmware přez USB. Celý proces skýtal, jak se ukázalo řadu peripetií. Postup, kterým jsem prošel byl zhruba následující:
    1. V GME jsem za cca 200kč pořídil procesor ATMega644-20PI.
    2. Instaloval jsem PonyProg na můj linuxový počítač. Jedná se o software pro programování mikrokontrolérů, který jsem již v minulosti používal pod Windows pro programování Atmelů a mám pro něj vyrobený a vyzkoušený paralelní programátor. Bohužel v současnosti jediný počítač u nás doma, který má stále paralelní port je právě domácí linuxový stroj. Instalace pod Ubuntu byla překvapivě přímočará, jen je třeba pamatovat, že program se musí spouštět přez příkazovou řádku pomocí sudo: sudo ponyprog2000 jinak programátor není schopen komunikovat s paralelním portem.
    3. Vyhledal jsem bootloader pro  nahrATMega644 a nahrál jej do nového procesoru. Zde se vyskytlo pár dílčích problémů – první z nich bylo nastavení pojistek v procesoru, které určují zdroj a frekvenci hodin procesoru, velikost paměti pro bootloader a další parametry procesoru. V PonyProg se nastavují v Commands>Configuration and security bits. Jedná se o tři byty, které mají mít hodnotu:
      horní řádka (low_fuses)=0xFF
      prostřední řádka (high_fuses)=0xDC
      spodní řádka (extended_fuses)=0xFD
      AKTUALIZACE: TOTO NASTAVENÍ POJISTEK JE CHYBNÉ, VIZ NÍŽE!
      Při nastavování třeba pamatovat, že zaškrtnuté okénko znamená nastavení daného bitu na hodnotu 0, tedy 0xFF hodnota znamená, že žádné okénko není zaškrtnuté.
    4. Nahrál jsem úspěšně program do nového chipu přímo přes 6-ti pinový ISP konektor na desce Sanguinololu. Zde nenastal žádný zásadní problém. Postupuji tak, že nejdřív nastavím správný chip z menu Device>AVR micro, následně zkontroluji, že programátor komunikuje s chipem příkazem Command>Read Program v případě, že je chip prázdný, přečtou se samé 0xFF, jinak se zobrazí, co v mikrokontroléru je nahrané. Následně nahraji .hex soubor příkazem file>open program (FLASH) file a ten pak nahraji do chipu pomocí Command>write program (FLASH). To vše proběhlo v pořádku, ale pak nastaly problémy, neboť Arduino odmítlo s novým mikrokontrolérem s takto nahraným bootloaderem komunikovat. Teprve v této fázi jsem zjistil, že standartní kontrolér pro Sanguinololu je ATMega644P, který není shodný s ATMega644. Bohužel GME ATMegaž644P nevede a ani jinde se mi nedařilo ho (snadno) najít. Na druhou stranu se mi po internetu podařilo vystopovat informace, že i ATMega644 by měl být použitelný, ale potřebuje specifický bootloader, verze pro ATMega644P nefunguje. Naštěstí v adresáři firmware Marlin\Sanguino\bootloaders jsem nalezl obě verze bootloaderu, jak pro 644P tak i pro 644. Tak jsem nahrál nový bootloader pomocí PonyProg a znovu zkusil komunikaci s Arduinem. Tentokrát již bylo Arduino schopno s chipem komunikovat, ale dávalo chybu, protože ve specifikaci použité desky tools>board bylo specifikováno „Sanguino w 644P“ a tomu neodpovídal skutečný chip na desce. Tak jsem ještě musel upravit specifikace Sanguino desek v souboru \arduino-0023\hardware\Sanguino\boards.txt, kde jsou specifikované parametry jednotlivých desek. Zkopíroval jsem sekci pro ATMega644P a pozměnil řádky relevantní pro ATMega644 (označené červeně):
      ##############################################################
      atmega644.name=Sanguino W/ ATmega644
      atmega644.upload.protocol=stk500
      atmega644.upload.maximum_size=63488
      atmega644.upload.speed=38400
      atmega644.bootloader.low_fuses=0xFF
      atmega644.bootloader.high_fuses=0xDC
      atmega644.bootloader.extended_fuses=0xFD
      atmega644.bootloader.path=atmega644p
      atmega644.bootloader.file=ATmegaBOOT_644.hex
      atmega644.bootloader.unlock_bits=0x3F
      atmega644.bootloader.lock_bits=0x0F
      atmega644.build.mcu=atmega644
      atmega644.build.f_cpu=16000000L
      atmega644.build.core=arduino
      Změna v sekci bootloader by byla relevantní pouze, pokud by člověk chtěl nahrávat bootloader přímo z prostředí Arduino, což jsem zatím nezkoušel, ale v principu by to mělo jít. Nakonec ještě bylo potřeba provést změnu přímo ve zdrojovém kódu firmware, v souboru pins.h: v sekci pro Sanguinololu:
      ****************************************************************************************
* Sanguinololu pin assignment
*
****************************************************************************************/
#if MOTHERBOARD == 62
#define MOTHERBOARD 6
#define SANGUINOLOLU_V_1_2
#endif
#if MOTHERBOARD == 6
#define KNOWN_BOARD 1
//#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega1284P__)
#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__)
    1. Po těchto změnách se konečně podařilo přeložit a nahrát firmware do procesoru a vrátit se zpět k problematice teplotní stabilizace.

Teplotní stabilizace s použitím KTY84-130 teplotního senzoru: Ukázalo se, že se jedná o podstatně zásadnější zásah do firmware, než jsem původně předpokládal. Software pro teplotní stabilizaci totiž apriory předpokládá NTC termistory, u kterých odpor klesá s teplotou. V této fázi jsem provedl modifikaci firmware Sprinter, který je jednak trochu jednodušší, ale hlavně podstatně přehledněji napsaný než Marlin. K popisu změn firware se snad časem dostanu, v tuto chvíli musím udělat pár poznámek o dalších krocích …

    26.9. 2012
    Status projektu je takový, že teplotní stabilizace funguje vcelku pěkně s KTY84-130. Veškerá elektronika je zapojená, dorazy na všech osách nastaveny, podávání plastu extruderem funguje, takže v principu jsme schopni začít tisknout. JENŽE: Komunikace mezi PC a Sanguinololu je eratická. Tiskárna reaguje na příkazy z PC chvilku a pak se zasekne, případně se mikrokontrolér sám od sebe resetuje. Při pokusu o tisk G-kodu přečte pár řádek a pak na náhodném místě zahlásí chybu „serial error, checksum ...“ případně něco na ten způsob. Informace na internetu je sporadická a nekonzistentní, strávil jsem s tím už pár večerů a nepodařilo se mi tento problém rozlousknout. Zkoušel jsem změnu napájení z 12V Pb akumulátoru na PC zdroj (což bych stejně musel udělat, ten akumulátor byla nouzovka vhodná tak pro počáteční testování). Zkoušel jsem nahrát zpět Marlin firmware, ale symptomy s ním jsou naprosto stejné. Asi nejnadějněší stopu, kterou musím důkladně probádat je z následujícího blogu:
    http://stevesfixitshop.blogspot.cz/2011/12/sanguinololu-13a-part-3not-out-of-woods.html

Autor popisuje symptomy v podstatě shodné s našimi. Jeho vysvětlení je to, že mikrokontroler má špatně nastavené pojistky pro zdroj systémových hodin. Konkrétně v jeho případě šlo o to, že měl pojistky nastavené pro krystalový oscilátor, zatímco skutečně měl zapojený keramický rezonátor, pro který bylo potřeba pojistky přenastavit. Údajně to vyřešilo jeho problém. Toto vysvětlení mi připadá docela dobře možné. Mám pocit, že v našem Sanguinololu je také keramický rezonátor a pojistky jsou podle mne nastaveny pro krystal. Takže jsem se musel trochu hlouběji ponořit do nastavení pojistek u ATMega644, podle originální datasheet. Nastavení zdroje systémových hodin je určený bity CKSEL 3 … 0, což jsou spodní 4 bity (tj. Spodní „nibble“) v extended_fuses. Ten má v tuto chvíli nastavenu hodnotu 0xD (hexadecimal) tedy:

CKSEL3 CKSEL2 CKSEL1 CKSEL0
binary 1 1 0 1
fuses   X (X znamená nastavenou pojistku)

to by podle datasheet odpovídalo krystalu (CKSEL3 = 1) pro frekvenční rozmezí 3 – 8 Mhz. To zdá se není tak úplně správně. Zaprvé tam máme asi spíš keramický rezonátor, čemuž by odpovídalo CKSEL3 = 0 a CKSEL0 = 0, a dále podle všeho by měly mít systémové hodiny frekvenci 16MHz, čemuž by odpovídalo nastavení CKSEL2 = CKSEL1 = 1. Takže by měly tyto pojisty být nastavené následujícím způsobem:
CKSEL3 CKSEL2 CKSEL1 CKSEL0
binary 0 1 1 0 = 0x6
fuses X   X

      V případě použití 16MHz krystalu by pak měly být pojistky nastaveny:
CKSEL3 CKSEL2 CKSEL1 CKSEL0
binary 1 1 1 1 = 0xF
fuses    
      V podstatě můžu vyzkoušet dvě varianty, zaprvé přenastavit pojistky na keramický oscilátor, zadruhé vyměnit keramický oscilátor za krystal. Ještě další možnost by byla přenastavit hodiny na vnitřní oscilátor procesoru a nastavit běh programu na 8MHz (to nevím přesně kde by se dělalo, zda by stačilo nastvit tuto hodnotu v definici desky (boards.txt v adresáři hardware/Sanguino), nebo by bylo třeba ještě něco měnit ve firmware. Tato varianta by byla velmi bezpečná co se týče procesoru, v podstatě by nehrozilo, že by se zablokoval a nedal by se dál programovat... Otázka ovšem je, zda by potom byl bootloader schopen nahrát firmware do mikrokontroleru. Mám tušení, že bootloader je designován pro určitou frekvenci sysémových hodin. Takže asi bude nejjednodušší postupovat následujícím způsobem: 1) zkontrolovat, co skutečně máme v desce, pokud keramický oscilátor, změnit hodnoty pojistek pro tuto variantu. Pokud je tam krystal tak přenastavit pojistky pro krystal. 2) pokud tam je keramický oscilátor a přenastavení pojistek nepomůže, zkusit tam dát 16MHz krystal a přenastavit pojistky pro tuto variantu. 3) pokud nepomůže ani to, zkusit vnitřní oscilátor a přenastavit systémovou frekvenci v boards.txt na 8MHz. Pokud pak nepůjde nahrát firmware, vrátit se k vnějšímu rezonátoru a zkoumat další varianty. Pokud vše selže, zkusit sehnat 644P mikrokontroler

    12.10. 2012
Takže zmíněné úpravy popsané v minulém zápisu zafungovaly na 100% . Používáme nastavení pro 16MHz keramický oscilátor (viz výše). Od té doby nemám nejmenší problémy s komunikací mezi Sanguinololu a počítačem a ještě týž večer (tj. 26.9.2012) jsme úspěšně vytiskli první objekt!

Od té doby jsme vyzkoušeli tisknout různé drobné předměty stažené ze thingiverse.com. Pro překlad .stl souborů do g-kódu používám buď Slic3r, který je integrován do Printrunu, kterým v současné době (stále pod Windows) ovládám tiskárnu, nebo (častěji) Skeinforge, který jsem nainstaloval zvlášť. Slic3r v některých případech .stl soubory špatně přeložil a vytvořil nefungující g-kódy (přesněji řečeno g-kódy, které vytiskly něco jiného než bylo v .stl předloze). Defaultní nastavení vede k tisku, který je o hodně rychlejší než u skeinforge, ale výsledná kvalita tisku je (zatím) horší. Skeinforge má hromadu možností, ve kterých se zatím teprve pomalu začínám orientovat. Docela dobroý úvod pro počáteční nastavení sepsal Jakub Šerých. Systematickému nastavení tiskových podmínek se ještě budu muset věnovat, pak k tomu napíšu nějaký záznam.
Tiskneme PLA na sklo, které (dle rady J. Šerých) před tiskem natírám roztokem kalafuny v lihu, pak i první vrstva celkem dobře drží, ale není problém finální výrobek odloupnout. Podložka je nevyhřívaná. Teplotu mám nastavenou na 185°C. Při nižších teplotách se vrstvy doře nespojují.
Ukazuje se, že při tištění pomocí plastu PLA je důležité chlazení pomocí větráčku, zejména pro tisk převislých částí a přemostění. Tak zkusím jako další vylepšení připojit malý větráček ze starého CPU chladiče. Sanguinololu je nachystané na ovládání větráčku pomocí jednoho PWM výstupu, ale bude potřeba vyrobit jednoduchý spínací obvod pomocí FET tranzistoru, zhruba takto: 

IRLML2502 tranzistor je SMD výkonový N-FET, který mi připadá pro tuto aplikaci velmi vhodný, mají ho v GME za 5.5kč. Případně pro opravdu velké výkony by se hodil IRLR8743 (22kč, GME). Katalogové listy pro obě součástky jsem stáhnul. Kromě toho bude potřeba vyrobit držák větráčku na tiskací hlavu, návrhy se dají stáhnout na thingiverse, takže by to neměl být velký problém.



    24.10. 2012
    Větrák se podařilo celkem slušně zprovoznit. Vyrobil jsem dle schématu výše malý plošňák, s IRLML2502 tranzistorem (Vmax = 20V, Imax = 4A, Ron = 0.08Ohm). Zapínání a vypínání ve firmware v podstatě také šlo celkem snadno, v souboru pins.h bylo potřeba nadefinovat použitý pin:
    #define FAN_PIN 4
    v oddílu pro Sanguinololu desku (motherboard 62). Zatím mi z nějakého důvodu nefunguje PWM regulace otáček, větrák se dá pouze zapnout (g-code příkaz M106) nebo vypnout (g-code příkaz M107) regulace by se měla provádět příkazem M106 Sxx , kde xx je číslo od 0 do 255, 0 znamená vypnutý větrák, 255 plný výkon. Jenže mě to nedělá vůbec nic. Držák jsem skutečně bez problémů stáhnul a vytisknul (www.thingiverse.com/thing:29999). Aby se při běhu větráku příliš neochlazovala tiskací hlava (hot end) obalil jsem ji tlustou vrstvou teflonové pásky, viz foto:


    To funguje vcelku dobře, nicméně uvažuji ještě o další izolaci hlavy, nevím zda výkon vyhřívání při puštěném větráku bude stačit pro případné použití ABS plastu (který potřebuje vyšší tavicí teplotu).
    Pracuji na zlepšování kvality tisku. Včera jsem si přečetl tutoriály k Slic3ru (http://richrap.blogspot.cz/2012/01/slic3r-is-nicer-part-1-settings-and.html) a přenastavil parametry tisku. Výsledek je VÝRAZNĚ vyšší kvalita tisku! Asi nejzásadnější změna byla snížení tloušťky vrstvy na 0.3mm a snížením množství plastu (oproti tomu, co tlačil skeinforge). Mám nastavený průměr vlákna 2.75mm. Tisknu poměrně pomalu, obvody (perimeter) 30mm/s, vnitřky (infill) 50mm/s přemostění 30mm/s. Píšťalka se tiskne asi 30min. Teplotu mám na 185°C, první vrstvu na 188°C. Jediný (ale bohužel vcelku zásadní) problém v tuto chvíli je, že s těmito hodnotami nastavení mi objekty špatně drží na studené skleněné podložce (kalafuna trochu pomáhá, ale není to dostatečné) takže se mi opakovaně stalo, že se mi tisknutý objekt uloupl z podložky. Zkazil jsem takto několik píšťalek... To asi budu muset vyřešit vyhřívaným stolkem. Zásadní výhodou slic3ru je, že umí zamezit vytékání plastu při přemisťování tiskové hlavy zpětným chodem extruderu. Výsledný tisk je takřka úplně bez natažených nití plasu, které by bylo potřeba odstraňovat. Píšťalka pískala bez jakéhokoli čištění, což se o té první opravdu říci nedalo. Mimochodem pro tištění v slic3ru jsem stáhnul „opravenou“ verzi píšťalky na http://www.thingiverse.com/thing:1048 .


    29.10. 2012
Pracuji na migrování software pro ovládání tiskárny z Bětčina windowsovského netbooku (který jsem jí za tímto účelem v minulém měsíci permanentně kradl) na můj desktop Ubuntu (11.10) linux. Je to výkonnější počítač s lepší grafickou kartou, takže Kryštof na něm může například navrhovat 3D objekty v „dětském CAD“ programu TinkerCAD. Nainstaloval jsem Printrun/Pronterface dle návodu na RepRap wiki

Ubuntu

sudo apt-get install python python-serial python-wxgtk2.8 python-tk git-core
There are also experimental packages for Ubuntu (maverick natty oneiric precise):
sudo apt-add-repository ppa:richi-paraeasy/ppa
sudo apt-get update
sudo apt-get install pronterface
Počítač hlásil celou řadu chyb při instalaci, ale kupodivu program byl nainstalován a vlastně okamžitě při připojení byl schopen lokalizovat správný USB s tiskárnou a připojit ji. Takže potud dobré. Záhy jsem však zjistil, že (k mému překvapení) používá Printrun v linuxu defaultně Skeinfoge a nikoli Slic3r. Vzhledem k tomu, že jsem právě velmi dobře nastavil parametry Slic3ru a tiskárna opravdu tiskne velmi kvalitně, rád bych měl možnost používat Slic3r i pod Ubuntu. Slic3r by se měl instalovat snando pomocí předkompilovaných balíků, které se pouze rozbalí. Zatímco mi to napoprvé fungovalo na 32-bitovém Ubuntu v práci, na domácím 64-bitovém systému to nefunguje, ačkoli jsem stáhnul a rozbalil verzi x64. Na internetu jsem k tomu zatím našel následující poznámku, která může být relevantní (z http://dustsreprap.blogspot.cz/2012/04/printing-at-90-micron-layers-and.html):

...I installed the precomputed Slic3r binaries from here

Since I run 64 bit and this is a 32 bit binary I also had to install the 32-bit support libraries (ia32-libs and ia32-libs-gtk packages).

You then need to configure pronterface to use Slic3r

Set the following to settings.
slicecommand:  {full_path_to}slic3r $s --load config.ini --output $o
sliceoptscommand: {full_path_to}slic3r --load config.ini --ignore-nonexistent-config

You then have to setup Slic3r for your printer (very easy if you have set up anything before)

… takže chci zkusit doinstalovat ty 32-bit support libraries...

rychlá poznámka: kupodivu mi na mém ubuntu FUNGUJÍ 32-bitové verze slic3ru ale NEFUNGUJÍ 64-bitové verze. Divné.





účel tohoto blogu

Během léta 2012 jsme spolu se synem Kryštofem postavili 3D tiskárnu na základě informací otevřeného projektu RepRap. Jedná se o projekt, ve kterém účastníci sdílejí nápady a zkušenosti a díky tomu jde vývoj  kupředu.  Vždy když jsme během stavby narazili na nějakou překážku stačilo chvíli bádat po internetu a nalezl jsem buď přímou odpověď, nebo alespoň vodítko, které nakonec vedlo k vyřešení problému.  Bez této pomoci otevřené komunity bychom si tiskárnu nikdy nebyli schopni sami postavit.

Tak a teď mám pocit, že je řada na mě, abych taky alespoň malou troškou přispěl této komunitě.  Tento blog jsem založil, abych na něm publikoval své poznámky, které jsem si průběžně během stavby tiskárny psal. Bylo to původně čistě pro vnitřní potřebu, abych snadno dohledal co, jak a proč bylo uděláno. Napadlo mě, že něco málo z toho by mohlo být užitečné i pro další zájemce o stavbu RepRapu. Velkou většinu toho, co je zde uvedeno je již sice k nalezení jinde na internetu, spousta těch informací je však pouze anglicky a tak to pro někoho přece jen pořád může být trochu bariera. Takže z toho důvodu uvádím své poznámky v češtině, ve které je toho přece jen k nalezení podstatně méně. Pokud z toho něco bude k užitku, budu rád.