Isi kandungan:

CNC Drum Plotter: 13 Langkah (dengan Gambar)
CNC Drum Plotter: 13 Langkah (dengan Gambar)

Video: CNC Drum Plotter: 13 Langkah (dengan Gambar)

Video: CNC Drum Plotter: 13 Langkah (dengan Gambar)
Video: How to make mini CNC plotter 2D using scrap DVD 2024, November
Anonim
Image
Image
Plotter Drum CNC
Plotter Drum CNC

Petunjuk ini menerangkan plotter A4 / A3 yang dibuat dari bahagian paip plastik, dua motor stepper BYJ-48 dan servo SG-90. Pada dasarnya ia adalah plotter katil rata yang digulung ke dalam tong dram.

Satu motor memutar drum sementara yang lain menggerakkan kepala cetak. Servo digunakan untuk menaikkan dan menurunkan pen.

Plotter ini mempunyai beberapa kelebihan berbanding plotter flatbed tradisional:

  • jejak kaki yang jauh lebih kecil
  • hanya memerlukan satu rel panduan linier
  • mudah dibina
  • murah

Jurubahasa on-board menerima output gcode dari Inkscape.

Komunikasi dengan plotter adalah melalui pautan bluetooth.

Ploter ini sesuai dengan Tablet Grafik CNC yang dijelaskan dalam https://www.instructables.com/id/CNC-Graphics-Table Table yang boleh saya instruksikan.

Walaupun bukan instrumen ketepatan, ketepatan plotter ini memuaskan untuk tujuannya untuk memindahkan garis cat air ke kertas.

Langkah 1: Litar

Litar
Litar

Litar ini terdiri daripada mikrokontroler Arduino UNO R3 dan perisai khas di mana komponen diskrit dipasang. Kuasa digunakan melalui pengatur 5 volt 1 amp luaran. Arus purata sekitar 500mA.

Motor melangkah BYJ-48 dipasang pada PORTB (pin D8, D9, D10, D11) dan PORTC (pin A0, A1, A2, A3). Servo pena SG-90 dipasang pada pin D3.

Perintang 560 ohm, yang mungkin ditinggalkan, memberikan ukuran perlindungan litar pintas ke arduino sekiranya berlaku sesuatu yang tidak kena. Mereka juga mempermudah memasang wayar ketika mereka bertindak sebagai "jumper" di rel pasokan.

Perintang 1k2 dan 2K2 mencegah kerosakan pada modul bluetooth HC-06 [1] dengan menjatuhkan output 5 volt dari arduino ke 3.3 volt.

[1] Cabut modul Bluetooth HC-06 ketika memuat naik kod ke arduino melalui port USB. Ini akan mengelakkan konflik port bersiri.

Langkah 2: Pemacu Linear

Pemacu Linear
Pemacu Linear
Pemacu Linear
Pemacu Linear
Pemacu Linear
Pemacu Linear

Pemacu linier dibuat dari bar aluminium sepanjang 3mm x 32mm, sehelai kepingan aluminium, dan empat takal galas bebola kecil.

Aluminium boleh didapati di kebanyakan kedai perkakasan. Katrol U-groove U624ZZ 4x13x7mm boleh didapati dari

Alat tangan sederhana adalah semua yang anda perlukan. Potong bar aluminium agar sesuai dengan dimensi plotter anda.

Pemasangan motor

Pasang motor melangkah BJY-48 melalui bar pada satu hujung dan pasangkan gigi GT2 20, lubang 5mm, takal ke batang motor. Sekarang pasangkan pulley GT2 yang lain di hujung bar anda supaya pulley dapat berputar dengan bebas. Saya menggunakan spacer tubular (radio) berdiameter 5mm dan bolt 3mm untuk mencapainya.

Sekarang gelung panjang tali pinggang GT2 di sekitar takal. Sambungkan hujung timing belt dengan cara memutar setengah sehingga gigi menyekat dan terpaku dengan tali leher.

Akhirnya pasangkan pemasangan kereta ke tali pinggang masa dengan tali leher.

Perhimpunan kereta

Pemasangan kereta dibuat dari jalur kepingan aluminium [1] di mana takal U624ZZ dilekatkan. Sekiranya perlu, gunakan mesin basuh 4mm untuk melepaskan pulley dari kepingan aluminium.

Katrol, yang mempunyai alur 4mm, mengangkut aluminium bar atas dan bawah sehingga tidak ada pergerakan menegak namun jalur aluminium bergerak bebas ke kiri dan kanan.

