64
Sofia Miranda da Silva Portela Sistema auto adaptativo para leitura e aquisição de dados para sensores de pressão piezorresistivos Sofia Miranda da Silva Portela dezembro de 2013 UMinho | 2013 Sistema auto adaptativo para leitura e aquisição de dados para sensores de pressão piezorresistivos Universidade do Minho Escola de Engenharia

Sofia Miranda da Silva Portela - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/41966/1/Dissertação... · Sofia Miranda da Silva Portela Sistema auto adaptativo

Embed Size (px)

Citation preview

Sofia Miranda da Silva Portela

Sistema auto adaptativo paraleitura e aquisição de dados parasensores de pressão piezorresistivos

Sofia

Mira

nda

da S

ilva

Porte

la

dezembro de 2013UMin

ho |

201

3Si

stem

a au

to a

dapt

ativ

o pa

ra le

itura

e a

quis

ição

de

dado

s pa

ra s

enso

res

de p

ress

ão p

iezo

rres

istiv

os

Universidade do MinhoEscola de Engenharia

dezembro de 2013

Tese de MestradoCiclo de Estudos Integrados Conducentes ao Grau deMestre em Engenharia Eletrónica Industrial e Computadores

Trabalho efetuado sob a orientação doProfessor Doutor Gerardo RochaProfessor Doutor Lanceros Mendez

Sofia Miranda da Silva Portela

Sistema auto adaptativo paraleitura e aquisição de dados parasensores de pressão piezorresistivos

Universidade do MinhoEscola de Engenharia

iii

Agradecimentos

Com o aproximar da conclusão de mais uma etapa de vida não poderia deixar

passar a oportunidade de expressar os meus sinceros agradecimentos às pessoas que me

acompanharam e ajudaram a chegar até aqui.

Começo assim, por agradecer ao meu orientador, o Doutor Gerardo Rocha, e

meu co-orientador, o Doutor Senentxu Lanceros Mendez, pela possibilidade de realizar

esta dissertação e por todo o tempo que dispensaram para me guiar nesta jornada.

Não posso esquecer o investigador, Doutor Vitor Correia, que também me

ajudou, com orientação científica e sugestões para a realização deste trabalho e os

técnicos do Departamento de Eletrónica Industrial pelas assistências prestadas.

Agradeço também ao meu namorado e amigos que me acompanharam ao longo

do curso, pelas recordações que construímos e pelo ânimo que ofereceram.

Para finalizar, dedico esta dissertação à minha família, pelo apoio dado e por

tornarem possível chegar a este dia.

v

Resumo

Todos os dias procura-se novas formas de estender a tecnologia às diversas áreas

científicas. Com esse objetivo em mente, busca-se novos métodos de fabrico de

componentes, que os torne mais versáteis e mesmo mais baratos.

Foi com este pensamento que um grupo de investigadores da Universidade do

Minho decidiu desenvolver uma matriz de sensores piezorresistivos pelo método de

inkjet print para aplicações biomédicas [1] [2]. Contudo quando se inova em sensores,

por vezes torna-se também necessário evoluir no sistema de leitura e aquisição de dados

para estes.

Este trabalho de dissertação foca-se precisamente na necessidade de desenvolver

um sistema auto adaptativo de leitura e aquisição de dados para a matriz de sensores

piezorresistivos desenvolvida. Tal indispensabilidade deve-se ao facto de o processo de

fabrico ser incapaz de controlar os parâmetros de construção dos sensores, terminando

estes com características diferentes na mesma matriz e de se pretender aplicar estes

sensores na área da biomédica, onde uma vez implantado o sistema, não é possível

proceder a calibrações.

Ao longo deste relatório serão descritos os passos necessários para tornar um

sistema de leitura e aquisição de dados auto adaptativo.

vii

Abstract

Every day we look new ways to extend the technology to various scientific

fields. With this goal in mind, we seek new methods of manufacture components, which

make them more versatile and even cheaper.

It was with this thought that a group of researchers from the University of Minho

decided to develop an array of piezoresistive sensors by inkjet print method for

biomedical applications [1] [2]. However when it innovates sensors, sometimes it

becomes also necessary to innovate the system for data acquisition for these.

This dissertation focuses precisely on the need to develop an auto adaptive

system for reading and data acquisition for the piezoresistive sensor array developed.

This necessity is due to the fact that the manufacturing process is unable to control the

parameters of the construction of sensors, ending these with different characteristics in

the same array and the fact these sensors want to apply in the field of biomedical, where

the system once implanted, is not possible to carry out calibrations.

Throughout this report we will describe the steps needed to make a system of

reading and auto adaptive data acquisition.

ix

Índice

Agradecimentos ........................................................................................................................... iii

Resumo .......................................................................................................................................... v

Abstract ........................................................................................................................................ vii

Índice ............................................................................................................................................. ix

Índice de ilustrações ...................................................................................................................... xi

Índice de Tabelas ......................................................................................................................... xiii

Lista de símbolos e notações ....................................................................................................... xv

1 Introdução ............................................................................................................................. 1

1.1 Enquadramento e Motivação ......................................................................................... 1

1.2 Estado da arte ................................................................................................................ 1

1.3 Comunicação SPI (Serial Peripheral Interface) ........................................................... 4

1.4 Comunicação I2C (Inter-Integrated Circuit) ................................................................. 6

1.5 Objetivos ....................................................................................................................... 6

2 Desenvolvimento experimental ............................................................................................. 8

2.1 Diagrama de Blocos do Sistema Auto Adaptativo ........................................................ 8

2.2 Escolha dos componentes ............................................................................................ 10

2.2.1 Microcontrolador ................................................................................................. 10

2.2.2 Digital to analog converter (DAC) ..................................................................... 11

2.2.3 Amplificador de instrumentação ......................................................................... 12

2.2.4 Multiplexer .......................................................................................................... 13

2.2.5 Potenciómetro...................................................................................................... 14

2.3 Esquemático e Algoritmo ............................................................................................ 16

3 Resultados ........................................................................................................................... 20

3.1 Sistema adaptativo....................................................................................................... 21

3.2 Sistema auto adaptativo ............................................................................................... 24

4 Conclusão e trabalho futuro ................................................................................................ 32

5 Bibliografia ......................................................................................................................... 34

Anexos......................................................................................................................................... 35

1. Código do sistema adaptativo ..................................................................................... 36

2. Código do sistema auto adaptativo .............................................................................. 41

Função seleção do sensor .................................................................................................... 41

Função de calibração do sistema ......................................................................................... 43

Função de leitura dos sensores ............................................................................................ 45

Código principal .................................................................................................................. 46

xi

Índice de ilustrações

Ilustração 1-1 Ponte Wheatstone ................................................................................................. 2

Ilustração 1-2 Esquema do amplificador de instrumentação ....................................................... 3

