Printer Dotwork Homemade Murah



Kadang-kadang cahaya penemu menyala dalam diriku, dan aku duduk berjam-jam dan menyolder sesuatu. Itu terjadi saat ini. Saya mendapat ide untuk membuat printer sendiri. Tema membuat printer 3d sudah dikalahkan, dan itu mahal secara finansial. Setelah berpikir sebentar, saya memutuskan untuk membuat printer versi murah, yang bisa menggambar dengan pensil / pena / spidol. Dan mengingat upaya saya untuk menggambar sesuatu dalam gaya Dotwork, saya memilih printer yang mengotomatiskan proses ini.Secara total, persyaratan printer berikut dihasilkan:

  • murah
  • alat improvisasi digunakan untuk menggambar
  • hasilnya adalah gambar dalam gaya Dotwork

Dan ketika ternyata proyek ini dapat dipromosikan sebagai makalah, akhirnya diputuskan: menjadi printer. Untuk membuat desain tidak terlalu besar, ukuran area cetak diambil sebagai A5.

Tentang dotwork
(Dotwork) – , . - . , , . , . - , . , .

Bingkai


Prosesnya dimulai dengan mencari kerangka kerja untuk dasar-dasarnya. Pilihannya jatuh pada H-bot, karena mudah diimplementasikan, murah dan, tidak seperti CoreXY, tidak perlu memotong sabuk. Seperti yang dapat dilihat dari diagram, Anda akan membutuhkan 2 motor stepper, 4 sumbu dan 1 sabuk.




Untuk dasar, bar dengan bagian 20 * 40 digunakan. Tentu saja, lebih baik menggunakan kayu lapis dan memotong lubang yang diperlukan di atasnya, maka desainnya akan lebih rata dan rapi, tetapi karena fakta bahwa lebih sulit untuk mengangkut dan memproses sepotong kayu lapis, batang dipilih.

Dudukan dan bantalan rel dibeli di Cina. Mereka dirancang untuk panduan dengan diameter 8mm. Setelah pencarian singkat, diputuskan untuk membuat sumbu jarum rajut. Murah, panjangnya pas, mudah dipotong. Selain itu, ternyata, lekukan diekstrusi dengan baik pada jarum rajut dengan bantalan. Properti ini memungkinkan struktur untuk bergerak bebas di sepanjang panduan, meskipun kurangnya paralelisme.

Karena ini masih prototipe, bantalan linier diperbaiki dengan kawat. Kuat, andal, dan jika ada, Anda dapat dengan cepat menghapus.



Mesin itu dibeli dengan kenaikan 0,9 derajat untuk akurasi maksimum. Ketika saya meletakkan mesin, masalah baru ditemukan: tutup pada mesin tidak cocok dengan sabuk - tergelincir terjadi dengan kecepatan penuh. Upaya awal untuk melepas tidak berhasil, pemanasan / pendinginan tidak membantu dengan cara apa pun, jadi keputusan brutal tetapi efektif dibuat:



Agar sabuk tidak lepas, seluruh jalur di sepanjang platform harus pada tingkat yang sama. Dalam hal ini, perlu menempatkan potongan kayu di bawah bantalan untuk menyesuaikan ketinggiannya. Tapi ini tidak menyelamatkan dari reli sabuk. Dan sekali lagi kawat datang untuk menyelamatkan:



Untuk mengendalikan mesin digunakan Arduino Uno, atau lebih tepatnya salinan Cina-nya. Ternyata, mini Arduino sudah cukup. Tidak ada daya yang cukup dari Arduino untuk mesin, dan jadi MOTOR SHIELD L293D dipesan. Sebagai catu daya, catu daya dari modem lama digunakan, dari semua yang ada di tangan itu memberikan tegangan tertinggi - 9V (motor dirancang untuk 5-12V). Untuk kemudahan koneksi, input terputus dari modem, 2 kabel disolder padanya dan semua ini terhubung ke perisai. Pelindung dipasang pada arduino.



Awalnya, direncanakan untuk menggunakan sistem 2 roda untuk mengontrol pena felt-tip, seperti pada mesin bergulir, tetapi, untuk kecepatan eksekusi, pengancing dilakukan segera pada drive servo. Ternyata titik-titiknya diatur bukan pada ujung pena felt-tip, tetapi ke samping. Direncanakan untuk kembali ke ide awal di versi printer berikutnya. Servo juga terhubung ke perisai.



Isi Kode


Untuk arduino, kode ditulis yang menerima perintah dari PC melalui Port Serial dalam bentuk string 9 karakter. Karakter pertama adalah kode perintah, diikuti oleh 4 karakter untuk koordinat X dan Y. Tautan ke kode di sisi PC akan berada di akhir artikel.

Kode untuk Arduino
#include <AFMotor.h> 
#include <Servo.h> 

AF_Stepper motor(2048, 1);
AF_Stepper motor2(2048, 2);
Servo servo1;

int x0 = 0;
int y0 = 0;
int K = 1;

void setup() {
  motor.setSpeed(15);
  motor2.setSpeed(15);  
  servo1.attach(10);
  servo1.write(65);
  Serial.begin(9600);
}

void OneTouch(){
  servo1.write(60);
  delay(50);
  servo1.write(65);
}

void MoveRight(int h){
  motor.step(h, FORWARD, SINGLE);    
  motor2.step(h, FORWARD, SINGLE);    
}

void MoveDown(int h){
  motor.step(h, BACKWARD, SINGLE);   
  motor2.step(h, FORWARD, SINGLE);    
}