Untuk memastikan bahawa kereta berjalan bebas, pasangkan dua takal teratas terlebih dahulu kemudian, dengan takal duduk di bar, tandakan kedudukan dua takal bawah. Lubang untuk kedua-dua takal ini sekarang boleh digerudi. Gunakan gerudi kecil "pilot" terlebih dahulu untuk mengelakkan gerudi 4mm yang lebih besar daripada melayang.

Sebelum membengkokkan jalur alumium ke dalam "U", gerudi lubang atas dan bawah sesuai dengan diameter pen anda. Sekarang lengkapkan selekoh.

Pasang tali pinggang masa ke unit kereta dengan tali leher dan bolt 3mm di antara dua takal teratas.

Pemasangan pen pen

Pasang servo SG-90 ke bahagian atas unit kereta dengan menggunakan satu atau dua ikatan kabel.

Jatuhkan pen anda ke dua lubang yang telah anda latih. Pastikan pena meluncur ke atas dan ke bawah dengan bebas.

Kencangkan "kerah" ke pena anda sehingga pena hanya keluar dari drum ketika servo berada dalam kedudukan pena.

[1] Aluminium boleh dipotong dengan mencetak kedua-dua sisi lembaran dengan pisau tajam (pemotong kotak) kemudian melenturkan potongan di tepi meja. Beberapa goyangan dan helaiannya akan patah meninggalkan putus. Tidak seperti pemotongan timah, kaedah ini tidak merosakkan aluminium.

Langkah 3: Drum

Gendang
Gendang
Gendang
Gendang
Gendang
Gendang

Drum terdiri daripada bahagian paip plastik dengan dua palam akhir kayu [1].

Gunakan kompas, tetapkan ke jari-jari bahagian dalam paip anda, untuk menggambar garis besar palam akhir. Sekarang potong setiap garis besar menggunakan gergaji pisau halus ("coping", "fret") kemudian pasangkan setiap palam hujung dengan bantuan serpihan kayu. Kencangkan palam hujung dengan menggunakan skru kayu yang kecil.

Baut kejuruteraan 6 mm melalui pusat setiap palam akhir membentuk gandar.

Dimensi Drum

Dimensi dram ditentukan oleh ukuran kertas anda. Diameter dram 100mm menyokong potret A4 dan landskap A3. Diameter drum 80 mm hanya akan menyokong landskap A4. Gunakan sekecil diameter dram untuk mengurangkan inersia… motor BYJ-48 hanya kecil.

Diameter drum 90mm sangat sesuai untuk potret A4 dan kertas lanskap A3 sebagai pinggir yang bertentangan, apabila melilit drum, tumpang tindih kira-kira 10mm yang bermaksud bahawa anda hanya mempunyai satu jahitan untuk dilekatkan pada tempatnya.

Memusingkan dram

Setiap gandar melewati pendakap hujung aluminium sehingga dram dapat berputar dengan bebas. Pengapungan akhir dihalang dengan menggunakan GT-2, 20 gigi, lubang 6mm, takal diikat pada gandar pada satu hujungnya. Jalur pemasa GT-2 berterusan menghubungkan motor melangkah BJY-48 ke drum. Motor memerlukan takal dengan ukuran bore 5mm.

[1] Palam akhir plastik tersedia untuk kebanyakan diameter paip tetapi ditolak kerana dipasang di atas paip daripada di dalam dan plastik cenderung lentur. Mereka mungkin akan baik-baik saja jika gandar berterusan digunakan sebagai ganti bolt… tetapi kemudian anda memerlukan beberapa kaedah memasang gandar ke penutup akhir.

Langkah 4: Petua Pembinaan

Pastikan pena bergerak di sepanjang pusat dram. Ini dapat dicapai dengan memotong sudut dari penyokong kayu. Sekiranya pena berada di tengah, ia cenderung meluncur ke bahagian bawah dram.

Penggerudian tepat dua lubang pen adalah penting. Sebarang goyangan dalam panduan pen atau pemasangan kereta akan menyebabkan goyangan di sepanjang paksi-X.

Jangan ketatkan tali pinggang masa GT-2 … mereka hanya perlu diketatkan. Motor melangkah BYJ-48 tidak mempunyai banyak tork.

