Konstrukce laser direct imagination

LDI = přímý osvit PCB, fotovrstva je osvícena UV laserem.

Celý stroj navrhuji s důrazem na rychlost a přesnost, hlavním řiditelem jsou peníze. Kdybych si mohl koupit profi osvitový stroj pro LDI tak si nemusím navrhovat a stavět vlastní. Ukázalo se, že moc možností konstrukce není.

Nemohu použít CNC, nemohu předělat tiskárnu a rastrovat, všechno je strašně pomalé. Tiskárna zvládně tak 2 řádky (30cm) za vteřinu. Minimální množství řádků bude 600 na palec. Na délku 50cm to je 11811 řádků.  100 minut na desku.  7min/dm2. Hodně to není, ale zamýšlenou průchodnost to nenaplňuje. Chci mít technické prostředky pro zvládnutí 1m2 denně (za 8 hodin).

Před galvoservy se ještě nachází rotační osvit, profi stroje mají různé varianty toho prvního a já postavím variantu toho druhého.

Jak takový stroj vypadá?

Jedná se o jednoosý CNC stroj, který má jako druhou osu rotující laser. Představte si to jako hodně (hodně) přesný persistence of vision. Znáte to, takový ty hodiny, co fungujou jen když se točí motorek.

Problémů to má hned několik.

Přesnost v tomto případě znamená vemi přesné časování a to se zatím ukázalo jako veký problém. Otáčky musejí být velmi přesně měřeny (a nebo regulovány). Provedl jsem řadu testů s regulací otáček, ale dostal jsem se na úroveň plus mínut půl otáčky a to je absolutně nepřípůstné. Vydám se tedy druhou cestou a to je přesné měření rychlosti otáčení a výpočet frekvence “střílení” dat z laseru. Předběžně bych chtěl mít 1440 otáček za minutu. Délka pixelu se pohybuje kolem 2,9us. A mění se podle rychlostí otáček o desítky nanosekund. Bohužel se ukázalo, že nejsem schopen v žádném procesoru udělat takhle přesné časování, všechny pracují s nějakým absolutním časem za takt a vždy dochází k určitému zaokrouhlení a zkreslení.

První hack

Mám japonské kvalitní motory, drží otáčky při konstantním napětí velmi přesně, v rámci několika sekund oscilují do půl otáčky/minutu. Budu tedy měřit otáčku a výpočet rotace použiji jako hodnotu další otáčky, vypočítaná nepřesnost (teoretická) je v jednotkách mikrometrů na 30cm šírky PCB. Naprostá spokojenost.

Rychlost – hack druhý

1440 otáček znamená, že by deska měla být osvícena za 8 minut – 15 dm2. Naprostá spokojenost. Ale co to? Kolik času je na data v jedné otáčce – 21ms. Procesorem nejsem schopen těch 7078 bitů vystřílet v přesné rychlosti (desetiny Hz odchylka v rámci otáčky). Na trho jsou miliardy součástek, porozhlédl jsem se a přišel s technickým řešením. Procesor se bude starat o přípravu dat pro řádek a ty data uloží do externí SPI SRAM, zvolil jsem SPI záměrně, podporuje 20MHz a umí hodinových signálem vystřílet celou ramku od specifikované adresy.

Takže se tam data nahrají, počká se na začátek otáčky, spustí se přesná frekvence a pamět vytlačí data na laser. A protože neumím generovat přesnou frekvenci (řád stovky kHz), použiji externí generátor frekvence, který se pomocí registrů digitálně nastaví na přesnou frekvenci a výstup frekvence se zavede do SRAM. Geniální, jednoduché a úžasně výkonné. Celé to může běžet až na 10MHz,  řádek by tedy nemusel mít 600dpi ale výrazně více. 600dpi? není problém.

Bezdrátový přenos?

