59
PAINEL ELETRÔNICO DE COMANDO COM INTERFACE SENSÍVEL A TOQUE PARA EMBARCAÇÕES MARÍTIMAS Zheng Yi Ming Projeto de Graduação apresentado ao Curso de Engenharia Eletrônica e de Computação da Escola Politécnica, Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários à obtenção do título de Engenheiro. Orientador: Prof. Ricardo Rhomberg Martins. DSc Rio de Janeiro Março de 2014

PAINEL ELETRÔNICO DE COMANDO COM INTERFACE … · 2.2 – Especificações do painel de toque 2.3 – Polarização do circuito de acionamento do módulo de relés 2.4 – Polarização

Embed Size (px)

Citation preview

PAINEL ELETRÔNICO DE COMANDO COM INTERFACE SENSÍVEL A TOQUE

PARA EMBARCAÇÕES MARÍTIMAS

Zheng Yi Ming

Projeto de Graduação apresentado ao Curso de

Engenharia Eletrônica e de Computação da Escola

Politécnica, Universidade Federal do Rio de Janeiro,

como parte dos requisitos necessários à obtenção do

título de Engenheiro.

Orientador: Prof. Ricardo Rhomberg Martins. DSc

Rio de Janeiro

Março de 2014

ii

Universidade Federal do Rio de Janeiro

Escola Politécnica

Departamento de Eletrônica e de Computação

Painel eletrônico de comando com interface sensível a toque

para embarcações marítimas

Autor: _________________________________________________

Zheng Yi Ming

Orientador: _________________________________________________

Prof. Ricardo Rhomberg Martins. DSc

Examinador: _________________________________________________

Prof. Carlos Fernando Teodósio Soares, DSc

Examinador: _________________________________________________

Prof. Frederico Jandre, DSc

DEL

Março de 2014

iii

Zheng, Yi Ming

Painel eletrônico de comando com interface sensível a

toque para embarcações marítimas/ Zheng Yi Ming – Rio de

Janeiro: UFRJ/ Escola Politécnica, 2014.

XIII, 39 p.: il.; 29,7 cm.

Orientador: Prof. Ricardo Rhomberg Martins, DSc

Projeto de Graduação – UFRJ/ Escola Politécnica/ Curso

de Engenharia Eletrônica e de Computação, 2014.

Referências Bibliográficas: p. 89-95

1. Projeto de painel de comando sensível a toque 2. Estudo de

painel resistivo de 4 fios 3. Montagem de protótipo

I. Rhomberg, Ricardo Martins II. Universidade Federal do Rio de

Janeiro, Escola Politécnica, Curso de Engenharia Eletrônica e de

Computação. III. Painel eletrônico de comando com interface

sensível a toque.

iv

À minha família, aos amigos e colegas.

E às pessoas que esperam por mim.

v

Agradecimentos

Agradeço à minha família pelo suporte e a oportunidade de todos os meus anos

de estudo. Aos parentes próximos, distantes ou futuros sempre interessados no decorrer

e no fim de meu curso, obrigado.

Aos amigos sempre presentes, e também aqueles que tomaram outros caminhos.

Nossos momentos de convivência sempre tiveram algum significado. Muito obrigado a

vocês.

A todas as pessoas do Laboratório de Traçadores, que me permitiram tantas

experiências e aprendizados no tempo que me foi confiado, obrigado. Ao engenheiro

José Otávio Pecly, sempre muito ocupado, mas igualmente interessado. Por todos os

ensinamentos, questionamentos e apoio, muito obrigado.

Ao professor Ricardo Rhomberg, companheiro de longos anos de graduação. Por

todas as aulas, pelo conhecimento e todo ensinamento. Pelas oportunidades, por toda a

ajuda, interesse e esforços que me permitiram chegar onde estou. Muito obrigado.

Às pessoas que me são próximas de coração, sempre muito pacientes. Muito

obrigado por tudo e sempre.

vi

Resumo

A popularização de dispositivos eletrônicos equipados com interface sensível a

toque tem tornado esta uma forma natural e difundida de controle e interação com os

equipamentos. De modo geral, sistemas de toque agregam valor ao produto pelo apelo

tecnológico e de modernidade. Além disso, sob o ponto de vista de projeto e fabricação,

sistemas de toque apresentam grande flexibilidade por permitir implementar diferentes

interfaces com o mesmo hardware, alterando-se apenas a programação.

Neste trabalho foi desenvolvido um protótipo de um painel eletrônico de

comando para embarcações marítimas de pequeno porte, utilizando uma interface de

toque para o acionamento de diversos tipos de dispositivos elétricos como motores,

buzinas e iluminação, sendo uma alternativa ao tradicional sistema atualmente utilizado

de painel com chaves eletromecânicas. O sistema é composto por painel sensível a

toque, circuito eletrônico destinado à leitura dos toques e acionamento dos dispositivos

elétricos e outros componentes destinados a interface como LEDs, buzzers e relés.

O projeto desenvolvido foi elaborado utilizando componentes de grande

disponibilidade no mercado e baixo custo. Como exemplo disto, temos o painel de

toque, para o qual foi utilizado um painel resistivo de quatro fios, ao invés de

alternativas de maior custo e complexidade, como painéis capacitivos ou painéis

resistivos de 5,7 e 8 fios. Para a parte eletrônica foi utilizada a plataforma Arduino,

composta por microcontrolador Atmel e uma IDE para programação, tendo como

diferencial tanto o software quanto o hardware serem open-source. Uma interface

terminal via porta serial também foi desenvolvida com o intuito de permitir processos

de calibração e configuração de forma mais rápida e eficiente.

Por fim, características do protótipo desenvolvido, decorrentes das restrições

físicas e elétricas ao qual o projeto está sujeito, serão apresentadas. Dispositivos

destinados à operação em ambiente marítimo devem passar por uma etapa conhecida

como marinização, em que se proporciona adequada proteção das conexões mecânicas e

partes móveis contra vibrações, além de isolamento das partes elétricas contra umidade,

salinidade e corrosão, elementos sempre presentes no ambiente em que o painel deve

operar. Embora o protótipo não tenha sido devidamente validado no processo de

marinização, ele apresenta características básicas de proteção contra esse processo.

Palavras-Chave: painel de toque resistivo, Arduino, comunicação serial

vii

Abstract

The popularization of touch-screen enabled electronics made it a common and

natural way of controlling and interacting with devices. Overall, touch enabled devices

have a high technological appeal and a modern feeling. Also, from a design and

manufacturing standpoint, touch systems shows as a high flexibility solution, being able

to implement many different interfaces within the same hardware, only changing the

software.

In this work, a prototype electronic control panel designed for small vessels was

developed, using a touch enabled surface as a way of switching the many different

electrical devices aboard, like engines and lights. This comes as an option from the

standard control panel currently used, with electromechanical switches. The system is

composed of a touch-sensitive glass, an electronic circuit designed to read the touch

signals and enable the electrical devices, and a wide range of components like LEDs,

buzzers and relays for interfacing.

The developed project aimed for low cost and high availability parts to

compound it. As an example, the touch panel used is a 4-wire resistive panel, instead of

more complex and expensive parts like capacitive panels or 5,7 or 8 wire resistive

panels. The electronic was developed on the Arduino platform, comprised of an Atmel

microcontroller and an IDE for programming, having the advantage of both hardware

and software being open-source. A terminal interface through a serial port was also

developed, allowing configuration and calibration process to be done in a quick and

efficient way.

Finally, details of the prototype built inherited from physical and electrical

limitations within the project will be shown. Devices designed to work in a marine

environment goes through a step known as marinization, where moving parts and

mechanical connections are protected against vibration, and the electrical parts are

protected against humidity, corrosion and salinity, elements always present in the

environment the panel will be required to operate on. Even though the prototype wasn’t

properly validated in a marinization process, it shows basic key features from it.

Key-words: resistive touch panel, Arduino, serial communication

viii

SIGLAS

ADC – Analog to digital converter

DC – Direct current

DDP – Diferença de potencial

EEPROM – electrically erasable programmable read-only memory

E/S – Entrada e saída

HID – Human interface device

ICSP – In-circuit serial programming

IDE – Integrated development environment

ITO - Indium tin oxide

I/O – Input /Output

KB – Kilobyte

LED - Light-emitting diode

PWM – Pulse width modulation

RAM – Random access memory

RMS – Root mean square

SRAM – Static random access memory

TI – Texas Instruments

UART - Universal asynchronous receiver transmitter

USB – Universal serial bus

ix

Sumário

1 Introdução 1

1.1 - Tema 1

1.2 - Delimitação 1

1.3 - Justificativa 2

1.4 - Objetivos 2

1.5 - Metodologia 3

1.6 - Descrição 4

2 Desenvolvimento do hardware 5

2.1 - Pesquisa e seleção de componentes 5

2.2 - Painel sensível a toque

2.2.1 – Introdução a interfaces sensíveis a toque

2.2.2 – Características do painel utilizado

6

6

8

2.3 - Limitações e restrições

2.3.1 – Limitações físicas

2.3.2 – Limitações elétricas

10

10

11

2.4 - Montagem 13

3 Programação do microcontrolador

3.1 – Introdução a plataforma Arduino

3.1.1 – Introdução

3.1.2 – Bootloader Arduino

3.1.3 – Ambiente Arduino (IDE)

3.1.4 – Estrutura de um Sketch

3.2 – Leitura do painel e funções associadas

3.2.1 – A leitura do painel

16

16

16

16

17

17

19

19

x

3.2.2 – Calibração

3.2.3 – Mapeamento dos toques

3.3 – Reconhecimento de erros nas leituras

3.4- Estrutura e uso da memória

3.4.1 – Memória disponível

3.4.2 – Uso da memória FLASH

3.4.3 – Uso da memória SRAM

3.4.4 – Uso da memória EEPROM

3.5 – Comunicação serial e interface via terminal

4 Construção do protótipo

5 Conclusões

22

24

25

29

29

30

30

31

33

37

44

Referências 45

xi

Lista de Figuras

2-1 – Estrutura do painel de toque resistivo

2.2 – Modelo do divisor resistivo

2.3 – Circuito de um canal do módulo de relés

2.4 – Pinagem do ATMega168 no Arduino Nano

2.5 – Esquema de ligação

3.1 – Fluxograma tradicional de aquisição de um painel de toque

3.2 - Fluxograma de aquisição do painel de toque - projeto painel eletrônico

3.3 – Processo de calibração avançado – 25 pontos

3.4 – Calibração simples de 5 pontos

3.5 - 2 modos de calibração possíveis - Projeto painel eletrônico – 4 pontos

3.6 – Divisões no painel

3.7 – Exemplo de configuração – 4 botões virtuais

3.8 – Sinal gerado por um toque