Motor melangkah BJY-48 sering menunjukkan sedikit tindak balas yang tidak signifikan di sepanjang paksi-X tetapi menjadi perhatian ketika datang ke paksi-Y. Sebabnya ialah satu putaran motor paksi-Y sama dengan satu putaran drum, sedangkan kereta pena memerlukan banyak putaran motor paksi-X untuk melintasi panjang drum. Sebarang tindak balas sumbu Y dapat dihilangkan dengan mengekalkan daya kilas berterusan pada drum. Kaedah yang mudah adalah dengan memasang berat kecil pada tali nilon yang melilit drum.

Langkah 5: Algoritma Lukisan Garisan Bresenham

Algoritma Lukisan Garisan Bresenham
Algoritma Lukisan Garisan Bresenham
Algoritma Lukisan Garisan Bresenham
Algoritma Lukisan Garisan Bresenham

Plotter ini menggunakan versi dioptimumkan [1] algoritma lukisan garis Bresenham. Malangnya algoritma ini hanya berlaku untuk cerun garis kurang dari atau sama dengan 45 darjah (iaitu satu oktan bulatan).

Untuk mengatasi batasan ini, saya "memetakan" semua input XY ke "oktan" pertama, kemudian "unmap" mereka apabila tiba masanya untuk merancang. Fungsi pemetaan input dan output untuk mencapainya ditunjukkan dalam rajah di atas.

Derivasi

Selebihnya langkah ini mungkin dihilangkan jika anda sudah biasa dengan algoritma Bresenham.

Mari kita gariskan dari (0, 0) hingga (x1, y1) di mana:

  • x1 = 8 = jarak mendatar
  • y1 = 6 = jarak menegak

Persamaan untuk garis lurus yang melewati asal (0, 0) diberikan oleh persamaan y = m * x di mana:

m = y1 / x1 = 6/8 = 0.75 = cerun

Algoritma Ringkas

Algoritma mudah untuk merancang garis ini adalah:

  • int x1 = 8;
  • int y1 = 6;
  • apungan m = y1 / x1;
  • plot (0, 0);
  • untuk (int x = 1; x <= x1; x ++) {
  • int y = bulat (m * x);
  • plot (x, y);
  • }

Jadual 1: Algoritma Mudah

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

Terdapat dua masalah dengan algoritma mudah ini:

  • gelung utama mengandungi pendaraban yang perlahan
  • ia menggunakan nombor titik terapung yang juga perlahan

Graf y berbanding x untuk garis ini ditunjukkan di atas.

Algoritma Bresenham

Bresenham memperkenalkan konsep istilah kesalahan 'e' yang dimulakan menjadi sifar. Dia menyedari bahawa nilai m * x yang ditunjukkan dalam jadual 1 dapat diperoleh dengan penambahan berturut-turut 'm' ke 'e'. Dia seterusnya menyedari bahawa y hanya bertambah jika bahagian pecahan m * x lebih besar daripada 0.5. Untuk memastikan perbandingannya berada dalam julat 0 <= 0,5 <= 1 dia mengurang 1 dari 'e' setiap kali y bertambah.

  • int x1 = 8;
  • int y1 = 6;
  • apungan m = y1 / x1;
  • int y = 0;
  • apungan e = 0;
  • plot (0, 0);
  • untuk (int x = 1; x <= x1; x ++) {
  • e + = m;
  • jika (e> = 0.5) {
  • e - = 1;
  • y ++;
  • }
  • plot (x, y);
  • }

Jadual 2: Algoritma Bresenham

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

Sekiranya anda mengkaji algoritma dan jadual 2, anda akan melihatnya;

  • gelung utama hanya menggunakan penambahan dan pengurangan… tidak ada pendaraban
  • corak untuk y adalah sama seperti jadual 1.

Tetapi kita masih menggunakan nombor titik terapung … mari kita perbaiki.

Algoritma Bresenham (Dioptimumkan)

Algoritma titik terapung Bresenham dapat ditukar menjadi bentuk integer jika kita skala 'm' dan 'e' dengan 2 * x1 dalam hal m = (y1 / x1) * 2 * x1 = 2 * y1

Selain penskalaan 'm' dan 'e' algoritma serupa dengan yang di atas kecuali:

  • kita menambah 2 * y1 ke 'e' setiap kali kita menambah 'x"
  • kita menambah y jika e sama atau lebih besar daripada x1.
  • kita tolak 2 * x1 dari 'e' dan bukannya 1
  • x1 digunakan untuk perbandingan dan bukannya 0.5