Ilustração 1-3 Exemplo de um diagrama de bloco de um sistema adaptativo [5] ........................ 4

Ilustração 1-4 Representação das conexões SPI ........................................................................... 5

Ilustração 1-5 Representação das ligações I2C ............................................................................. 6

Ilustração 2-1 Diagrama de Blocos do sistema auto adaptativo ................................................... 8

Ilustração 2-2 Divisão do Diagrama de Blocos .............................................................................. 9

Ilustração 2-3 Arduino Uno ......................................................................................................... 10

Ilustração 2-4 AD5061 ................................................................................................................. 11

Ilustração 2-5 Diagrama temporal do AD5061............................................................................ 12

Ilustração 2-6 Trama de transmissão AD5061 ............................................................................ 12

Ilustração 2-7 LTC6915 ................................................................................................................ 12

Ilustração 2-8 Diagrama temporal LTC6915 ................................................................................ 13

Ilustração 2-9 ADG708 ................................................................................................................ 14

Ilustração 2-10 MCP4441-103 ..................................................................................................... 14

Ilustração 2-11 Trama para configuração do potenciómetro ..................................................... 15

Ilustração 2-12 Esquema do sistema........................................................................................... 17

Ilustração 2-13 Fluxograma do sistema ...................................................................................... 18

Ilustração 3-1 PCB ....................................................................................................................... 20

Ilustração 3-2 Placa final do sistema auto adaptativo ................................................................ 20

Ilustração 3-3 Shield colocado no Arduino .................................................................................. 21

Ilustração 3-4 Interface com o utilizador .................................................................................... 23

Ilustração 3-5 Aplicativo desenvolvido ....................................................................................... 26

Ilustração 3-6 Configuração do sistema ...................................................................................... 26

Ilustração 3-7 Leitura após configuração do sistema para resistências elétricas ....................... 27

Ilustração 3-8 Leituras para L1C1:5,1kΩ e L2C1:3,3kΩ ............................................................... 27

Ilustração 3-9 Leituras para L1C1:20kΩ e L2C1:1kΩ ................................................................... 28

Ilustração 3-10 Nova leitura com os valores iniciais de resistências .......................................... 28

Ilustração 3-11 Gráfico de evolução da tensão em relação ao valor de resistência ................... 29

Ilustração 3-12 Leitura dos sensores após configuração ........................................................... 29

Ilustração 3-13 Leitura após deformar sensor no sentido em que decrementa o valor da sua

resistência ................................................................................................................................... 30

Ilustração 3-14 Leitura após deformação no sentido que incrementa o valor da sua resistência

..................................................................................................................................................... 30

Ilustração 3-15 Leitura após o sensor voltar à posição de repouso ............................................ 31

xiii

Índice de Tabelas

Tabela 1-1 Modos de transmissão SPI .......................................................................................... 5

Tabela 2-1 Características do microcontrolador ......................................................................... 11

Tabela 2-2 Níveis programáveis LTC6915 ................................................................................... 13

Tabela 2-3 Tabela de Verdade ADG708 ...................................................................................... 14

Tabela 2-4 Comandos do MCP4441-103 ..................................................................................... 16

Tabela 2-5 Endereços de memória e respetivos comandos ....................................................... 16

xv

Lista de símbolos e notações

ADC – Analog to digital converter

AI – Amplificador de Instrumentação

CMRR – Razão de rejeição em modo comum

DAC – Digital to analog converter

EEPROM – Electrically-Erasable Programmable Read-Only Memory

G – Ganho

Hz – Hertz

I – Símbolo Corrente

I/O – Input/Output

I2C – Inter-Integrated Circuit

MISO – Master In Slave Out

MOSI – Master Out Slave In

PCB – Printed Circuit Board

Pot – Potenciómetro

R – Símbolo de resistência

Rpot – Símbolo da resistência do potenciómetro

SCK – Serial Clock

SCL – Serial Clock

SDA – Serial Data

SPI – Serial Peripheral Interface

SS – Slave Select

V – Volt

VADC – Símbolo da tensão no ADC

VCC – Símbolo de tensão de alimentação

VDAC – Símbolo da tensão do DAC

δ – Símbolo da variação de resistência

Ω – Ohm

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

1

1 Introdução

Quando se utiliza sensores necessita-se obrigatoriamente de um circuito de leitura

para estes.

Os sistemas de leitura e aquisição de dados de sensores têm a importante missão de

traduzir o sinal proveniente dos sensores para valores elétricos possíveis de analisar.

Esta dissertação descreve o desenvolvimento e implementação de um sistema de

leitura e aquisição de dados para sensores piezorresistivos auto adaptativo, começando

pelo enquadramento e motivação do trabalho realizado, o seu estado de arte, descrição

da comunicação SPI e I2C necessárias no desenvolvimento do mesmo, e objetivos a

atingir.

1.1 Enquadramento e Motivação

Após o desenvolvimento dos sensores piezorresistivos [2] e da realização de testes a

estes sentiu-se a necessidade de realizar um sistema de leitura e aquisição de dados auto

adaptativo devido ao facto de se pretender aplicar os sensores na área das biomédicas,

nomeadamente no interior do corpo humano, o que significa que uma vez implantado

não se pode voltar a configurar o sistema.

A motivação para a realização desta dissertação foi precisamente a oportunidade de

contribuir, para a melhoria de vida das pessoas que possam vir a beneficiar da utilização

desta tecnologia.

1.2 Estado da arte

Um sensor é um dispositivo que converte uma grandeza física numa elétrica. No

caso dos piezorresistivos, convertem uma variação de pressão numa variação de

resistência elétrica.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

2

Uma resistência tem a característica de a tensão aos seus terminais ser proporcional

à corrente que a atravessa. Esta propriedade é demonstrada pela Lei de Ohm que

estabelece a relação entre resistência, tensão e corrente pela equação (1.1):

R =

[Ω] (1.1)

É devido a esta característica que quando se pretende fazer o condicionamento de

sinal de um sensor resistivo utiliza-se pontes de medida, conhecidas como ponte de

Wheatstone.

Ilustração 1-1 Ponte Wheatstone

O sensor é representado por R(1+δ) em que R é o valor da resistência em repouso e

δ a variação sentida. Como se pode observar pela ilustração 1-1 havendo uma variação

de resistência no sensor os valores Vi1 e Vi2 serão diferentes.

Quando se pretende uma medição precisa utilizam-se amplificadores de

instrumentação que recebem nas suas entradas, positiva e negativa, as saídas da ponte

de Wheatstone e transformam a sua subtração no valor elétrico referente á pressão

aplicada nos sensores.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

3

Ilustração 1-2 Esquema do amplificador de instrumentação

Estes amplificadores são conhecidos por terem a seguintes características:

Ganho elevado em relação à entrada, preciso e estável;

CMRR (Razão de rejeição em modo comum) elevado;

Impedância de saída baixa;

Impedância de entrada finita.

