• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2020

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

Copied!
64
0
0

Texto

(1)

Sofia Miranda da Silva Portela

Sistema auto adaptativo para

leitura e aquisição de dados para

sensores de pressão piezorresistivos

Sof ia Mir anda da Silv a P or tela dezembro de 2013 UMinho | 2013 Sis

tema auto adap

tativ

o para leitura e aq

uisição de dados para sensor

es de pr essão piezor resis tiv os

Universidade do Minho

Escola de Engenharia

(2)
(3)

dezembro de 2013

Tese de Mestrado

Ciclo de Estudos Integrados Conducentes ao Grau de

Mestre em Engenharia Eletrónica Industrial e Computadores

Trabalho efetuado sob a orientação do

Professor Doutor Gerardo Rocha

Professor Doutor Lanceros Mendez

Sofia Miranda da Silva Portela

Sistema auto adaptativo para

leitura e aquisição de dados para

sensores de pressão piezorresistivos

Universidade do Minho

(4)
(5)

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.

(6)
(7)

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.

(8)
(9)

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.

(10)
(11)

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

(12)
(13)

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

(14)
(15)

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

(16)
(17)

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

(18)
(19)

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.

(20)

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.

(21)

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

(22)

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:

(23)

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

(24)

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

6

1.4 Comunicação I

2

C (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.

(25)

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

(26)

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.

(27)

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.

(28)

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 deve-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.

(29)

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

(30)

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.

(31)

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.

(32)

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

(33)

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.

(34)

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.

(35)

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.

(36)

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.

(37)

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.

(38)

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.

(39)

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};

(40)

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.

(41)

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);

(42)

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

(43)

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

(44)

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.

(45)

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.

(46)

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

(47)

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Ω

(48)

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

(49)

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

(50)

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

(51)

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.

(52)

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

(53)

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

35

(54)

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

(55)

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]));

(56)

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

(57)

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"); }

(58)

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"); }

} } }

(59)

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);

(60)

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; } }

(61)

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);

(62)

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

(63)

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); } } }

(64)

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); } }

Imagem

Ilustração 1-1 Ponte Wheatstone
Ilustração 1-2 Esquema do amplificador de instrumentação
Ilustração 1-3 Exemplo de um diagrama de bloco de um sistema adaptativo [5]
Ilustração 1-4 Representação das conexões SPI
+7

Referências

Documentos relacionados

ed è una delle cause della permanente ostilità contro il potere da parte dell’opinione pubblica. 2) Oggi non basta più il semplice decentramento amministrativo.

Posteriormente, em Junho de 1999, ingressei no grupo Efacec, onde fui responsável pela elaboração de projetos e propostas para a construção de Estações de Tratamento

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

Neste estudo foram estipulados os seguintes objec- tivos: (a) identifi car as dimensões do desenvolvimento vocacional (convicção vocacional, cooperação vocacio- nal,

Portanto, o teste Exato de Fisher, que tem como objetivo calcular a probabilidade de uma relação entre duas variáveis, apresenta que há associações significativas entre os

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades

função recursiva, mais recursos de memória são necessários para executar o programa, o que pode torná-lo lento ou. computacionalmente

 Caminho simples que contém todas as arestas do grafo (e,. consequentemente, todos os