Kelajuan algoritma dapat ditingkatkan lebih jauh jika gelung menggunakan sifar untuk ujian. Untuk melakukan ini, kita perlu menambahkan ofset pada istilah kesalahan 'e'.

  • int x1 = 8;
  • int y1 = 6;
  • int m = (y1 << 1); // pemalar: cerun berskala 2 * x1
  • int E = (x1 << 1); // pemalar: 2 * x1 untuk digunakan dalam gelung
  • int e = -x1; // mengimbangi -E / 2: ujian kini dilakukan pada sifar
  • plot (0, 0);
  • int y = 0;
  • untuk (x = 1; x <= x1; x ++) {
  • e + = m;
  • jika (e> = x1) {
  • e - = E
  • y ++;
  • }
  • plot (x, y);
  • }

Jadual 3: Algoritma Bresenham (Dioptimumkan)

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

Sekali lagi corak untuk y adalah sama seperti pada jadual lain. Sangat menarik untuk diperhatikan bahawa jadual 3 hanya mengandungi bilangan bulat dan nisbah m / E = 12/16 = 0.75 yang merupakan cerun 'm' garis.

Algoritma ini sangat pantas kerana gelung utama hanya melibatkan penambahan, pengurangan, dan perbandingan dengan sifar. Pendaraban tidak digunakan selain ketika kita menginisialisasi nilai untuk 'E' dan 'm' menggunakan "shift kiri" untuk menggandakan nilai x1 dan y1.

[1] Versi algoritma Bresenham yang dioptimumkan ini adalah dari kertas "Bresenham Line and Circle Drawing", hak cipta © 1994-2006, W Randolph Franklin (WRF). Bahannya boleh digunakan untuk penyelidikan dan pendidikan bukan keuntungan, dengan syarat anda memberi kredit kepadanya, dan pautan kembali ke halaman rumahnya,

Langkah 6: Kodnya

Muat turun fail yang dilampirkan ke dalam folder dengan nama yang sama kemudian muat naik ke plotter menggunakan arduino IDE anda (persekitaran pembangunan bersepadu).

Cabut palam modul bluetoorh HC-06 sebelum mencuba muat naik. Ini diperlukan untuk mengelakkan konflik port bersiri dengan kabel USB.

Kod Pihak Ketiga

Sebagai tambahan kepada kod.ino di atas, anda akan memerlukan pakej perisian berikut yang percuma / sumbangan:

  • Teraterm yang boleh didapati dari
  • Inkscape yang boleh didapati dari

Arahan untuk memasang dan menggunakan setiap pakej pihak ketiga di atas boleh didapati dalam artikel saya

Langkah 7: Menu

Menu
Menu

Buat sambungan bluetooth dengan plotter anda menggunakan "Teraterm".

Hidupkan "caps lock" anda kerana semua perintah berada dalam huruf besar.

Ketik huruf 'M' dan menu akan muncul seperti gambar di atas.

Menu ini cukup jelas:

  • M (atau M0) memunculkan menu
  • G0 membolehkan anda menghantar pen ke koordinat XY tertentu dengan pen yang dinaikkan.
  • G1 membolehkan anda menghantar pen ke koordinat XY tertentu dengan pen diturunkan.
  • T1 membolehkan anda meletakkan pena di atas koordinat 0, 0 anda. Taip 'E' untuk keluar.
  • T2 membolehkan anda memperbesar gambar anda. Contohnya "T2 S2.5" akan membuat skala gambar anda 250%. Skala lalai adalah 100%
  • T3 dan T4 membolehkan anda menaikkan atau menurunkan pen.
  • T5 melukis corak ujian "ABC".
  • T6 menarik "sasaran".
  • T7 melukis satu set garis radial, yang tujuannya adalah untuk mengesahkan bahawa algoritma Bresenham berfungsi di setiap lapan "oktan"

Catatan:

  • semua pergerakan pen menggunakan set skala lukisan menggunakan pilihan menu T2
  • nombor "17:" dan "19:" adalah kod jabat tangan terminal "Xon" dan "Xoff" dari jurubahasa arduino.

Langkah 8: Penentukuran

Nilai untuk X_STEPS_PER_MM dan Y_STEPS_PER_MM adalah untuk dram berdiameter 90mm.

Nilai untuk diameter dram yang lain dapat dikira menggunakan hubungan berikut:

  • lilitan dram adalah diameter PI *
  • 2048 langkah sama dengan satu putaran setiap batang motor
  • satu revolusi takal GT-2 bersamaan dengan pergerakan linear 40 milimeter tali pinggang masa

Kaedah lain adalah memasukkan perintah berikut,

  • G1 X0 Y100
  • G1 X100 Y100

