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...)
(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...)
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ů:
- Celá konstrukce je poměrně jednoduchá a hlavně velmi detailně zdokumentovaná
- 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).
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):
- Download
jre-*.tar.gz
tar -zxvf jre-*.tar.gz
mkdir /usr/lib/jvm/
mv jre* /usr/lib/jvm/
ln -s /usr/lib/jvm/jre*/bin/java /usr/bin/
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:
- 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.
- Vývojové prostředí Arduino, verze 0023 s komponentem pro Sanguino 0023r3Arduino 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....
- 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.
- Ovládací software na PCPouží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.
- 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í:
- V GME jsem za cca 200kč pořídil procesor ATMega644-20PI.
- 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.
- 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)=0xFFprostřední řádka (high_fuses)=0xDCspodní řá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é. - 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/ ATmega644atmega644.upload.protocol=stk500atmega644.upload.maximum_size=63488atmega644.upload.speed=38400atmega644.bootloader.low_fuses=0xFFatmega644.bootloader.high_fuses=0xDCatmega644.bootloader.extended_fuses=0xFDatmega644.bootloader.path=atmega644patmega644.bootloader.file=ATmegaBOOT_644.hexatmega644.bootloader.unlock_bits=0x3Fatmega644.bootloader.lock_bits=0x0Fatmega644.build.mcu=atmega644atmega644.build.f_cpu=16000000Latmega644.build.core=arduinoZmě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__)
- 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:
sliceoptscommand:
You then have to setup Slic3r for your printer (very easy if you have set up anything before)
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é.
Pěkný článek :-) . Já jsem vůbec nechápal, jak 3D tiskárna funguje, dokud jsem si ji sám nekoupil. Nikdy jsem žádnou neviděl a podle popisu mi to moc nedávalo smysl. Mám doma Nova3D Bene4 a je to s ní super zábava na zimní dny :-D . Mám svoji pracovnu, ve které se zavřu a tisknu si různé věci :-) .
OdpovědětVymazat