Selbst gemachter billiger Dotwork-Drucker



Manchmal leuchtet das Licht des Erfinders in mir auf und ich sitze stundenlang und löte / sah etwas aus. Diesmal ist es passiert. Ich hatte die Idee, einen eigenen Drucker zu erstellen. Das Thema der Erstellung eines 3D-Druckers wurde bereits übertroffen und ist finanziell teuer. Nach einigem Überlegen entschied ich mich für eine Budgetversion des Druckers, die mit einem Bleistift / Stift / Filzstift gezeichnet werden kann. Ich erinnerte mich an meine Versuche, etwas im Dotwork-Stil zu zeichnen, und entschied mich für einen Drucker, der diesen Prozess automatisiert.Insgesamt wurden folgende Druckeranforderungen generiert:

  • billig
  • Zum Zeichnen werden improvisierte Werkzeuge verwendet
  • Das Ergebnis sind Zeichnungen im Stil von Dotwork

Und als sich herausstellte, dass dieses Projekt als Hausarbeit beworben werden kann, wurde schließlich entschieden: Drucker zu werden. Um das Design nicht zu groß zu machen, wurde die Größe des bedruckbaren Bereichs als A5 angenommen.

Über Dotwork
(Dotwork) – , . - . , , . , . - , . , .

Rahmen


Der Prozess begann mit der Suche nach einem Rahmen für die Grundlagen. Die Wahl fiel auf den H-Bot, da er einfach zu implementieren und kostengünstig ist und im Gegensatz zu CoreXY keinen Gürtel schneiden muss. Wie aus dem Diagramm ersichtlich, benötigen Sie 2 Schrittmotoren, 4 Achsen und 1 Riemen.




Für die Basis wurden Stangen mit einem Querschnitt von 20 * 40 verwendet. Natürlich ist es besser, Sperrholz zu verwenden und die erforderlichen Löcher zu schneiden, dann wäre das Design gleichmäßiger und präsentabler, aber aufgrund der Tatsache, dass es schwieriger ist, ein Stück Sperrholz zu transportieren und zu verarbeiten, wurden die Stangen ausgewählt.

Schienenhalterungen und Lager wurden in China gekauft. Sie sind für Führungen mit einem Durchmesser von 8 mm ausgelegt. Nach einer kurzen Suche wurde beschlossen, die Achse der Stricknadeln zu machen. Günstig, genau die richtige Länge, leicht zu schneiden. Wie sich herausstellte, sind die Rillen auf den Stricknadeln mit Lagern gut extrudiert. Diese Eigenschaft ermöglichte es der Struktur, sich trotz fehlender Parallelität frei entlang der Führungen zu bewegen.

Da dies noch ein Prototyp ist, wurden die Linearlager mit Draht fixiert. Stark, zuverlässig und wenn überhaupt, können Sie schnell entfernen.



Der Motor wurde in Schritten von 0,9 Grad für maximale Genauigkeit gekauft. Als ich die Motoren einbaute, wurde ein neues Problem entdeckt: Die Kappen der Motoren passten nicht zum Riemen - bei voller Geschwindigkeit trat ein Durchrutschen auf. Erste Versuche zum Entfernen waren erfolglos, Heizen / Kühlen half in keiner Weise, so dass eine brutale, aber effektive Entscheidung getroffen wurde:



Damit der Riemen nicht abfliegt, sollte der gesamte Weg entlang der Plattform auf dem gleichen Niveau sein. In diesem Zusammenhang war es notwendig, Holzstücke unter die Lager zu legen, um ihre Höhe anzupassen. Dies rettete sich jedoch nicht vor einer Gürtelrallye. Und wieder kam der Draht zur Rettung:



Zur Steuerung der Motoren wurde Arduino Uno bzw. dessen chinesische Kopie verwendet. Wie sich herausstellte, hätte der Arduino mini gereicht. Das Arduino hatte nicht genug Leistung für die Motoren, und so wurde der MOTOR SHIELD L293D bestellt. Als Stromversorgung wurde die Stromversorgung des alten Modems verwendet, von allem, was zur Hand war, wurde die höchste Spannung ausgegeben - 9 V (Motoren sind für 5-12 V ausgelegt). Zur Erleichterung der Verbindung wurde der Eingang aus dem Modem herausgebrochen, 2 Drähte wurden daran angelötet und all dies wurde an die Abschirmung angeschlossen. Schild auf einem Arduino montiert.