3.9 – Modelo do método de medição 1

3.10 - Modelo do método de medição 2

3.11 – Estrutura da SRAM

3.12 - Hardware serial port no Arduino nano

3.13 – Pontos de toque para função cal

3.14 - Programação dos parâmetros do painel

7

8

12

14

15

20

21

22

22

23

24

25

26

26

27

30

33

34

35

xii

3.15 – Exemplo de configuração de botões virtuais

4.1 – Protótipo montado

4.2 – Tampa com painel e botões virtuais

4.3 – Lateral com prensa cabos

4.4 – Prensa cabo aberto e fechado

4.5 – Prensa cabos fechados sobre cabos

4.6 – Aplicação de silicone entre tampa e painel de toque

4.7 – Componentes eletrônicos dentro da caixa

4.8 – Fixação do cabo de ligação do painel de toque

4.9 – Componentes ligados com caixa aberta

4.10 – Configuração 1 – 40 regiões

4.11 – Configuração 2 – 160 regiões

4.12 - Esquema de botões 1

4.13 - Esquema de botões 2

4.14 - Esquema de botões 3

4.15 - Esquema de botões 4

36

37

38

38

39

39

40

40

41

41

42

42

43

43

43

43

xiii

Lista de Tabelas

2.1 – Especificações da placa Arduino

2.2 – Especificações do painel de toque

2.3 – Polarização do circuito de acionamento do módulo de relés

2.4 – Polarização do painel de toque

2.5 – Ligação e lógica

3.1 - Variáveis e seus tamanhos

3.2- Seqüência lógica e de ligação para leitura do eixo X

3.3 - Seqüência lógica e de ligação para leitura do eixo Y

3.4 - Memória disponível para diferentes microcontroladores usados na

plataforma Arduino

3.5 - Armazenamento de valores maiores que 8 bits

3.6 - Estrutura da EEPROM

3.7 – Configurações da interface terminal

6

9

12

13

14

18

28

28

29

32

32

34

1

Capítulo 1 - Introdução

1.1 – Tema

O trabalho desenvolvido tem como tema o projeto e construção de um protótipo

de um painel eletrônico de comando para embarcações marítimas de pequeno porte,

destinado a substituir seu equivalente eletromecânico. Estudo e pesquisa de

componentes para implementação do projeto, detalhes da plataforma de hardware e

software utilizados, programação do microcontrolador e criação de uma interface de

configuração no dispositivo são alguns dos assuntos apresentados.

Sendo um HID com lógica implementada em microcontrolador, a forma como a

programação da leitura dos toques do painel é realizada é de grande importância.

Fatores como a resolução do painel, tipos de botões virtuais a serem implementados,

que podem ser do tipo biestável ou astável, quantidade de botões e forma de

acionamento dos controles, entre outros, devem ser adequadas ao modo com que o

dispositivo será utilizado, além de serem implementados de forma simples e coerentes

com os limitados recursos computacionais e de memória disponíveis no

microcontrolador.

1.2 – Delimitação O projeto surgiu na metade de 2013 como uma solução proposta ao orientador

do projeto, que comentou a questão ao final de uma aula. Este, a pedido de conhecidos

da área de manutenção náutica, buscava por uma alternativa mais “elegante” para os já

velhos e tradicionais painéis de chaves e botoeiras. Mais especificamente no segmento

das lanchas, que é um mercado destinado a um público de grande poder aquisitivo, a

introdução de um novo tipo de painel mais moderno e funcional seria capaz de gerar

uma boa demanda no mercado.

O levantamento de uma primeira alternativa baseada em dispositivos eletrônicos

comerciais como tablets foi considerada, apresentando diversas características positivas,

como um melhor aspecto visual através de interface gráfica interativa, capacidade

multimídia, integração e conectividade com outros dispositivos. Entretanto,

características básicas e fundamentais como interface com sistemas de relés,

2

manutenção, durabilidade, e o próprio processo de marinização seriam inviáveis e/ou

com alto custo de implementação.

Optou-se, então, pelo desenvolvimento de um projeto baseado em componentes

de baixo custo e disponíveis no mercado brasileiro, e de baixa complexidade, tanto no

que se refere à montagem do dispositivo, quanto ao processo de programação e

manutenção do mesmo.

1.3 – Justificativa

A utilização de equipamentos eletrônicos em substituição aos seus equivalentes

elétricos, mecânicos ou eletromecânicos é um processo antigo e que, cedo ou tarde,

tende a acontecer nas mais diversas áreas.

Um sistema eletrônico programável apresenta grande flexibilidade de uso,

podendo assumir diversas funções diferentes, apenas com a troca de software, além de

permitir a fácil incorporação de diversas funcionalidades extras, como sistemas de

comunicação de emergência, monitoramento de temperatura e corrente elétrica, alarmes

e outros sistemas de controle.

1.4 – Objetivos

O trabalho tem como objetivo final o desenvolvimento completo em hardware e

software de um protótipo de painel eletrônico capaz de acionar comandos elétricos

através de sua interface de toque. Este protótipo deve apresentar a viabilidade e as

vantagens da implementação de um painel deste tipo em relação ao sistema tradicional.

Para o hardware, isso inclui a seleção de componentes compatíveis

eletricamente entre si e uma descrição do circuito para interligação do mesmo. Os

componentes selecionados devem ser de baixo custo e de fácil aquisição no mercado. A

montagem dos componentes utilizados deve ser rápida e simples, requerendo pouco ou

nenhum equipamento ou instalações específicas.

Para o software, tem-se como objetivo a programação de uma lógica para o

conjunto de hardware desenvolvido, com sistema de aquisição de toques e acionamento

de saídas digitais para controle de dispositivos elétricos. O algoritmo de leitura de toque

deve ser genérico para painéis resistivos de quatro fios, não se limitando ao modelo ou

tamanho utilizado no protótipo. Para isso, o sistema incluirá uma interface para o

usuário com funções específicas de programação e calibração dos pontos.

3

1.5 – Metodologia Para o desenvolvimento do projeto, o primeiro passo foi a descrição detalhada

das características do painel de chaves original que se pretende substituir, como

dimensão física média, características elétricas, funcionalidades etc. Definidas essas

características, foi realizada uma busca por componentes compatíveis com as

características do projeto e, dentre estes, as opções com grande disponibilidade de

aquisição e baixo custo, sobretudo em lojas online.

A etapa seguinte consistiu em uma busca dentro da comunidade de

desenvolvimento Arduino por exemplos e projetos semelhantes ao desejado. Palavras

chave como touchscreen, 4-wire resistive panel e serial port foram utilizadas nesta

busca. Tópicos importantes de diferentes áreas são coletados a partir destes projetos

semelhantes, para futuramente compor o projeto desejado. Identificadas as

funcionalidades necessárias, foi composto um cenário de teste isolado para cada função,

com o intuito de verificar, modificar e validá-la até se obter a resposta adequada.

O sistema completo foi então montado e novamente testado, simulando padrões

reais de uso das interfaces e corrigindo os erros encontrados. Nesta etapa foi importante

verificar a interação entre as diversas funções desenvolvidas e outras questões

importantes como temporização, acionamento repetido de interfaces e controle de erro.

Por fim foi montado o protótipo final, com as características de hardware e

software especificadas. A estrutura do hardware, embora desenvolvida com itens

característicos de estruturas marinizadas, não teve uma etapa de validação da

marinização a ser aplicada, por este ter sido considerado um processo necessário apenas

ao desenvolvimento de um produto final, com finalidade de uso prático ou comercial,

enquanto o protótipo desenvolvido tem como objetivo apenas demonstrar a viabilidade,

as vantagens e as desvantagens da implementação de uma interface de toque.

4

1.6 – Descrição

O capítulo 2 é dedicado à descrição das informações relativas ao

desenvolvimento do hardware do projeto.

Na seção 2.1 serão apresentadas as etapas iniciais de pesquisa e seleção dos

componentes principais que compõem o painel.

Na seção 2.2 será apresentado o princípio de funcionamento e principais

características do painel de toque utilizado, além de uma breve explicação sobre os

principais tipos de painéis de toque atualmente disponíveis no mercado.

Na seção 2.3 serão apresentadas as principais limitações físicas e elétricas

referentes à montagem do protótipo para utilização em embarcações marítimas de

pequeno porte.

Na seção 2.4 será detalhado o esquema de ligação entre os componentes na

montagem do protótipo, com foco na análise da documentação dos mesmos e as

mudanças decorrentes disso.

O capítulo 3 é dedicado ao software do projeto, incluindo apresentações sobre o

que foi utilizado e o algoritmo desenvolvido.

A seção 3.1 apresenta a interface de programação utilizada, a plataforma

Arduino, e os conceitos básicos da criação dos sketches

A seção 3.2 apresenta o princípio de funcionamento lógico da leitura do painel

de toque pelo microcontrolador e a forma como foram definidas as funções de

mapeamento de toque em ações.

A seção 3.3 trata da execução das funções destinadas ao reconhecimento de

erros nas leituras, e suas ações associadas.

A seção 3.4 trata da estrutura da memória e o controle do seu uso, recursos

geralmente muito limitados em sistemas com microcontroladores

A seção 3.5 trata da comunicação serial do controlador, envolvendo basicamente

as interfaces de programação e calibração do sistema através de um terminal.

O capítulo 4 apresenta os elementos e as características do protótipo montado a

partir do que foi definido nos capítulos 2 e 3.

O capítulo 5 corresponde às conclusões acerca do projeto.

5

Capítulo 2 - Desenvolvimento do Hardware

2.1 – Pesquisa e seleção de componentes

O desenvolvimento do projeto se iniciou com a busca do seu elemento mais

característico, o painel sensível a toque. Interfaces sensíveis a toque já estão

amplamente disponíveis em diversos segmentos da indústria, sendo a forma básica de

interação do usuário com dispositivos eletrônicos de consumo de alta tecnologia como

smartphones, tablets, notebooks e quadros interativos.

A escolha de um painel resistivo para o projeto teve como peso principal na

decisão a sua disponibilidade imediata no mercado. Atualmente é possível adquirir

através de lojas online ou revendedores especializados diversos tipos de kits

touchscreen, composto por um painel resistivo sensível a toque e um circuito

controlador com interface USB. Estes kits são direcionados a pessoas interessadas em

adicionar funcionalidades de toque a dispositivos tais como notebooks e monitores,

sendo necessário o uso de um sistema operacional Windows com suporte aos drivers do

controlador USB. Tal controlador é simplesmente um ADC capaz de selecionar quais

eletrodos serão acionados para aplicação da ddp e quais eletrodos serão utilizados como

entrada do ADC. O ADC pode operar tanto em modo simples quanto diferencial. Assim,

a funcionalidade necessária do controlador pode ser facilmente replicada em um sistema

