Introduction: MaxDraw - a Plotter XY Built in CNC.

About: Architect, Brazilian, father of two beautiful girls, lover of comics, science fiction, board games, elements that inspire some of my creations.

This project came from my interest in AxiDraw, produced by the team of Evil Mad Scientist Laboratories, and the question of friends if it would be possible to produce a plotter like that from scratch. First, I did not start from scratch. I knew two great projects that preceded this, the 4xidraw, from user Misan, which inspired me a lot, and the Cartesio, for having a characteristic that interested me, the possibility of drawing on an A3 sheet. Learning what was best in each project, I put as a goal the intention to produce the structure totally in CNC, or almost all, as we will see the front. What will be needed:

Este projeto surgiu do meu interesse pela AxiDraw, produzida pela equipe do Evil Mad Scientist Laboratories, e da pergunta de amigos se seria possível produzir uma plotter como aquela do zero. Eu não comecei do zero primeiramente. Conheci dois ótimos projetos que antecederam este, o 4xidraw, do usuário Misan, que me inspirou muito, e o Cartesio, por ter uma característica que me interessava muito, a possibilidade de desenhar em uma folha A3. Aprendendo o que tinha de melhor em cada um dos projeto, coloquei como meta a intenção de produzir a estrutura totalmente em CNC, ou quase toda, como vamos ver a frente. O que vai ser necessário:

  • 4 self tapping screws m4x16
  • 2 screws m3x16mm and nuts
  • 10 screws m3x12mm and nuts
  • 4 screws m3x40mm and nuts
  • 12 self tapping screws m1.5x6mm
  • 8 LM8UU linear bearing
  • 2 linear axes of 8mm x 500mm
  • 2 linear axes of 8mm x 400mm
  • 2 circular bars of 6mmx110mm
  • 2 threaded bars 10mm x 540mm and 8 nuts
  • Polyethylene / MDF 15mm
  • Polyethylene / MDF / Acrylic 6mm
  • Polyethylene / MDF / Acrylic 3mm
  • Zip fasteners
  • 2 step motors nema17 (I use Minebea 17PM-k047-02v, 2kgf/cm)
  • 1 micro servo sg90
  • Arduino Uno
  • CNC Shield
  • 2 Step Drives Pololu
  • Wire Core 4 Lead Cable
  • 12v 2A power supply
  • GT2 Belt (around 2m)
  • 2 pulleys 20 teeth GT2
  • 5 x 20 teeth GT2 synchronous wheel without pulley
  • Tube with 3mm internal diameter and 7.5mm length (or print one, stl included)
  • pens!
  • 4 parafusos m4x16 rosca soberba (Self tapping)
  • 2 parafusos m3x16mm
  • 10 parafusos m3x12mm
  • 4 parafusos m3x40mm
  • 12 parafusos m1.5x6mm rosca soberba
  • 8 rolamentos LM8UU
  • 2 eixos lineares de 8mm de diâmetro e 500mm de comprimento
  • 2 eixos lineares de 8mm de diâmetro e 400mm de comprimento
  • 2 barras roscadas de 10mm de diâmetro e 540mm de comprimento e 8 porcas
  • 2 barras circulares de 6mmx110mm
  • Polietileno/MDF 15mm
  • Polietileno/MDF/Acrílico de 6mm
  • Acrílico 3mm
  • lacres zip
  • 2 motores de passo nema17 (eu utilizei o Minebea 17PM-k047-02v, 2kgf/cm)
  • 1 micro servo sg90
  • Arduino Uno
  • CNC Shield
  • 2 Drives Pololu
  • cabo manga 4 vias
  • Fonte de alimentação 12v 2A
  • Correia GT2
  • 2 polias 20 dentes GT2
  • 5 polias lisas GT2 diâmetro equivalente a 20 dentes
  • tubo com 3mm de diametro interno e 7.5mm de comprimento (ou imprimir, STL incluso!)
  • canetas!

Step 1: XY Structure

The machine is formed by some "modules": the XY structure; The pen holder; And the CPU, where will be the arduino and components

A maquina é formada por alguns “módulos”: a estrutura XY; o suporte da caneta; e a CPU, onde ficará o Arduino e componentes.

Start with the XY structure. There are components of the structure in the three DXF files available. Cut the parts into the material that I find most appropriate for their use, I preferred polyethylene and acrylic. The sides of the X axis (see photo) receive the linear axes, the bearings first and then the threaded rods are added. After that, add the engine supports, securing them with the M1.5 screws. The motors can also be positioned, as well as their respective 20-tooth pulleys. The Y axis only receives linear axes and bearings. A reminder, before mounting, preferably drill the fifth-pulley support with a 2.5mm drill bit. Everything else that connects to it will only be added later.

Comece pela estrutura XY. Existem componentes da mesma nos três arquivos DXF disponibilizados. Corte as partes no material que achar mais adequado para sua utilização, eu dei preferência pelo polietileno e pelo acrílico. As laterais do eixo X (ver foto) recebem primeiro os eixos lineares, os rolamentos e só então se adicionam as barras roscadas. Depois disto, adicione os suportes dos motores, fixando-os com os parafusos M1.5 . Os motores também podem ser posicionados, assim com as respectivas polias de 20 dentes. As laterais do eixo Y só recebem os eixos lineares e os rolamentos. Um lembrete, antes de montar, preferencialmente, fure a peça que funciona como suporte para a quinta polia com uma broca de 2.5mm. Todo o resto que se conecta a ele só vamos adicionar posteriormente.

The next step is to join the two axes, using the central support of the pulleys. Start by installing the 40mm screws, spacers and flat pulleys. Secure the assembly with one nut on each bolt. Once done, position the acrylic spacers (they were inserted into the design to improve the stiffness of the center support). Ideally, with this part assembled, it is positioned under the X-axis, align the bearings, then position the Y-axis, adjust the bearing position and then come with the top of the center bracket, securing the screws with their Respective nuts.

O próximo passo é juntar os dois eixos, usando o suporte central das polias. Comece instalando os parafusos de 40mm, os espaçadores e as polias lisas. Fixe o conjunto com uma porca em cada parafuso. Feito isso, posicione os espaçadores de acrílico (eles foram inseridos no projeto para melhorar a rigidez do suporte central). O ideal, com esta parte montada, é posiciona-lo por baixo do eixo X, alinhar os rolamentos, para então posicionar o eixo Y, ajustar a posição dos rolamento e então vir com a parte superior do suporte central, fixando os parafusos com suas respectivas porcas.

After the assembled frame, your next step is to position and secure the belt. I recommend starting from the side where the belt lock is located on the Y-axis. To pass the belt through the center bracket, you can use a paper clip unfolded as a hook, and progressively go all the way through until you have the two ends together. Be sure to keep the belt properly tensioned, preventing it from slipping during the drive of the motors, then secure it with the lock.

Depois da estrutura montada, seu próximo passo é posicionar e fixar as correias. Recomendo começar pelo lado onde se encontra a trava da correia no eixo Y. Para passar a correia pelo suporte central, pode usar um clip de papel desdobrado como gancho, e progressivamente ir percorrendo todo o seu percurso, até reunir as duas pontas. Certifique-se de manter a correia com tensão adequada, evitando que ela escorregue durante o acionamento dos motores, então prenda-a com a trava.

Step 2: Pen Holder

The pen holder has a simple assembly, and should only take care of a few points. Install the vertical axes first in their bracket, and center them in the part. The drawing in this article presents two recess points in this support, where cuts must be made after the installation of the same in the part where the servo motor is fixed. But why is it done this way? Well, I designed it this way to maintain the perfect alignment of the shaft with the bracket itself, and thus prevent it from grabbing at some point in the mechanism.

O suporte da caneta tem montagem simples, devendo tomar atenção somente a alguns pontos. Instale primeiro os eixos verticais em seu suporte, e centralize-os na peça. O desenho anexo neste artigo apresenta dois pontos de rebaixo neste suporte, onde devem ser feito os cortes após a instalação do mesmo na peça onde é fixado o servo motor. Mas por que é feito desta maneira? Bom, projetei deste jeito para manter o perfeito alinhamento do eixo com o suporte propriamente, e assim evitar que ele agarrasse em algum ponto do mecanismo.