Quando se utilizam sensores é necessário conhecer as suas características para o

dimensionamento do sistema de aquisição e além disso diferentes tipos de sensores

requerem circuitos de aquisição diferentes.

Com o avanço tecnológico tem-se estudado e desenvolvido sistemas que respondam

às necessidades encontradas nesta área.

Após alguma pesquisa pôde-se encontrar estudos de circuitos adaptativos para

contornar problemas como:

Compensar variações causadas por variáveis externas [3]

Leitura de dois tipos de sensores diferentes no mesmo circuito [6] [7]

Informações sobre o método de programação utilizado para tornar os circuitos

adaptativos [4] [5].

A arquitetura adotada para estes sistemas é semelhante independentemente do tipo

de sensores a ler. Geralmente encontra-se um multiplexer para a seleção dos sensores,

um amplificador de instrumentação e um sistema de controlo para conferir a

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

4

adaptabilidade. No entanto esta característica refere-se apenas à possibilidade de

selecionar a leitura de cada sensor ou à alteração no ganho do amplificador.

Ilustração 1-3 Exemplo de um diagrama de bloco de um sistema adaptativo [5]

Encontra-se também trabalhos sobre o tipo de algoritmo de programação que se

deve realizar para conferir a adaptabilidade, como basear a programação nas redes

neuronais para conferir uma espécie de memória e raciocínio ao sistema e exemplos de

algoritmos de perturbações [4].

Pode-se então afirmar que existe uma arquitetura base para este tipo de circuitos

assim como algoritmos recomendados que facilitam e possibilitam uma vasta gama de

aplicações nos circuitos adaptativos.

1.3 Comunicação SPI (Serial Peripheral Interface)

A comunicação SPI (Serial Peripheral Interface) é um protocolo de dados série

síncronos para comunicação entre um master e um ou mais periféricos (slaves).

É caracterizada por necessitar de 3 ligações ao barramento e os componentes podem

apresentar 4 conexões:

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

5

MOSI (Master out Slave in) – Linha do master para envio de dados para os

periféricos;

MISO (Master in Slave out) – Linha do master para receber dados dos

periféricos;

SCK (Serial Clock) – Os pulsos de relógio que sincroniza o envio de dados

gerados pelo master;

SS (Slave Select) – Pino de cada periférico que o master utiliza para ativar

ou desativar a comunicação.

Ilustração 1-4 Representação das conexões SPI

A implementação do protocolo SPI não segue em padrão específico, sendo da

responsabilidade do fabricante informar qual o modo de transmissão dos dados. Na

tabela 1-1 encontram-se os modos possíveis.

Modo Polaridade Clock Fase Clock

Modo 0 0 0

Modo 1 0 1

Modo 2 1 0

Modo 3 1 1

Tabela 1-1 Modos de transmissão SPI

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

6

1.4 Comunicação I2C (Inter-Integrated Circuit)

O I2C (Inter-Integrated Circuit) é um protocolo de comunicação série a 2 ligações.

No barramento existe apenas um master que envia ou requer dados dos periféricos

através do endereço destes e estipula a velocidade de transmissão. O endereço de cada

dispositivo no barramento é sempre fixo.

Ilustração 1-5 Representação das ligações I2C

Como se pode verifica pela ilustração 1-5 só é necessário 2 ligações nesta

comunicação, sendo cada uma encarregue de:

SDA (Serial data) – envio ou receção de dados;

SCL (Serial Clock) – configuração de velocidade da transmissão.

1.5 Objetivos

Desenvolver um sistema auto adaptativo de leitura e aquisição de dados para

sensores de pressão piezorresistivos.

O sistema será capaz de realizar, numa primeira etapa a leitura de cada sensor da

matriz e calcular os parâmetros necessários para uma aquisição correta de cada um e

posteriormente utilizar esses parâmetros para a leitura do trabalho realizado pelos

sensores.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

7

No capítulo 3 desta dissertação serão apresentados os resultados dos seguintes

testes:

Circuito adaptativo para leitura de um sensor

Circuito adaptativo para leitura de matriz de sensores

Circuito auto adaptativo para leitura de um sensor

Circuito auto adaptativo para leitura de matriz de sensores.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

8

2 Desenvolvimento experimental

Nesta secção será apresentada a arquitetura do sistema auto adaptativo, a descrição

dos componentes escolhidos e a sua função, o esquemático do circuito final e o

algoritmo de programação pretendido.

2.1 Diagrama de Blocos do Sistema Auto Adaptativo

Ilustração 2-1 Diagrama de Blocos do sistema auto adaptativo

A ilustração 2-1 demonstra o diagrama de blocos do sistema auto adaptativo e a

conexão da matriz de sensores piezorresistivos ao mesmo.

Como o trabalho desenvolvido foca-se apenas no sistema de leitura e aquisição

de dados, este será o único e ser explicado a fundo. Por essa razão e para um melhor

esclarecimento do seu funcionamento pode-se dividir o sistema em três subcircuitos

distintos representados na ilustração 2-2.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

9

Ilustração 2-2 Divisão do Diagrama de Blocos

O circuito 1 é constituído por um multiplexer e um demultiplexer que são os

responsáveis pela ligação da matriz de sensores ao sistema de leitura e aquisição de

dados e competindo-lhe a seleção do sensor piezorresistivo a ler. Com esta ligação

consegue-se que os sensores apenas sejam alimentados no momento da leitura e de

forma individual contribuindo assim para um menor consumo de energia e garantindo

que não exista interferência na leitura realizada.

O conjunto potenciómetro – Digital do analog converter (DAC) – amplificador

de instrumentação (AI) que representam o circuito 2 têm por função a aquisição do

sinal. Neste sistema a usual ponte de Wheatstone utilizada para obter o valor de uma

resistência desconhecida é simulada pelo potenciómetro e pelo DAC, sendo cada um

deles a representação de um dos braços da ponte.

Este é o circuito que desempenha o papel crucial de todo o sistema, pois é quem

confere a propriedade de adaptabilidade sendo composto por componentes

programáveis.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

10

A saída do potenciómetro em junção com a do multiplexer fornecem o valor da

entrada positiva do amplificador, enquanto o DAC fornece o valor da negativa tornando

a ponte compensada. Esta subtração resulta na medição do sensor.

Por último, no circuito 3 encontra-se o microprocessador responsável por tornar

o sistema auto adaptativo e guardar os dados pretendidos.

Numa primeira etapa o microcontrolador irá calcular os valores do

potenciómetro, DAC, e ganho do AI necessários para uma correta leitura dos sensores e

guarda-los na memória EEPROM para posteriores medições. Terminada esta etapa o

sistema está pronto a operar. O microcontrolador será responsável por selecionar o

sensor a ler, colocar os valores corretos nos componentes do circuito 2, receber do

amplificador de instrumentação o dado adquirido e enviá-lo.