com microcontrolador programável, mais simples.

Para o controlador, optou-se pela plataforma Arduino, que utiliza

microcontroladores Atmel. A plataforma Arduino é bastante popular entre hobbistas e

pequenos desenvolvedores, principalmente pela grande facilidade de acesso, tanto ao

software quanto ao hardware. Ela é composta por um ambiente de desenvolvimento

para programação e um projeto físico das placas com microcontroladores, ambos open-

source. Por ser open-source, há hoje uma grande oferta de placas de desenvolvimento

Arduino compatible ou Arduinos originais no mercado, trazendo uma maior

concorrência e menores preços. Encontram–se, também, diversos tutoriais e exemplos

de códigos para Arduino em sites e fórums de discussão na internet, além do site oficial

mantido pelos desenvolvedores originais.

6

A tabela 2.1 apresenta as principais especificações de hardware da placa

Arduino utilizada no projeto, um modelo Arduino Nano.

Tabela 2.1 - Especificações da placa Arduino

Especificações

Microcontrolador Atmel ATmega 168 ou ATmega 328

Tensão operacional (nível lógico) 5 V

Tensão de entrada (recomendada) 7-12 V

Tensão de entrada (limites) 6-20 V

Pinos digitais de E/S 14 (6 com capacidade de PWM)

Pinos analógicos de entrada 8

Corrente DC por pino de E/S 40 mA

Memória Flash 16 KB (ATmega168) ou 32 KB (ATmega328) dos

quais 2KB usados pelo bootloader

SRAM 1 KB (ATmega168) ou32 KB ATmega328)

EEPROM 512 bytes (ATmega168) ou 1 KB (ATmega328)

Velocidade do clock 16 MHz

Dimensões 18.5 x 43mm

A decisão pelo uso da plataforma Arduino permitiu também uma rápida e fácil

identificação de componentes adicionais compatíveis, dado que já existem diversas

empresas fabricando e comercializando sensores, placas de expansão e acessórios com o

logo Arduíno compatible.

2.2 - Painel sensível a toque

2.2.1 - Introdução a interfaces sensíveis a toque

Existem hoje sistemas de reconhecimento de toques implementados com

diversas tecnologias diferentes, como ondas acústicas de superfície, imageamento por

câmeras, sistemas com infravermelho, entre outros. Entretanto, os tipos de painéis

sensíveis a toque mais utilizadas em dispositivos comerciais e industriais, são os

capacitivos e os resistivos. As tecnologias capacitivas e resistivas podem ser

implementadas através de painéis independentes, sendo, então, aplicadas sobre telas ou

outras superfícies.

7

Painéis resistivos são compostos de duas folhas flexíveis recobertas por uma

camada uniforme de óxido metálico transparente. Esta é a camada de material resistivo,

sendo o indium tin oxide (ITO) um dos materiais mais empregados atualmente. Uma das

camadas é dotada de eletrodos nas extremidades de um eixo, enquanto a outra camada

possui eletrodos nas extremidades do outro eixo.

Figura 2.1 – Estrutura do painel de toque resistivo

É comum que a camada inferior corresponda ao Y+ e Y-, enquanto a superior

corresponda ao X+ e X-. Por fim, elas são separadas por uma fina camada de ar ou

micro pontos feitos de material isolante, de forma que ao se tocar na sua superfície, as

duas camadas entram em contato sendo então possível registrar a posição do toque.

Esse registro de posição é feito em duas etapas, lendo a posição de um dos dois eixos de

cada vez.

Quando é registrada a existência de um toque, ao se aplicar uma ddp nos

terminais Y+ e Y-, é possível determinar a posição do toque relativa ao eixo Y medindo

o potencial em X+ ou X-. Em seguida, alterna-se o processo, com aplicação da ddp nos

terminais X+ e X- para medição em Y+ ou Y- do potencial correspondente a posição ao

longo do eixo X.

8

Este processo se baseia no modelo de divisor resistivo formado pelo contato da

resistência das duas superfícies, representado na figura 2.2.

Figura 2.2 - Modelo do divisor resistivo

É possível também ser determinada uma leitura do eixo Z, correspondente a

pressão do toque no ponto obtido. Isto é feito aplicando a ddp em Y+ e X-, com leitura

em Y- ou X+ por exemplo. Entretanto, esta funcionalidade é pouco utilizada, estando

presentes apenas em sistemas muito específicos, auxiliando na validação dos toques ou

reconhecimento de assinaturas.

2.2.2 – Características do painel utilizado

Ao consultar a literatura sobre painéis resistivos[2][3][5], encontramos como

principais características positivas o seu baixo custo de produção, grande resistência à

presença de poeira, água e umidade na sua superfície, e a ativação ser feita através da

pressão mecânica. Isto significa que o painel é capaz de operar normalmente seja

através da pele humana, com o uso de luvas ou de instrumentos como canetas de toque.

Painéis capacitivos, por exemplo, precisam do contato com a pele humana

devido à natureza do seu funcionamento, aproveitando-se das características elétricas

dela. Em países de clima frio ou em atividades onde o uso de luvas é comum, ou mesmo

obrigatório, o uso de painéis capacitivos é altamente prejudicado, muitas vezes inviável.

Entre as características negativas associadas aos painéis resistivos, podemos

destacar uma diminuição na transmissão luminosa devido à presença de camadas

adicionais de materiais sobre uma tela, a menor sensibilidade a toques leves quando

comparada com tecnologias como a de painéis capacitivos e uma vida útil

potencialmente curta, sendo esta muito relacionada com a qualidade do processo de

fabricação e dos materiais empregados.

9

Dentre as características dos painéis resistivos, cabe ressaltar as implicações dos

seus pontos fracos em relação à sua aplicação no projeto. A baixa transmissão luminosa

é um fator de baixa relevância, uma vez que o painel será aplicado sobre uma imagem

impressa e não sobre uma tela, caso em que haveria a necessidade de um aumento no

brilho de seu backlight e um correspondente aumento no consumo energético. Painéis

resistivos também possuem menor sensibilidade e não suportam multi-toques, em

comparação com painéis capacitivos. Nenhuma destas características é necessária ao

projeto, que necessita apenas de toques simples para operação.

Com relação à vida útil do painel, valores limites típicos para painéis resistivos

estão na ordem de um milhão de toques quando ativados através dos dedos, ou de 100

mil toques para ativações com canetas de toque ou outros objetos rígidos semelhantes.

Isto ocorre devido à característica flexível das camadas resistivas responsáveis pelo

reconhecimento dos toques.

A movimentação e a pressão pontual lentamente geram falhas e “rachaduras” ao

longo da camada uniforme resistiva. Isto altera as suas características elétricas,

diminuindo a linearidade e a precisão do painel. Estes efeitos se acentuam na medida

em que o tamanho do painel aumenta, sendo relativamente pequenos ou desprezíveis em

painéis de pequeno porte. Em equipamentos de uso público ou comercial como caixas

eletrônicos, telas de pontos de venda ou mapas interativos, um milhão de toques pode

corresponder a uma vida útil de alguns meses. Para dispositivos de uso pessoal, ou de

uso não diário, esse limite aumenta consideravelmente, podendo alcançar diversos anos

de uso.

O painel de toque utilizado no projeto foi um modelo de 7 polegadas, adquirido

em loja online. É um painel resistivo de 4 fios genérico sem modelo. As especificações

do painel estão na tabela 2.2

Tabela 2.2 - Especificações do painel de toque

Tamanho 7 polegadas

Dimensões da área externa 164,20 x 103,20 (mm)

Dimensões da área ativa 155 x 94 (mm)

Linearidade desvio menor ou igual a 1.5%

Vida útil com toque aproximadamente 1 milhão de ativações

Vida útil com caneta aproximadamente 100 mil ativações

Resistência do eixo X 670 ohms

Resistência do eixo Y 245 ohms

10

2.3 – Limitações e restrições

2.3.1 – Limitações físicas

Um dos objetivos do projeto é desenvolver um sistema de painel de toque com

implementação flexível capaz de ser reprogramado e adaptado para diferentes tipos e

tamanhos. O painel de toque utilizado é um modelo de 7 polegadas com dimensões

físicas semelhantes a de painéis tradicionais de 4 a 6 botões, que se pretende substituir

nessa primeira implementação. A área sensível a toque do painel, a chamada área útil,

deve ser suficiente para exibição dos botões virtuais de acordo com os tipos e

quantidades desejados.

O painel foi desenvolvido com a intenção de ser ativado através do toque de

dedos. Sendo assim, o tamanho dos botões a serem configurados deve ser compatível

com o modo de uso. Existem diversos estudos e documentos relacionados à otimização

no dimensionamento de botões, objetos e outros elementos em interfaces de toque

[6][7]. De modo geral, o menor tamanho para um botão é determinado pelo tamanho do

dedo de um adulto. Assim, elementos de interface devem possuir pelo menos 1cm nas

suas dimensões. Além disso, botões ou objetos cujas funções associadas sejam de

grande importância ou de uso freqüente devem ter um tamanho maior, indicando sua

importância e facilitando seu uso. Botões menores que o tamanho mínimo podem ser

utilizados desde que devidamente separados de outros elementos de interface.

O protótipo desenvolvido divide a área útil do painel em 40 regiões de ativação,

cada uma com aproximadamente 2 cm de lado. Estas regiões podem reproduzir um

botão virtual, ou serem utilizadas como campos de separação. Botões maiores podem

ser configurados através do agrupamento de regiões, enquanto a utilização de botões

menores requer uma divisão maior no número de regiões do painel.

O modelo de Arduino escolhido foi o Arduino Nano V3.0, por apresentar todas

as funcionalidades e recursos de hardware da versão tradicional, o Arduino Uno, mas

em um design mais compacto, ambos com capacidades suficientes para montagem do

protótipo. O uso da plataforma Arduino permite, ainda, uma fácil substituição de

componentes, uma vez que a placa do microcontrolador é adquirida completamente

montada, pronta para uso. Circuitos de clock, regulação de tensão e alimentação já estão

integrados no projeto da placa. Além disso, da mesma forma que o modelo Nano é

semelhante à versão Uno, existem diversos outros modelos com diferentes tamanhos e

11

particularidades focadas em objetivos específicos. Observadas algumas restrições como

quantidade de memória e número de entradas e saídas analógicas e digitais, é possível

substituir o Arduino Nano utilizado por outras placas Arduino.

2.3.2 – Limitações elétricas

Embarcações marítimas de pequeno porte são geralmente dotadas de um sistema

elétrico alimentado por baterias semelhantes às automotivas. São baterias seladas de

chumbo-ácido, reguladas por válvulas com tensão nominal de 12 V. Embarcações

maiores ou com sistema elétrico de grande porte podem ainda utilizar baterias de 24 V.