kemudian ukur panjang garis yang dihasilkan dan "skala" nilai untuk X-STEPS_PER_MM dan Y_STEPS_PER_MM

Langkah 9: Pemprosesan Gcode

Pemprosesan Gcode
Pemprosesan Gcode
Pemprosesan Gcode
Pemprosesan Gcode

Plotter ini hanya memerlukan empat daripada kod Inkscape (iaitu: G0, G1, G2, G3). Kod ini akan dilaksanakan dengan lebih cepat jika kita membuang semua kod dan komen yang tidak diperlukan.

Untuk melakukan ini, anda memerlukan salinan "Notepad ++". Editor teks percuma ini mengandungi mesin carian "ungkapan biasa" untuk mencari dan membuang teks yang tidak diingini. Notepad ++ boleh didapati dari

Buka fail yang akan diubah suai dengan Notepad ++ dan letakkan kursor anda di bahagian atas fail.

Pilih "Lihat / Tunjukkan Simbol / Semua Karakter" diikuti dengan "Cari / Ganti …" dari bar menu atas.

Klik kotak centang "Ekspresi Biasa" (lihat gambar pertama) dan masukkan setiap urutan kod berikut ke dalam kotak carian.

Klik "Ganti Semua" selepas setiap entri:

  • %
  • (.*)
  • ^ M * $
  • Z. * $

Ungkapan biasa di atas membuang semua simbol%, semua komen ditunjukkan dalam tanda kurung, semua kod M, semua kod Z dan kod yang mengikuti.

Sekarang klik kotak centang "Ekspresi Diperluas" (lihat gambar ke-2) dan masukkan urutan kod berikut:

r / n / r / n / r / n

Ungkapan ini menghilangkan pengembalian kereta dan makanan yang tidak diingini yang dibuat oleh urutan pertama.

Simpan fail anda dengan nama lain menggunakan "Save As".

Selesai.

Langkah 10: Hasil

Keputusan
Keputusan

Perancang ini dibina sebagai "bukti konsep" dan tidak pernah bermaksud sempurna. Setelah mengatakan bahawa hasilnya tidak terlalu buruk. Mereka pasti memenuhi matlamat reka bentuk saya untuk memindahkan garis besar cat air ke kertas.

Tiga gambar pertama adalah corak ujian terbina dalam T5, T6, T7 masing-masing.

"Hello World!" corak dihantar ke plotter melalui bluetooth. Salinan "pra-proses" fail ini dilampirkan.

Langkah 11: Kemas kini Kod

Kemas kini Kod
Kemas kini Kod

Kod untuk plotter ini telah dikemas kini kepada Drum_Plotter_V2.ino.

Perubahan dari Drum_Plotter.ino yang asal merangkumi:

  • kedudukan pen yang lebih lancar
  • kini mengenali arahan kod G02 (busur mengikut arah jam)
  • kini mengenali arahan kod G03 (busur berlawanan arah jam)

Gambar rajah yang dilampirkan menggariskan kaedah saya untuk mengira sudut lengkok.

Langkah 12: Drum_plotter_v3.ino

Kemas kini kod untuk "CNC Drum Plotter" dilampirkan.

"drum_plotter_v3.ino" memperbaiki bug kecil yang mempengaruhi ketepatan plotter.

Perubahan sejarah

Versi 2:

Lengkung dwi-arka ditambah

Versi 3:

Fungsi berikut ditulis semula untuk mengatasi bug kecil yang mempengaruhi ketepatan plotter.

  • (int) diganti dengan bulat () dalam fungsi move_to ().
  • draw_line () fungsi algoritma carian "oktan" diperbaiki
  • Jurubahasa kini menggunakan fungsi rentetan daripada penunjuk yang mempermudah reka bentuk. Sebagai contoh kita sekarang boleh mencari "MENU" daripada mencari huruf 'M' kemudian mengeluarkan nombor bulat yang berikut. Ini membolehkan anda memperibadikan plotter dengan arahan anda sendiri.

Langkah 13: Drum_plotter_plotter_v4.ino

16 Januari 2017:

Kod untuk drum plotter ini telah dioptimumkan lagi. Ciri tambahan telah ditambah.

Perubahan tersebut merangkumi:

  • algoritma draw_line () lebih pantas
  • memadankan fungsi move_to ()
  • kaunter langkah
  • pembetulan pepijat kecil

Untuk keterangan lebih lanjut baca komen dalam "drum_plotter_v4.ino" yang dilampirkan.

Klik di sini untuk melihat arahan saya yang lain.

Disyorkan: