Você está na página 1de 36

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

DEPARTAMENTOS ACADÊMICOS DE INFORMÁTICA E ELETRÔNICA


CURSO DE ENGENHARIA DE COMPUTAÇÃO

ANDRÉ GABRIEL CASSIMIRO


LUISA BONIN DE OLIVEIRA

Plotter Vertical

RELATÓRIO DE PROJETO DE OFICINA DE INTEGRAÇÃO II

CURITIBA
2014
1

ANDRÉ GABRIEL CASSIMIRO


LUISA BONIN DE OLIVEIRA

Plotter Vertical

Relatório de Projeto apresentado à Disciplina de


Oficina de Integração II, do Curso Superior de
Engenharia de Computação dos Departamentos
Acadêmicos de Informática e de Eletrônica da
Universidade Tecnológica Federal do Paraná.

Prof. auxiliadora: Elisabete Nakoneczny Moraes


do Departamento Acadêmico de Eletrotécnica.

CURITIBA
2014
2

Agradecimentos
Sinceros agradecimentos aos amigos André Augusto Kaviatkovski e Diego Wes-
ley Braga pelas contribuições na primeira etapa deste relatório.
3

Resumo
CASSIMIRO, ANDRÉ; BONIN, LUISA. PLOTTER VERTICAL. Relatório de
Projeto de Oficina de Integração II – Curso de Engenharia de Computação, Uni-
versidade Tecnológica Federal do Paraná. Curitiba, 2014.
Este relatório apresenta o processo de desenvolvimento de um Plotter Vertical,
detalhando as etapas de planejamento, orçamento e realização. O projeto baseia-
se na construção de um plotter, fixo em uma superfície vertical por dois pontos
nos polos. Em cada polo há um motor de passo, que garante a movimentação
de uma caneta. Esses motores são controlados por um microcontrolador e um
computador com interface serial. Com este plotter será possível desenhar, teori-
camente, figuras de qualquer tamanho, mudando-se apenas a distâncias entre os
polos.
Palavras-chave: Plotter, Arduino, Microcontrolador, Motor de Passo.
LISTA DE FIGURAS 4

Lista de Figuras
1 Desenho dos polos do Plotter Vertical.[15] . . . . . . . . . . . . . . . . . 7
2 Desenho do sistema de movimentação do Plotter Vertical.[15] . . . . . . . 7
3 Limitações da área de plotagem.[15] . . . . . . . . . . . . . . . . . . . . 8
4 Arquitetura do Plotter Vertical. . . . . . . . . . . . . . . . . . . . . . . 9
5 Esquema de ligação do motor de passo modelo AK39HY/12-1.8.[5] . . . . 12
6 Sequência de acionamento do motor de passo modelo AK39HY/12-1.8.[5] 12
7 Esquemático de um solenoide.[7] . . . . . . . . . . . . . . . . . . . . . . 13
8 Diagrama de ligações do driver L293D.[10] . . . . . . . . . . . . . . . . 14
9 Diagrama de ligações do shield.[11] . . . . . . . . . . . . . . . . . . . . 15
10 Arduino Mega.[17] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
11 Sistema de coordenadas . . . . . . . . . . . . . . . . . . . . . . . . . 17
12 Foto do shield encaixado no Arduino [11] . . . . . . . . . . . . . . . . . 20
13 Foto da solenoide [11] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
14 Programa para detectar bordas. [11] . . . . . . . . . . . . . . . . . . . . 23
15 Imagem antes e depois da redução do número de pixels. [11] . . . . . . . 25
16 Imagem da simulação do programa. [11] . . . . . . . . . . . . . . . . . . 25
17 Foto de uma das polias construídas [11] . . . . . . . . . . . . . . . . . . 27
18 Foto do suporte construído para o Arduino. [11] . . . . . . . . . . . . . . 27
19 Foto dos pregos em uma das extremidades. [11] . . . . . . . . . . . . . . 28
20 Foto do suporte construído [11] . . . . . . . . . . . . . . . . . . . . . . . 29
21 Diagrama de Gantt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
LISTA DE TABELAS 5