2.2 Escolha dos componentes

2.2.1 Microcontrolador

O microcontrolador utilizado nesta dissertação foi o ATmega328 inserido na placa

Arduino Uno que se pode ver na ilustração 2-3. A escolha deste microcontrolador deve-

se ao facto de ser de fácil utilização, responder às necessidades precisas para o

desenvolvimento do sistema e já ter sido utilizado na elaboração de outros trabalhos. A

opção pela sua utilização foi a única que não teve em vista a aplicação final, isto é, o

tamanho e consumo não foram das especificações que receberam mais atenção.

Ilustração 2-3 Arduino Uno

A tabela 2-1 mostra as características mais significativas da placa Arduino Uno

para o projeto em questão.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

11

Alimentação 5V

Nº pinos digitais (I/O) 14

Nº entradas analógicas (ADC) 6 (resolução: 10bits)

Memória Flash 32KB

SRAM 2KB

EEPROM 1KB

Velocidade de relógio 16MHz

Suporta comunicação SPI Pinos: 10, 11, 12 e 13

Suporta comunicação I2C Pinos: A4 e A5

Tabela 2-1 Características do microcontrolador

O Arduino fornece algumas bibliotecas que facilitam a programação do

microcontrolador. Contudo a utilização destas pode limitar as opções de programação

ou não responderem como o pretendido, por essas razões resolveu-se implementar uma

biblioteca própria para o uso da comunicação SPI.

2.2.2 Digital to analog converter (DAC)

O DAC é o responsável por receber um valor digital e traduzi-lo num analógico,

mantendo assim a ponte compensada. Para desempenhar tal papel optou-se pelo

AD5061 da Analog Devices que é um DAC de baixa potência, com uma resolução de

16-bit, tensão de alimentação simples de 2,7V a 5,5V, a sua configuração é através de

comunicação SPI e apresenta dimensão de 3mm x 3mm x 1,2mm.

Ilustração 2-4 AD5061

Após conhecer as ligações do componente, é necessário retirar as informações

para a sua programação, na ilustração 2-5 encontra-se o diagrama temporal que nos

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

12

fornece o modo de transmissão para a comunicação SPI. Da sua análise pode-se

concluir que o modo de transmissão é o Modo 1, tendo em conta a tabela 1-1.

Ilustração 2-5 Diagrama temporal do AD5061

Na ilustração abaixo está representada a trama de informação a enviar para o

DAC. Pode-se ver que além dos 16-bit de dados é necessário enviar também 2-bit de

controlo que indicam o modo de operação do componente.

Ilustração 2-6 Trama de transmissão AD5061

2.2.3 Amplificador de instrumentação

O amplificador de instrumentação é um LTC6915 da Linear Technology que

trata-se de um amplificador de precisão com ganho programável.

Ilustração 2-7 LTC6915

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

13

Ele possui 14 níveis de ganho programável, demonstrados na tabela 2-2, uma

precisão de ganho na ordem de 0,1%, a tensão de alimentação pode ser entre 2,7V e

5,5V, também é configurado através da comunicação SPI e apresenta as dimensões de

5mm x 4mm x 1,2mm.

Palavra

Digital 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100

1101-

1111

Ganho 0 1 2 4 8 16 32 64 128 256 512 1024 2048 4096

Tabela 2-2 Níveis programáveis LTC6915

Ilustração 2-8 Diagrama temporal LTC6915

Da análise do diagrama temporal verifica-se que o modo de transmissão é o

Modo 3.

2.2.4 Multiplexer

A interface entre a matriz de sensores e o sistema de aquisição é feita pelo

multiplexer e demultiplexer, como se definiu-se que o sistema deve ser capaz de ler até

uma matriz de 8x8 ambos devem ser de oito entradas/saídas.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

14

Utilizou-se então um ADG708 da Analog Devices que tem a propriedade de

funcionar quer como multiplexer quer demultiplexer alterando apenas o modo de

ligação dos pinos S1 a S8 e D.

Ilustração 2-9 ADG708

A seleção das saídas é feita segundo a tabela de verdade abaixo:

A2 A1 A0 EN Saída

X X X 0 -

0 0 0 1 1

0 0 1 1 2

0 1 0 1 3

0 1 1 1 4

1 0 0 1 5

1 0 1 1 6

1 1 0 1 7

1 1 1 1 8

Tabela 2-3 Tabela de Verdade ADG708

2.2.5 Potenciómetro

Ilustração 2-10 MCP4441-103

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

15

O potenciómetro utilizado foi o MCP4441-103 da Microchip que possui 7-bit de

resolução, resistência máxima de 10kΩ, tem quatro potenciómetros no mesmo

integrado, é programado por I2C, tensão de alimentação entre 2,7V e 5,5V e dimensão

de 6,5mm x 6,4mm x 1mm.

Para configurar o MCP4441-103 é necessário o seu endereço, o endereço de

memória a manipular, a função a desempenhar e os dados a enviar, quando necessário.

Ilustração 2-11 Trama para configuração do potenciómetro

Os bits A6 a A0 são o endereço do componente, em que A1 e A0 correspondem

aos pinos do integrado com mesmo nome e por isso o seu nível lógico deve estar de

acordo com as ligações efetuadas. O bit R/W informa se é pedida leitura ou escrita ao

dispositivo, colocando-o a “0” para escrita e a “1” para leitura. AD3 a AD0 estipulam o

endereço de memória a utilizar, enquanto os bits C1 e C0 carregam a informação do

comando a efetuar. Na tabela 2-5 pode-se observar quais os comandos permitidos nos

diferentes endereços de memória. Por ultimo os bits D9 a D0 traduzem o valor de

resistência que se pretende aplicar.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

16

C1 C0 Comando

0 0 Escrever dados

0 1 Incrementar 1 posição

1 0 Decrementar 1 posição

1 1 Ler dados

Tabela 2-4 Comandos do MCP4441-103

Tabela 2-5 Endereços de memória e respetivos comandos

2.3 Esquemático e Algoritmo

Com os componentes escolhidos e estudados desenvolveu-se o esquemático do

sistema para posterior passagem para PCB. Nesta etapa decidiu-se que a placa final

seria dimensionada de forma a ter dimensões para servir como shield para o

microcontrolador, isto é, encaixar nas ligações deste. Para o desenho da placa utilizou-

se o software de design Altium.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

17

Ilustração 2-12 Esquema do sistema

Tendo o circuito do sistema dimensionado chega a altura de preparar a

componente digital do trabalho, que passa por preparar o algoritmo de programação dos

componentes.

Para tal é necessário evidenciar as funções pretendidas do sistema, que são:

Auto calibração

Aquisição de dados

A calibração é a etapa que necessita de especial atenção, pois sem o seu perfeito

funcionamento não será possível a leitura a aquisição de dados dos sensores.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

18

Ilustração 2-13 Fluxograma do sistema

