Obsah:
- Krok 1: Okruh
- Krok 2: Lineární pohon
- Krok 3: Buben
- Krok 4: Stavební tipy
- Krok 5: Bresenhamův algoritmus kreslení čar
- Krok 6: Kód
- Krok 7: Nabídka
- Krok 8: Kalibrace
- Krok 9: Předzpracování Gcode
- Krok 10: Výsledky
- Krok 11: Aktualizace kódu
- Krok 12: Drum_plotter_v3.ino
- Krok 13: Drum_plotter_plotter_v4.ino
Video: CNC bubnový plotter: 13 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Tento návod popisuje plotter formátu A4/A3 vyrobený z části plastové trubky, dvou krokových motorů BYJ-48 a serva SG-90. V podstatě se jedná o plotr s plochým lůžkem srolovaný do bubnu.
Jeden motor otáčí bubnem, zatímco druhý pohybuje tiskovou hlavou. Servo slouží ke zvedání a spouštění pera.
Tento plotter má oproti tradičnímu plochému plotru řadu výhod:
- výrazně menší stopa
- vyžaduje pouze jednu lineární vodicí lištu
- jednoduchá konstrukce
- levný
Integrovaný tlumočník přijímá výstup gcode z Inkscape.
Komunikace s plotterem probíhá přes bluetooth spojení.
Plotr je kompatibilní s CNC grafickým tabletem popsaným v mém instruktážním
Přesnost tohoto plotru není přesným nástrojem, ale pro zamýšlený účel přenosu akvarelových obrysů na papír je uspokojivá.
Krok 1: Okruh
Obvod obsahuje mikrokontrolér Arduino UNO R3 a vlastní štít, na kterém jsou namontovány diskrétní součásti. Napájení je zajištěno externím 5voltovým 1ampovým regulátorem. Průměrný proud je kolem 500mA.
Krokové motory BYJ-48 jsou připojeny k PORTB (piny D8, D9, D10, D11) a PORTC (piny A0, A1, A2, A3). Na kolík D3 je připevněno servopohon SG-90.
Odpory 560 ohmů, které mohou být vynechány, poskytují měřítko ochrany proti zkratu pro arduino, pokud se něco pokazí. Také usnadňují zapojení štítu, protože fungují jako „propojky“přes napájecí kolejnice.
Rezistory 1k2 a 2K2 zabraňují poškození bluetooth modulu HC-06 [1] snížením 5voltového výstupu z arduina na 3,3 voltů.
[1] Při nahrávání kódu do arduina přes USB port odpojte bluetooth modul HC-06. Tím se zabrání jakýmkoli konfliktům sériového portu.
Krok 2: Lineární pohon
Lineární pohon je vyroben z hliníkové tyče o délce 3 mm x 32 mm, pásu hliníkového plechu a čtyř malých kladek s kuličkovými ložisky.
Hliník je k dostání ve většině železářství. Řemenice U624ZZ 4x13x7mm s drážkou U jsou k dispozici na adrese
Vše, co potřebujete, jsou jednoduché ruční nástroje. Odřízněte hliníkovou lištu tak, aby vyhovovala rozměrům vašeho plotru.
Sestava motoru
Namontujte krokový motor BJY-48 na tyč na jeden konec a na hřídel motoru připevněte řemenici GT2 20 zubů, 5 mm vrtání. Nyní namontujte další kladku GT2 na druhý konec lišty tak, aby se kladka mohla volně otáčet. K dosažení tohoto cíle jsem použil trubkový (rozhlasový) rozpěrný kroužek o průměru 5 mm a šroub 3 mm.
Nyní smyčkujte rozvodový řemen GT2 kolem řemenic. Konce rozvodového řemene spojte polovičním otočením tak, aby se zuby prokládaly a fixovaly stahovacím páskem.
Nakonec připevněte sestavu vozíku k rozvodovému řemenu stahovacím páskem.
Sestava kočáru
Sestava vozíku je vyrobena z pásu hliníkového plechu [1], na který jsou přišroubovány kladky U624ZZ. V případě potřeby vyjměte kladky z hliníkového plechu podložkou 4 mm.
Kladky, které mají 4 mm drážku, obepínají horní a spodní část hliníkové lišty tak, aby nedocházelo ke svislému pohybu, a přesto se hliníkový pás volně pohybuje doleva a doprava.
Abyste zajistili volný pohyb vozíku, namontujte nejprve dvě horní kladky a poté, když jsou kladky na tyči, označte polohy dvou spodních kladek. Nyní mohou být vyvrtány otvory pro tyto dvě kladky. Nejprve použijte malý „pilotní“vrták, abyste zabránili unášení většího vrtáku o průměru 4 mm.
Před ohnutím pásu hliníku do „U“vyvrtejte nahoře a dole otvor, aby odpovídal průměru vašeho pera. Nyní dokončete ohyby.
Připojte rozvodový řemen k sestavě vozíku pomocí kabelové stahovací pásky a 3mm šroubu mezi dvě horní kladky.
Sestava zvedání pera
Pomocí jedné nebo dvou stahovacích pásek připevněte servo SG-90 k horní části sestavy vozíku.
Pusťte pero dolů do dvou vyvrtaných otvorů. Zajistěte, aby se pero volně pohybovalo nahoru a dolů.
Připevněte si k peru „límec“tak, aby se pero v bubnu nedostalo, když je servo v poloze nahoře.
[1] Hliník lze řezat obroušením obou stran listu ostrým nožem (vykrajovátkem) a následným ohnutím řezu přes okraj stolu. Několik kroutí a list se zlomí a zanechá přímou přestávku. Na rozdíl od cínových nůžek tato metoda hliník nezlomí.
Krok 3: Buben
Buben obsahuje část plastové trubky se dvěma dřevěnými koncovými zátkami [1].
Nakreslete obrysy koncových zástrček pomocí kompasu nastaveného na vnitřní poloměr potrubí. Nyní ořízněte každý obrys pomocí jemné kotoučové pily („coping“, „pražec“) a poté přizpůsobte každou koncovou zátku pomocí dřevěné rašple. Upevněte koncové zátky pomocí malých zapuštěných šroubů do dřeva.
Nápravu tvoří 6 mm technický šroub ve středu každé koncové zátky.
Rozměry bubnu
Rozměry válce jsou určeny velikostí papíru. Průměr bubnu 100 mm podporuje formát A4 na výšku a A3 na šířku. Průměr válce 80 mm bude podporovat pouze formát A4. Ke snížení setrvačnosti použijte co nejmenší průměr bubnu … motory BYJ-48 jsou jen malé.
Průměr bubnu 90 mm je ideální pro papír na výšku a na šířku pro formát A3, protože opačné hrany se po navinutí na válec překrývají přibližně o 10 mm, což znamená, že na místo nalepíte pouze jeden šev.
Otáčení bubnu
Každá náprava prochází hliníkovým koncovým držákem tak, aby se buben mohl volně otáčet. Koncovému plováku je zabráněno pomocí GT-2, 20 zubů, 6 mm vrtání, řemenice připevněné k nápravě na jednom konci. Souvislý rozvodový řemen GT-2 spojuje krokový motor s převodovkou BJY-48 s bubnem. Motor vyžaduje řemenici s velikostí otvoru 5 mm.
[1] Plastové koncové zátky jsou k dispozici pro většinu průměrů trubek, ale byly zamítnuty, protože pasovaly spíše na trubku než dovnitř a plast má tendenci se ohýbat. Pravděpodobně by bylo v pořádku, kdyby byla místo šroubů použita souvislá náprava … ale pak budete potřebovat nějaký způsob upevnění nápravy na koncové zátky.
Krok 4: Stavební tipy
Zajistěte, aby se pero pohybovalo středem bubnu. Toho lze dosáhnout vyříznutím rohů z dřevěných podpěr. Pokud je pero mimo střed, bude mít tendenci klouzat po straně bubnu.
Přesné vyvrtání dvou otvorů pro pero je důležité. Jakékoli kolísání ve vedení pera nebo sestavě vozíku způsobí kolísání podél osy X.
Nepřetahujte rozvodové řemeny GT-2 … jen musí být napnuté. Krokové motory BYJ-48 nemají velký točivý moment.
Krokové motory BJY-48 často vykazují malé množství vůle, které je na ose X nevýznamné, ale v ose Y je znepokojující. Důvodem je to, že jedno otočení motoru osy Y se rovná jednomu otočení bubnu, zatímco vozík s perem vyžaduje mnoho otáček motoru osy X k překročení délky bubnu. Jakékoli vůle v ose Y lze eliminovat udržováním konstantního točivého momentu na bubnu. Jednoduchou metodou je připevnění malého závaží na nylonovou šňůru omotanou kolem bubnu.
Krok 5: Bresenhamův algoritmus kreslení čar
Tento plotter používá optimalizovanou verzi [1] Bresenhamova algoritmu kreslení čar. Tento algoritmus bohužel platí pouze pro sklon řádků menší nebo rovný 45 stupňům (tj. Jeden oktant kruhu).
Abych toto omezení obešel, „namapuji“všechny XY vstupy na první „oktant“, a poté je „zmapuji“, když je čas na vykreslení. Funkce mapování vstupů a výstupů, jak toho dosáhnout, jsou znázorněny na výše uvedeném diagramu.
Derivace
Zbývající část tohoto kroku lze vynechat, pokud znáte Bresenhamův algoritmus.
Nakreslíme čáru od (0, 0) do (x1, y1), kde:
- x1 = 8 = horizontální vzdálenost
- y1 = 6 = svislá vzdálenost
Rovnice pro přímku procházející počátkem (0, 0) je dána rovnicí y = m*x, kde:
m = y1/x1 = 6/8 = 0,75 = sklon
Jednoduchý algoritmus
Jednoduchý algoritmus pro vykreslení tohoto řádku je:
- int x1 = 8;
- int y1 = 6;
- float m = y1/x1;
- plot (0, 0);
- pro (int x = 1; x <= x1; x ++) {
- int y = kulatý (m*x);
- plot (x, y);
- }
Tabulka 1: Jednoduchý algoritmus
X | m | m*x | y |
---|---|---|---|
0 | 0.75 | 0 | 0 |
1 | 0.75 | 0.75 | 1 |
2 | 0.75 | 1.5 | 2 |
3 | 0.75 | 2.25 | 2 |
4 | 0.75 | 3 | 3 |
5 | 0.75 | 3.75 | 4 |
6 | 0.75 | 4.5 | 5 |
7 | 0.75 | 5.25 | 5 |
8 | 0.75 | 6 | 6 |
Tento jednoduchý algoritmus má dva problémy:
- hlavní smyčka obsahuje pomalé násobení
- používá čísla s plovoucí desetinnou čárkou, která je také pomalá
Graf y versus x pro tento řádek je uveden výše.
Bresenhamův algoritmus
Bresenham představil koncept chybového výrazu 'e', který je inicializován na nulu. Uvědomil si, že hodnoty m*x uvedené v tabulce 1 lze získat postupným přidáním „m“do „e“. Dále si uvědomil, že y se zvyšuje pouze tehdy, je -li zlomková část m*x větší než 0,5. Aby udržel své srovnání v rozsahu 0 <= 0,5 <= 1, odečte 1 od 'e', kdykoli se zvýší y.
- int x1 = 8;
- int y1 = 6;
- float m = y1/x1;
- int y = 0;
- float e = 0;
- plot (0, 0);
- pro (int x = 1; x <= x1; x ++) {
- e+= m;
- pokud (e> = 0,5) {
- e -= 1;
- y ++;
- }
- plot (x, y);
- }
Tabulka 2: Bresenhamův algoritmus
X | m | E | e-1 | y |
---|---|---|---|---|
0 | 0.75 | 0 | 0 | 0 |
1 | 0.75 | 0.75 | -0.25 | 1 |
2 | 0.75 | 0.5 | -0.5 | 2 |
3 | 0.75 | 0.25 | 2 | |
4 | 0.75 | 1 | 0 | 3 |
5 | 0.75 | 0.75 | -0.25 | 4 |
6 | 0.75 | 0.5 | -0.5 | 5 |
7 | 0.75 | 0.25 | 5 | |
8 | 0.75 | 1 | 0 | 6 |
Pokud prozkoumáte algoritmus a tabulku 2, uvidíte to;
- hlavní smyčka používá pouze sčítání a odčítání … nedochází k násobení
- vzor pro y je stejný jako pro tabulku 1.
Ale stále používáme čísla s plovoucí desetinnou čárkou … pojďme to opravit.
Bresenhamův (optimalizovaný) algoritmus
Algoritmus s Bresenhamovou plovoucí desetinnou čárkou lze převést na celočíselnou formu, pokud měřítko 'm' a 'e' změníme na 2*x1, v takovém případě m = (y1/x1)*2*x1 = 2*y1
Kromě škálování 'm' a 'e' je algoritmus podobný výše uvedenému s výjimkou:
- přidáme 2*y1 do 'e' pokaždé, když zvýšíme 'x"
- inkrementujeme y, pokud e je rovno nebo větší než x1.
- odečteme 2*x1 od 'e' místo 1
- x1 se používá pro srovnání místo 0,5
Rychlost algoritmu lze dále zvýšit, pokud smyčka pro test používá nulu. K tomu musíme přidat chybový výraz 'e'.
- int x1 = 8;
- int y1 = 6;
- int m = (y1 << 1); // konstanta: sklon zmenšený o 2*x1
- int E = (x1 << 1); // konstanta: 2*x1 pro použití ve smyčce
- int e = -x1; // offset -E/2: test nyní proveden na nule
- plot (0, 0);
- int y = 0;
- pro (x = 1; x <= x1; x ++) {
- e += m;
- if (e> = x1) {
- e -= E
- y ++;
- }
- plot (x, y);
- }
Tabulka 3: Bresenhamův (optimalizovaný) algoritmus
X | m | E | E | e - E | y |
---|---|---|---|---|---|
0 | 12 | 16 | -8 | 0 | |
1 | 12 | 16 | 4 | -12 | 1 |
2 | 12 | 16 | 0 | -16 | 2 |
3 | 12 | 16 | -4 | 2 | |
4 | 12 | 16 | 8 | -8 | 3 |
5 | 12 | 16 | 4 | -12 | 4 |
6 | 12 | 16 | 0 | -16 | 5 |
7 | 12 | 16 | -4 | 5 | |
8 | 12 | 16 | 8 | -8 | 6 |
Vzorec pro y je opět stejný jako v ostatních tabulkách. Je zajímavé poznamenat, že tabulka 3 obsahuje pouze celá čísla a že poměr m/E = 12/16 = 0,75, což je sklon 'm' přímky.
Tento algoritmus je extrémně rychlý, protože hlavní smyčka zahrnuje pouze sčítání, odčítání a porovnání s nulou. Násobení se nepoužívá kromě případů, kdy inicializujeme hodnoty pro „E“a „m“pomocí „posunu doleva“ke zdvojnásobení hodnot x1 a y1.
[1] Tato optimalizovaná verze Bresenhamova algoritmu pochází z článku „Bresenhamova kresba čar a kruhů“, autorská práva © 1994-2006, W Randolph Franklin (WRF). Jeho materiál může být použit pro neziskový výzkum a vzdělávání za předpokladu, že mu připíšete kredit, a odkaz zpět na jeho domovskou stránku
Krok 6: Kód
Stáhněte přiložený soubor do stejnojmenné složky a poté jej nahrajte do plotru pomocí vašeho Arduino IDE (integrované vývojové prostředí).
Před pokusem o odeslání odpojte modul bluetoorh HC-06. To je nutné, aby se zabránilo konfliktu sériového portu s kabelem USB.
Kód třetí strany
Kromě výše uvedeného.ino kódu budete potřebovat následující softwarové balíčky, které jsou free / donation-ware:
- Teraterm, který je k dispozici na
- Inkscape, který je k dispozici na adrese
Pokyny k instalaci a používání každého z výše uvedených balíčků třetích stran najdete v mém článku
Krok 7: Nabídka
Vytvořte bluetooth připojení k plotru pomocí „Teraterm“.
Zapněte „caps lock“, protože všechny příkazy jsou psány velkými písmeny.
Zadejte písmeno „M“a měla by se zobrazit nabídka, jak je uvedeno výše.
Nabídka je přiměřeně samozřejmá:
- M (nebo M0) vyvolá nabídku
- G0 vám umožňuje poslat pero na konkrétní souřadnici XY se zvednutým perem.
- G1 vám umožňuje odeslat pero na konkrétní souřadnici XY se spuštěným perem.
- T1 vám umožňuje umístit pero nad souřadnici 0, 0. Ukončete zadáním 'E'.
- T2 vám umožňuje škálovat vaše kresby. Například „T2 S2.5“změní měřítko vaší kresby o 250%. Výchozí měřítko je 100%
- T3 a T4 vám umožňují zvednout nebo spustit pero.
- T5 nakreslí testovací obrazec "ABC".
- T6 nakreslí „cíl“.
- T7 nakreslí sadu radiálních čar, jejichž účelem je ověřit, že Bresenhamův algoritmus funguje v každém z osmi „oktantů“
Poznámky:
- všechny pohyby pera používají sadu měřítka kresby pomocí možnosti nabídky T2
- čísla „17:“a „19:“jsou kódy handshake terminálu „Xon“a „Xoff“od arduino tlumočníka.
Krok 8: Kalibrace
Hodnoty pro X_STEPS_PER_MM a Y_STEPS_PER_MM jsou pro buben o průměru 90 mm.
Hodnoty pro jiné průměry bubnu lze vypočítat pomocí následujících vztahů:
- obvod bubnu je PI*průměr
- 2048 kroků se rovná jedné otáčce každého hřídele motoru
- jedna otáčka kladky GT-2 odpovídá lineárnímu pohybu rozvodového řemene o 40 milimetrů
Další metodou je zadat následující příkazy,
- G1 X0 Y100
- G1 X100 Y100
poté změřte délku výsledných čar a „změňte měřítko“hodnot pro X-STEPS_PER_MM a Y_STEPS_PER_MM
Krok 9: Předzpracování Gcode
Tento plotter vyžaduje pouze čtyři kódy Inkscape gco (viz: G0, G1, G2, G3). Kód se spustí výrazně rychleji, pokud odstraníme všechny nepotřebné kódy a komentáře.
K tomu potřebujete kopii "Notepad ++". Tento bezplatný textový editor obsahuje vyhledávač „regulárních výrazů“pro vyhledávání a odstraňování nežádoucího textu. Poznámkový blok ++ je k dispozici na adrese
Otevřete soubor, který chcete upravit, pomocí programu Poznámkový blok ++ a umístěte kurzor na začátek souboru.
Vyberte „Zobrazit/Zobrazit symbol/Všechny znaky“a poté v horní liště nabídky „Hledat/Nahradit…“.
Zaškrtněte políčko „Regulární výraz“(viz 1. obrázek) a do vyhledávacího pole zadejte každou z následujících sekvencí kódů.
Po každém záznamu klikněte na „Nahradit vše“:
- %
- (.*)
- ^M.*$
- Z.*$
Výše uvedené regulární výrazy odstraní všechny symboly %, všechny komentáře uvedené v závorkách, všechny kódy M, všechny kódy Z a následující kódy.
Nyní klikněte na zaškrtávací políčko „Rozšířený výraz“(viz 2. obrázek) a zadejte následující sekvenci kódu:
r / n / r / n / r / n
Tento výraz odstraní nežádoucí návraty na vozík a řádky vytvořené první sekvencí.
Uložte soubor pod jiným názvem pomocí „Uložit jako“.
Hotovo.
Krok 10: Výsledky
Tento plotter byl postaven jako „důkaz konceptu“a nikdy nebyl zamýšlen jako dokonalý. S tím, že výsledky nejsou tak špatné. Rozhodně splňují můj designový cíl přenosu akvarelových obrysů na papír.
První tři obrázky jsou vestavěné testovací vzory T5, T6, T7.
„Hello World!“vzor byl odeslán do plotru přes bluetooth. „Předzpracovaná“kopie tohoto souboru je přiložena.
Krok 11: Aktualizace kódu
Kód pro tento plotter byl aktualizován na Drum_Plotter_V2.ino.
Změny oproti původnímu Drum_Plotter.ino zahrnují:
- plynulejší umístění pera
- nyní rozpoznává pokyny G02 gcode (oblouky ve směru hodinových ručiček)
- nyní rozpoznává pokyny G03 gcode (oblouky proti směru hodinových ručiček)
Přiložený diagram nastiňuje moji metodu pro výpočet úhlu oblouku.
Krok 12: Drum_plotter_v3.ino
Je přiložena aktualizace kódu pro "CNC bubnový plotter".
„drum_plotter_v3.ino“opravuje drobnou chybu, která ovlivnila přesnost plotru.
Historie změn
Verze 2:
Přidány dvouobloukové křivky
Verze 3:
Následující funkce byly přepsány, aby se vyřešila drobná chyba, která ovlivnila přesnost plotru.
- (int) nahrazeno za round () ve funkci move_to ().
- Vylepšen algoritmus vyhledávání „oktant“funkce draw_line ()
- Tlumočník nyní používá spíše funkce řetězců než ukazatele, což zjednodušuje návrh. Například nyní můžeme místo hledání písmene „M“hledat „MENU“a poté extrahovat celé číslo, které následuje. To vám umožní přizpůsobit plotter pomocí vlastních příkazů.
Krok 13: Drum_plotter_plotter_v4.ino
16. ledna 2017:
Kód pro tento bubnový plotter byl dále optimalizován. Byly přidány další funkce.
Změny zahrnují:
- rychlejší algoritmus draw_line ()
- odpovídající funkci move_to ()
- krokové čítače
- oprava drobné chyby
Další podrobnosti si přečtěte v komentářích v příloze „drum_plotter_v4.ino“.
Kliknutím sem zobrazíte mé další pokyny.
Doporučuje:
OTOČNÝ CNC LAHVOVÝ PLOTTER: 9 kroků (s obrázky)
OTOČNÝ CNC LAHVOVÝ PLOTTER: Zvedl jsem nějaké válečky, které se pravděpodobně používají v tiskárně. Přišel jsem s nápadem udělat z nich rotační osu CNC lahvového plotru. Dnes bych se chtěl podělit o to, jak z těchto válečků a dalších zbytků sestrojit CNC plotr na láhve. Chcete -li
Plotter na vejce založený na Arduinu: 17 kroků (s obrázky)
Arduino Based Egg Plotter: An Egg plotter je umělecký robot, který dokáže kreslit na kulovité objekty, jako jsou vejce. Pomocí tohoto stroje můžete také kreslit na ping pongové míčky a golfové míčky. Můžete použít svou fantazii s návrhy, které jste na ni dali, například byste mohli udělat
CNC robotický plotter: 11 kroků (s obrázky)
CNC robotický plotter: a.články {velikost písma: 110,0%; font-weight: bold; styl písma: kurzíva; textová dekorace: žádná; color-background: red;} a.articles: hover {background-color: black;} Tento návod popisuje CNC řízený robotický plotter. Robot obsahuje
Arduino CNC plotter (VÝKRESOVÝ STROJ): 10 kroků (s obrázky)
Arduino CNC plotter (VÝKRESOVÝ STROJ): Čau lidi! Doufám, že se vám již líbilo mé předchozí instruktážní " Jak si vytvořit vlastní školicí platformu Arduino " a jste připraveni na nový, jako obvykle jsem vytvořil tento návod, který vás krok za krokem provede a vytvoří tento druh super úžasného
Mini CNC plotter Arduino (s projektem Proteus a PCB): 3 kroky (s obrázky)
Mini CNC plotter Arduino (s projektem Proteus a PCB): Tento mini CNC nebo XY plotter arduino může psát a vytvářet návrhy v rozsahu 40 x 40 mm. Ano, tento rozsah je krátký, ale je to dobrý začátek pro skok do světa arduino. [V tomto projektu jsem dal všechno, dokonce i PCB, Proteus File, příklad návrhu a