The servo motor must be screwed in the location shown in the first picture. All of the following should preferably be done after assembly of the electronics and installation of the GRLB. With Universal Gcode Sender attached, send the m3S100 command. The position that the servo will stop will be at the highest point of the pen holder, according to the settings of the Inkscape plugin. Position the lever on the servo shaft and secure it. Once this is done, you can attach the part to the Y-axis, in the same part where the pulley is fixed.

O servo motor deve ser parafusado no local indicado na primeira foto. Toda a parte a seguir deve ser feita preferencialmente após a montagem da eletrônica e a instalação do GRLB. Com Universal Gcode Sender conectado, envie o comando m3S100. A posição que o servo parar será a do ponto mais alto do suporte de caneta, de acordo com as configurações do plugin do Inkscape. Posicione a alavanca no eixo do servo e fixe-a. Feito isso, você pode prender a peça ao eixo Y, na mesma peça onde está fixada a polia.

The moving part of the pen holder is composed of two parts. First mount the place where the pen is actually attached, joining the acrylic piece with the other two pieces of 15mm. One of these pieces has a groove, where a 3mm nut will be positioned. Before inserting the nut, drill the part with a 1/8 drill bit, so that the hole is located in the center of this groove, so that a m3x16mm screw can be positioned and serves as a lock for the pen. This fix the 15mm pieces with m1.5x6mm screws. After that, position the part according to the photo on the large rectangular part, using screws m3x12mm.

A parte móvel do suporte de canetas é composta de duas partes. Primeiro monte o local onde a caneta é fixada de fato, unindo a peça de acrílico com as outras duas peças de 15mm. Uma destas peças possui um sulco, onde será posicionado uma porca de 3mm. Antes de colocar a porca, fure a peça com uma broca de 1/8, de maneira que o furo fique localizado no centro deste sulco, para que um parafuso m3x16mm possa ser posicionado e sirva de trava para a caneta. Feito isso fixe as peças de 15mm com parafusos m1.5x6mm. Após isso, posicione a peça de acordo com a foto na grande peça retangular, utilizando parafusos m3x12mm.

Using 2 m3x12mm screws, attach the first guide to the axes on the large rectangular piece, position it on the vertical axis of the pen holder, and then engage and secure the second guide. Its bracket is assembled and ready for use.

Utilizando 2 parafusos m3x12mm, fixe a primeira guia para os eixos na grande peça retangular, posicione a mesma no eixo vertical do suporte de canetas, e então encaixe e fixe a segunda guia. Seu suporte está montado e pronto para ser usado.

Step 3: CPU Arduino

Before you install the Arduino + CNC Shield in your box, you need to install a modified version of the GRBL firmware, which allows you to control the servo motor from the Z + pin on the CNC Shield. The same was created by the user Robottini, and the most current version can be found at https://github.com/robottini/grbl-servo. The same is also available here for download. You need to unzip the grlbUpload.zip file into the Arduino IDE project directory, while the grbl-servo-master.zip file inside the IDE's libraries folder. Done that, it just sends it to the board.

Antes de colocar o Arduino + CNC Shield na sua caixa, é necessário instalar uma versão modificada do firmware GRBL, que permite o mesmo controlar o servo motor, a partir do pino Z+ na CNC Shield. A mesma foi criada pelo usuário Robottini, e a versão mais atual pode ser encontrada no link https://github.com/robottini/grbl-servo . O mesmo também está disponível aqui para download. É necessário descompactar o arquivo grlbUpload.zip dentro do diretório de projetos da IDE Arduino, enquanto o arquivo grbl-servo-master.zip dentro da pasta de bibliotecas da IDE. Feito isso, é só envia-lo a placa.