Sendo esta a alimentação disponível para o sistema, foi possível utilizar componentes

compatíveis com esta tensão, obtendo-se um sistema simples como desejado.

O Arduino nano V3.0, modelo utilizado no projeto, pode ser alimentado através

de sua porta USB mini pela linha de 5 V, ou pelo seu terminal Vin. A placa é dotada de

um circuito integrado regulador de tensão cuja entrada está conectada ao terminal Vin.

O projeto original do Arduino nano especifica um regulador de tensão UA78M05 para

geração dos 5 V utilizados na placa a partir de Vin. A tensão de entrada recomendada

para a placa, de acordo com as especificações originais, é de 7-12 V, mas analisando a

documentação do regulador de tensão verificamos que sua tensão de entrada

recomendada é de 7-25 V, com valor máximo absoluto de 35 V. Desta forma é possível

alimentar a placa do Arduino diretamente através das baterias disponíveis.

Uma característica importante no que se refere ao regulador de tensão é o uso do

UA78M05 ao invés de um regulador 7805 convencional. O regulador UA78M05 é uma

versão do tradicional 7805, mas com menor capacidade de fornecimento de corrente,

tendo sua saída limitada a 500 mA. O microcontrolador Atmega328 estabelece um

limite de corrente de até 40 mA por pino, com corrente máxima para todas as saídas em

conjunto de 200 mA. Isso significa que, apesar do projeto da placa oferecer 2 pinos com

tensões de 5 V e 3,3 V, que poderiam ser utilizados para alimentar componentes extras,

após subtrair o consumo do Atmega328 e do restante da eletrônica da placa, há pouca

corrente disponível de fato. Como exemplo desta limitação, o módulo de relés utilizado

no projeto utiliza uma linha de 5 V para enviar o sinal de controle dos relés. A corrente

necessária para ativar os relés excedia a capacidade disponível da linha de 5 V do

Arduino, tendo sido usado um regulador 7805 dedicado apenas ao módulo de relés. O

12

uso de um módulo de relés ativado por 12 V ao invés de 5 V seria possível, sendo na

realidade o mais adequado por dispensar o uso do regulador.

O módulo de relés utilizado é uma placa de 8 canais, cada um composto por um

relé de alta sensibilidade modelo SRD-05VDC-SL-C e um optoacoplador EL-817,

responsáveis pela ligação entre os pinos de atuação e o sinal de controle dos relés, além

de componentes de polarização e indicação como resistores, transistores e LEDs. O

circuito de acionamento é ativado com a saída digital em LOW, atuando como current

sink. A programação utilizada foi adaptada de forma a permitir que módulos com

diferentes valores de tensão pudessem ser utilizados. O modo tradicional de

acionamento de relés opera um pino digital do microcontrolador como saída,

selecionando nível lógico alto ou baixo para acionamento do relé. Este método

usualmente requer que a tensão de saída em nível lógico alto seja a mesma utilizada no

sinal de controle dos relés. O sistema implementado alterna o pino digital entre estado

de saída com nível lógico baixo e estado de entrada, em alta impedância. O estado de

alta impedância simula o nível lógico alto ao cortar a corrente do circuito, com a

vantagem de passar a ser independente da tensão.

A figura 2.3 apresenta o circuito de um canal do módulo de relés.

Figura 2.3 - Circuito de um canal do módulo de relés

A tabela 2.3 apresenta os valores medidos e utilizados para o circuito de

acionamento de um canal de relé.

Tabela 2.3 - Polarização do circuito de acionamento do módulo de relés

Vcc 5 V DC

R1 1 Kohm

V(R1) 2,25 V

V(IN1) - LED 1,65 V

If 2,25 mA

13

A polarização dos terminais do painel de toque também é feita diretamente

através dos pinos de saída do microcontrolador. A partir dos valores de resistência de

cada um dos eixos, e da tensão de saída em HIGH do microcontrolador, obtemos os

valores de corrente necessários para leitura do painel, apresentados na tabela 2.4.

Tabela 2.4 - Polarização do painel de toque

V(HIGH) 5 V DC

R(X) 670 ohms

I(X) 7,46 mA

R(Y) 245 ohms

I(Y) 20,4 mA

A corrente total máxima para as saídas do microcontrolador no protótipo

montado corresponde à soma da maior corrente necessária para ativar o painel com a

corrente total de acionamento de todos os canais do módulo de relés. Não são somadas

as correntes dos dois eixos do painel de toque, pois estes são acionados de modo

alternado. Obtemos, então, um total de 38,4 mA, valor bem abaixo do limite de 200 mA

combinados para as 22 portas de I/O. Destaca-se, assim, a capacidade ociosa e

disponível do sistema para expansão e novos recursos.

2.4 – Montagem

A programação de um Arduino como controlador de touchscreen resistivo é um

projeto já conhecido pela comunidade. Neste [9], o autor detalha seu projeto em que

uma matriz de LEDs pode ter cada um de seus elementos acionado por um toque

correspondente na superfície touch sobre ela. Exemplos de códigos e esquemas de

ligação são apresentados, além de breve explicação do princípio de funcionamento.

Tendo tomado este projeto [9] como ponto de partida, foi observada a

necessidade de diversas mudanças para adequação ao uso no protótipo do painel, além

de outras melhorias.

14

No que se refere à ligação do Arduino ao touchpad e à lógica na leitura, segue

na tabela 2.5 o esquema utilizado no projeto original que serviu de base.

Tabela 2.5 - Ligação e lógica

Pino D = digital Pino A = analógico

Ligação Terminal - Pino Lógica

Painel de toque Arduino Fase 1 – Leitura do eixo X Fase 2 – Leitura do eixo Y

Esquerda D2 Modo: Saída Estado: LOW Modo: Entrada

Alta impedância

Cima A3 Leitura do eixo X (não usado)

D5 Modo: Entrada

Alta impedância

Modo: Saída

Estado: HIGH

Direita A4 (não usado) Leitura do eixo Y

D4 Modo: Saída

Estado: HIGH

Modo: Entrada

Alta impedância

Baixo D3 Modo: Entrada

Alta impedância

Modo: Saída

Estado: LOW

Analisando o esquemático do Arduino Nano, verificamos que as portas digitais

de I/O (D0 a D13) são identificadas como portas PB (PB0 a PB5) e PD (PD0 a PD7),

enquanto as portas analógicas responsáveis pelas leituras com o A/D são identificadas

como PC(PC0 a PC5) e ADC5/ADC6.

Figura 2.4 - Pinagem do ATMega168 no Arduino Nano

15

Embora o esquemático do Arduino Nano disponível em [1] liste o

microcontrolador ATMega168, a versão 3.0 utiliza o ATMega328. Ambos os chips são

equivalentes, tendo como diferencial a quantidade de memória disponível. 16KB de

FLASH, 1 KB de SRAM e 512 bytes de EEPROM para o 168, e o dobro destas para a

versão 328.

De acordo com o manual do microcontrolador, as PC5:0 são portas de 7 bits

bidirecionais de I/O e que têm como função alternativa a ligação com as entradas de um

ADC. Dessa forma, é possível utilizar os pinos A3:0 para interface com o painel

resistivo, simplificando a conexão de 6 para 4 fios. Alternam-se suas funções entre saída

digital para polarização dos eixos e entrada analógica para o ADC para leitura dos

toques. O ADC presente no microcontrolador tem uma resolução de 10 bits, retornando

inteiros de 0 a 1023.

O módulo de relés utilizado é um modelo Arduino compatible, já sendo dotado

de circuito de proteção e isolamento entre a saída do Arduino e a bobina do relé. Este

isolamento é feito por um optoacoplador EL817, garantindo isolação de até 5000 V

RMS entre entrada e saída. A ligação da entrada de cada canal do módulo de relés é feita

diretamente com um pino de saída digital do microcontrolador.

A figura 2.5 apresenta a ligação entre os 3 componentes.

Figura 2.5 -Esquema de ligação

16

Capítulo 3 - Programação do microcontrolador

3.1 – Introdução à plataforma Arduino

3.1.1 – Introdução

A plataforma Arduino é uma plataforma eletrônica de prototipagem de código

aberto, e tem como um de seus objetivos oferecer hardware e softwares flexíveis e

fáceis de usar. Uma das características que contribuíram para a sua popularização com

base na idéia de ser fácil de usar é a possibilidade de programar o microcontrolador

através da porta USB presente na maioria das placas Arduino. Ao invés de requerer o

uso de gravadores ou placas de programação, como é comum com outros

microcontroladores, a plataforma Arduino utiliza microcontroladores pré-programados

com um bootloader, além de possuir integrado no circuito um controlador responsável

pela conversão entre os sinais da interface serial do microcontrolador e a interface USB.

Interfaces USB estão presentes em praticamente 100% dos computadores atuais, sendo a

interface mais popular e disponível para conexão com outros dispositivos e periféricos.

3.1.2 – Bootloader Arduino

O bootloader, quando presente, é a primeira seqüência de instruções a ser

executada quando o microcontrolador é iniciado. Sua função é introduzir um atraso na

execução do código gravado pelo usuário enquanto monitora as informações recebidas

pela interface serial, convertidas da interface USB. Ao reconhecer instruções específicas

do processo de gravação, o bootloader negocia a comunicação e a programação do

microcontrolador é realizada. A presença do bootloader é imprescindível para a

comunicação com o microcontrolador pela porta USB.

A gravação do bootloader, ou programação do microcontrolador sem uso do

bootloader, deve ser feita através do conector ICSP. A presença do bootloader implica

no uso de 2KB de memória FLASH, além de um delay na inicialização do código

gravado, razões pelas quais pode ser desejado utilizar o microcontrolador sem

bootloader.

17

O Projeto Painel Eletrônico foi desenvolvido com base em placas Arduino já

pré-programadas com o bootloader, sendo este um fator que acelera e simplifica o

processo de programação e integração do circuito ao painel.

3.1.3 – Ambiente Arduino(IDE)

Embora os microcontroladores Atmel utilizados possam ser programados

utilizando qualquer compilador e gravador compatíveis, o uso da IDE Arduino oferece

diversas vantagens, principalmente no que se refere à simplicidade da programação e a

disponibilidade de referências e guias.

A IDE Arduino é um pacote completo de instalação disponível na página oficial

do site arduino.cc[1], que contem todo o software necessário para a programação. Ela é

multiplataforma, possuindo os drivers necessários para o reconhecimento da interface

USB das placas nos sistemas Windows, Mac OSX e Linux.

A interface de programação inclui um editor de texto para desenvolvimento dos

códigos, exemplos com as principais funções e algoritmos de acesso ao hardware,

interface de comunicação com a porta serial através de uma janela Serial Monitor,