Poslední problém. Jak data a napájení přenášet na rotující PCB? Původně jsem studoval řešení s kartáčkovým přenosem (tzv slipring), ale rychlost je omezená. Velké otáčky=velká cena. Jdu tedy cestou číslo dvě. Energie se bude přenášet indukčně, konstrukcí které rozsvítí 20W žárovku je plný internet. Data bude předávat základna přes levný 2,4GHz modul “nRF24L01”. Byl to trochu oříšek, tenhle umí 2mbit burst mode, takže se data budou stíhat předávat během otáčky. Alternativně jsem chtěl umístit SD kartu s daty přímo na rotující rameno, ale protože chci v budoucni napojení na ethernet a těsnou integraci s ostatním vybavením, tak jsem zvolil toto řešení. Bude to fungovat? No to zatím nevím, nemám žádné dokončené testy, uvidíme jestli bude rychlost dostatečná, rušení malé atd.

K praktickému otestování zbývá zjistit výkon laseru při daných otáčkách, limitem jsou cca 2W které se dají za relativně dobré peníze sehnat.  Momentálně mám 100mW a 250mW v lineárním módu. Naštěstí materiál nepotřebuje velké množství energie. Kdyby s tím byl problém budu svítit jeden řádek dvakrát, sic klesne rychlost, ale moc jiných možností nemám. Ještě mohu zkusit svítit meziřádky, bude záležet na velikosti bodu. Mám otestováno (a vyleptáno), že jeden průchod laseru udělá cca 2,5mils spoj a to je v 35um materiálu velmi dobrý výsledek.

Plány 2016 – plosnaky.cz

Když jsem minule sepisoval další postup, vlastně jsem ještě nevěděl co bude a jak se  dál se službou rozvíjet. A to už se změnilo. Přišel jsem na to, že chci ovládnout český trh. Jak na to?

Současná omezení

Postupem času jsem identifikovat hlavní problémy u výroby. Základní myšlena: “automatizovat”. Je to jednoduché, všechny operace výroby, kde musím být přítomen, jsou zároveň ty nejdražší a ke všemu omezené množstvím času, který mohu vynaložit.

Druhý neméně důležitý krok je zvýšení přesnosti a opakovatelnosti. Ruční výrobu jsem dotáhnul na hranici možností, již nejsem schopen v současné vybavenosti zvyšovat žádné parametry, ani rychlost, ani přesnost, jemnost.

Ukázkovým špuntem se ukázal být CNC stroj, tam je pomalé vše.

  • příprava vrtacích dat
  • kamerová detekce a natočení na stole
  • ruční výměna vrtáků
  • uchycení materiálu

Řeknete si, no a co, tak to chvíli trvá, jenže když takhle chvíli čekáte 8 hodin, začnete přemýšlet.

V budoucnu chci přejít na formát 30x50cm a prakticky v této velikosti nabízet jednostranné i dvoustranné desky. Začal jsem postupně navrhovat a celkově chystat výrobu pro vyšší efektivitu, rychlost a velikost.

Plán vývoje

Vezmu to úplně od podlahy. První je na řadě jednotka pro přímý osvit plošných spojů uv laserem.  Elimituji tak velké množství problémů najednou. Především získám o řád vyšší přesnost, neměl by být žádný problém dělat 1/1mils (teoreticky na osvitu), absolutní sesazení dvoustranných desek a protože chystám osvit i vrtání s registračními otvory, odpadne kamerová detekce, zjednodušší se příprava vrtacích dat (budou se sázet zároveň s bottom/top vrstvou) a uchycení.

Druhý na řadu půjde vrtací stroj. Nově musí zvládnout větší formát 30×50 a hlavně automatickou výměnu nástrojů (to je hodně drahá sranda). Rychlost posunu bych chtěl minimálně zdvojnásobit, ideálně přejít na osách na skutečná serva namísto krokových motorů (což je otázka peněz, jakjinak).

V další fázi postavím plně automatický developer osvícených desek a také leptačku. To první už je vymyšlené, to druhé je zatím oříšek.

Za vším je cena

Víte proč mají firmy 2000kč/dm2 finální desky v prototypu?

Protože stroje a provozní náklady jsou astronomické.

Laserový osvit je 1-2 miliony, záleží na konfiguraci. Průchozí leptačky jsou 100-200 tisíc a potřebujete jich víc. Vrtačky pcb, retro z 90 let se dají sehnat i za 200 tisíc, ceny nových jsem neviděl, ale dělá to hitachi a podobně, počítám půl milionu až milion.  Každá tahle hračka chce několik kilowatt.