A primeira tarefa do algoritmo é calcular o valor da resistência para o

potenciómetro. Para tal inicia-se por selecionar o sensor a ler, colocar o ganho a 1 e a

saída do DAC a 0V para aumentar a gama de leitura do circuito.

Em seguida altera-se o valor da resistência do potenciómetro até que a tensão

lida pelo ADC (Analog to digital converter) seja superior a 0,5V. Quando a condição for

verdadeira calcula-se o valor real de Rpot como demonstrado no fluxograma.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

19

Após o cálculo do Rpot passa-se para a obtenção do valor do DAC colocando a

sua tensão de saída a metade da tensão de alimentação e em seguida calcula-se o valor

indicado tendo em conta a leitura do ADC.

Assim que os parâmetros são encontrados, eles são guardados na memória do

microcontrolador para serem utilizados na função seguinte de aquisição das variações

sofridas pelos sensores. Nesta etapa o microcontrolador só necessita de selecionar o

sensor a medir e carregar os parâmetros guardados para o restante sistema.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

20

3 Resultados

Após o desenho do esquemático do circuito fez-se o ficheiro PCB para em seguida

imprimir a placa final.

Ilustração 3-1 PCB

Ilustração 3-2 Placa final do sistema auto adaptativo

Como foi referido no capítulo anterior, a placa final foi dimensionada de forma a

ser um shield para o Arduino como se vê a ilustração 3-3.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

21

Ilustração 3-3 Shield colocado no Arduino

Com a placa pronta testou-se os códigos para o sistema funcionar de modo

adaptativo e auto adaptativo.

3.1 Sistema adaptativo Neste sistema o utilizador fornece os valores para o potenciómetro e para o DAC

previamente e pode escolher o sensor que pretende analisar.

Para a colocação dos valores dos componentes criou-se um array para cada um,

que deve ser preenchido antes da execução do programa.

Na programação do DAC sabe-se que é necessário 3 bytes, o primeiro que traduz a

função a desempenhar e os outros dois são de dados, no caso do potenciómetro

necessita-se de 2 bytes, o primeiro que diz qual o potenciómetro a utilizar do

componente e a função que desempenha e o segundo são os dados.

byte dac[128]=215,124;

byte pot[64]=49;

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

22

Após a inserção dos valores é só enviar o programa para o microcontrolador e este

irá pedir o número do sensor a ler.

Neste exemplo colocou-se valores no DAC e potenciómetro para que na presença

de uma resistência de 10kΩ a saída do amplificador seja 0V e o amplificador com ganho

1. Será apresentado os resultados para uma resistência de 10kΩ, 20kΩ e 5kΩ, sendo

respetivamente o sensor 1, 2 e 3.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

23

Ilustração 3-4 Interface com o utilizador

O microcontrolador recebe o sensor a ler por porta série e vê a que condição

corresponde sabendo assim como adaptar. No quadro abaixo está o código para o caso

do sensor 1.

//configuração do DAC

SPI_MasterInit(0,1);

digitalWrite(10,LOW);

SPI_MasterTrans3(0x00,dac[0],dac[1]);

digitalWrite(10,HIGH);

//configurar o Pot

Wire.beginTransmission(44);

Wire.write(byte(0x60));

Wire.write(byte(pot[0]));

Wire.endTransmission();

//seleção do sensor

select_mux(1,1); //seleção do sensor

delay(100);

//leitura

val=analogRead(A0); //ler do adc

volt = (float)((5.00*val)/1023); //conversão para tensão

Serial.println(volt);

Serial.println("Insira o sensor a efetuar leitura");

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

24

3.2 Sistema auto adaptativo

As principais diferenças deste sistema para o anterior são que agora os valores do

DAC e potenciómetro serão calculados pelo sistema e guardados na memória EEPROM

do microcontrolador para não se perderem, através do algoritmo apresentado no

subcapítulo 2.3 e o utilizador não escolherá o sensor a ler, o próprio programa irá

percorrer os sensores existentes.

Para o código ficar mais simples e não haver repetição dividiu-se em três funções

diferentes:

Seleção do sensor,

Configuração dos parâmetros dos sensores,

Leitura dos sensores.

A função de seleção do sensor não tem muito a explicar pois faz exatamente o que

sugere o seu nome, seleciona o sensor quer na configuração quer na leitura.

Na configuração dos parâmetros é que já existe alguns pontos a referenciar. Em

primeiro lugar, apresenta-se uma pequena diferença ao algoritmo na configuração do

potenciómetro. Optou-se por incrementar uma palavra digital de cada vez em vez de,

colocar a metade da resistência total inicialmente e de dividir o seu valor por 10

enquanto a saída do ADC for menor que 0,5V. Esta escolha deveu-se apenas ao facto de

neste potenciómetro a palavra digital 00h traduzir o máximo de resistência e a FFh o

valor mínimo 0V.

A variável “x” conta o número de vezes que se incrementou o potenciómetro, para

assim ser possível o cálculo do seu correspondente em ohm. O valor real a colocar no

potenciómetro é então encontrado pelo código:

while(tensao<0.50)

Wire.beginTransmission(44);

Wire.write(byte(0x64));

Wire.endTransmission();

delay(1000); //tempo para alterar valores na placa

tensao=(float)((5.00*analogRead(A0))/1023);

x++; //número de incrementos

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

25

Primeiro calcula-se o valor de resistência em cada incremento, em seguida

multiplica-se pelo número de incrementos para saber a variação de resistência

necessária para que a tensão no ADC seja superior a 0,5V. Conhecendo este valor é só

aplicar a fórmula do algoritmo sem esquecer que o valor de resistência é o valor

máximo menos a variação calculada. Dividindo o valor real pela variação em cada

incremento obtêm-se a palavra digital correspondente e guarda-se na memória

EEPROM. A variável “i” representa a posição de memória.

Com o valor do potenciómetro calculado passa-se para a configuração do DAC.

Neste componente utilizou-se o cálculo do algoritmo do subcapítulo 2.3 sendo de frisar

apenas o facto de este DAC ter 16 bits de dados e o microcontrolador apenas conseguir

enviar 8 bits de cada vez, ou seja, após o cálculo da palavra digital foi necessário dividi-

la em 2 bytes com recurso ao código:

O algoritmo implementado permite configurar os componentes de forma a ser

possível obter leituras quer o sensor piezorresistivo esteja sujeito a uma deformação que

aumente a sua resistência ou a diminua.

Concluída a programação do sistema passou-se para a fase de testes. Nesta etapa

optou-se por desenvolver uma aplicação em linguagem C# de forma a ser mais

percetível qual o sensor da matriz a ser lido.

v_ohm=(10000/255); //valor de resistência em cada incremento

ohm=v_ohm*x; //variação necessária para tensão >0,5V

tensao=(float)((5.00*analogRead(A0))/1023); //conversão para tensão