To make sure everything worked, open the Universal Gcode Sender and open the connection to the card, checking the correct port for connection and if the Baud is in 115200. If everything is ok, you will see the message grbl 0.9i [ $ 'For help].

Para ter certeza de que tudo funcionou, abra o Universal Gcode Sender e mande abrir a conexão com a placa, verificando a porta correta para conexão e se o Baud está em 115200. Se tudo estiver ok, você verá a mensagem grbl 0.9i ['$' for help] .

Before we continue, we will make a small mandatory adjustment, and others that are left to each user. Mandatory, we need to adjust the steps / mm on the X and Y axes. For the current settings, type $$ in the commands section of the Universal Gcode Sender, and check the parameters values $ 100 and $ 101. If you are using a Nema 17 motor with a pitch of 1.8 degrees, the correct value would be 80. To configure it, just type in the command box $ 100 = 80 and enter. Do the same thing for the $ 101 parameter.

Antes de continuar, vamos fazer um pequeno ajuste obrigatório, e outros que ficam a cargo de cada usuário. Obrigatoriamente, precisamos ajustar os passos/mm nos eixos X e Y. Para saber as configurações atuais, digite $$ na aba commands no Universal Gcode Sender, e verifique os valores dos parâmetros $100 e $101. Se você estiver utilizando um motor Nema 17 com passo de 1.8 graus, o valor correto seria de 80. Para configura-lo, basta digitar na caixa command $100=80 e enter. Faça a mesma coisa para o parâmetro $101.

You can also set the maximum speed that plotter will draw by changing the parameters $ 110 and $ 111 (by default it is set to 500mm / min). I performed tests up to 2000mm / min, but there was a loss of step in some moments, but I got good results in 1000mm / min. If you want to change, the process is the same, for example: to change the speed on the X axis type $ 110 = 1000 and Enter.

Você também pode configurar a velocidade máxima que plotter ira desenhar, alterando os parâmetros $110 e $111 (por padrão ele é configurado com 500mm/min). Realizei testes até 2000mm/min, mas houve perda de passo em alguns momentos, mas obtive bons resultados em 1000mm/min. Caso deseje alterar, o processo é o mesmo, por exemplo: para alterar a velocidade no eixo X digite $110=1000 e Enter.

If you change the default GRBL speed, I also recommend changing the acceleration by changing the parameters $ 120 and $ 121. I usually use 10% of the configured speed.

Caso você altere a velocidade padrão do GRBL, recomento também alterar a aceleração, alterando os parâmetros $120 e $121. Eu normalmente utilizo 10% da velocidade configurada.

Once all set up, properly connect the motors to their respective positions on the plate, both the step and the servo. The photo indicates the position of each. The source can be connected directly to the CNC Shield, or you can use a plug, depending on the source you purchase.

Uma vez tudo configurado, conecte adequadamente os motores em suas respectivas posições na placa, tanto os de passo quanto o servo. A foto indica a posição de cada um. A fonte pode ser ligada diretamente na CNC Shield, ou pode utilizar um plug, dependendo da fonte que adquirir.

With all wiring connected, close the box by snapping the parts into place and screwing in the required points and securing it to the X-axis.

Com a fiação toda conectada, feche a caixa, encaixando as peças no lugar e aparafusando nos pontos necessários e fixando-a no eixo X.

Step 4: Testing

To use the plotter, you will need a vector drawing in Gcode format. You can create it from Inkscape, and export it using a modified version of the Turnkey Laser Plugin, made by the Misan user. You can download it here: https://github.com/misan/laser-gcode-exporter-inkscape-plugin , the instructions for your installation are also in the link.

Para utilizar a plotter, você precisara de um desenho vetorial no formato Gcode. Você pode cria-lo a partir do Inkscape, e exporta-lo utilizando uma versão modificada do Plugin Turnkey Laser, feita pelo usuário Misan. Você pode baixa-la aqui: https://github.com/misan/laser-gcode-exporter-inkscape-plugin , as instruções para a sua instalação também estão no link.

Once the drawing is exported, connect the plotter to the Universal Gcode Sender and use the File Mode tab to send the drawing. From there, just have fun :-). We have a video showing the machine in action, so with some drawings I made with it.

  • Uma vez exportado o desenho, conecte a plotter ao Universal Gcode Sender e utilizar a aba File Mode para enviar o desenho. A partir dai, é só se divertir :-) . Temos um vídeo mostrando a maquina em ação, assim com alguns desenhos que produzi com a mesma.

Well, I hope you enjoy the project, and have fun with the construction of the project as I also had fun (there were several versions and modifications throughout the development process). To the next!

Bom, espero que gostem do projeto, e se divirtam com a construção do projeto como eu também me diverti (foram várias versões e modificações ao longo do processo de desenvolvimento) . Até a próxima!

Erivelton Muniz.