Postavím linku za miliony

Připravuji samostastný popis návrhu a konstrukce laserového osvitu. Parametry to musí mít následující. Finální přesnost pro 5/5mils (spoj mezera 0,127mm), rychlost 1min/dm2 – desku 30×50 do 15 minut. Cena do 10 tisíc.  Co myslíte, zvládnu to letos postasvit?

Nakupování

Potřeboval jsem určité zboží. Běžně stojí v eshopech v rozmezí 4000-4900kč. Pár nabídek bylo za 3600kč. Jedna z toho byla s dopravou PPL zdarma bez poplatku za platbu kartou.

Takže si to sečteme. Platba kartou znamená 1% zpět na účet, tj 36kč. Doprava většinou je za 100kč. K tomu jsem platil přes heuréku, dostal jsem kupon 100kč na damejidlo.cz.

Celkem tedy 236kč, zboží mě reálně stojí 3364kč. Celkem dobrej kauf oproti 4900kč.

Optická detekce otvorů v PCB

Pro plosnaky.cz jsem napsal algoritmus na detekci otvorů na obrazci plošných spojů. Jako vstupní data slouží obrázek tohoto typu:   Důležité je, aby byl uprostřed vrtací plošky otvor. Někdy je problém text, někdy heat pady, snažím se při detekci false positive detekovat a vynechat.

Nejdříve dojde k převodu do černobílé podoby, kdy zůstanou bílé otvory a černý zbytek. To se provede pomocí floodfillu velkých ploch.  Pokud má algoritmus problém, ručně dočistím černobílý meziprodukt.

Samotný algoritmu poté pracuje s černobílým obrazem. Detekce prochází po řádcích každý pixel a hledá přechod mezi barvami. Tím se najde nějaký bod v kruhu vrtání.
Potom se spustí floodfill od tohoto bodu a dojde tak k vyznačení celého obsahu kruhu. Tím je kruh zapsaný jako detekovaný. Zbývá zjistit střed kruhu, průměr vrtáku a zda-li se vůbec jedná o kruh.

Všechno je tvrdě zjednodušeno, je to záměrně napsáno pro čisté php, abych mohl pouštět algoritmus prakticky kdekoliv. Nevýhoda je nízká rychlost.

Výstupem floodfilu je počet pixelů,  pracuje se s pevným DPI na vstupu, takže lze počet pixelů obsahu kruhu přepočítat na průměr vrtáku. Dále se zjistí krajní body (levý, pravý, horní, spodní) tohoto kruhu.  Z těchno souřadnic se dá spočítat výška a šířka. Zde nastupuje detekce kruhovosti, kdy se hlídá s učitou tolerancí zda šířka odpovídá výšce.

Dalším krokem je z těchto údajů dopočítání středu. Od středu se provede čtyřsměrná (případně osmisměrná) detekce hranic. Pokud střed neleží ve středu kruhu, je vyřazen. Počítá se s přibližně stejným počtem pixelů do všech směrů od středu.

Tím je kruh kvalifikovaný a algoritmus pokračuje pixelem, kterým skončil. Pokud má již nějaký označený za zpracovaný tak ho přeskakuje.

Všechno pracuje s určitou tolerancí a je tedy potřeba počítat s tím, že průměr vrtáku nemusí 100% odpovídat. Většinou odpovídá  80%. Kompenzace se dají dělat v postprocesingu, buď modifikací převodní tabulky (detekovaný průměr na finální vrták) a nebo ručně označením a změnou velikosti. Výsledný produkt je na obrázku.

Ve finále se vygeneruje GCODE pro řízení CNC. Algoritmus se postará o dogenerování vrtáků od 2mm výše, kdy se finální průměr (řekněme 4mm) převede na N přímek ležících na kruhu a pro to se dogeneruje GCODE. Jako kouzlem tak vznikne jakýkoliv průměr vrtáku.

