Upload
lamtuong
View
215
Download
0
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);