ohm_out=((tensao*(10000-ohm))/(5.00-tensao)); //cálculo do valor real

pot=(ohm_out/v_ohm); //conversão para digital

EEPROM.write(i,pot); //guardar na memória

i++; //incrementar posição de memória

dac_f=((dac_out*65535)/2.97); //cálculo da palavra digital

dac=dac_f&0xff; //máscara para guardar o byte menos significativo

EEPROM.write(i+1, dac); //guardar na memória

dac_f=dac_f>>8; //shift register

dac=dac_f&0xff; //máscara para guardar o byte menos significativo

EEPROM.write(i,dac); //guardar na memória

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

26

Ilustração 3-5 Aplicativo desenvolvido

O aplicativo é constituído por 3 botões, um para ligar/desligar, outro para

mandar configurar o sistema quando os sensores são conectados e o ultimo para receção

dos dados lidos. Após o pedido de configuração aparece uma mensagem que informa o

término da operação.

Ilustração 3-6 Configuração do sistema

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

27

Iniciou-se os testes ao sistema auto adaptativo com recurso a resistências

elétricas. A ilustração 3-7 mostra os valores lidos após a configuração.

Ilustração 3-7 Leitura após configuração do sistema para resistências elétricas

A resistência na L1C1 é de 1kΩ e na L2C1 encontra-se uma de 20kΩ.

Realizaram-se medições aumentando o valor da resistência da L1 e diminuindo a da L2.

Ilustração 3-8 Leituras para L1C1:5,1kΩ e L2C1:3,3kΩ

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

28

Ilustração 3-9 Leituras para L1C1:20kΩ e L2C1:1kΩ

Na ilustração 3-10 mostra o valor lido após voltar a colocar as resistências iniciais.

Ilustração 3-10 Nova leitura com os valores iniciais de resistências

No final do teste traçou-se o gráfico de evolução da tensão em relação ao valor

de resistência. Pela análise do gráfico da ilustração 3-11 pode-se observar que as leituras

não estão muito longe de uma evolução linear. O problema pode ser influenciado pela

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

29

tolerância das resistências que é diferente e pelo erro introduzido pelas leituras do ADC

e resolução dos componentes programáveis.

Ilustração 3-11 Gráfico de evolução da tensão em relação ao valor de resistência

Nas ilustrações seguintes apresenta-se as leituras efetuadas com sensores, onde o

da L1C1 foi mantido em repouso em todas as leituras e o da L2C1 foi deformado em

dois sentidos e depois colocado novamente na posição inicial.

Ilustração 3-12 Leitura dos sensores após configuração

0

0,5

1

1,5

2

2,5

3

3,5

4

1000 2000 3300 5100 10000 20000

Ten

são

(V

)

Valor de resistência (Ω)

Conf. 1kΩ

Conf. 20kΩ

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

30

Ilustração 3-13 Leitura após deformar sensor no sentido em que decrementa o valor da sua resistência

Ilustração 3-14 Leitura após deformação no sentido que incrementa o valor da sua resistência

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

31

Ilustração 3-15 Leitura após o sensor voltar à posição de repouso

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

32

4 Conclusão e trabalho futuro

O objetivo desta dissertação era chegar ao final com um sistema de leitura e

aquisição de dados para sensores de pressão piezorresistivos auto adaptativo, com

capacidade de ler uma matriz de sensores 8x8.

Este objetivo deve-se ao facto de se pretender aplicar estas matrizes na área da

biomédica, nomeadamente em próteses para analisar se existe alguma deslocação destas

do local onde devem estar. Assim sendo o sistema de leitura irá ser colocado no interior

das próteses impossibilitando recalibração do sistema caso haja alguma alteração nos

sensores durante o procedimento de implantação da prótese.

O sistema desenvolvido difere dos habituais pelo facto de a ponte de wheatstone ser

simulada pelo potenciómetro e DAC havendo assim mais liberdade na calibração e

como os componentes são digitalmente programáveis permitem a característica auto

adaptativa.

Iniciou-se então por desenvolver um código adaptativo para a placa. Nesta etapa os

valores necessários a colocar no potenciómetro e no DAC eram conhecidos e fornecidos

previamente ao microcontrolador e serviu para comprovar que o sistema encontrava-se

a funcionar como esperado.

Em seguida implementou-se o código auto adaptativo, seguindo o algoritmo

desenvolvido e acrescentando as conversões de valores analógicos para digitais

necessários para os cálculos pretendidos e o armazenamento dos valores na memória

EEPROM do microcontrolador.

Com a realização dos testes verificou-se que se trata de uma solução fiável e de

baixo custo que contribuirá para proporcionar uma melhoria de vida às pessoas que

venham a beneficiar desta aplicação e ajudará os médicos a terem uma análise mais

simples e rápida do que se passa com as próteses nos pacientes.

Validado o sistema auto adaptativo surge agora a necessidade de análise dos

sistemas de comunicação para o envio dos valores adquiridos e uma plataforma para a

receção dos mesmos. Sabendo a comunicação mais apropriada para a aplicação deve-se

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

33

escolher um novo microcontrolador que vá de encontro com as necessidades e refazer a

placa, incorporando na própria o microcontrolador.

Outro aspeto importante de trabalho futuro será a pesquisa e desenvolvimento de

um sistema de alimentação/carregamento do sistema completo.

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

34

5 Bibliografia

[1] P. Alpuim, V. Correia, E. S. Marins, J. G. Rocha, I. G. Trindade, and S.

Lanceros-Mendez, “Piezoresistive silicon thin film sensor array for biomedical

applications,” Thin Solid Films, vol. 519, no. 14, pp. 4574–4577, May 2011.

[2] V. Correia, C. Caparros, C. Casellas, L. Francesch, J. G. Rocha, and S.

Lanceros-Mendez, “Development of inkjet printed strain sensors”, Source: Smart

Materials and Structures, Struct. 22 105028,

Impact factor: 2.024, Quartile: Materials Science (miscellaneous) Q1

DOI: 10.1088/0964-1726/22/10/105028, 2013

[3] N. Medrano-Marqués, G. Zatorre-Navarro, S. Celma-Pueyo, “Sensor

Compensation Using Analogue-Digital Adaptive Circuits”, IEEE, 2006

[4] G. Zatorre, N. Medrano, M. Sanz, C. Aldea, B. Calvo, S. Celma, “Digitally

Programmable Analogue Circuits for Sensor Conditioning Systems”, Sensore,

published 14 May 2009

[5] R. Amirtharajah, A. Chen, D. Thaker, F. T. Chong, “Circuit Interfaces and

Optimization for Resistive Nanosensors”,

[6] C. Yang, J. Xi, A. Mason, P. Zhong, “Configurable Hardware-Efficient

Interface Circuit for Multi-Sensor Microsystems”, will be presented at IEEE Sensors

Conference 2006, Daegu, Korea, Oct. 2006