suporte para gravação de bootloader em placas Arduino, o compilador responsável pela

tradução das instruções do Sketch em binário para o microcontrolador e um uploader

para gravação do código.

A IDE Arduino foi o ambiente utilizado para o desenvolvimento da

programação do microcontrolador. As ferramentas disponíveis, os exemplos de funções

e a integração com referências se mostraram adequadas e suficientes para o

desenvolvimento do projeto, sendo, portanto, recomendadas para futuros trabalhos

semelhantes.

3.1.4 – Estrutura de um Sketch

Sketch é o nome utilizado na plataforma Arduino para os seus programas. São os

códigos fontes enviados para a placa Arduino e executados por ela. Os Sketches são

programados na linguagem Arduino, que é baseada em C/C++, além de permitir o uso

de qualquer função da biblioteca AVR Libc.

Um Sketch básico é composto sempre por pelo menos dois blocos de funções

especiais, o setup() e o loop(). O setup() é chamado apenas uma vez, quando o Sketch

18

começa, sendo utilizado normalmente para realização de tarefas de inicialização como

definição de modo de operação de pinos ou inicialização de bibliotecas.

A função loop() por sua vez é chamada novamente sempre que é encerrada,

sendo executada de forma cíclica. É no loop( ) que se encontram as principais funções

de um Sketch. Os tutoriais Arduino chamam atenção para a fato de que um Sketch

sempre deve possuir um setup() e um loop(), ainda que estes não venham a ser

utilizados.

Outra função especial que pode ser definida dentro de um sketch é a

serialEvent().

A serialEvent() ocorre sempre que um novo dado se encontra no receptor da

hardware serial. Essa rotina é executada entre os ciclos de loop(), portanto o uso de

instruções de delay dentro de um loop podem atrasar a resposta. Múltiplos bytes de

dados podem estar disponíveis.

O uso da serialEvent() facilita o monitoramento da interface serial, prevenindo a

perda de dados. Seu uso é altamente recomendado se o seu Sketch tiver a necessidade de

receber dados pela interface serial, porém não é obrigatório como no caso das funções

setup() e loop().

A declaração de variáveis em um Sketch deve levar em conta o escopo desejado

e a faixa de valores possíveis a serem assumidas pela variável. A tabela 3.1 apresenta os

tipos de variáveis disponíveis na plataforma Arduino e o tamanho ocupado por cada

uma delas.

Tabela 3.1 - Variáveis e seus tamanhos

Variável Tamanho

Boolean 1 byte

Byte 1 byte

Char 1 byte

Int 2 bytes

Int 2 bytes

Word 2 bytes

Long 4 bytes

Unsigned Long 4 bytes

Float 4 bytes

Double 4/8 bytes

19

Considerando as limitações típicas de hardware para sistemas microcontrolados,

a escolha do tipo adequado de variável é de grande importância para que garantir que

não haja esgotamento de recursos como memória RAM. Para o Atmega328P,

microcontrolador presente na placa Arduino utilizada, 2KB de RAM estão disponíveis.

O Sketch desenvolvido utiliza a etapa de setup() para inicialização da porta

Serial utilizada na comunicação e para carregamento dos parâmetros de configuração da

memória. O bloco de loop() é composto de diversas chamadas de funções, monitorando

as leituras do painel de toque e tratando os eventuais dados provenientes da porta Serial.

O Sketch do projeto conta com a função serialEvent() para leitura da porta serial,

adicionando instruções de temporização para permitir o recebimento e processamento

de strings completas. São permitidos até 5 segundos de intervalo entre caracteres no

recebimento de uma string, para que esta seja processada como um todo. Isto possibilita

que comandos sejam digitados manualmente em programas terminal convencionais.

Esta temporização é variável através do parâmetro serialTimeLimit.

Em relação às variáveis, evitou-se utilizar variáveis de maior tamanho. Para

praticamente todas as variáveis de trabalho, foi possível defini-las com tipos de 1 ou 2

bytes, sendo o uso de variáveis inteiras ou booleanas predominante. A única exceção

ocorre por parte das variáveis responsáveis pela contagem de tempo, para temporização.

Estas foram definidas como variáveis de 4 bytes, em virtude das possíveis faixas de

valores retornadas pelas funções associadas a elas.

3.2 – Leitura do painel e funções associadas

3.2.1 – A leitura do painel

A leitura de um painel de toque é um processo no qual se obtém a posição atual

de contato entre as camadas inferior e superior do painel, resultado de um toque por um

dedo,caneta de toque ou similar. Em 2005 a Texas Instruments Incorporated publicou

um documento entitulado Using resistive touch screens for human/machine interface

[10] no qual diversas tecnologias de painéis de toque resistivos são apresentadas e

comparadas.

20

O fluxograma tradicional do processo de aquisição da leitura de um painel de

toque está reproduzido na figura 3.1.

Figura 3.1 - Fluxograma tradicional de aquisição de um painel de toque

O processo de aquisição utiliza o princípio básico de leitura de um painel de

toque resistivo, aplicando uma ddp ao longo de um eixo e medindo-se a tensão ao longo

do outro, obtendo-se assim a posição relativa do toque no segundo.

A aquisição dos toques no processo tradicional realiza sequencialmente todas as

leituras do eixo X, as leituras do eixo Y e as leituras do eixo Z. O eixo Z pode ser lido

ao aplicar a ddp em uma extremidade de cada eixo, enquanto a medição é realizada nas

extremidades restantes. Obtém-se assim um valor relativo à pressão do toque naquele

instante. O valor da pressão do toque é uma informação que pode ser utilizada para

validar toques detectados com características duvidosas, como valores fora da faixa

normal, duração muito curta/longa, ou ainda leituras com grande variância. Outra

aplicação comum para a leitura da pressão é a de adicionar funções secundárias para

uma mesma região de toque, como por exemplo abrir um menu de opções para um

21

objeto utilizando um toque forte e longo, ao invés de um toque simples e rápido para

selecionar o objeto.

A figura 3.2 apresenta o processo de aquisição utilizado, que é diferente do

tradicional.

Figura 3.2 - Fluxograma de aquisição do painel de toque - projeto painel eletrônico

O processo de aquisição no Projeto Painel Eletrônico não realiza leituras de

pressão, o eixo Z, por ter sido considerada desnecessária. A interface a ser apresentada é

simples, contendo poucos objetos e associando a cada um deles apenas uma função.

A principal mudança implementada em relação ao processo de aquisição

tradicional foi a leitura alternada dos eixos para obtenção dos valores médios. No

processo tradicional, as leituras do eixo Y só são realizadas após obtenção das leituras

22

do eixo X. Isto ocasionalmente fazia com que poucas leituras do eixo Y pudessem ser

obtidas, especialmente em situações de toques leves e rápidos, pois não é possível

dividir o tempo de aquisição igualmente entre os eixos, uma vez que não é possível

saber previamente qual será a duração do toque. O processo de leitura alternada dos

eixos permite uma obtenção de dados mais equivalente para os dois eixos.

3.2.2 – Calibração

Para que o valor obtido no processo de leitura do painel possa ser utilizado, é

necessário ainda que seja feita uma calibração das leituras do painel. O processo de

calibração é um processo típico no uso de painéis resistivos e consiste na obtenção de

valores brutos de tensão de pontos conhecidos que devem ser pressionados. Estes

pontos conhecidos geralmente incluem as extremidades e/ou os cantos do painel, além

do centro, podendo ainda incluir uma série de pontos eqüidistantes. As figuras 3.3 e 3.4

apresentam dois exemplos de padrões de calibração.

Figura 3.3 - Processo de calibração avançado – 25 pontos

Figura 3.4 - Calibração simples de 5 pontos

23

O processo de calibração tem dois objetivos principais. O primeiro é a obtenção

de leituras relativas às extremidades do painel, enquanto o segundo é o alinhamento

com os elementos de uma tela, quando aplicado sobre ela.

As leituras das extremidades geram valores que corresponderão aos limites dos

eixos X e Y do painel. Desta forma, qualquer outra leitura realizada estará dentro desses

limites, e sua posição relativa sobre o painel, considerando a linearidade da resistência,

pode ser determinada a partir destes limites. Em sistemas de cinco pontos, a leitura do

ponto central tem como função uma simples verificação da linearidade da resistência, ao

comparar o valor obtido para o centro do painel com o valor teórico a partir das

extremidades. Em painéis de maiores dimensões, ou em aplicações que exijam grande

acurácia, acrescenta-se a função de calibração avançada, como a de 25 pontos

apresentada na figura 3.5. Nestes casos, problemas decorrentes da diminuição ou de

uma baixa linearidade da resistência são amenizados ao determinar a posição do toque

pela interpolação entre extremidades mais próximas.

Quando o painel de toque é aplicado sobre uma tela, o processo de calibração

tem como função adicional corrigir erros de alinhamento entre a tela e o painel

decorrente do processo de montagem. Obtêm-se assim uma correta associação entre os

pontos da tela com as posições no painel de toque.

No Projeto Painel eletrônico, a calibração é realizada apenas com quatro pontos,

um para cada extremidade. Isto é possível e suficiente devido às pequenas dimensões do

painel utilizado, característica esta que lhe confere alto grau de linearidade ao longo dos

eixos.

Figura 3.5 - 2 modos de calibração possíveis - Projeto painel eletrônico – 4 pontos

O processo de calibração é importante também como rotina de manutenção do

painel, cujas características elétricas e linearidade podem variar ao longo da vida útil e

24

operacional. Uma simples calibração pode fazer com que um painel que apresente erros

no reconhecimento dos toques volte a estar plenamente funcional.

A adição de um processo de calibração avançada no sistema desenvolvido é

possível. Contudo, a calibração avançada, implica em maior uso de memória e de ciclos

de processamento ao requerer o armazenamento adicional de valores correspondentes

aos pontos de calibração.

A real utilidade de um sistema de calibração avançado, porém, é questionável.

Especialmente considerando as pequenas dimensões do painel de toque utilizado. De

acordo com a Hope Industrial[11], o processo de calibração avançado não é necessário

para todos projetos. O processo de calibração padrão é adequado à maioria dos usuários,

sendo que menos de 1% de seus usuários tem necessidade de realizar uma calibração

avançada para obtenção de resultados ótimos com seus monitores touch screen.

3.2.3 – Mapeamento dos toques

A etapa seguinte após a leitura do toque é o mapeamento com sua função

correspondente. As funções definidas foram o acionamento das portas digitais do

microcontrolador, que poderia ser de duas formas. A primeira, função toggle, ligaria ou

desligaria a saída digital relacionada, independente da duração do toque. Esta é

