Impresora Dotwork barata hecha en casa



A veces la luz del inventor se enciende en mí, y me siento durante horas y sueldo / vi algo. Sucedió esta vez. Tuve la idea de crear mi propia impresora. El tema de crear una impresora 3D ya ha sido superado, y es financieramente costoso. Después de pensar un poco, decidí hacer una versión económica de la impresora, que podría dibujar con un lápiz / bolígrafo / rotulador. Y recordando mis intentos de dibujar algo en el estilo Dotwork, opté por una impresora que automatiza este proceso.En total, se generaron los siguientes requisitos de impresora:

  • barato
  • herramientas improvisadas se utilizan para dibujar
  • el resultado son dibujos al estilo de Dotwork

Y cuando resultó que este proyecto puede promoverse como un documento final, finalmente se decidió: ser una impresora. Para que el diseño no sea demasiado grande, el tamaño del área imprimible se tomó como A5.

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

Marco


El proceso comenzó buscando un marco para lo básico. La elección recayó en el H-bot, ya que es fácil de implementar, económico y, a diferencia de CoreXY, no necesita cortar un cinturón. Como se puede ver en el diagrama, necesitará 2 motores paso a paso, 4 ejes y 1 correa.




Para la base, se utilizaron barras con una sección de 20 * 40. Por supuesto, es mejor usar madera contrachapada y cortar los agujeros necesarios, entonces el diseño sería más uniforme y presentable, pero debido al hecho de que es más difícil transportar y procesar una pieza de madera contrachapada, se seleccionaron las barras.

Se compraron soportes y rodamientos de rieles en China. Están diseñados para guías con un diámetro de 8 mm. Después de una breve búsqueda, se decidió hacer el eje de agujas de tejer. Barato, de la longitud adecuada, fácil de cortar. Además, resultó que las ranuras están bien extruidas en las agujas de tejer con cojinetes. Esta propiedad permitió que la estructura se moviera libremente a lo largo de las guías, a pesar de la falta de paralelismo.

Como todavía es un prototipo, los rodamientos lineales se fijaron con alambre. Fuerte, confiable y, en todo caso, puede eliminar rápidamente.



El motor fue comprado en incrementos de 0.9 grados para máxima precisión. Cuando puse los motores, se descubrió un nuevo problema: las tapas de los motores no se ajustaban a la correa; el deslizamiento se produjo a toda velocidad. Los intentos iniciales de eliminación no tuvieron éxito, el calentamiento / enfriamiento no ayudó de ninguna manera, por lo que se tomó una decisión brutal pero efectiva:



para que el cinturón no salga volando, todo el camino a lo largo de la plataforma debe estar al mismo nivel. A este respecto, era necesario colocar piezas de madera debajo de los rodamientos para ajustar su altura. Pero esto no salvó de un mitin. Y nuevamente el cable vino al rescate:



Para controlar los motores se utilizó Arduino Uno, o más bien su copia china. Al final resultó que, el mini Arduino habría sido suficiente. No había suficiente potencia del arduino para los motores, por lo que se ordenó el MOTOR SHIELD L293D. Como fuente de alimentación, se usó la fuente de alimentación del viejo módem, de todo lo que tenía a mano, daba el voltaje más alto: 9V (los motores están diseñados para 5-12V). Para facilitar la conexión, la entrada se separó del módem, se soldaron 2 cables y todo esto se conectó al blindaje. Escudo montado en un arduino.



Inicialmente, se planeó usar un sistema de 2 ruedas para controlar el rotulador, como en las máquinas rodantes, pero, por velocidad de ejecución, la fijación se realizó inmediatamente en el servoaccionamiento. Resulta que los puntos se establecen no por la punta del rotulador, sino de lado. Está previsto volver a la idea inicial en la próxima versión de la impresora. El servo también está conectado al escudo.



Relleno de código


Para arduino, se escribió un código que recibe un comando de una PC a través del puerto serie en forma de una cadena de 9 caracteres. El primer carácter es el código de comando, seguido de 4 caracteres para las coordenadas X e Y. Al final del artículo encontrará un enlace al código en el lado de la PC.

Código para 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);
}

La aplicación en el lado de la PC le permite descargar una imagen, traducirla en blanco y negro y generar un conjunto de puntos.

El principio de generar puntos
- 256 int. N RGB(N,N,N). , «Num points» «fuction» . , , 0. :

  • X Y
  • 0, :

    1. 1

Así es como se ve la ventana de la aplicación:



resultó que si los motores no dejan la energía después de cada movimiento, se desplazan hacia atrás y, si se dejan, se calientan. Y el escudo se calienta aún más, por lo que el viejo refrigerador fue desenterrado y reparado sobre los microcircuitos. Toma energía directamente de la misma fuente de alimentación, para no ocupar los conectores en el escudo. Después de una prueba de dos horas, nada se quemó. También se agregó una caja para proteger la estructura.



Como no había una mesa para él, para que la hoja no se tambaleara al imprimir, se tomó una hoja de formato A3. La plataforma se coloca sobre la sábana y la presiona. Y para que toda la estructura no se deslice, se coloca una pesa o un frasco de mermelada. Imprime bastante lento, en promedio, tarda 0.7 segundos por punto. Y aquí está el resultado:



Conclusión


La impresora resultó ser lenta, no presentable, requirió mejoras, pero imprimió en el estilo correcto. Se ha comenzado y se han llegado a muchas conclusiones, tanto en diseño como en código, y si todavía tiene paciencia para la segunda versión de esta unidad, todo se tendrá en cuenta y se hará de manera más eficiente.

De los fondos gastados en él (aproximadamente):

  • 3 $ por agujas de tejer
  • $ 17 motores 2 piezas. (aunque podría tomar menos precisa)
  • 3 $ arduino Uno (pero suficiente para Nano)
  • $ 5.5 Rodamientos lineales 8 * 15 * 24 mm, 10 piezas (tomó 8 piezas)
  • $ 2.5 MOTOR SHIELD L293D (puede comprar 2 microcircuitos L293D por separado, y el servoaccionamiento funciona con arduino)
  • 2 $ Rodamientos convencionales 8 * 22 * ​​7 mm, 6 piezas.
  • $ 8 Soportes para guías de 8 mm, 8 piezas.
  • $ 4 Cinturón 20-GT2-6 (2m) + 2 rodillos
  • 2 $ Servo Sg90 9G
  • ~ $ 10 por un marco, pernos, clavos, alambre (aquí puede ahorrar dinero si ya tiene mucho en casa)

Gratis: ventilador, fuente de alimentación.

Total alrededor de 57 $, aunque se puede hacer incluso más barato.

Código para PC.

Video corto del funcionamiento de la impresora:

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


All Articles