PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA ENGENHARIA DE COMPUTAÇÂO Projeto Integrado CURITIBA Junho de 2009
Leonardo Goslar Otto Projeto Integrado Plotter Vertical Documentação sobre o projeto integrado Plotter Vertical, desenvolvido no 6º Período do Curso de Engenharia de Computação da Pontifícia Universidade Católica do Paraná. Um plotter, fixo em uma superfície vertical por dois pontos, controlado por um micro controlador e um computador com interface serial. Orientador: Prof. Afonso Ferreira Miguel CURITIBA Junho de 2009 2
Conteúdo Introdução... 4 Abstract... 5 Materiais e Métodos... 6 Maquete... 6 Implementação... 8 Componentes Mecânicos... 9 Componentes Eletrônicos... 9 Componentes de Software... 10 Aquisição do Material... 10 Métodos... 11 Circuitos... 11 Micro Controlador... 12 Software... 14 Resultados... 16 Conclusão... 17 Anexo : Imagens Projeto... 18 3
Introdução O objetivo deste projeto integrado era utilizar os conhecimentos adquiridos nas disciplinas do curso de engenharia de computação e realizar um projeto escolhido pelos participantes para apresentação, desenvolvimento estudantil, pessoal e profissional. A escolha deste projeto, Plotter Vertical, veio da boa impressão que tive ao ver alguns vídeos de projetos com algumas características parecidas na internet 1. Seria um projeto desafiador e razoavelmente complexo. Envolveria varias disciplinas do curso e desenvolveria conhecimentos sobre micro controladores, motores elétricos e interfaces de comunicação. Atingindo assim os objetivos do projeto integrado. Um plotter, ou lutter, é uma impressora destinada a imprimir desenhos em grandes dimensões com elevada qualidade e rigor. A maioria dos plotter tem sua disposição na forma horizontal. No ano de 2008 uma empresa brasileira chamada Audaces 2 lançou o primeiro plotter vertical do mundo em parceria com a Hp 3 (Hewlett-Packard). Diferentemente da Audaces, o Plotter vertical baseado em dois pontos fixos permite a impressão em superfícies de quase qualquer dimensão. Como desvantagem perde precisão e não possui velocidade. 1 http://www.youtube.com/watch?v=vmb14m78cwu http://www.scratchdisk.com/work/hektor/ http://www.youtube.com/watch?v=c-ciabohwda 2 http://www.audaces.com 3 http://welcome.hp.com/country/br/pt/welcome.html 4
Abstract The objective of this integrated project was to use the knowledge acquired in the course of engineering disciplines of computer and carry out a project chosen by the participants for presentation, student development, personal and professional. The latter project, Vertical Plotter, has the impression that I had to see some videos of some projects with similar characteristics on the Internet 4. It would be a fairly complex and challenging project. Involve various disciplines of the course and develop knowledge about micro controllers, motors and electrical interfaces for communication. Thus reaching the objectives of the integrated project. A plotter, or Lutter is a printer to print designs on large, high quality and accuracy. Most plotter is available in its horizontal form. In the year 2008 a Brazilian company called Audaces 5 launched the first plotter vertical in the world in partnership with HP 6 (Hewlett Packard). Unlike the boldness, the vertical plotter based on two fixed points allows for printing on surfaces of almost any size. The disadvantage are lost accuracy and speed. Palavras Chave: Projeto Integrado, Engenharia de Computação, Plotter, Vertical, Impressão, Microprocessadores. 4 http://www.youtube.com/watch?v=vmb14m78cwu http://www.scratchdisk.com/work/hektor/ http://www.youtube.com/watch?v=c-ciabohwda 5 http://www.audaces.com 6 http://www.hp.com 5
Materiais e Métodos Maquete Primeiramente para o projeto realizei uma modelagem da maquete em um software de modelagem 3d chamado SolidWorks 7. Utilizei a versão 2008 SP3 deste software. Esta modelagem serviu para ter uma idéia conceitual do projeto e de como ele iria ficar. Figura 1: Modelagem conceitual da parte mecânica do projeto 7 http://www.solidworks.com/ 6
Figura 2: Visão superior As medidas utilizadas são as medidas reais utilizadas de referencia para o projeto. 7
Na Figura 3 temos um esboço de como o Plotter Vertical deve funcionar. Com o retângulo sendo o plotter, A letra P sendo desenhada e o fundo sendo uma lousa por exemplo. As duas extremidades estão fixas na lousa. Figura 3: Ideia de Implementação Implementação Apesar de toda a modelagem inicial, por causa do intervalo de implementação, acabou-se fazendo a maquete, na maquetaria da PUCPR, utilizando madeira. A idéia inicial era fazer todo o plotter em algum material plástico. Mesmo assim tentei manter a mesma idéia inicial. 8
Componentes Mecânicos Foram utilizados 3 motores de passo para este projeto. Dois destes com as seguintes configurações: Tensão: 4 Volts Corrente: 1,6 Amperes Impedancia: 2,5 Ohms Passos: 1,8 Graus Indutancia: 3,5 mh Torque Inicial: 6,0 Kg/cm Torque: 0,7 Kg/cm Peso: 0,65 kg O terceiro com a seguinte configuração. Fabricante : Airpax Modelo: 57L048B Tensão: Entre 5 e 12 Volts Passos: 1,8 Graus Torque: 11.3 N/cm Componentes Eletrônicos Fonte 5 Volts 3 Amperes Conector Fonte Placa perfurada Oito transistores de alta potencia Tip 121 Oito diodos 1n4007 Seis Chaves Tact Micro Controlador Microship 16f876A Socket torneado 28 pinos Quatro Capacitores Eletrolíticos 1uA Dois Capacitores Eletrolíticos de 470uF Dois Capacitores Ceramicos de 100nF Oito Resistores de 470 Ohms Capacitor 2,2nf Resistor 5k Ohms Conector Serial Fêmea Cabo Serial Placa de fenolite para circuito impresso Transparência para transferir os circuitos Gravador de microcontrolador Pic 9
Componentes de Software A Linguagem de Programação Utilizada foi a linguagem Java 8. Para ambiente de programação foi utilizado o ambiente Eclipse 9. Utilizei a Biblioteca Batik Svg Toolkit 10 para trabalhar com gráficos no formato svg. Utilizei o software do Peter Selinger chamado Potrace 11 para transformações de gráficos de Bitmap para SVG. Para comunicação utilizando a interface serial utilizei a biblioteca RXTX 12. Para parser de XML utilizei a biblioteca SAX 13, já inclusa no biblioteca padrão do Java. Para verificação de gráficos svg utilizei o software livre Inkscape 14. Para confecção de placas de circuito impresso foi utilizado o software da Cadsoft chamado Eagle 15. Para programação do microcontrolar foi utilizado o ambiente de programação da Microchip 16 MPLAB IDE Versão 8.20. Aquisição do Material Todos os componentes eletrônicos podem ser encontrados facilmente em lojas especializadas. Todos os softwares, excluindo o Solid Works, pode ser encontrados facilmente na internet e são de uso livre. Como alternativa para uma possível modelagem utilizando software poderia ser utilizado os softwares livres Blender 17 ou ainda QCad 18. 8 http://pt.wikipedia.org/wiki/java_(linguagem_de_programação) 9 http://www.eclipse.org/ 10 http://xmlgraphics.apache.org/batik/ 11 http://potrace.sourceforge.net/ 12 http://rxtx.qbang.org/wiki/index.php/main_page 13 http://www.saxproject.org/ 14 http://www.inkscape.org/ 15 http://www.cadsoft.de/ 16 http://www.microchip.com/ 17 http://www.blender.org/ 18 http://www.ribbonsoft.com/qcad.html 10
Métodos Circuitos Primeiramente foram implementados 2 drivers para os motores de Passo. Procurando pela internet verifiquei que muitos usuário usavam o Ci ULN2003 19 como driver de potência para motores de passo. Acabei não utilizando este CI pois ele não suportava a quantidade necessária de corrente para os motores que eu teria que utilizar. Conversando como professor Afonso da disciplina de Microprocessadores, ele me indicou um esquema para implementar um Driver de alta potência utilizando Transistores Darlington. O esquema implementado foi o da Figura 4. Figura 4 : Driver para Motor de Passo No lugar dos diodos 1n4004 foram utilizados diodos 1n4007. Na figura 5 temos o esquema de montagem Figura 5 : Esquema da placa do driver 19 http://www.datasheetcatalog.net/pt/datasheets_pdf/u/l/n/2/uln2003.shtml 11
Para o esquema da figura 5 utilizei circuito impresso na placa de fenolite. O esquema da placa principal utilizada foi o da Figura 6. Figura 6: Esquema montagem placa principal Para o esquema da figura 5 acabei utilizando placa perfurada depois de ter construído um circuito de forma incorreta utilizando circuito impresso. Micro Controlador A programação do Micro Controlador é bem simples e segue o esquema da Figura 7. Figura 7 : Esquema de Programação Micro Controlador 12
Foi criado um esquema de comunicação binaria para enviar os movimentos para o micro controlador. Figura 8: Esquema de Comunicação Os tipos de mensagem são 3: Movimento para frente ou para trás Abaixar a caneta Levantar a caneta Para o movimento para frente ou para trás segue o seguinte formato. m100,100 Com m sendo o identificador do movimento e 100,100 o movimento em passos do motor. Em hexa, com caracteres ascii delimitados por aspas, esta mensagem é definida como: m p 0x000x64 n 0x000x64 O primeiro caractere é o identificador de movimento, o segundo indica se o numero é positivo ou negativo(ou seja passos para frente ou para trás), após isso temos o primeiro byte hexadecimal 0x00 que é usado para a maior ordem do numero de passos e o seguinte 0x64 indica a ordem mais baixa do numero. Foi usado 2 bytes para indicar a posição pois assim teríamos mais opções de movimento (2 contra 2 opções), para uma única mensagem. A mensagem de abaixar caneta e levantar caneta é bem simples. E para levantar a caneta. a l 13
Software O software foi a parte mais complexa para implementar. Principalmente conhecer o formato de imagens em vetorial, pois não poderíamos utilizar o formato bitmap já que não iríamos imprimir ponto a ponto e sim desenhar todas as linha no desenho. O software utiliza programas para converter imagens em bitmap para vetoriais, após isso extrai do desenho formas gráficas, após isso converte estas formas para linhas. Com as linhas o programa calcula o posicionamento que o plotter deve percorrer para desenhar a linha.após fazer todos estes calculo o programa simplesmente envia para o micro controlador as posições para ele realizar. Foi utilizado o computador para realizar a tarefa de conversão pois exigia um grande processamento o qual o micro processador não fornece. Conversão de Raster para Vetorial Imagem raster 20 (ou bitmap) é um tipo de imagem que contem a descrição de cada pixel, em oposição a gráfico vetoriais. Utilizamos este tipo de entrada normalmente para imprimir determinada coisa, pois a impressora trabalho desenhando pixel por pixel. Em contra partida, o vertical plotter não desenha ponto por ponto e sim linhas, fazendo com que imagens do tipo raster não sejam suportadas como entrada. Para contornar este problema utilizei um software chamado potrace que converte imagens do tipo raster para imagens em formato vetorial, neste caso svg. Extração de dados Da imagem Vetorial A imagem vetorial do tipo svg são arquivos XML 21 com a descrição de todas as linhas do desenho, junto com curvas de Bézier e outros tipos de formatos vetorias. Para fazer a extração deste dados tive que utilizar a biblioteca Batik para fazer a extração dos dados puros. Obtive alguns problemas na extração dos dados utilizando esta biblioteca, e acabei substituindo ela por a biblioteca SAX para a extração de dados. Parser dos dados extraídos Depois de ter os dados extraídos pela biblioteca SAX utilizei novamente a biblioteca Batik para obter apenas a informação pura da linhas, curvas, e pontos da imagem. Tive também que encontrar um algoritmo para desenhar curvas de Bézier pois o plotter so entende o movimento de linhas. Depois de encontrar o algoritmo converti todas as curvas de Bézier para linhas simples. 20 http://pt.wikipedia.org/wiki/raster 21 http://www.w3.org/xml/ 14
Utilizei também a classe Java AffineTtransform 22 para fazer corretamente as transformações de escala e rotação que o formato svg pode exigir. Das linhas para o Movimento em Passos O plotter vertical não funciona com um posicionamento euclidiano, ele usa outro tipo de posicionamento. Figura 9: Posicionamento no Plotter Como se pode observar na Figura 9, o posicionamento do plotter é baseado no tamanho da linha a e no tamanho da linha b para uma determinada distância D. As formulas para estas posições são as seguintes. E suas taxas de variação 2 2 2 2 2 1 2 2 2 22 http://java.sun.com/j2se/1.4.2/docs/api/java/awt/geom/affinetransform.html 15
Resultados A data de inicio da implementação do projeto até a entrega, e o fato de que estava implementando o projeto sozinho, acabaram se somando para a não conclusão total do projeto. As partes incompletas foram a caneta de desenho era fixa e não tinha movimento e o software de controle estava com alguns problemas de implementação. Obtive alguns problemas problemas em algumas escolhas de geração de clock para o micro controlador que por causa de ruídos acabou não funcionando a contento. Causando o bloqueio da interface serial como o computador em um primeiro momento, após a substituição do gerador de clock tudo que dependia de clock funcionou a contento, principalmente a interface serial. Tive alguns problemas com chaves tact no projeto, até que procurando pela internet descobri que a entrada deveria ser ligada na forma de Pull up 23 para evitar que o controlador se perca caso exista variação na tensão. A utilização de madeira para a estrutura se mostrou super dimensionada, mal estruturada e muito pesada. Isso acabou afetando os motores que não conseguiram erguer a toda a estrutura. Em todo o projeto sempre obtive ajuda de todos os monitores de laboratórios e maquetaria da pucpr, e este é um ponto que gostaria de deixar destacado. O projeto foi todo definido e se utilizasse mais tempos e um pouco da metodologia de projeto (XP 24 ), em que se define varias interações pequenas de projeto acredito que chegaria a um resultado mais proveitoso. 23 http://www.seattlerobotics.org/encoder/mar97/basics.html 24 http://pt.wikipedia.org/wiki/programação_extrema 16
Conclusão Implementar este plotter, mesmo com todos os problemas encontrados, foi gratificante. Acredito que consegui chegar perto dos objetivos pretendidos, utilizei muitos assuntos aprendidos na faculdade, assim como assuntos não aprendidos. Obtive conhecimentos em varias áreas alem do campo da informática em todo o processo. E passar por todo este processo me tornou um profissional melhor. 17
Anexo : Imagens Projeto 18
19
20