Impressora Dotwork barata caseira



Às vezes a luz do inventor acende em mim e fico sentado por horas e soldo / vi alguma coisa. Isso aconteceu desta vez. Tive a ideia de criar minha própria impressora. O tema da criação de uma impressora 3D já foi superado e é financeiramente caro. Depois de pensar um pouco, decidi fazer uma versão econômica da impressora, que poderia desenhar com um lápis / caneta / caneta de feltro. E relembrando minhas tentativas de desenhar algo no estilo Dotwork, optei por uma impressora que automatize esse processo.No total, os seguintes requisitos de impressora foram gerados:

  • barato
  • ferramentas improvisadas são usadas para desenhar
  • o resultado são desenhos no estilo de Dotwork

E quando se descobriu que esse projeto pode ser promovido como um trabalho de conclusão de curso, foi finalmente decidido: ser uma impressora. Para tornar o design não muito grande, o tamanho da área imprimível foi considerado como A5.

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

Moldura


O processo começou procurando uma estrutura para o básico. A escolha recaiu sobre o H-bot, pois é fácil de implementar, barato e, ao contrário do CoreXY, não é necessário cortar o cinto. Como pode ser visto no diagrama, você precisará de 2 motores de passo, 4 eixos e 1 correia.




Para a base, foram utilizadas barras com uma seção de 20 * 40. Obviamente, é melhor usar madeira compensada e fazer os furos necessários, para que o design seja mais uniforme e apresentável, mas devido ao fato de ser mais difícil transportar e processar um pedaço de madeira compensada, as barras foram selecionadas.

Suportes e rolamentos ferroviários foram comprados na China. Eles são projetados para guias com um diâmetro de 8 mm. Após uma breve pesquisa, decidiu-se fazer o eixo das agulhas de tricô. Barato, apenas o comprimento certo, fácil de cortar. Além disso, como se viu, as ranhuras são bem extrudadas nas agulhas de tricô com rolamentos. Essa propriedade permitiu que a estrutura se movesse livremente ao longo das guias, apesar da falta de paralelismo.

Como este ainda é um protótipo, os rolamentos lineares foram fixados com arame. Forte, confiável e, se houver, você pode remover rapidamente.



O mecanismo foi adquirido em incrementos de 0,9 graus para máxima precisão. Quando eu coloquei os motores, um novo problema foi descoberto: as tampas dos motores não encaixavam no cinto - o escorregamento ocorreu a toda velocidade. As tentativas iniciais de remoção foram malsucedidas, o aquecimento / resfriamento não ajudou de forma alguma, por isso uma decisão brutal, mas eficaz, foi tomada: para



que a correia não voe, todo o caminho ao longo da plataforma deve estar no mesmo nível. Nesse sentido, foi necessário colocar pedaços de madeira sob os mancais para ajustar sua altura. Mas isso não salvou de um comício do cinturão. E novamente o fio veio em socorro:



Para controlar os motores foi utilizado o Arduino Uno, ou melhor, sua cópia chinesa. Como se viu, o mini Arduino teria sido suficiente. Não havia energia suficiente do arduino para os motores e, portanto, o MOTOR SHIELD L293D foi encomendado. Como fonte de alimentação, foi usada a fonte de alimentação do modem antigo, de tudo o que encontrava à mão que dava a tensão mais alta - 9V (os motores são projetados para 5-12V). Para facilitar a conexão, a entrada foi interrompida pelo modem, dois fios foram soldados a ele e tudo isso foi conectado à blindagem. Escudo montado em um arduino.



Inicialmente, foi planejado o uso de um sistema de 2 rodas para controlar a caneta de feltro, como nas máquinas de laminação, mas, para velocidade de execução, a fixação foi feita imediatamente no servoconversor. Acontece que os pontos são definidos não pela ponta da caneta, mas pelo lado. Está planejado retornar à ideia inicial na próxima versão da impressora. O servo também está conectado à blindagem.



Preenchimento de código


Para o arduino, foi escrito um código que recebe um comando de um PC via porta serial na forma de uma seqüência de 9 caracteres. O primeiro caractere é o código de comando, seguido por 4 caracteres para as coordenadas X e Y. Um link para o código no lado do PC estará no final do artigo.

Code for 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);
}

O aplicativo no lado do PC permite fazer upload de uma imagem, convertê-la em preto e branco e gerar um conjunto de pontos.

O princípio de gerar pontos
- 256 int. N RGB(N,N,N). , «Num points» «fuction» . , , 0. :

  • X Y
  • 0, :

    1. 1

É assim que a janela do aplicativo se parece:



se os motores não deixarem energia após cada movimento, eles voltarão e, se forem deixados, ficarão quentes. E o escudo esquenta ainda mais, então o velho refrigerador foi desenterrado e fixado sobre os microcircuitos. Ele obtém energia diretamente da mesma fonte, para não ocupar os conectores na blindagem. Após um teste de duas horas, nada se esgotou. Uma caixa também foi adicionada para proteger a estrutura.



Como não havia mesa para ele, para que a folha não cambaleie durante a impressão, uma folha de formato A3 foi tirada. A plataforma fica na folha e pressiona. E para que toda a estrutura não escorregue, um haltere ou um pote de geléia é colocado sobre ela. Imprime bem devagar, em média, leva 0,7 segundos para um ponto. E aqui está a saída:



Conclusão


A impressora acabou sendo lenta, não apresentável, exigindo melhorias, mas imprimindo no estilo certo. O começo foi feito e muitas conclusões foram feitas, tanto no design quanto no código, e se você ainda tiver paciência para a segunda versão desta unidade, tudo será levado em consideração e feito melhor.

Dos fundos gastos (aproximadamente):

  • 3 $ para agulhas de tricô
  • $ 17 motores 2pcs. (embora você possa ter menos precisão)
  • 3 $ arduino Uno (mas o suficiente para o Nano)
  • $ 5.5 Rolamentos lineares 8 * 15 * 24mm, 10 peças. (levou 8pcs.)
  • $ 2.5 MOTOR SHIELD L293D (você pode comprar 2 microcircuitos L293D separadamente e o servoconversor é alimentado por arduino)
  • 2 $ Rolamentos convencionais 8 * 22 * ​​7mm, 6pcs.
  • Montagens de $ 8 para guias 8mm, 8pcs.
  • $ 4 Correia 20-GT2-6 (2m) + 2 rolos
  • 2 $ Servo Sg90 9G
  • ~ $ 10 por uma armação, ferrolhos, pregos, fios (aqui você pode economizar dinheiro se já tiver muito em casa)

Livre: ventilador, fonte de alimentação.

Total de cerca de 57 $, embora isso possa ser feito ainda mais barato.

Código para PC.

Vídeo curto da operação da impressora:

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


All Articles