destinada ao acionamento de elementos como motores, bombas d`água, iluminação e

outros controles. A segunda, função hold, mantém a saída digital relacionada ligada

enquanto houver o toque, sendo assim, adequada para o acionamento de buzinas,

guinchos de âncoras e outros motores de pequeno porte.

Para a criação de botões virtuais no painel de toque, a superfície do painel foi

dividida em regiões numeradas sequencialmente da esquerda para a direita e de cima

para baixo, de modo que cada região corresponderia a uma função, podendo inclusive

esta função ser a de não executar nenhuma ação. A figura 3.6 representa a divisão em

regiões da superfície do painel de toque.

33 34 35 36 37 38 39 40

25 26 27 28 29 30 31 32

17 18 19 20 21 22 23 24

9 10 11 12 13 14 15 16

1 2 3 4 5 6 7 8 Figura 3.6 - Divisões no painel

25

A divisão da superfície do painel foi feita com base nas dimensões

recomendadas para objetos em sistemas com interface de toque, de modo que cada

região tem o tamanho adequado à representação de um objeto. No protótipo

desenvolvido, foi utilizado um módulo de relés com 8 canais, de modo que o painel

pode ser composto por até 8 botões. Em uma das configurações definidas, foram criados

quatro botões virtuais, cada um composto por quatro regiões adjacentes configuradas

com a mesma função, formando um único botão, utilizando os demais botões adjacentes

como região de guarda, que são as regiões de separação entre os botões sem nenhuma

função associada. A figura 3.7 apresenta a configuração do painel com 4 botões virtuais.

Figura 3.7 - Exemplo de configuração - 4 botões virtuais

Tanto a resolução do painel quanto a do ADC, que é de 10 bits, permitem a

divisão do painel em regiões ainda menores, possibilitando assim a criação de botões

maiores ou menores, agrupando ou não regiões adjacentes, além de definir o tamanho

necessário para as regiões de guarda.

Quanto à programação da função de cada botão, foi associado um endereço na

EEPROM (memória não volátil) para cada região, de modo que o conteúdo desse

endereço de memória representa a função e a porta digital a ser controlada. Detalhes

sobre a programação da memória são apresentados na seção 3.4.

3.3 – Reconhecimento de erros nas leituras

O processo de leitura da posição em um painel de toque está sujeito a diversos

erros que podem levar a um funcionamento inadequado ou indesejado do sistema. Estes

erros podem ser de natureza física do conjunto, ou resultado de uso incorreto por parte

do usuário. É necessário, então, que hajam algoritmos na programação capazes de

identificar e corrigir esses erros, ainda que de forma simples e minimalista.

Dentre os efeitos de natureza física que tradicionalmente afetam sistemas de

toque, podemos destacar a movimentação da camada externa do painel no processo do

toque, que gera um efeito de bouncing, e a ativação dos drivers para energização dos

26

eixos no processo de leitura, que pode fazer com que cargas se acumulem na

capacitância parasita entre as camadas superior e inferior do painel, o chamado efeito

charging. Ambos geram um pico de tensão no início do sinal correspondente ao toque,

que vai oscilar antes de desaparecer e estabilizar a leitura. A figura 3.8 apresenta o

aspecto geral do sinal gerado por um toque.

Figura 3.8 - Sinal gerado por um toque

A primeira ação realizada após ativação dos drivers do painel é a introdução de

um atraso antes da leitura. Foi determinado experimentalmente que a introdução de um

atraso de 1 ms entre a ativação dos drivers e a realização da leitura é o suficiente para

obtenção de valores corretos para a posição do toque. Além disso, é calculado o valor

médio de todas as leituras obtidas ao longo da duração do toque, reduzindo, assim, os

efeitos de ruídos provenientes do meio externo.

O processo de detecção inicial do toque também pode ser melhorado alterando o

estado das portas responsáveis pela leitura. No chamado método 1, colocamos o

terminal oposto do terminal de leitura em alta impedância de modo que a posição do

toque pode ser facilmente mapeada a partir do valor obtido, devido à linearidade da

resistência no painel. A figura 3.11 apresenta o modelo do circuito do método 1 na

leitura do eixo Y.

Figura 3.9 - Modelo do método de medição 1

27

A tensão lida depende basicamente da relação entre as resistências que

compõem o eixo. Indesejavelmente, o estado de ausência de toque pode gerar leituras

diferentes de 0, devido aos efeitos de bouncing do painel, charging das placas e

principalmente ruído captado pelo terminal em alta impedância. Este método é o ideal

para realizar a leitura do toque, mas não para identificar o toque inicial, o qual é feito

pelo método seguinte.

No chamado método 2, colocamos o terminal oposto ao de leitura em LOW,

definindo o pino digital como saída. As leituras obtidas a partir dos toques passam a ser

dependentes dos eixos, tornando este método não-ideal para identificação de posição.

Contudo, ao aterrar o terminal oposto ao de leitura, eliminamos grande parte do ruído

captado, melhorando a sinalização de 0 e a detecção inicial dos toques. A figura 3.12

apresenta o modelo do circuito para o método 2.

Figura 3.10 - Modelo do método de medição 2

Deste modo, o processo de identificação e leitura dos toque inicia-se no método

2. Ao detectar leituras diferentes de 0, alterna-se para o método 1 para obtenção do

valores e mapeamento da posição.

28

As tabelas 3.2 e 3.3 apresentam a seqüência lógica e de ligação para os eixos X

e Y.

Tabela - 3.2- Seqüência lógica e de ligação para leitura do eixo X

Ligação física Ligação Lógica

Painel Arduino Etapa 1 – Detecção

do toque pelo eixo X

Etapa 2 – Leitura do eixo

X

Cima A0 Modo: Saída

Estado: LOW

Modo: Entrada

Alta impedância

Baixo A2 Leitura do eixo X Leitura do eixo X

Esquerda A3 Modo: Saída

Estado: LOW

Modo: Saída

Estado: LOW

Direita A1 Modo: Saída

Estado: HIGH

Modo: Saída

Estado: HIGH

Tabela 3.3 - Seqüência lógica e de ligação para leitura do eixo Y

Ligação física Ligação Lógica

Painel Arduino Etapa 1 – Detecção

do toque pelo eixo X

Etapa 2 – Leitura do eixo

X

Cima A0 Modo: Saída

Estado: HIGH

Modo: Saída

Estado: HIGH

Baixo A2 Modo: Saída

Estado: LOW

Modo: Saída

Estado: LOW

Esquerda A3 Leitura do eixo y Leitura do eixo y

Direita A1 Modo: Saída

Estado: LOW

Modo: Entrada

Alta impedância

Outros erros provenientes da interação do usuário com o painel são relacionados

com as funções toggle e hold, definidas para associar os botões virtuais com as portas

digitais a serem ativadas. Para essas funções, foram adicionadas rotinas de verificação e

temporização com o objetivo de detectar e impedir ações indesejadas. Múltiplos

acionamentos seqüenciais por um único toque, interrupção da função hold por leituras

espúrias ou acionamento por toques acidentais são os problemas mais comuns.

A função de leitura do painel, ao adquirir a primeira leitura indicando haver um

toque, acumula as leituras e, se não for obtido um número mínimo de leituras até que se

29

detecte o fim do toque, esta é descartada, sendo considerada uma leitura espúria ou

oriunda de toque acidental, geralmente de duração curta. Obtendo-se número superior

ao limite mínimo, o toque é validado e passa-se à etapa seguinte de reconhecimento da

região.

A função toggle reconhece o toque, altera a saída da porta digital

correspondente, e continua realizando leituras do painel até observar que a região

previamente ativada não está mais em uso. Desta forma, não se produzem múltiplos

acionamentos acidentais da mesma saída em virtude de um toque de duração mais longo

A função hold reconhece o toque em uma região associada à sua função e

mantêm a saída correspondente ativada enquanto o toque permanecer sendo

reconhecido. Além disso, ao detectar uma interrupção ou alteração na leitura, é

realizada uma contagem de leituras subseqüentes de modo a determinar a duração desta

mudança. Ela deve ser maior que um limite mínimo para ser reconhecida como correta e

encerrar a função hold.

3.4 – Estrutura e uso da memória

3.4.1 – Memória disponível

Os microcontroladores utilizados na plataforma Arduino possuem 3 tipos de

memória disponíveis para uso. Memória FLASH, onde são armazenados os códigos do

Bootloader e dos Sketches, SRAM, a memória de trabalho do microcontrolador e, por

fim, a EEPROM, memória destinada ao armazenamento persistente de dados. A tabela

3.4 apresenta a quantidade de memória disponível nos diferentes microcontroladores

utilizados nas placas Arduino.

Tabela 3.4 - Memória disponível para diferentes microcontroladores usados na plataforma Arduino

ATMega168 ATMega328P ATMega1280 ATMega2560

Flash (1Kbyte

usado pelo

bootloader)

16 Kbytes 32 Kbytes 128 Kbytes 256 Kbytes

SRAM 1024 bytes 2048 bytes 8 Kbytes 8 Kbytes

EEPROM 512 bytes 1024 bytes 4 Kbytes 4 Kbytes

A placa utilizada no projeto, modelo Arduino Nano, possui um microcontrolador

ATMega328P.

30

3.4.2 – Uso da memória FLASH

A quantidade de memória FLASH limita o número de funções que podem ser

incorporadas ao sistema. O próprio uso do bootloader como conveniência para o

processo de programação do microcontrolador implica no uso de 1 a 5 Kbyte de

memória FLASH, dependendo da versão e dos recursos oferecidos pelo bootloader

utilizado. A memória FLASH é a que tem a monitoração de uso mais fácil, uma vez que

a IDE Arduino apresenta o tamanho total compilado de cada Sketch, e emite um alerta

ao detectar que o tamanho do Sketch excede a quantidade de memória FLASH

disponível no microcontrolador.

O Sketch desenvolvido ocupa um total de 9,830 Kbytes de memória FLASH,

reservando recursos para futuras revisões e funcionalidades adicionais.

3.4.3 – Uso da memória SRAM

A memória SRAM é onde são criadas e manipuladas as variáveis definidas

pelo Sketch. A estrutura da memória RAM pode ser representada de acordo com a figura

3.11.

Figura 3.11 - Estrutura da RAM

Uma quantidade insuficiente de memória RAM disponível acarreta possíveis

sobreposições de blocos de memória, com perda de dados, travamentos ou

funcionamento anormal dos Sketches, É importante destacar que mensagens de debug

ou de interface utilizadas com a função Serial.print() ocupam espaço na RAM, pois na

inicialização do Sketch, essas strings são copiadas da FLASH para a RAM. Cada

caractere utilizado na string, além do caractere terminador \0 ocupa um byte, tornando

fácil o uso excessivo de RAM ao utilizar diversas strings ao longo do Sketch.

Uma técnica utilizada para redução no uso da memória RAM é o uso do

modificador PROGMEM na definição de variáveis. Isto faz com que a variável seja

31

carregada na memória FLASH, ao invés de na RAM, reduzindo assim o seu uso. Em

compensação, o uso dessas variáveis passa a ser mais complexo, exigindo o uso de

funções adicionais para carregar a variável na RAM e só então podermos manipulá-las.

O uso do modificador PROGMEM e suas funções associadas estão definidas na

biblioteca pgmspace.h .

De forma semelhante, podemos utilizar o modificador F() na definição de

strings associadas as funções Serial.print, , indicando que estas devem ser lidas a partir

da memória FLASH, e não pré-alocadas na RAM durante a inicialização. Esta solução

foi implementada no projeto Painel Eletrônico. O modificador F() só deve ser utilizado

em strings que não precisem ser modificadas ou manipuladas.

A verificação do uso da memória RAM é um processo complicado de ser

executado com precisão. Um dos modos de se realizar esse monitoramento de forma

simplificada, porém eficiente, é sugerido por Jean-Claude Wippler [13], através da

leitura da variável de sistema __brkval. Esta variável retorna o valor do ponto

mais alto na RAM ocupado pelo heap.

O uso do modificador F() no projeto Painel Eletrônico resultou em uma redução

de aproximadamente 500 bytes no uso da memória RAM, aproximadamente ¼ do total.

3.4.4 – Uso da memória EEPROM

A EEPROM é a memória não volátil disponível para uso do programador. Seu

intuito é permitir que dados como parâmetros de configuração variáveis, preferências de

usuários e até mesmo dados coletados sejam armazenados de forma segura. A EEPROM

não é alterada nos processos de gravação de um Sketch ou do bootloader, a menos que

especificamente instruída para apagá-la.

No contexto de um Sketch, a EEPROM pode se acessada através das funções

EEPROM.read(address) e EEPROM.write(address). A função read retorna o valor

(byte) correspondente ao conteúdo do endereço de memória especificado. Endereços

nunca utilizados retornam o valor 255. Da mesma forma, é possível armazenar um byte

em um endereço da EEPROM através da função write. É importante destacar que o

processo de gravação na EEPROM leva aproximadamente 3.3 milisegundos para ser

completado, o que pode interferir com outras rotinas do Sketch, onde a temporização é

importante. Além disso, EEPROMs têm uma especificação de vida-útil, relacionada ao

número de ciclos de gravação, aproximadamente 100 mil vezes.

32

Para o projeto Painel Eletrônico, a memória EEPROM foi utilizada para

armazenar diversos parâmetros de inicialização e configuração, além das ações de cada

botão virtual. No caso dos valores máximos dos eixos X e Y, parâmetro utilizado para

mapeamento da posição do toque juntamente com os valores mínimos, foi necessária a

utilização de 2 endereços de memória. Isto porque esses valores podem ser de até 10

bits, resolução do ADC, enquanto e a EEPROM armazena dados de 8 bits. Desta forma,

dividiu-se estes valores em multiplicador e resto da divisão por 254. A tabela 3.5

apresenta exemplos do armazenamento de leituras dos eixos X e Y.

Tabela 3.5 - Armazenamento de valores maiores que 8 bits

Variável Valor

Leitura X1 1012

Xhigh 250

Xmultiplier 3

Leitura Y1 1007

Yhigh 245

Ymultiplier 3

Para o armazenamento desses parâmetros, a estrutura da EEPROM foi dividida

de acordo com a tabela 3.6.

Tabela 3.6 – Estrutura da EEPROM

Endereço Parâmetro ou Dado Endereço Parâmetro ou Dado

0 Calibration Flag 1016 Yhigh(multiplier)

1 1017 Xhigh(multiplier)

... 1018 Y axis division

40 1019 X axis division

... 1020 Ylow

... 1021 Yhigh(modulo)

... 1022 Xlow

1015 1023 Xhigh(modulo)

Os endereços de 1 a 40 correspondem às funções a serem configuradas e

executadas pelas regiões definidas na superfície do painel. Ao identificar um toque na

região 25, o microcontrolador acessa o endereço 25 da EEPROM e verifica qual ação

deve ser executada. Os endereços que mapeiam as funções a serem executadas são

33

definidos automaticamente de acordo com os parâmetros Y axis division e X axis

division, que definem a divisão dos eixos e a quantidade de regiões reconhecidas.

3.5 – Comunicação serial e interface via terminal

Todas as placas Arduino possuem ao menos uma porta serial, também chamada

de UART - Universal Asynchronous Receiver Transmitter, que utilizam os pinos digitais

0(RX) e 1(TX) para se comunicar. Esta porta serial também é comumente chamada de

hard serial, em contraste com as chamadas soft serial, portas seriais que utilizam outros

pinos digitais e uma biblioteca como a SoftwareSerial.h para comunicação. A

comunicação serial é utilizada para comunicação entre placas Arduino, computadores

ou outros dispositivos, e os terminais que compõem a porta serial na placa Arduino

Nano utilizada são apresentados na figura 3.12.

Figura 3.12 - Hardware serial port no Arduino nano

A comunicação serial é também a maneira tradicional de interação do

programador ou usuário com o software já gravado no microcontrolador. A interface

IDE de programação do Arduino conta com a função de Serial Monitor, que permite a

comunicação direta com a placa Arduino conectada. O uso da função Serial.print, que

escreve na porta serial, permite a exibição de mensagens de Debug ou de interface.

É importante destacar que a função Serial Monitor da IDE Arduino é

essencialmente diferente de um programa terminal de comunicação serial comum. A

principal diferença observada é a forma como as informações são transmitidas do

computador para a placa Arduino. Na Serial Monitor, existe a presença de um botão

Send ao lado da caixa de texto, de modo que é possível digitar toda a string que se

deseja enviar e esta será armazenada em um buffer local, sendo enviada apenas quando

o botão Send é pressionado. Programas terminais comuns enviam os caracteres tão logo

eles são recebidos, de modo que a programação de uma função de leitura da porta serial

deve permitir um atraso na recepção dos caracteres no buffer de entrada.

34

No Projeto Painel Eletrônico, a comunicação serial pode ser feita através de

qualquer programa terminal, ou através da interface Serial Monitor da IDE Arduino. Foi

configurado um Baud rate de 2400 bits/s, velocidade relativamente baixa, mas que

permite ao microcontrolador receber todos os dados sem que haja overflow no buffer da

porta serial. Ao inicializar a placa Arduino conectada a um terminal, a função setup()

envia a string InitOk indicando o reconhecimento dos parâmetros de calibração do

painel. Sempre que um toque é reconhecido, os valores da leitura de posição dos eixos

X e Y são enviados para a porta serial. Se a posição do toque corresponder à região de

um botão virtual configurado, outra mensagem será enviada indicando que houve um

toque naquela região.

Para configuração das funções do sistema, deve-se enviar comandos para o

microcontrolador através do terminal. A função de leitura da porta serial é chamada

assim que é detectada a presença de um caractere no buffer de entrada, entre os ciclos de

loop(). Esta função deve ler uma linha inteira, procurando pelo caractere de final de

string. A string completa adquirida é então analisada, em busca de palavras pré-

definidas de identificação de função. A tabela 3.7 apresenta as opções de configuração

programadas.

Tabela 3.7 – Configurações da Interface Terminal

Nome Função

cal Calibrar painel

P1 Programação da EEPROM

show Mostra valores da calibração

mem Exibe configurações da EEPROM

erase Apaga todo conteúdo da EEPROM

erase2 Apaga as ações das regiões da EEPROM

ram Exibe total da RAM livre

A função cal exibe instruções sobre as posições a serem tocadas em quatro

extremidades diferentes do painel, realizando sua leitura e calibração. A figura 3.13, já

apresentada na seção 3.22, representa os pontos a serem tocados

Figura 3.13 – Pontos de toque para função cal

35

A P1 é a função responsável pela programação dos parâmetros de

funcionamento do painel na EEPROM. Esta função reconhece comandos de acordo com

os exibidos na figura 3.14, que representa um arquivo texto .ini que pode ser enviado

para o microcontrolador pelo terminal, realizando toda a configuração automaticamente.

Figura 3.14 - Programação dos parâmetros do painel

A string P1 seleciona a opção de configuração e a string $prog.on confirma a

seleção, ativando o reconhecimento de dados para a programação. A configuração é

feita enviando o endereço da EEPROM a ser configurado e o dado a ser armazenado. O

caractere # é o identificador de endereço, o qual deve ser seguido por %, identificador

do dado.

36

Os endereços 1018 e 1019, de acordo com a estrutura da EEPROM apresentada

na tabela 3.5, correspondem ao número de divisões dos eixos Y e X, que definem a

quantidade e o tamanho das regiões no painel.

Para os endereços cujo número corresponde a uma região, seu conteúdo indica o

número da porta digital a ser ativada. Assim, os endereços 1, 2, 9 e 10 correspondem às

quatro regiões adjacentes no canto inferior esquerdo, todas configuradas para ativar a

saída 2, formando assim um único botão virtual. Endereços configurados com a função

toggle indicam apenas o número da porta digital a ser controlada. Para a função hold, o

número da porta é acrescido de 100. Os endereços 31, 32, 39 e 40 representam as 4

regiões adjacentes do canto superior direito, formando um único botão virtual função

hold, que controla a porta 5.

Os botões virtuais definidos pela configuração da figura 3.16 no painel de toque

podem ser vistos na figura 3.15.

Figura 3.15 – Exemplo de configuração de botões virtuais

A função show exibe os valores máximos e mínimos de leitura dos eixos X e Y,

usados na calibração e leitura. Função basicamente de uso para debug e verificação.

Função mem exibe as posições de memória na EEPROM em uso, e o conteúdo

delas. Uma posição de memória ainda não utilizada retorna o valor 255. Todas as

posições de memória são lidas, mas se o valor retornado for 255, aquele endereço e seu

conteúdo não são exibidos.

As funções erase e erase2 são a mesma função, porém chamadas com

parâmetros diferentes. Seu algoritmo possui 2 parâmetros, primeiro e último endereço a

serem apagados. A função escreve o valor 255, correspondente a vazio, na faixa de

endereços especificada. Enquanto a erase apaga todos os endereços da EEPROM, a

erase2 apaga somente as configurações de botões virtuais e suas ações.

A função ram realiza a verificação de memória RAM disponível. Esta

verificação retorna apenas o tamanho do bloco disponível entre o heap e a stack, não

incluindo blocos de memória livre esparsos decorrentes de malloc() e free(). Função

basicamente de uso para debug e verificação

37

Capítulo 4 – Construção do protótipo

Tendo sido definidas as características de hardware do projeto, e a programação

lógica do microcontrolador, a etapa seguinte foi a construção do protótipo. Os principais

objetivos desta etapa envolvem demonstrar a funcionalidade do projeto, apresentar

aspectos relevantes de marinização aos componentes utilizados e ajudar a identificar

outros fatores físicos ou mecânicos que possam interessar em futuros projetos de um

produto final.

Os componentes básicos, painel sensível à toque, placa microcontroladora

Arduíno e módulo de relés, foram montados dentro de uma caixa de derivação para

instalações elétricas Cemarbox modelo CBOX-914004[15]. Trata-se de uma caixa de

material termoplástico, isolante elétrico, com grau de proteção IP66. O IP66 se refere ao

código IP[16], International Protection Marking, que classifica e avalia o índice de

proteção disponível em caixas e recipientes contra intrusão (incluindo partes do corpo

como mãos e dedos), poeira, contato acidental e água. O índice IP66 indica que o objeto

em questão conta com total proteção contra contato e nenhuma entrada de poeira em sua

área interna, além de garantir que jatos de água provenientes de qualquer direção não

gerarão efeitos nocivos. A figura 4.1 apresenta o aspecto geral final do protótipo

montado.

Figura 4.1 - Protótipo montado

38

A tampa da caixa foi cortada de modo que o painel sensível a toque pudesse ser

fixado na sua face inferior ao longo da área externa do painel, de modo que a sua área

ativa fique exposta no lado externo. Sob o painel de toque, foi aplicado uma folha

impressa com ícones correspondentes a diferentes elementos que podem ser acionados,

dependendo da configuração. A figura 4.2. apresenta a tampa da caixa com o painel de

toque aplicado e uma folha representando uma possível configuração de botões virtuais.

Tanto as dimensões dos ícones quanto as suas posições correspondem ao mapeamento e

agrupamento de regiões em uma configuração funcional e testada, capaz de acionar a

saída correspondente adequadamente.

Figura 4.2 - Tampa com painel e botões virtuais

Na lateral da caixa foram montados também 2 prensa cabo, modelo genérico

PG9, conforme figura 4.3, para entrada de alimentação e saída para dispositivos.

Figura 4.3 – Lateral com prensa cabos

39

Prensa cabos[17] são componentes que permitem a passagem de cabos através

de sua estrutura, proporcionando fixação e vedação através de um sistema de aletas

concêntricas que se moldam e selam à superfície externa de um cabo de adequada

dimensão após o rosqueamento da tampa. As figuras 4.4 e 4.5 apresentam os prensa

cabos aplicados, com a tampa removida, e já fechados em torno dos cabos.

Figura 4.4 - Prensa cabo aberto e fechado

Figura 4.5 - Prensa cabos fechados sobre cabos

É importante destacar que após os furos para montagem dos prensa cabos, corte

da tampa e aplicação do painel sob a mesma, a certificação de grau de proteção IP66

deixa de ser válida, uma vez que se alterou profundamente a estrutura da caixa, com

introdução de diversos pontos passíveis de admissão de poeira e água. Embora os

componentes utilizados externamente sejam adequados para montagem de estrutura

marinizada com equivalente alto grau de proteção IP, a certificação através de índice IP,

40

essencial para dispositivo comercial marinizado, requer uma série de testes a ser

realizada por laboratório competente. Este processo foge do escopo deste trabalho.

Como última característica tipica de processos de marinização, foi aplicada uma

camada de silicone com função de vedação, entre a tampa da caixa e a intersecção da

área externa com a área ativa do painel de toque. A camada de silicone está destacada

em vermelho na figura 4.6

Figura 4.6 - Aplicação de silicone entre tampa e painel de toque

Internamente, os componentes eletrônicos foram montados e fixados na caixa,

conforme figura 4.7.

Figura 4.7 - Componentes eletrônicos dentro da caixa

41

A conexão do painel de toque com o microcontrolador é feita através de um

fino terminal flexível que sai da borda do painel de toque e se liga em um conector

adequado de um cabo de ligação que se conectará diretamente com a placa Arduino.

Devido à característica frágil do terminal flexível do painel de toque, o cabo de ligação

foi fixado junto a face interna da tampa, de modo a reduzir a movimentação e estresse

mecânico entre seu conector e o terminal flexível, conforme a figura 4.8.

Figura 4.8 - Fixação do cabo de ligação do painel de toque

Figura 4.9 – Componentes ligados, com caixa aberta

42

Após a montagem do protótipo, foram aplicadas diferentes configurações no

microcontrolador para teste da leitura do painel. As figuras 4.10 e 4.11 apresentam duas

configurações diferentes de mapeamento da superfície, com divisões em 40 e 160

regiões, respectivamente.

Figura 4.10 - Configuração 1 - 40 regiões

Figura 4.11 - Configuração 2 - 160 regiões

43

E por fim, foram aplicados outros padrões de posição e dimensionamento de

botões virtuais sobre as regiões configuradas, conforme as figuras 4.12, 4.13, 4.14 e

4.15, de forma a testar a capacidade de reconfiguração do painel.

Figura 4.12 – Esquema de botões 1 Figura 4.13 – Esquema de botões 2

Figura 4.14 - Esquema de botões 3 Figura 4.15 – Esquema de botões 4

Os testes aplicados consistiram basicamente na associação de dispositivos

correspondentes aos ícones dos botões com a sua saída no módulo de relés. Para cada

esquema de botões o microcontrolador foi reprogramado adequadamente com um

arquivo de configuração enviado através da porta serial.

O protótipo montado foi capaz de reconhecer e mapear os toques corretamente

dos ícones dos botões para o acionamento da saída configurada, em cada um dos

esquemas de botões utilizados.

44

Capítulo 5 - Conclusões

Este trabalho teve como resultado o desenvolvimento de um painel eletrônico

com interface sensível a toque e a documentação dos diversos aspectos relevantes a

integração dos seus componentes. O projeto foi composto por placa Arduino com

microcontrolador ATmel, painel de toque resistivo de 4 fios, módulo de relés Arduino

Compatible, além da programação do microcontrolador em linguagem Arduino, baseada

em C/C++.

Tendo como objetivo inicial a substituição de um painel eletromecânico, o

projeto mostrou a validade da implementação de uma interface de toque funcional a um

custo acessível através da montagem e demonstração de um protótipo. O protótipo

mostrou também a capacidade de configuração e remapeamento dos botões virtuais,

característica de grande valor para o projeto.

Como trabalhos futuros relacionados ao tema, as seguintes sugestões podem ser

exploradas.

Desenvolvimento de funções relacionadas à leitura do eixo Z: Neste

projeto não foram utilizadas leituras do eixo Z, focando em soluções mais

simples. O uso do eixo Z pode permitir o desenvolvimento de algoritmos mais

avançados de verificação de erros nos toques, caso venha a se mostrar necess

Adição de funcionalidades ao microcontrolador: Funções como

monitoramento meteorológico, carga nas baterias, sistemas de comunicação de

emergência etc, geralmente estão presentes no mesmo ambiente como

equipamentos independentes, os quais poderiam ser integrados ao sistema.

Integração do sistema com outros dispositivos wireless: Através de

shields WIFI/Bluetooth, o painel desenvolvido pode operar como central de

controle fixa, oferecendo o mesmo controle móvel para outros dispositivos

conectados como smartphones ou tablets.

45

Referências

[1] ARDUINO, Arduino – ArduinoBoardNano. Disponível em:

arduino.cc/en/Main/arduinoObardNano#.UxDlyuNdUUrg. Acesso em: fev de 2014.

[2] Tech Glocal, Tech Global – High Quality Coomercial interactive LCD & LED touch

screen solutions. Disponível em:

http://www.techglobal.com/TouchTechnologies. Acesso em: fev de 2014.

[3] Elo Touch, Elo Touch Solutions – Touch Technologies. Disponível em:

http://www.elotouch.com/Technologies/default.asp. Acesso em: fev de 2014.

[4] Ahmed, M., How 4 wire resistive touch screen works? – Telecommunication and

Electronics Projects, 2011. Disponível em:

http://elprojects.blogspot.com.br/2011/07/how-4-wire-resistive-touch-screen-

works.html. Acesso em: fev de 2014.

[5] Kolokowsky, S., Touchscreens 101: Understanding Touchscreen Tchnology and

Design, 2009. Disponível em:

http://www.cypress.com/?docID=17212. Acesso em: dez de 2013.

[6] Ubuntu, UMEGuide/DesigningForFingerUIs. Disponível em:

help.ubuntu.com/community/UMEGuide/DesigningForFingerUIs. Acesso em: fev de

2014.

[7] Dandekar, K., Raju, B.I., Srinivasan, M.A., 3-D Finite-Element Models of Human

and Monkey Fingertips to Investigate the Mechanics of Tactile Sense, 2003. Disponível

em:

http://touchlab.mit.edu/publications/2003_009.pdf. Acesso em: fev de 2014.

[8] SainSmart 8 channel DC 5V Relay Module. Disponível em:

http://www.sainsmart.com/arduino/arduino-components/relays/8-channel-dc-5v-relay-

module-for-arduino-pic-arm-dsp-avr-msp430-ttl-logic.html. Acesso em: fev de 2014.

[9] Nicolato, M. , Arduino... Touche, 2009. Disponível em:

http://mnicolato.altervista.org/arduino/ardtouch.htm. Acesso em: fev de 2014.

[10] Downs, R. , Using resistive touch screens for human/machine interface, 2005.

Disponível em:

http://www.ti.com/lit/an/slyt209a/slyt209a.pdf. Acesso em: fev de 2014.

[11] Hope Industrial Systems, Inc., Enhanced Calibration for Industrial Touch

Screens,2012. Disponível em:

news.hopeindustrial.com/2012/enhanced-calibration-for-industrial-touch-screens.

Acesso em: fev de 2014.

[12] Cruz, Cruz |Support. Disponível em:

www.cruzreader.com/Article_801.php. Acesso em: fev de 2014.

46

[13] Wippler, J.C., ATmega memory use Jeelabs, 2011. Disponível em:

jeelabs.org/2011/05/22/atmega-memory-use. Acesso em: fev de 2014.

[14] Practical Arduino, Touch Control Panel. Disponível em:

http://www.practicalarduino.com/projects/touch-control-panel. Acesso em: fev de 2014.

[15] Cemar, Cemar Legrand. Disponível em:

http://files.cemar.com.br/catalogo_digital/#/194/. Acesso em mar de 2014.

[16] IP Code – Wikipedia, the free encyclopedia. Disponível em:

http://en.wikipedia.org/wiki/IP_Code. Acesso em mar de 2014

[17] Prensa Cabo | Legrand – Cemar. Disponível em:

http://www.cemarlegrand.com.br/produtos-e-solucoes/processos-industriais/prensa-cabo-0.

Acesso em mar de 2014