Lista de Tabelas
1 Características do motor de passo modelo AK39HY/12-1.8 [5] . . . 11
2 Características elétricas do motor de passo modelo AK39HY/12-
1.8 [5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Orçamento do Plotter Vertical. . . . . . . . . . . . . . . . . . . . . . . 30
SUMÁRIO 6

Sumário
1 Introdução 7
1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.1 Objetivo Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.2 Objetivos Específicos . . . . . . . . . . . . . . . . . . . . . . . 9

2 Revisão dos Conteúdos Envolvidos 10


2.1 Transmissão de Movimento . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.1 Correias e Polias . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Motores de Passo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Solenoide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4.1 Driver L293D . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5 Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5.1 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3 Fundamentação Teórica 17

4 Metodologia 19
4.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1.1 Integração entre motor de passo, ponte H e Arduino . . . . 19
4.1.2 Movimentação da caneta . . . . . . . . . . . . . . . . . . . . 19
4.2 Construção do software . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3 Integração entre software e hardware . . . . . . . . . . . . . . . . . 24
4.4 Montagem do suporte . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5 Resultados e discussões 29

6 Orçamento 30

7 Conclusões 31

8 Cronograma 34

9 Defesa 35
1 Introdução 7

1 Introdução
Este projeto consiste em um sistema capaz de reproduzir, num plano vertical,
figuras geométricas. Essencialmente, o Plotter Vertical é uma máquina para de-
senhar consistindo de uma caneta, suspensa por fios entre dois motores, que se
move sobre uma superfície vertical. O sistema é composto de um conjunto mi-
nimalista de partes: uma superfície plana vertical, uma caneta encapsulada por
uma gôndola e um sistema compacto para movimentação da gôndola. O Plot-
ter Vertical é baseado no uso de dois pontos de referência fixos (polos) a partir
dos quais qualquer ponto no plano vertical passando por ambos os polos pode
ser definido pelas duas distâncias entre o ponto (caneta representada por m) e os
polos (representados por a1 e a2) (Figura 1).

Figura 1: Desenho dos polos do Plotter Vertical.[15]

O sistema para movimentação da gôndola consiste em dois motores de passo


centrados nos polos, em cujos eixos são acopladas roldanas. Dois fios estirados,
são fixados na gôndola (Figura 2). Cada um desses fios passa por uma das rolda-
nas e termina com um peso para o estiramento. Opcionalmente, um contrapeso
pode ser adicionado à gôndola para o estiramento adequado do fio.

Figura 2: Desenho do sistema de movimentação do Plotter Vertical.[15]


1.1 Motivação 8

Devido aos aspectos construtivos, limitações físicas definem a área de plota-


gem como um retângulo entre e abaixo dos dois polos como ilustra a Figura 3.

Figura 3: Limitações da área de plotagem.[15]

Os padrões a serem reproduzidos na área de plotagem serão definidos por


um software no PC. Este software decomporá o padrão a ser reproduzido em
uma sequência de três comandos possíveis:

• Abaixar caneta.

• Levantar caneta.

• Mover caneta para a posição (x,y) dentro da área de plotagem.

Definida a sequência de comandos, o software do PC a envia para um con-


trolador responsável por comandar os motores e a gôndola para a execução dos
comandos. Tal controlador é implementado por um Arduino Mega e um shield
com 2 CI L293D que controlará os motores. A Figura 4 mostra a arquitetura do
Plotter Vertical.

1.1 Motivação
Com contexto mais prático da disciplina, os integrantes da equipe se interessa-
ram por realizar um projeto que engloba diversas áreas da engenharia. Um plot-
ter vertical é especialmente interessante por ter esse aspecto multidisciplinar e
ao mesmo tempo com construção relativamente simples e de baixo custo. Além
disso, por ter o objetivo de plotar desenhos este projeto se torna mais estimulador,
pois a equipe vê diretamente o resultado.
1.2 Objetivos 9

Figura 4: Arquitetura do Plotter Vertical.

1.2 Objetivos
A equipe pretende com este projeto aprender de forma prática a comunicação
entre hardware e software, através da construção de um plotter vertical.

1.2.1 Objetivo Geral


Desenvolver um plotter vertical capaz de desenhar figuras, compostas por linhas.
Após a detecção, dos pontos (x,y) que serão utilizados no desenho, o software
passará os comandos para o microcontrolador Arduino acionar os motores. Os
motores de passo liberarão o comprimento necessário das correias para a caneta
chegar aos pontos.

1.2.2 Objetivos Específicos


• Fazer um software capaz de identificar a largura necessária que cada motor
tem que liberar de correia.

• Implementar um sistema de controle de movimentação de motores de passo.

• Implementar os movimentos da caneta: abaixar e levantar.

• Deslocar a caneta até o ponto (x,y) tendo em vista a orientação dos dados
calculados e obtidos pelo software.
2 Revisão dos Conteúdos Envolvidos 10

2 Revisão dos Conteúdos Envolvidos


Nesta seção serão descritos alguns conteúdos necessários para a fundamentação
teórica do nosso projeto. Aqui serão descritas características de hardware e lógica
de controle do sistema.

2.1 Transmissão de Movimento


Para fazer a movimentação necessária deste projeto precisa-se dos conhecimen-
tos da mecânica técnica. A mecânica técnica trata da aplicação prática das leis
físicas e da mecânica, de modo a abranger eventos que ocorrem tanto em elemen-
tos como em sistemas mecânicos. Uma das principais finalidades desta área é
analisar e entender o funcionamento das máquinas, bem como criar formas de
acionamento para as mesmas. [1]
Uma das vertentes da mecânica técnica é a transmissão de movimento de um
eixo motriz, que em geral está conectado a um motor, para um outro eixo, de
forma a possibilitar a atuação à distância, bem como, eventualmente, adaptar o
comportamento dos motores que podem não ser ideais para a aplicação preten-
dida.
Não obstante a transmissão de movimento não esteja limitada a um único
tipo de transformação, de modo que pode-se transformar rotação em movimento
retilíneo, ou movimento retilínio em rotação, por exemplo, no presente trabalho
será estudada apenas a transmissão de rotação em rotação, e especificamente, esta
transformação sendo realizada por pares polia-correia. [2]

2.1.1 Correias e Polias


Ao se pensar em par correia-polia, muitas são as alternativas disponíveis para a
transmissão da rotação, pode-se utilizar de correias planas, em V e correias den-
tadas ou sincronizadoras, sendo que as polias dependem do meio de transmissão
utilizado. [1]
O meio mais comum de transmissão utilizado, em especial por sua facilidade
de produção, é a correia plana e no presente projeto foi este o meio de transmissão
utilizado, graças à sua facilidade de utilização e economia. Para a realização deste
projeto forão utilizadas polias fixas, que servem para mudar a direção e o sentido
da força. [3]

2.2 Motores de Passo


Motores de passo são geralmente usados em aplicações de controle e precisão,
como as impressoras.[4] Muitas características dos motores de passo fazem deles
máquinas ideais para essas aplicações. São elas:

• Motores de passo não tem escovas. O comutador e as escovas de moto-


res convencionais são os componentes que mais tendem a falhar, além de
criarem arcos elétricos que são indesejáveis e até perigosos em alguns am-
bientes.
2.2 Motores de Passo 11

• Motores de passo vão girar em uma determinada velocidade independen-


temente da carga, contanto que ela não exceda o torque máximo do motor.

• Motores de passo se movem em uma certa quantidade de passos incremen-


tais. Portanto, a posição do rotor é sempre conhecida sem a necessidade de
um mecanismo de realimentação.

• Motores de passo são capazer de manter o rotor parado, com excelente res-
posta de arranque e movimento reverso.

Existem três tipos básicos de motores passo: ímã permanente, relutância va-
riável e híbrido. Motores de ímã permanente tem um rotor magnetizado, en-
quanto os motores de relutância variável tem rotores de ferro doce dentados. Mo-
tores de passo híbridos combinam aspectos de ambos os tipos. O estator do motor
de passo tem vários enrolamentos e o arranjo destes enrolamentos é o principal
fator que diferencia os tipos de motores de passo. [4]
Para este projeto foram utilizados dois motores de passo unipolares modelo
AK39HY/12-1.8 da Neoyama. A ficha técnica deste motor de passo pode ser vista
nas Tabelas 1 e 2. Motores de passo unipolares são compostos de dois enrola-
mentos, cada um com uma derivação central (center tap). Os motores unipolares
têm 5 ou 6 fios dependendo se as center taps são dois fios separados, que é o caso
do motor utilizado, ou ligadas entre si internamente e trazidas para fora do motor
como um fio só. [5]

Tabela 1: Características do motor de passo modelo AK39HY/12-1.8 [5]


Ângulo de passo 1,8o
Número de passos 200
Enrolamento Espiras bifilares
Temperatura máx, de operação 80 ◦ C
Temperatura ambiente -10◦ C 50◦ C
Resistência de isolação 100 Ω / 500 Vdc
Rigidez dielétrica 500 Vac / 1 min.
Classe de isolação B
Folga máx. radial 0.03 mm / Carga = 400g
Folga máx. axial 0.03 mm / Cargo = 500g
Detent torque 0.06 gf.cm
Inércia do rotor 48 g.cm2
Quantidade de fios 6
Peso 0.22 Kg

Independentemente do número de fios, motores unipolares são acionados da


mesma forma. O fio de center tap está ligado a uma fonte de alimentação e as
2.2 Motores de Passo 12

Tabela 2: Características elétricas do motor de passo modelo AK39HY/12-1.8 [5]


Conexão Holding Corrente Tensão Resistência Indutância
Torque (mA/fase) (V/fase) (Ω/fase) (mH/fase)
(kgf.cm)
Bipolar - 1.10 70 16.8 140 148
Série
Unipolar 0.77 100 12 70 37

pontas dos enrolamentos são aterradas alternadamente. O sentido da corrente


através dos enrolamentos do estator determina quais pólos do estator atrairão
quais pólos do motor. O sentido da corrente depende da metade do enrolamento
que é energizada. A Figura 5 e a Figura 6 mostram respectivamente o esquema
de ligação e a sequência de acionamento do motor utilizado.

Figura 5: Esquema de ligação do motor de passo modelo AK39HY/12-1.8.[5]

Figura 6: Sequência de acionamento do motor de passo modelo AK39HY/12-1.8.[5]


2.3 Solenoide 13

2.3 Solenoide
O solenoide, é um conjunto de espiras de mesmo eixo espaçadas uniformemente.
Aplicando uma corrente elétrica neste fio condutor ele irá gerar um campo mag-
nético ao redor e no interior do solenóide. O campo magnético no seu interior é
uniforme e as linhas do campo são paralelas ao seu eixo, como mostra a figura
7. O campo do solenoide é bem semelhante ao campo de um ímã em forma de
barra, onde a extremidade por onde saem as linhas de campo é o polo norte, e a
extremidade por onde entram as linhas de campo é o polo sul. [6] [7]

Figura 7: Esquemático de um solenoide.[7]

No interior de um solenóide temos um campo uniforme, cuja intesidade é


dada pela seguinte fórmula:
N
B = µo · ·i (1)
L
Onde N é o número de espiras e L o comprimento. [7]
Para este projeto um solenoide foi utilizado para a movimentação da caneta:
levantar e abaixar.

2.4 Ponte H
Para realizar o controle sobre os motores de passo ou sobre motores DC, utiliza-se
um circuito composto por transistores de potência chamado de ponte H.
A ponte H é um circuito eletrônico que permite que o microcontrolador for-
neça a corrente necessária para o funcionamento do Motor de corrente contínua,
visto que o microcontrolador normalmente trabalha em 5V e em baixas correntes,
enquanto o motor de passo costuma exigir altas potências. Além disso, a Ponte H
torna possível que o motor de passo rode tanto para um sentido quanto o outro,
pois permite controlar a direção em que a corrente é aplicada. [8]
Neste projeto foi utilizado o circuito integrado L293D, que possui duas pontes
H.
2.5 Microcontrolador 14

2.4.1 Driver L293D


O L293D possui internamente 2 Pontes H e suporta uma corrente de saída de
600mA por canal, ou seja, com dois L293D será possível controlar os 2 enrola-
mentos do projeto com 600mA cada. [9]
A Figura 8 é um exemplo de como o L293D pode ser utilizado. Este diagrama
mostra as ligações do driver para controlar um motor de passo (stepper).

Figura 8: Diagrama de ligações do driver L293D.[10]

Para este projeto foi utilizado o Motor Shield L293D Driver Ponte H, devido a
sua praticidade em definir comandos como o sentido e velocidade de motores de
passo. Outro motivo para a escolha deste shield foi que para a realização deste
projeto só haveria a necessidade da compra de um. Este shield possui o driver
L293D, é compatível com o Arduino.
As principais características do Motor Shield são: [9]

• Tensão máxima para a utilização do jumper Vin_Mot: 12V

• Corrente máxima (Motor): 600mA

Todas as conexões lógicas necessárias entre o Arduino e o driver do motor, in-


cluindo VDD, são feitas automaticamente quando o shield está ligado ao Arduino.
Os canais de drivers, localizados em cada lado destes pinos de alimentação, po-
dem ser utilizados para controlar de forma independente os motores, porém só
será possível controlar um motor de passo por vez. A Figura 9 mostra a a confi-
guração deste shield com o Arduino. O Arduino é alimentado separadamente do
shield, através de seu conector USB ou tomada de energia.

2.5 Microcontrolador
Um microcontrolador é a integração de um processador, memória e periféricos
de entrada e de saída. É um microprocessador de propósito especial, ou seja,
que pode ser programado para funções específicas, comparados com outros mi-
croprocessadores de propósito gerais (como os utilizados nos PCs). Eles são em-
barcados em um único chip, no interior de algum outro dispositivo (geralmente
2.5 Microcontrolador 15

Figura 9: Diagrama de ligações do shield.[11]

um produto comercializado) para que possam controlar as funções ou ações do


produto. Neste chip há todos os circuitos integrados periféricos necessários utili-
zados na área de controle de processos. [12] [16]

2.5.1 Arduino
O Arduino é uma plataforma para prototipagem em eletrônica. É uma ferra-
menta open-source baseada em uma placa única com um microcontrolador e su-
porte para periféricos de entrada e saída. Este microcontrolador é programado
no ambiente de desenvolvimento Arduino. [13]
O Arduino promove uma fácil comunicação entre usuário, hardware e soft-
ware. Pode ser facilmente utilizado na composição de objetos interativos, rece-
bendo como entrada uma variedade de interruptores e sensores, e controlando
luzes, motores ou outras saídas físicas. Seu software livre pode ser executado em
qualquer sistema operacional e utiliza uma linguagem de fácil entendimento e
utilização. [13]
O projeto utilizou o Arduino, para controlar os dois motores de passo. No
Arduino será implementado o programa responsável por repassar a cada motor
o comando necessário para a caneta percorrer o desenho previamente mapeado.
Especificamente foi utilizado o modelo Mega 2560 (Figura 10), dotado de um
microcontrolador Atmega2560, com 54 entradas/saídas digitais (sendo 15 utili-
záveis como saída PWM), 16 entradas analógicas, 256 KB de memória Flash, 8KB
de memória RAM, 4KB de memória EEPROM, e 16MHz de Clock. Sua escolha
foi determinada por sua capacidade de processamento atender todos requisitos
do projeto. [14]
2.5 Microcontrolador 16

Para o funcionamento do Arduino é necessário que exista um software para


controle deste. O usuário é quem cria o código que será utilizado. A linguagem
de programaçao que controla o Arduino é muito semelhante á linguagem C++. É
possível criar e utilizar bibliotecas já prontas, nos quais os cabeçalhos contêm as
definiç˜oes da biblioteca [14]

Figura 10: Arduino Mega.[17]


3 Fundamentação Teórica 17

3 Fundamentação Teórica
Considere o sistema de coordenadas da Figura 11, onde p1 = (0, 0) denota o polo
p1 e p2 = (D, 0), o polo p2 . Dado o ponto (x, y) pcom relação ao p
polo p1 , sua coor-
denada em relação ao polo p2 é (D − x, y). L1 = x + y e R1 = (D − x)2 + y2 são
2 2
as distâncias do ponto (x, y) aos polos p1 e p2 , respectivamente.

Figura 11: Sistema de coordenadas

Conhecida a posição atual da caneta, (x, y), um deslocamento da caneta para


a posição (x + dx, y + dy) pode ser obtido alterando-se as distâncias L1 e R1 para
L1 + δL e R1 + δR , onde δL e δR são dados por:

p
L1 = x2 + y2
q
L2 = (x + dx)2 + (y + dy)2
p
= x2 + 2 · x · dx + dx2 + y2 + 2 · y · dy + dy2
q
= x2 + y2 + 2 · (x · dx + y · dy) + dx2 + dy2
q p
L2 − L1 = x2 + y2 + 2 · (x · dx + y · dy) + dx2 + dy2 − x2 + y2

q
δL = L21 + 2 · (x · dx + y · dy) + dx2 + dy2 − L1
3 Fundamentação Teórica 18

q
R1 = (D − x)2 + y2
q
R2 = ((D − (x + dx))2 + (y + dy)2
q
= D2 − 2 · D · (x + dx) + (x + dx)2 + y2 + 2 · y · dy + dy2
p
= D2 − 2 · D · x − 2 · D · dx + x2 + 2 · x · dx + dx2 + y2 + 2 · y · dy + dy2
q
= (D − x)2 + y2 + 2 · ((x − D) · dx + y · dy) + dx2 + dy2
q q
R2 − R1 = (D − x) + y + 2 · ((x − D) · dx + y · dy) + dx + dy − (D − x)2 + y2
2 2 2 2

q
δR = R21 + 2 · ((x − D) · dx + y · dy) + dx2 + dy2 − R1

Portanto, para deslocar a caneta do ponto atual (x, y), para o ponto (x + dx, y +
dy), os motores de passo deverão rotacionar as roldanas de modo que os compri-
mentos L1 e R1 das cordas sejam alongados de δL e δR unidades de comprimento.
Feito isso, os novos comprimentos das cordas serão L2 = L1 + δL e R2 = R1 + δR .
4 Metodologia 19

4 Metodologia
Nesta seção serão apresentadas as etapas de execução do projeto. Esta sessão tem
como objetivo explicar como cada parte foi elaborada, construída e integrada ao
todo.

4.1 Hardware
A partir da elaboração teórica, os componentes necessários forão comprados e
pode-se dar início à construção das partes do hardware e aos testes.

4.1.1 Integração entre motor de passo, ponte H e Arduino


Nesta fase de integração, forão realizados testes referentes ao funcionamento dos
motores bem como testes relativos ao seu controle por meio do microcontrolador.
Como não houve sucesso na criação da ponte H, um shield foi comprado. O
shield possui dois L293D, portanto é capaz de controlar os dois motores de passo
independentemente. O objetivo principal da utilização da ponte H neste projeto
é a sua capacidade de amplificar a corrente da saída do Arduino, somente desse
modo é possível controlar os motores de passo com a devida corrente necessária.
Após a compra do shield, foi então, possível integrar o motor de passo e a
plataforma Arduino. Para os motores de passo terem força suficiente para rodar
a polia, é necessário tensão maior que os 5V fornecidos pelo Arduino, por isso é
ligado uma fonte de 12V no shield.
Primeiramente foi encaixado o shield no Arduino Mega (Figura 12). Em se-
guida foi ligado os dois motores de passo em cada um dos lados do shield e a
fonte de 12V. Depois de ligado o Arduino no computador pode-se fazer os pri-
meiros testes para aprender o funcionamento e como o código fonte movimenta
os motores.

4.1.2 Movimentação da caneta


Com a integração entre motores, ponte H e microprocessador funcionando, se-
ria possível começar a ser construída a estrutura da movimentação da caneta,
coloca-la e tira-la do papel. Neste projeto apesar de ser uma tarefa proposta a
movimentação da caneta não foi realizada, mesmo assim nesta seção será expli-
cado como ela deveria ser feita.
Primeiramente, foi obtido um solenoide da marca KGS tipo SDC retirado de
uma impressora antiga (Figura 17). Este solenoide será responsável pela movi-
mentação da caneta. Graças a características do solenoide, ou seja, ele funcionar
como um imã será possível baixar e levantar a caneta.
Funcionando a movimentação da caneta, ela será integrada a uma gôndola
para mais tarde poder ser pendurada na correia. Em seguida será integrada a
gôndola, os dois motores de passo, ponte H e o microprocessador. Por ultimo
será inserido as polias e as correias, para os testes serem iniciados na tentativa de
avaliar o funcionamento na movimentação final da caneta, bem como na busca
por eventuais erros e suas correções.
4.2 Construção do software 20

Figura 12: Foto do shield encaixado no Arduino [11]

Figura 13: Foto da solenoide [11]

4.2 Construção do software


O software começou a ser desenvolvido em paralelo com o hardware objetivando
primeiramente mapear o desenho a ser plotado e posteriormente conseguir ma-
pear a área de plotagem de acordo com a distância da caneta a cada polia, para
ao final associar ambos os mapeamentos.
No começo do projeto foi constatado que não seria possível utilizar somente
formato bitmap, para a conversão da imagem, uma vez que, não iríamos impri-
4.2 Construção do software 21

mir ponto a ponto e sim desenhar todas as linhas no desenho.


Resumidamente no decorrer do projeto o principal problema encontrado foi
para transferir uma imagem digital para uma imagem desenhada pelo plotter.
De maneira mais específica, a imagem deve ser transformada em uma série de
comandos que controlem os motores e por consequência a caneta.
Seria impraticável para este projeto fazer um plotter vertical que oferecesse
impressão em cores ou que fosse capaz de produzir efeitos de sombra. Optamos
por desenhar apenas os contornos da imagem, para produzir um desenho fiel à
entrada e ao mesmo tempo simplificado. Para poder fazer a impressão em cores
ou fazer sombras seria necessário mais tempo para pesquisas e mais dinheiro
para a compra dos componentes necessários.
O processo de transferência então foi dividido em identificar os contornos
da imagem, transformá-los em uma sequência de ação e por fim traduzir esta
sequência em uma série de comandos para o Arduino. Isso evita que o Arduino
seja sobrecarregado com tarefas que poderiam exigir mais do que pode ser feito
com seus recursos limitados.
Como já mencionado, utilizamos um shield para Arduino chamado Motor Shi-
eld. Para controlar os motores ligados ao shield, o fabricante fornece também uma
biblioteca de funções, todas muito intuitivas, facilitando a programação. Dessa
forma, nao são necessárias mais que algumas linhas de código, como mostra o
seguinte exemplo de utilização da biblioteca AFMotor.h:

AF_Stepper motor (200, 2);

void setup ()
{

Serial.begin(9600);
motor.setSpeed(50);

void loop ()
{

motor.step(200, FORWARD, SINGLE);


motor.step(100, BACKWARD, SINGLE);

}
4.2 Construção do software 22

Neste trecho de código é definido os dois motores, suas velocidades e quantos


passos eles tem.
Resolvido o problema do controle dos motores, o desenvolvimento de soft-
ware foi focado no processamento de imagem. Para isso, utilizamos o ambiente
de desenvolvimento Processing. Desenvolvido em Java para manipular imagens,
ele tem uma interface amigável e simplificada, mas ao mesmo tempo possui fun-
ções avançadas [18]. Foi neste ambiente que a IDE do Arduino foi baseada. Esse
ambiente não requer uma programação muito avançada e evita expor o usuário
aspectos de baixo nível em processamento de imagem.
No Processing, o primeiro problema a ser resolvido foi a identificação de bor-
das em uma imagem. Para isso, utilizamos um filtro chamado Detector de bordas
de Canny. Esse filtro é conhecido por ter diversas aplicações, de detectar imper-
feições em uma peça mecânica a identificar texto em uma imagem. [19]
Foi utilizado um filtro já implementado em uma classe Java, e em seguida ele
foi importado como uma biblioteca no Processing. Um exemplo de utilização do
detector borda então pode ser visto no seguinte programa:

import java.awt.image.BufferedImage;
import java.util.Arrays;

PImage input;
PImage output;

CannyEdgeDetector detector;

void setup()
{

input = loadImage("input.jpg");
detector = new CannyEdgeDetector();
detector.setLowThreshold(0.5f);
detector.setHighThreshold(1.0f);
detector.setSourceImage((BufferedImage) input.getImage());
detector.process();
BufferedImage edges = detector.getEdgesImage();
output = new PImage(edges);
size(input.width, input.height);
noLoop();

}
4.2 Construção do software 23

void draw()
{

image(output, 0, 0, width, height);


save("data/output.jpg");

}
Esse programa e capaz de detectar bordas com grande qualidade como se
pode observar na Figura 14. [19]

Figura 14: Programa para detectar bordas. [11]

O próximo passo foi transformar essas bordas em uma sequência de pontos


que descreve o caminho a percorrer pela caneta no plotter. Para isso, a imagem
deveria se processada por um algoritmo que encontraria um caminho razoavel-
mente eficiente entre todos os pixels da imagem.
Esse processo se assemelha muito ao famoso "Problema do Caixeiro Viajante",
o qual sai de sua casa, traça um caminho eficiente pelos lugares que precisa visitar
- sem repetir lugares - e volta para casa. No nosso caso, para desenhar apenas o
contorno da imagem, a caneta precisa percorrer todos os pixels das bordas, se
deslocando minimamente.
Pensando nisso, aplicou-se na imagem resultante da detecção de bordas um
novo algoritmo. Este identifica todos os pixels das bordas, e guarda em um vetor
de pontos. Em seguida ele calcula a distância entre todos os pares de pontos e
escolhe um caminho por todos eles.
Para esta tarefa, foi escolhido um algoritmo que a princípio não produz sem-
pre o resultados mais correto, contudo encontra um caminho satisfatório com um
tempo de execução razoável para a grande quantidade de pixels, o algoritmo do
"Vizinho mais Próximo". Este algoritmo simplesmente parte para o pixel mais
próximo a partir de sua posição atual.
4.3 Integração entre software e hardware 24

void nearestNeighbor()
{

ArrayList<PVector> pointsC = new ArrayList<PVector>(points);


PVector current = new PVector();
PVector next = new PVector();
float shortest = I;
int i = (int) pointsC.size() - 1;
int j = (int) random(0, i);current = pointsC.get(j);
path.add(current);
pointsC.remove(j);do
{
shortest = I;
for (i = 0; i < pointsC.size(); i++)
{
float dx = current.x - pointsC.get(i).x;
float dy = current.y - pointsC.get(i).y;
float d = sqrt(pow(dx, 2) + pow(dy, 2));
if (d < shortest)
{
shortest = d;
next = pointsC.get(i);
j = i;
}
}
pointsC.remove(j);
current = next;
path.add(current);
}while (pointsC.size () > 0);

Esse programa permite também reduzir significativamente a quantidade de


pixels na imagem produzindo um resultado menos preciso, mas mais adequado
a capacidade do arduino (Figura 16).

4.3 Integração entre software e hardware


Tendo a estrutura física em correto funcionamento pode-se iniciar a integração
entre software e hardware. Uma vez implementado o software que gerará os
comandos necessários para a plotagem da imagem, o software passará esses co-
mandos para o hardware, ou seja, ele passará aos motores de passo os comandos
responsáveis por liberar ou recolher as correias a fim de posicionar a caneta no
lugar correto estipulado pelo mapeamento.
O processo final é transformar este caminho calculado em uma sequência de
comandos para o Arduino. A grande dificuldade é que a imagem está em um
4.3 Integração entre software e hardware 25

Figura 15: Imagem antes e depois da redução do número de pixels. [11]

plano cartesiano, o qual não pode ser reproduzido diretamente no plotter. Os


movimentos da caneta são sempre hiperbólico.
Para contornar essa dificuldade, foi decidido criar uma solucão mais simples.
Simulou-se o movimento do plotter em um programa, e a partir da simulação
foi obtido as variacões de comprimento das duas correias (Figura 16). Isso foi
possível mais uma vez graças à facilidade de prototipagem no Processing.

Figura 16: Imagem da simulação do programa. [11]

O programa transforma essas variações em comandos para os motores de


passo. Esses comandos são salvos em um arquivo que pode ser aberto direta-
mente pela IDE do Arduido. Essa saída é a princípio transparente ao usuário,
mas ao mesmo tempo pode ser editada e ajustada. Um exemplo de saída do
programa é o código a seguir:

#include <AFMotor.h>
4.4 Montagem do suporte 26

AF_Stepper motor1 (200, 1);

AF_Stepper motor2 (200, 2);

void setup ()
{

Serial.begin(9600);
motor1.setSpeed(10);
motor2.setSpeed(10);

void loop ()
{

motor1.step(10, FORWARD, SINGLE);


motor2.step(6, BACKWARD, SINGLE);
motor1.step(10, FORWARD, SINGLE);
motor2.step(6, BACKWARD, SINGLE);
motor1.step(10, FORWARD, SINGLE);
motor2.step(6, BACKWARD, SINGLE);
motor1.step(10, FORWARD, SINGLE);
motor2.step(6, BACKWARD, SINGLE);

4.4 Montagem do suporte


Tanto as duas polias quanto o suporte vertical para o plotter foram construídos
com madeira. Foi optado por construi-los ao invés de comprá-los, para respei-
tarem as medidas estipuladas e por ser mais barato, já que não houve custo de
material. O suporte foi moldado para poder sustentar os dois motores de passo,
o Arduino com o shield e a área do plotagem.
As polias foram feitas com diâmetro de 53mm e um eixo central de 5mm para
encaixar o eixo do motor. Foi necessário fazer uma depressão nas laterais das
polias para as correias não escorregarem (Figura 17).
Os dois motores foram instalados a 7cm do topo da área de plotagem. Para
o suporte dos motores foram cortados dois quadrados de 40mm por 40mm. O
4.4 Montagem do suporte 27

Figura 17: Foto de uma das polias construídas [11]

Figura 18: Foto do suporte construído para o Arduino. [11]


4.4 Montagem do suporte 28

Arduino foi colocado na parte superior entre os dois motores atrás do suporte
(Figura 18).
Os quatro pregos nos extremos superiores da área de plotagem foram adici-
onados para que as correias ao serem movimentadas pelas polias não saiam do
suporte, fazendo com que não haja contato da caneta. Sem isso haveria partes
fora da área de plotagem que a caneta poderia ter acesso. Com os pregos é ga-
rantido que a área é delimitada. Delimitada em uma linha vertical e uma linha
horizontal a partir dos pregos.(Figura 19).

Figura 19: Foto dos pregos em uma das extremidades. [11]

Para a plotagem foi definida a área de 50cm por 50cm, ou seja 0,25m2 . A área
total do suporte de madeira é de 0,49m2 (Figura 20).
5 Resultados e discussões 29

Figura 20: Foto do suporte construído [11]

5 Resultados e discussões
O resultado obtido com a máquina desenvolvida pela equipe foi condizente com
o custo e os materiais utilizados. Não se esperava obter uma alta precisão devido
a estrutura de madeira e porque os motores são acionados um por vez, quando o
mais correto e preciso era os dois motores seram acionados no mesmo intante e
com as mesmas velocidades.
O movimento da caneta para tira-la do papel e coloca-la utilizando a solenoide
não foi implementado. Sendo assim, os trabalhos futuros envolvendo o plotter
são:

• Construir o mecanismo para tirar e colocar a caneta no papel, utilizando


uma solenoide;

• Achar outras soluções para garantir maior precisão na hora da plotagem;

• Desenvolver mais o software para trabalhar com imagens mais detalhadas


deixando o minímo de pixels.

Não foi objetivo deste projeto a busca pela alta precisão e sim fazer algo mo-
tivador, diferente e viável por ser um plotter de baixo custo. Considerando este
objetivo, é possível dizer que o resultado foi satisfatório, ainda que existam me-
lhorias a serem feitas.
6 Orçamento 30

6 Orçamento
O orçamento deste projeto está descrito na Tabela 3. O Arduino e os dois moto-
res de passo foram disponibilizados pela universidade, com isso economizou-se
aproximadamente 150 reais. Além disso, economizou-se dinheiro também no su-
porte e nas duas polias.

Tabela 3: Orçamento do Plotter Vertical.


Item Unidade Preço Total (reais)
Solenoide 1 25,00
Arduino 1 90,00
Shield 1 40,00
Motor de Passo 2 60,00
Correias 1 10,00
Polias 2 0,00
Suporte 1 0,00
Total 225,00
7 Conclusões 31

7 Conclusões
Neste projeto concluímos que é possível à construção de um plotter vertical com
a utilização de Arduino de forma mais simplificada. Nesta disciplina tivemos
a oportunidade de entrarmos em contato, pela primeira vez, com sistemas de
atuadores e microcontroladores.
Considera-se que quase todos os objetivos propostos foram alcançados, com
exceção do movimento da caneta. A equipe decidiu deixar esta parte como um
trabalho futuro para complementar o plotter aqui apresentado. A matéria de
Oficina de Integração II se tornou um desafio para a equipe, afinal conseguiu
transformar o conhecimento teórico obtido em algo prático e estimulante.
A união da eletrônica, mecânica e computação trouxeram problemas à equipe
que não seriam vistos dentro do ambiente acadêmico e que trazem lições que se-
rão levadas para todos os projetos daqui para frente. Durante o processo foram
superadas algumas dificuldades, que geraram muito conhecimento para equipe,
inclusive sobre a importância prática, pois por muitas vezes somente o conheci-
mento teórico não foi suficiente para solucionar os problemas.
O fato de possuir pouco conhecimento sobre o Arduino deixou o andamento
do projeto um pouco mais lento. Apesar do Arduino ser de fácil utilização e não
precisar de conhecimentos profundos em eletrônica e programação, já que há
muitas referências bibliográficas, foram encontradas dificuldades para a constru-
ção do software. A principal dificuldade foi para que o software movimentasse
os dois motores coordenadamente, coordenados principalmente na mesma velo-
cidade. Porém o grande interesse e a vontade de produzir um protótipo de um
plotter vertical que fosse capaz de desenhar uma imagem 2D impulsionaram a
construção do mesmo. À medida que foi possível ver os primeiros resultados a
equipe se sentiu motivada.
Podemos concluir que o tempo para a construção do plotter poderia ter sido
melhor aproveitado. Porém ressalta-se aqui que mesmo assim a realização deste
projeto foi satisfatória, pois proporcionou a equipe à oportunidade de aplicar
os conhecimentos teóricos na produção de um artefato interessante no ponto de
vista mecânico, matemático, físico e computacional.
REFERÊNCIAS 32

Referências
[1] ZANELLATO, André; PEREIRA, Felipe; ASSENÇO, Hudo.
Desenvolvimento de um Plotter 2D de Baixo Custo. Uni-
versidade Tecnológica Federal do Paraná. Disponível em:
<http://paginapessoal.utfpr.edu.br/msergio/portuguese/ensino-
de-fisica/oficina-de-integracao- ii/oficina-de-integracao-
ii/Relatorio20141Plotter2D.pdf> Data de acesso: 5 novembro 2014. 10
[2] Capítulo 3 - Transmissão de movimento. Centro Federal
de Educação Tecnológica do Espírito Santo. Disponível em:
<ftp://ftp.cefetes.br/cursos/Mecanica/T%E9cnico/Mec%E2nica%20T%E9
cnica/cap3.prn.pdf> Data de acesso: 5 novembro 2014. 10
[3] BONANI, Eduardo. Sistema de Transmissão de Movimento
Linear em uma Junta Cilíndrica Robótica. Disponível em:
<http://revistaeletronica.sp.senai.br/index.php/seer/article/viewFile/159
/96> Data de acesso: 5 novembro 2014. 10
[4] JONES, Douglas. The University of Iowa. Disponível em:
<http://homepage.cs.uiowa.edu/j̃ones/step/an907a.pdf> Data de acesso: 5
novembro 2014. 10, 11
[5] AKIYAMA. Motor de passo AK39H/12-1.8 - datasheet. Disponível em:
<http://www.neoyama.com.br/site/uploads/sap/MOTOR%20DE%20PAS
SO%20-%20NEMA:%2017%20-%20Torque:%201%2010%20kgfcm%20-
%20Corrente:%200%2010%20A%20-%20dat-I000388.pdf> Acesso em: 5
de novembro de 2014. 4, 5, 11, 12
[6] LUIZ, Adir. Coleção Física 3 Eletromagnetismo, Teo-
ria e problemas resolvidos, pag 188-190. Disponível em:
<http://books.google.com.br/books?id=0UTEtpshrYMC&pg=PA188&dq=
solenoide&hl=pt-BR&sa=X&ei=MxZaVIiCEcGhNo_Gg8AD&ved=0CCUQ6
AEwAA#v=onepage&q=solenoide&f=false> Acesso em: 5 de novembro de
2014. 13
[7] SAMPAIO; CALÇADA. Física, volume único – 2a edição – São Paulo, 2005.
Atual Editora 4, 13
[8] BRAGA, Newton C. Conheça as pontes H-H. Saber Eletrônica, v. 329, p. 44–47,
Junho 2000. 13
[9] L293D Quadruple Half-H Drivers. Disponível em:
<http://www.ti.com/lit/ds/symlink/l293d.pdf> Acesso em: 5 de no-
vembro de 2014 14
[10] Controlando Motor de Passo. Disponível em:
<http://blog.filipeflop.com/motores-e-servos/controlando-motor-de-
passo-5v-28byj-48-com-motor-shield.html> Acesso em: 9 de fevereiro de
2015 4, 14
REFERÊNCIAS 33

[11] Autoria própria. Foto tirada em: 9 de fevereiro de 2015. 4, 15, 20, 23, 25, 27,
28, 29

[12] SOUZA, Idalmir. Microprocessadores e Microcontroladores. Uni-


versidade Federal Rural do Semi-Árido - UFERSA. Disponível em:
<http://www.academia.edu/6179674/Universidade_Federal_Rural_do_Semi-
Árido_UFERSA_Engenharia_de_Energia> Acesso em: 5 de novembro de
2014. 15

[13] ARDUINO. Disponível em: <http://arduino.cc/en/Main/Software>


Acesso em: 10 outubro de 2014 15

[14] Disponível em: <http://arduino.cc/en/Main/arduinoBoardMega2560>


Acesso em: 5 de novembro de 2014. 15, 16

[15] Disponível em: <http://2e5.com/plotter/V/design/> Acesso em: 12 de no-


vembro de 2014. 4, 7, 8

[16] Disponível em: <http://www.univasf.edu.br/ leo-


nardo.campos/Arquivos/Disciplinas/Micros_2008_2/Micros_Aula_01.pdf>
Acesso em: 12 de novembro de 2014. 15

[17] Arduino Mega. Disponível em: <http://arduino.cc/en/Main/ArduinoBoardMega2560>


Acesso em: 09 de fevereiro de 2015. 4, 16

[18] Visualização por Computador: Teoria, Prática e Aplicações. Disponível em:


<http://www.lcg.ufrj.br/Members/esperanc/Visualizacao/Slides/processing1.pdf>.
Acesso em: 11 de fevereiro de 2015. 22

[19] Canny Edge Detector Implementation. Disponível em:


<http://www.tomgibara.com/computer-vision/canny-edge-detector>.
Acesso em: 11 de fevereiro de 2015. 22, 23
8 Cronograma
Para descrever o cronograma foi utilizado o diagrama de Gantt como mostra a Figura 21. Este diagrama mostra o tempo
estimado gasto por cada integrante da equipe para cada atividade.
8 Cronograma

Figura 21: Diagrama de Gantt.


34
9 Defesa 35

9 Defesa
A defesa deste projeto ocorrerá no dia 25 de fevereiro de 2015, a partir das 13 ho-
ras. A defesa será no Campus Curitiba da Universidade Tecnológica do Paraná,
na sala Q110.