Ursprünglich war geplant, ein System mit zwei Rädern zur Steuerung des Filzstifts zu verwenden, wie dies bei Walzmaschinen der Fall ist. Aus Gründen der Ausführungsgeschwindigkeit erfolgte die Befestigung jedoch sofort am Servoantrieb. Es stellt sich heraus, dass die Punkte nicht durch die Spitze des Filzstifts, sondern seitwärts gesetzt werden. Es ist geplant, in der nächsten Version des Druckers zur ursprünglichen Idee zurückzukehren. Das Servo ist ebenfalls mit der Abschirmung verbunden.



Code füllen


Für Arduino wurde ein Code geschrieben, der einen Befehl von einem PC über die serielle Schnittstelle in Form einer Zeichenfolge mit 9 Zeichen empfängt. Das erste Zeichen ist der Befehlscode, gefolgt von 4 Zeichen für die X- und Y-Koordinaten. Ein Link zum Code auf der PC-Seite befindet sich am Ende des Artikels.

Code für 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);
}

Mit der Anwendung auf der PC-Seite können Sie ein Bild herunterladen, in Schwarzweiß übersetzen und eine Reihe von Punkten generieren.

Das Prinzip der Punkteerzeugung
- 256 int. N RGB(N,N,N). , «Num points» «fuction» . , , 0. :

  • X Y
  • 0, :

    1. 1

So sieht das Anwendungsfenster aus:



Wie sich herausstellt, scrollen die Motoren nach jeder Bewegung zurück und scrollen warm, wenn sie nicht nach jeder Bewegung die Leistung verlassen. Und der Schild erwärmt sich noch mehr, so dass der alte Kühler ausgegraben und über den Mikrokreisen befestigt wurde. Er bezieht Strom direkt von derselben Stromversorgung, um die Anschlüsse an der Abschirmung nicht zu belegen. Nach einem zweistündigen Test brannte nichts aus. Eine Box wurde ebenfalls hinzugefügt, um die Struktur zu schützen.



Da es für ihn keinen Tisch gab, damit das Blatt beim Drucken nicht schwankt, wurde ein Blatt im A3-Format genommen. Die Plattform steht auf dem Blatt und drückt darauf. Und damit die gesamte Struktur nicht verrutscht, wird eine Hantel oder ein Glas Marmelade darauf gelegt. Es wird ziemlich langsam gedruckt, im Durchschnitt dauert es 0,7 Sekunden für einen Punkt. Und hier ist die Ausgabe:



Fazit


Der Drucker erwies sich als langsam, nicht präsentierbar, musste verbessert werden, druckte jedoch im richtigen Stil. Der Anfang wurde gemacht und es wurden viele Schlussfolgerungen gezogen, sowohl im Design als auch im Code. Wenn Sie noch die Geduld für die zweite Version dieses Geräts haben, wird alles berücksichtigt und effizienter durchgeführt.

Von den dafür ausgegebenen Mitteln (ungefähr):

  • 3 $ für Stricknadeln
  • $ 17 Motoren 2St. (obwohl Sie weniger genau nehmen könnten)
  • 3 $ arduino Uno (aber genug für Nano)
  • $ 5.5 Linearlager 8 * 15 * 24 mm, 10 Stk. (Es dauerte 8 Stück.)
  • $ 2.5 MOTOR SHIELD L293D (Sie können 2 L293D-Mikroschaltungen separat kaufen und der Servoantrieb wird von Arduino gespeist)
  • 2 $ Konventionelle Lager 8 * 22 * ​​7 mm, 6 Stück
  • $ 8 Halterungen für Führungen 8mm, 8St.
  • $ 4 Riemen 20-GT2-6 (2 m) + 2 Rollen
  • 2 $ Servo Sg90 9G
  • ~ 10 $ für einen Rahmen, Bolzen, Nägel, Draht (hier können Sie sparen, wenn Sie bereits viel zu Hause haben)

Kostenlos: Lüfter, Netzteil.

Insgesamt etwa 57 $, obwohl es noch billiger gemacht werden kann.

Code für PC.

Kurzes Video zum Druckerbetrieb:

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


All Articles