Na posledním obrázku můžete vidět, že umístění otvorů není vždy úplně přesné. Pracuje se v celočíselných hodnotách a s pevným dpi, takže občas to trochu body posune. Ve skutečnosti to není nijak velký problém, jedná se o zvětšený náhled. Případné chyby detekce upravím v GUI, kde mohu manipulovat s body.

Levné mini-ITX a nedostatek portů

Potřebujete postavit třeba nějaký ten domácí server nebo bůhvíco? Dneska stačí mini-itx deska. Problém u nich je ten, že jsou levné a nebo mají dostatek portů.

Levných mini-itx deskách chybí především:

  • wifi
  • dostatek sata portů
  • usb3

Všechny desky mají jednu vlastnost společnou, mají pci-e slot nebo mini-pcie. V obouch případech je to řešení problému.

Běžně si můžete (na ebay) pořídit kartu, která z pci-e udělá jeden sata port a dva (nebo i 4) usb3 porty. Stejně tak i pro mini-pcie. Cena je kolem 250kč.

Tím dostane rychlé usb3 (přímo napojené na pci-e linku, rychlostně nepřiškrcenné) a nyní již můžete kouzlit. Když potřebujete wifi, můžete pořídit mini-pcie wifi kartu, lepší je  usb-wifi a tu zastrčit do usb a šetřit si mini-pcie na rychlejší zařízení.

Pokud potřebujete u desky s 2 sata například 4 nebo více, rozhodně potřebujete pci-e kartu s řadičem pro sata. Máte-li mini-pcie slot, můžete z něj redukcí udělat pci-e slot. Jak to mechanicky vyřešíte je trochu kutilský problém, ale když stavíte nějaký ten levný stroj, tak si určitě poradíte.

Dají se pořídit také mini-itx desky vybavené slotem pci-e 1x a zároveň mini-pcie. Můžete tak získat usb3 porty a dalších 5 sata portů. A 7 sata portů, 4 usb3 na desce za 1600kč.

windows+git+composer

nainstalujete windows, git instalaci, kde dáte že chcete integrovat do cmd. Composer.

Ke git repu se připojujete pomocí ssh klíče, který jste vytvořili v puttygenu. Takže instalujete ještě putty balík, budete mít asociovanej ppk klíč do pageanta. Takže potom tem klíč stačí dát do startupu a bude se načítat do pageanta, nemá-li vlastní heslo. A aby git fungoval s klíčem, tak si v puttygen musíte udělat export (Conversions->export Openssh). Tenhle klíč musíte dát do HOME složky, do cesty “C:\Users\%USER%\.ssh” pod názvem “id_rsa”.

Tenhle návod mám pro sebe, až to zase za deset let budu dělat, ať to nemusím znova googlit.

phpStorm má jednu chybu

Od verze 6 jsem si pořídil na programování phpStorm od jetbrains. Od té doby jsem vlastně hodně spokojenej.

V celém ekosystému phpstormu se dají dělat velký kouzla. Má to celý jeden šílenej háček, hák, kotvu.

Verze 6 se nainstalovala do adresáře /JetBrains/PhpStorm 6.0/, to je ok, propojil jsem otevírání souborů s phpstorm.exe, nastavil si firefox ať mi otevírá soubory z toho adresáře, především užitečný u firebugu, nastavil jsem ať se mi z nette laděnky otevírají soubory rovnou do phpstormu. Všechno to je fixovaný na tu cestu.

Přišla verze 7, přišla verze 8. Stále zuby nehty držím instalaci v adresáři /JetBrains/PhpStorm 6.0/ abych nemusel editovat nastavení cest.

Přišla verze 9. Instalace se odmítne nainstalovat do adresáře /JetBrains/PhpStorm 6.0/, protože chce adresář, kde je nainstalovaný phpstorm v 8. No jo, jenže v tom adresáři je verze 8.

Takže jako minule, zase to nainstaluju do novýho adresáře a pak to ručně přeprcám do starého, aby mi všechno běhalo.  Achjo.

Poznámka: ani si to není schopný najít licenční klíč z minulý instalace. Ale jinak je to fakt to nejlepší v čem jsem dělal.