[7] J. Xi, C. Yang, A. Mason, P.Zhong, “Adaptive Multi-Sensor Interface

System-on-Chip”, IEEE Sensors Conference, Daegu, Korea, Oct. 2006

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

35

Anexos

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

36

1. Código do sistema adaptativo

//variáveis auxiliares

int a=0;

int val;

float volt=0.00;

byte dac[24]=0,215,124;

byte pot[16]=96,49;

void setup()

Wire.begin();

Serial.begin(9600);

pinMode(13,OUTPUT);

pinMode(11,OUTPUT);

pinMode(10,OUTPUT);

pinMode(2,OUTPUT);

pinMode(9,OUTPUT);

pinMode(8,OUTPUT);

pinMode(7,OUTPUT);

pinMode(A0,INPUT);

digitalWrite(10,HIGH);

digitalWrite(2,HIGH);

//configurar o LTC

SPI_MasterInit(0,3); //inicia comunicação SPI em Modo e formato de envio de dados

digitalWrite(2,LOW);

SPI_MasterTrans1(0b0001); //envio de dados

digitalWrite(2,HIGH);

end_Master(); //desliga comunicação SPI

Serial.println("Insira o sensor a efetuar leitura");

void loop()

if(Serial.available()>0) //verifica se existe dados na porta série

a=Serial.read(); //leitura da porta série

switch(a)

case '1':

//configuração do DAC

SPI_MasterInit(0,1); //inicia comunicação SPI em Modo e formato de envio de dados

digitalWrite(10,LOW);

SPI_MasterTrans3(0x00,dac[0],dac[1]); //envio de dados

digitalWrite(10,HIGH);

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

37

//configurar o Pot

Wire.beginTransmission(44); //seleção do componente

Wire.write(byte(0x60)); //envio de dados I2C

Wire.write(byte(pot[0])); //envio de dados I2C

Wire.endTransmission(); //termina I2C

//seleção do sensor

select_mux(1,1); //seleção do sensor; código apresentado no auto adaptativo

delay(100); //espera para as alterações sentirem-se na placa

//leitura

val=analogRead(A0); //leitura do adc

volt = (float)((5.00*val)/1023); //conversão para tensão

Serial.println(volt); //imprime valor

Serial.println("Insira o sensor a efetuar leitura");

break;

case '2':

//configuração do DAC

SPI_MasterInit(0,1);

digitalWrite(10,LOW);

SPI_MasterTrans3(0x00,dac[2],dac[3]);

digitalWrite(10,HIGH);

//configurar o Pot

Wire.beginTransmission(44);

Wire.write(byte(0x60));

Wire.write(byte(pot[1]));

Wire.endTransmission();

//seleção do sensor

select_mux(1,2); //seleção do sensor; código apresentado no auto adaptativo

delay(100);

//leitura

val=analogRead(A0);

volt = (float)((5.00*val)/1023); //conversão para tensão

Serial.println(volt);

Serial.println("Insira o sensor a efetuar leitura");

break;

case '3':

//configuração do DAC

SPI_MasterInit(0,1);

digitalWrite(10,LOW);

SPI_MasterTrans3(0x00,dac[4],dac[5]);

digitalWrite(10,HIGH);

//configurar o Pot

Wire.beginTransmission(44);

Wire.write(byte(0x60));

Wire.write(byte(pot[2]));

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

38

Wire.endTransmission();

//seleção do sensor

select_mux(1,3); //seleção do sensor; código apresentado no auto adaptativo

delay(100);

//leitura

val=analogRead(A0);

volt = (float)((5.00*val)/1023); //conversão para tensão

Serial.println(volt);

Serial.println("Insira o sensor a efetuar leitura");

case '4':

//configuração do DAC

SPI_MasterInit(0,1);

digitalWrite(10,LOW);

SPI_MasterTrans3(0x00,dac[6],dac[7]);

digitalWrite(10,HIGH);

//configurar o Pot

Wire.beginTransmission(44);

Wire.write(byte(0x60));

Wire.write(byte(pot[3]));

Wire.endTransmission();

//seleção do sensor

select_mux(1,4); //seleção do sensor; código apresentado no auto adaptativo

delay(100);

//leitura

val=analogRead(A0);

volt = (float)((5.00*val)/1023); //conversão para tensão

Serial.println(volt);

Serial.println("Insira o sensor a efetuar leitura");

case '5':

//configuração do DAC

SPI_MasterInit(0,1); //inicia comunicação SPI em Modo e formato de envio de dados

digitalWrite(10,LOW);

SPI_MasterTrans3(0x00,dac[8],dac[9]); //envio de dados

digitalWrite(10,HIGH);

//configurar o Pot

Wire.beginTransmission(44); //seleção do componente

Wire.write(byte(0x60)); //envio de dados I2C

Wire.write(byte(pot[4])); //envio de dados I2C

Wire.endTransmission(); //termina I2C

//seleção do sensor

select_mux(1,5); //seleção do sensor; código apresentado no auto adaptativo

delay(100); //espera para as alterações sentirem-se na placa

//leitura

val=analogRead(A0); //leitura do adc

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

39

volt = (float)((5.00*val)/1023); //conversão para tensão

Serial.println(volt); //imprime valor

Serial.println("Insira o sensor a efetuar leitura");

break;

case '6':

//configuração do DAC

SPI_MasterInit(0,1);

digitalWrite(10,LOW);

SPI_MasterTrans3(0x00,dac[10],dac[11]);

digitalWrite(10,HIGH);

//configurar o Pot

Wire.beginTransmission(44);

Wire.write(byte(0x60));

Wire.write(byte(pot[5]));

Wire.endTransmission();

//seleção do sensor

select_mux(1,6); //seleção do sensor; código apresentado no auto adaptativo

delay(100);

//leitura

val=analogRead(A0);

volt = (float)((5.00*val)/1023); //conversão para tensão

Serial.println(volt);

Serial.println("Insira o sensor a efetuar leitura");

break;

case '7':

//configuração do DAC

SPI_MasterInit(0,1);

digitalWrite(10,LOW);

SPI_MasterTrans3(0x00,dac[12],dac[13]);

digitalWrite(10,HIGH);

//configurar o Pot

Wire.beginTransmission(44);

Wire.write(byte(0x60));

Wire.write(byte(pot[6]));

Wire.endTransmission();

//seleção do sensor

select_mux(1,7); //seleção do sensor; código apresentado no auto adaptativo

delay(100);

//leitura

val=analogRead(A0);

volt = (float)((5.00*val)/1023); //conversão para tensão

Serial.println(volt);

Serial.println("Insira o sensor a efetuar leitura");

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

40

case '8':

//configuração do DAC

SPI_MasterInit(0,1);

digitalWrite(10,LOW);

SPI_MasterTrans3(0x00,dac[14],dac[15]);

digitalWrite(10,HIGH);