void MoveUp(int h){
  motor.step(h, FORWARD, SINGLE);    
  motor2.step(h, BACKWARD, SINGLE);   
}

void MoveLeft(int h){
  motor.step(h, BACKWARD, SINGLE);     
  motor2.step(h, BACKWARD, SINGLE);    
}

void OnePointer(int x, int y){
  int stepX = x - x0;
  int stepY = y - y0;
  
  if (stepX > 0)
    MoveRight(stepX);
  else
    MoveLeft(-stepX);
    
  if (stepY > 0)
    MoveDown(stepY);
  else
    MoveUp(-stepY);
   
  x0 = x;
  y0 = y;
  
  OneTouch();
}

void Move(int x, int y){
  int stepX = x - x0;
  int stepY = y - y0;
  int kX, kY;
    
      
  while ((stepX != 0) || (stepY != 0)){
    kX=K;
    kY=K;
    if (kX> abs(stepX))
      kX = abs(stepX);
    if (kY> abs(stepY))
      kY = abs(stepY);
  
    if (stepX > 0){
      MoveRight(kX);
      stepX-=kX;
    }
    if (stepX < 0){
      MoveLeft(kX);
      stepX+=kX;
    }
    if (stepY > 0){
      MoveDown(kY);
      stepY-=kY;
    }
    if (stepY < 0){
      MoveUp(kY);
      stepY+=kY;
    }
  }
  
  x0 = x;
  y0 = y;
  
  OneTouch();
}

void loop() {
  while (Serial.available() == 0);
     String buffer ="";
     int i = 0;
     delay(100);
      
     while(i < 9) {
        buffer += Serial.read();
        i++;
     }
     
     String code =  buffer.substring(0,1);
     code.trim();
     int cod = code.toInt(); 
     
     String first =  buffer.substring(0,5);
     first.trim();
     int x = first.toInt() - cod*10; 

     String second =  buffer.substring(0,9);
     second.trim();
     int y = second.toInt() - x*10000 - cod * 100000;   
     
     switch (cod){
       case 0:
         Move(x,y);
         OneTouch();
       break;
       case 1:
         servo1.write(65);
         delay(50);
         Move(x,y);
       break;
       case 2:
         servo1.write(60);
         delay(50);
         Move(x,y);
         servo1.write(65);
       break;
       case 3:
         servo1.write(65);
         delay(50);
       break;
       case 4:
         servo1.write(60);
         delay(50);
         break;
       case 5:
         Move(x,y);
         break;
       case 6:
         Move(0,0);
         motor.release();
         motor2.release();
         break;
       case 7:
         K=x;
         break;
     }
     
     Serial.print(1);
}

Aplikasi di sisi PC memungkinkan Anda untuk mengunduh gambar, menerjemahkannya dalam warna hitam dan putih dan menghasilkan serangkaian poin.

Prinsip menghasilkan poin
- 256 int. N RGB(N,N,N). , «Num points» «fuction» . , , 0. :

  • X Y
  • 0, :

    1. 1

Inilah tampilan jendela aplikasi:



Ternyata, jika mesin tidak meninggalkan daya setelah setiap gerakan, maka mereka menggulir ke belakang, dan jika dibiarkan, mereka menjadi hangat. Dan perisai itu bahkan lebih hangat, jadi pendingin lama digali dan diperbaiki di atas sirkuit mikro. Ia mengambil daya dari catu daya yang sama secara langsung, agar tidak menempati konektor pada perisai. Setelah tes dua jam, tidak ada yang terbakar. Sebuah kotak juga ditambahkan untuk melindungi struktur.



Karena tidak ada meja untuknya, sehingga lembar tidak terhuyung-huyung saat mencetak, lembar format A3 diambil. Platform berdiri di atas lembaran dan menekannya. Dan agar seluruh struktur tidak tergelincir, halter atau botol selai ditempatkan di atasnya. Ini mencetak agak lambat, rata-rata dibutuhkan 0,7 detik untuk satu titik. Dan inilah hasilnya:



Kesimpulan


Printer ini ternyata lambat, tidak dapat ditampilkan, membutuhkan perbaikan, tetapi mencetak dengan gaya yang tepat. Awal telah dibuat dan banyak kesimpulan telah dibuat, baik dalam desain dan kode, dan jika Anda masih memiliki kesabaran untuk versi kedua dari unit ini, semuanya akan diperhitungkan dan dilakukan dengan lebih baik.

Dari dana yang dihabiskan untuk itu (kurang-lebih):

  • 3 $ untuk jarum rajut
  • $ 17 mesin 2 lembar. (meskipun Anda bisa mengambil kurang akurat)
  • 3 $ arduino Uno (tapi cukup untuk Nano)
  • $ 5,5 bantalan Linear 8 * 15 * 24mm, 10 pcs. (butuh 8pcs.)
  • $ 2.5 MOTOR SHIELD L293D (Anda dapat membeli 2 sirkuit mikro L293D secara terpisah, dan drive servo ditenagai oleh arduino)
  • 2 $ Bantalan konvensional 8 * 22 * ​​7mm, 6pcs.
  • Mounts $ 8 untuk panduan 8mm, 8pcs.
  • $ 4 Belt 20-GT2-6 (2m) + 2 rol
  • 2 $ Servo Sg90 9G
  • ~ $ 10 untuk bingkai, baut, paku, kawat (di sini Anda dapat menghemat uang jika Anda sudah memiliki banyak di rumah)

Gratis: kipas, catu daya.

Total sekitar $ 57, meskipun bisa dilakukan lebih murah.

Kode untuk PC.

Video pendek operasi printer:

Source: https://habr.com/ru/post/id388587/


All Articles