//configurar o Pot

Wire.beginTransmission(44);

Wire.write(byte(0x60));

Wire.write(byte(pot[7]));

Wire.endTransmission();

//seleção do sensor

select_mux(1,8); //seleção do sensor; código apresentado no auto adaptativo

delay(100);

//leitura

val=analogRead(A0);

volt = (float)((5.00*val)/1023); //conversão para tensão

Serial.println(volt);

Serial.println("Insira o sensor a efetuar leitura");

Nota: Código para apenas uma linha da matriz

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

41

2. Código do sistema auto adaptativo

Função seleção do sensor void select_mux(int linha, int coluna)

switch(linha)

case 1:

digitalWrite(7,LOW);

digitalWrite(8,LOW);

digitalWrite(9,LOW);

break;

case 2:

digitalWrite(7,LOW);

digitalWrite(8,LOW);

digitalWrite(9,HIGH);

break;

case 3:

digitalWrite(7,LOW);

digitalWrite(8,HIGH);

digitalWrite(9,LOW);

break;

case 4:

digitalWrite(7,LOW);

digitalWrite(8,HIGH);

digitalWrite(9,HIGH);

break;

case 5:

digitalWrite(7,HIGH);

digitalWrite(8,LOW);

digitalWrite(9,LOW);

break;

case 6:

digitalWrite(7,HIGH);

digitalWrite(8,LOW);

digitalWrite(9,HIGH);

break;

case 7:

digitalWrite(7,HIGH);

digitalWrite(8,HIGH);

digitalWrite(9,LOW);

break;

case 8:

digitalWrite(7,HIGH);

digitalWrite(8,HIGH);

digitalWrite(9,HIGH);

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

42

break;

switch(coluna)

case 1:

digitalWrite(4,LOW);

digitalWrite(5,LOW);

digitalWrite(6,LOW);

break;

case 2:

digitalWrite(4,LOW);

digitalWrite(5,LOW);

digitalWrite(6,HIGH);

break;

case 3:

digitalWrite(4,LOW);

digitalWrite(5,HIGH);

digitalWrite(6,LOW);

break;

case 4:

digitalWrite(4,LOW);

digitalWrite(5,HIGH);

digitalWrite(6,HIGH);

break;

case 5:

digitalWrite(4,HIGH);

digitalWrite(5,LOW);

digitalWrite(6,LOW);

break;

case 6:

digitalWrite(4,HIGH);

digitalWrite(5,LOW);

digitalWrite(6,HIGH);

break;

case 7:

digitalWrite(4,HIGH);

digitalWrite(5,HIGH);

digitalWrite(6,LOW);

break;

case 8:

digitalWrite(4,HIGH);

digitalWrite(5,HIGH);

digitalWrite(6,HIGH);

break;

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

43

Função de calibração do sistema

void configura(int linha,int i, int coluna)

select_mux(linha,coluna); //seleção do sensor

//variáveis auxiliares dos calculos

int x=0;

int v_ohm;

int ohm;

int ohm_out;

byte pot;

float tensao;

float dac_out;

word dac_f;

byte dac;

//colocar o dac a 0V

SPI_MasterInit(0,1);

digitalWrite(10,LOW);

SPI_MasterTrans3(0x00,0x00,0x00);

digitalWrite(10,HIGH);

//colocar o LTC com ganho 1

SPI_MasterInit(0,3);

digitalWrite(2,LOW);

SPI_MasterTrans1(0b0001);

digitalWrite(2,HIGH);

//colocar potenciómetro na palavra digital 00h

Wire.begin();

Wire.beginTransmission(44);

Wire.write(byte(0x60));

Wire.write(byte(0x00));

Wire.endTransmission();

delay(1000);

tensao=(float)((5.00*analogRead(A0))/1023);

//configurar o pot

while(tensao<0.50)

Wire.beginTransmission(44);

Wire.write(byte(0x64));

Wire.endTransmission();

delay(1000);

tensao=(float)((5.00*analogRead(A0))/1023);

x++; //contagem de incrementos

v_ohm=(10000/255); //cálculo da resistência equivalente a 1 incremento

ohm=v_ohm*x; //variação de resistência para tensão ser superior a 0.5V

tensao=(float)((5.00*analogRead(A0))/1023);

ohm_out=((tensao*(10000-ohm))/(5.00-tensao)); //calculo do valor real do potenciómetro

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

44

pot=(ohm_out/v_ohm); //conversão para digital

EEPROM.write(i,pot); //guardar na memória

i++; //incremento da posição de memória

Wire.beginTransmission(44);

Wire.write(byte(0x60));

Wire.write(byte(pot));

Wire.endTransmission();

delay(1000);

//configurar o DAC

SPI_MasterInit(0,1);

digitalWrite(10,LOW);

SPI_MasterTrans3(0x00,0xd7,0x7c);

digitalWrite(10,HIGH);

delay(1000);

tensao=(float)((5.00*analogRead(A0))/1023);

dac_out=2.50-((2.50-tensao)/1); //cálculo do valor real do DAC

//guardar valores do dac

dac_f=((dac_out*65535)/2.97); //cálculo da palavra digital

//separação dos bytes

dac=dac_f&0xff; //máscara para guardar o byte menos significativo

EEPROM.write(i+1, dac);

dac_f=dac_f>>8; //shift register

dac=dac_f&0xff; //máscara para guardar o byte menos significativo

EEPROM.write(i,dac);

i=i+2;

coluna++;

if(coluna<9) //condição para efetuar calibração para todos os sensores

if(linha<9)

configura(linha,i,coluna);

else

linha++;

if(linha<9)

coluna=1;

configura(linha,i,coluna);

EEPROM.write(0,1); //coloca posição 0 da memória com valor 1

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

45

Função de leitura dos sensores void leitura(int linha, int i, coluna)

int val;

float volt;

select_mux(linha,coluna);

Wire.beginTransmission(44);

Wire.write(byte(0x60));

Wire.write(byte(EEPROM.read(i)));

Wire.endTransmission();

SPI_MasterInit(0,1);

digitalWrite(10,LOW);

SPI_MasterTrans3(0x00,EEPROM.read(i+1),EEPROM.read(i+2));

digitalWrite(10,HIGH);

delay(100);

val=analogRead(A0);

volt = (float)((5.00*val)/1023); //conversão para tensão

Serial.print("Sensor ");

Serial.print(linha);

Serial.println(coluna);

Serial.println(volt);

delay(1000);

i=i+3;

coluna++;

if(coluna<9)

if(linha<9)

leitura(linha,i,coluna);

else

linha++;

if(linha<9)

coluna=1;

leitura(linha,i,coluna);

Sistema auto adaptativo de leitura e aquisição de dados para sensores de pressão piezorresistivos

46

Código principal void loop()

if(EEPROM.read(0)==0)

configura(1,1,1);

else

leitura(1,1,1);