Upload
lykhanh
View
236
Download
0
Embed Size (px)
Citation preview
DESENVOLVIMENTO DE UM SISTEMA DE AQUISICAO E
ARMAZENAMENTO DE DADOS PARA MEDICOES OCEANOGRAFICAS
Rafael Mazza Buchmann
Projeto de Graduacao apresentado ao Curso
de Engenharia Eletronica e de Computacao
da Escola Politecnica, Universidade Federal
do Rio de Janeiro, como parte dos requisitos
necessarios a obtencao do tıtulo de Engenheiro.
Orientadores: Carlos Jose Ribas D’Avila
Fabio Nascimento de Carvalho
Rio de Janeiro
Marco de 2014
Buchmann, Rafael Mazza
Desenvolvimento de um Sistema de Aquisicao
e Armazenamento de Dados para Medicoes
Oceanograficas/Rafael Mazza Buchmann. – Rio de
Janeiro: UFRJ/ Escola Politecnica, 2014.
XIV, 89 p.: il.; 29, 7cm.
Orientadores: Carlos Jose Ribas D’Avila
Fabio Nascimento de Carvalho
Projeto de Graduacao – UFRJ/ Escola Politecnica/
Curso de Engenharia Eletronica e de Computacao, 2014.
Referencias Bibliograficas: p. 74 – 78.
1. Instrumentacao Eletronica. 2. Aquisicao de Dados.
3. Microcontrolador. 4. MSP430. I. D’Avila, Carlos Jose
Ribas et al. II. Universidade Federal do Rio de Janeiro,
Escola Politecnica, Curso de Engenharia Eletronica e de
Computacao. III. Tıtulo.
iii
Endure and Survive.
iv
Agradecimentos
Agradeco a minha famılia pela estrutura e incentivo, em especial meus pais Mario
Buchmann (in memoriam) e Vera Lucia Rocha Mazza Buchmann.
Agradeco a minha namorada e “dupla na graduacao” Mayara Cunha Cagido pelo
infinito carinho, amor, paciencia e dedicacao.
Agradeco aos colegas e grandes amigos que fiz durante a graduacao.
Agradeco a todos os bons professores e profissionais os quais tive o prazer de con-
viver, em especial meus orientadores Carlos Jose Ribas D’Avila e Fabio Nascimento
de Carvalho.
v
Resumo do Projeto de Graduacao apresentado a Escola Politecnica/ UFRJ como
parte dos requisitos necessarios para a obtencao do grau de Engenheiro Eletronico
e de Computacao.
Desenvolvimento de um Sistema de Aquisicao e Armazenamento de Dados para
Medicoes Oceanograficas
Rafael Mazza Buchmann
Marco/2014
Orientadores: Carlos Jose Ribas D’Avila
Fabio Nascimento de Carvalho
Curso: Engenharia Eletronica e de Computacao
Este trabalho apresenta o desenvolvimento de um modulo de baixo consumo para
uso submarino, capaz de ler e digitalizar dados medidos por sensores, armazenando-
os e transmitindo-os para uma unidade central. Atraves do estudo de arquiteturas
para processamento de dados, protocolos de comunicacao digital, aplicacoes de am-
plificadores operacionais e conversores A/D, foi modelada a solucao teorica para o
ambiente e seus requisitos de autonomia, protecao mecanica e baixo consumo de
corrente. A partir deste anteprojeto, implementou-se um prototipo capaz de fazer a
leitura e armazenamento dos dados. Apos a realizacao de uma pesquisa para buscar
o microcontrolador mais adequado, definiu-se a utilizacao do MSP430, fabricado
pela Texas Instruments, trazendo ao modulo versatilidade e eficiencia.
Palavras-chave: Instrumentacao Eletronica, Aquisicao de Dados, Microcontrolador,
MSP430.
vi
Abstract of Undergraduate Project presented to POLI/UFRJ as a partial fulfillment
of the requirements for the degree of Engineer.
DEVELOPMENT OF A DATA ACQUISITION AND STORAGE SYSTEM FOR
OCEANOGRAPHIC MEASUREMENTS
Rafael Mazza Buchmann
March/2014
Advisors: Carlos Jose Ribas D’Avila
Fabio Nascimento de Carvalho
Course: Electronic Engineering
This work presents the development of a low-power module for subsea use, capable
of reading and digitalize data measured by sensors, storing and transmitting it to
a central unit. Through the study of architectures for data processing, digital com-
munication protocols, operational amplifiers and ADC’s applications, the theoretical
solution for the environment and autonomy requirements, mechanical protection and
low current consumption was modeled. From the outline, a prototype capable of
reading and storing data was implemented. After the initial search for the most
suitable microcontroller, the Texas Instruments’ MSP430 brings versatility and ef-
ficiency to the module.
Keywords: Electronic Instrumentation, Data Acquisition, Microcontroller, MSP430.
vii
Lista de Siglas
A/D – Analogico para Digital
ADC – Analog-to-Digital Converter
ANSI – American National Standards Institute
ARM – Advanced RISC Machine
CCS – Code Composer Studio
CI – Circuito Integrado
CMRR – Common Mode Rejection Rate
COPPE – Instituto Alberto Luiz Coimbra de Pos-Graduacao e Pesquisa de Enge-
nharia
DEL – Departamento de Engnharia Eletronica e de Computacao
EB – USB Experimenter’s Board MSP-EXP430F5529
FET – Field-effect Transistor
FPGA – Field-programmable Gate Array
GPIO – General Purpose Input/Output
HDL – Hardware Description Language
HDMI – High-definition Multimedia Interface
I2C – Inter-Integrated Circuit
IDE – Integrated Development Environment
LED – Light Emitting Diode
LIOc – Laboratorio de Instrumentacao Oceanografica
LSB – Least Significant Bit
viii
MCU – Microcontroller Unit
MSB – Most Significant Bit
PC – Personal Computer
PGA – Programmable-gain Amplifier
PGIA – Programmable-gain Instrumentation Amplifier
PIC – Programmable Interface Controller
ppm – Partes por Milhao
RISC – Reduced Instruction Set Computer
RTI – Referred to Input
RTO – Referred to Output
SAR – Successive Approximation Register
SBC – Single-board Computer
SINAD – Signal-to-noise and distortion ratio
SisCAT – Sistema de Controle, Aquisicao e Telemetria
SO – Sistema Operacional
SPI – Serial Peripheral Interface
SPS – Samples per Second
THD – Total Harmonic Distortion
TJB – Transistor de Juncao Bipolar
UART – Universal Asynchronous Receiver/Transmitter
USCI – Universal Serial Communication Interface
VHSIC – Very High Speed Integrated Circuits
ix
Sumario
Lista de Figuras xii
Lista de Tabelas xiv
1 Introducao 1
1.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Delimitacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.6 Descricao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Analise Comparativa 4
2.1 Requisitos do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Estado da Arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.1 FPGA (Field-programmable Gate Array) . . . . . . . . . . . . 6
2.2.2 SBC (Single-board Computer) . . . . . . . . . . . . . . . . . . 9
2.2.3 Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.4 Escolha da Tecnologia . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Unidade Principal do Modulo . . . . . . . . . . . . . . . . . . . . . . 17
2.3.1 Micromint: MicroBolt . . . . . . . . . . . . . . . . . . . . . . 17
2.3.2 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.3 Microchip: PIC . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.4 Escolhido – Texas: MSP430 LaunchPad . . . . . . . . . . . . 19
3 Anteprojeto 24
3.1 Consideracoes Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.1 Relacao Um-para-um . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.2 Comunicacao Serial . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2 Principais Componentes . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.1 Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.2 Pre-Amplificador . . . . . . . . . . . . . . . . . . . . . . . . . 31
x
3.2.3 Conversor Analogico/Digital . . . . . . . . . . . . . . . . . . . 40
3.2.4 Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2.5 Armazenamento de Dados . . . . . . . . . . . . . . . . . . . . 46
3.2.6 Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3 Sugestao de Implementacao . . . . . . . . . . . . . . . . . . . . . . . 48
3.4 Cuidados Adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.4.1 Alimentacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.4.2 Ruıdo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.4.3 Protecao Mecanica . . . . . . . . . . . . . . . . . . . . . . . . 53
4 Prototipo 54
4.1 USB Experimenter’s Board MSP-EXP430F5529 (EB) . . . . . . . . . 54
4.1.1 Componentes da Placa . . . . . . . . . . . . . . . . . . . . . . 56
4.1.2 Operacao do Modulo . . . . . . . . . . . . . . . . . . . . . . . 58
4.2 Codigo em Linguagem C . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2.1 Relogio: Clock.c . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.2.2 Medicao: Medir.c . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.2.3 Armazenamento: Armazenar.c . . . . . . . . . . . . . . . . . . 62
4.2.4 Programa Principal: main.c . . . . . . . . . . . . . . . . . . . 63
5 Testes 65
5.1 Material Utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2 Consumo de Corrente . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.3 Obtencao de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.3.1 Potenciometro . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.3.2 Sinal Senoidal . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.3.3 Sinal Quadratico . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.3.4 Sinal Dente-de-Serra . . . . . . . . . . . . . . . . . . . . . . . 70
5.3.5 Analise dos Resultados . . . . . . . . . . . . . . . . . . . . . . 71
6 Conclusao 72
6.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Referencias Bibliograficas 74
A Codigo 79
A.1 Programa Principal (main.c) . . . . . . . . . . . . . . . . . . . . . . . 79
A.2 Rotina de Medicao (Medir.c e Medir.h) . . . . . . . . . . . . . . . . . 82
A.3 Armazenamento de Dados no Cartao
microSD (Armazenar.c e Armazenar.h) . . . . . . . . . . . . . . . . . 85
xi
Lista de Figuras
2.1 Chip FPGA Altera Stratix IV EP4SGX230. . . . . . . . . . . . . . . 6
2.2 Kit para Iniciantes em FPGA Altera Cyclone V GX. . . . . . . . . . 8
2.3 SBC Micromint Electrum 100, Utilizado em um dos Projetos Atuais
do LIOc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 BeagleBone Black (a) e Raspberry Pi (b). . . . . . . . . . . . . . . . 11
2.5 Microcontrolador MSP430F5529, da Texas Instruments. . . . . . . . . 12
2.6 ArduinoPro (a) e Wireless SD Shield, Periferico para Utilizacao de
Tecnologia Sem Fio e Cartao de Memoria (b). . . . . . . . . . . . . . 13
2.7 Micromint MicroBolt. . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.8 Microchip PICkit 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.9 Launchpads da Texas Instruments: MSP-EXP430G2 (a) e
MSP-EXP430F5529LP (b). . . . . . . . . . . . . . . . . . . . . . . . 20
2.10 USB Experimenter’s Board MSP-EXP430F5529, da Texas Instruments. 21
3.1 Exemplo de Sistema de Medicao Subaquatica. . . . . . . . . . . . . . 25
3.2 Conexao para o Modulo e o Sensor em uma Linha de Fundeio. . . . . 26
3.3 Diagrama de Blocos Geral. . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4 Amplificador Subtrator. . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.5 Amplificador de Instrumentacao. . . . . . . . . . . . . . . . . . . . . 33
3.6 Circuito Basico do Amplificador de Carga. . . . . . . . . . . . . . . . 35
3.7 Circuito Basico do Amplificador Logarıtmico. . . . . . . . . . . . . . 37
3.8 Grafico Exemplo de uma Funcao Linearizada por Logaritmo. . . . . . 38
3.9 Pinos Acessıveis do Microcontrolador no LaunchPad. . . . . . . . . . 43
3.10 Logotipo da Plataforma Code Composer Studio. . . . . . . . . . . . . 45
3.11 BoosterPack para Utilizacao de Cartao MicroSD. . . . . . . . . . . . 46
3.12 Cartao microSD e Compartimento na USB Experimenter’s Board
MSP-EXP430F5529. . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.13 Diagrama de Blocos da Sugestao de Implementacao do Modulo de
Aquisicao e Armazenamento de Dados. . . . . . . . . . . . . . . . . . 49
3.14 FuelTank, o BoosterPack para Alimentacao do LaunchPad. . . . . . . 50
3.15 Caixa com Protecao IP-68 da Empresa CFW Eletrica. . . . . . . . . 53
xii
3.16 Prensa cabo IP-68 da Empresa Cemar Legrand. . . . . . . . . . . . . 53
4.1 Experimenter’s Board MSP-EXP430F5529 Utilizada para o Prototipo
em Laboratorio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.2 Principais Componentes da EB. . . . . . . . . . . . . . . . . . . . . . 56
4.3 Tela Inicial do Modulo. . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.4 Formato dos Dados Armazenados no Cartao microSD. . . . . . . . . 59
4.5 Parte da Janela do software Code Composer Studio, IDE da Texas
Instruments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.6 Erro Apresentado no LCD pela Ausencia do Cartao microSD. . . . . 63
5.1 Variacao de Tensao no Potenciometro: Dados do Cartao de Memoria. 67
5.2 Sinal Senoidal com Amplitude 2.5 Vpp e Frequencia 100 Hz: Captura
de Tela do Osciloscopio. . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.3 Sinal Senoidal com Amplitude 2.5 Vpp e Frequencia 100 Hz: Dados
do Cartao de Memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.4 Sinal Quadratico com Amplitude 2.5 Vpp e Frequencia 100 Hz: Cap-
tura de Tela do Osciloscopio. . . . . . . . . . . . . . . . . . . . . . . . 69
5.5 Sinal Quadratico com Amplitude 2.5 Vpp e Frequencia 100 Hz: Dados
do Cartao de Memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.6 Sinal Dente-de-Serra com Amplitude 2.5 Vpp e Frequencia 100 Hz:
Captura de Tela do Osciloscopio. . . . . . . . . . . . . . . . . . . . . 70
5.7 Sinal Dente-de-Serra com Amplitude 2.5 Vpp e Frequencia 100 Hz:
Dados do Cartao de Memoria. . . . . . . . . . . . . . . . . . . . . . . 70
xiii
Lista de Tabelas
2.1 Caracterısticas dos SBCs . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Comparativo entre as Tecnologias . . . . . . . . . . . . . . . . . . . . 15
2.3 Caracterısticas dos LaunchPads MSP430. . . . . . . . . . . . . . . . . 21
3.1 Potenciometros Digitais. . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2 Resolucao dos ADCs. . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
xiv
Capıtulo 1
Introducao
1.1 Tema
Este trabalho consiste no desenvolvimento de um sistema de aquisicao e armaze-
namento de dados para sensores submarinos. Sua composicao e embasada pelos
conceitos de instrumentacao eletronica, principalmente o estudo de aplicacoes de
amplificadores operacionais, conversores A/D e microcontroladores.
1.2 Delimitacao
A criacao deste modulo tem como principal demanda sensores sem armazenamento
proprio de dados, presentes tanto em cadeias de medicao oceanograficas como em
sistemas com apenas um elemento para medicao. Por se tratar de um equipamento
marinho, a especificidade do ambiente impoe como principais requisitos a autonomia
e a protecao mecanica.
Para este projeto de graduacao, o desenvolvimento teorico da solucao apresenta
comparativos e resultados conhecidos de sistemas de medicao semelhantes e atuais.
Neste primeiro desenvolvimento, o prototipo esta limitado ao modulo principal de
processamento, composto pelo microcontrolador MSP430, e ao armazenamento de
dados em um cartao microSD, nao sendo especificado nenhum sensor e nao incluindo
o comportamento do modulo em rede.
1
1.3 Justificativa
O Laboratorio de Instrumentacao Oceanografica (LIOc/COPPE/UFRJ) conta com
projetos, atuais e futuros, envolvendo a aquisicao de dados de sensores submarinos.
O estudo e desenvolvimento de um modulo versatil e economico tornou-se necessario
para o melhor entendimento deste topico e expansao da area de eletronica e com-
putacao do laboratorio.
1.4 Objetivos
O objetivo principal deste trabalho e criar um modulo capaz de medir diversos
tipos de sensores (e.g. temperatura, pressao hidrostatica) em ambiente submarino,
com a finalidade de promover as condicoes iniciais para a confeccao de um produto
confiavel, que possa integrar projetos futuros do laboratorio. Apos a realizacao
de uma pesquisa previa, concluiu-se que e adequado criar uma solucao dedicada
para o ambiente submarino e que, para este projeto, ha produtos que atendem as
especificacoes de consumo com razoavel capacidade de armazenamento e precisao
de medicao, gerando uma implementacao satisfatoria.
Como benefıcios complementares, ha o know-how adquirido sobre arquiteturas de
processamento, o envolvimento pratico direto do aluno com a area de instrumentacao
e a expansao do topico de pesquisa em microcontroladores para o laboratorio, ori-
ginando novos trabalhos que abordam este tema.
1.5 Metodologia
A partir da necessidade do laboratorio pelo sistema de aquisicao de dados, foram es-
tabelecidos os requisitos do projeto. Posteriormente, foi feita a pesquisa das possıveis
tecnologias a serem aplicadas e o microcontrolador MSP430 foi escolhido como cen-
tro de processamento. Em seguida, foram avaliados os componentes perifericos
necessarios para a modelagem do modulo completo.
2
Com o intuito de produzir resultados preliminares, um prototipo contendo a
parte de aquisicao e armazenamento dos dados foi montado e, atraves de medicoes
(e.g. consumo de corrente), os dados obtidos reforcaram a boa escolha do microcon-
trolador MSP430 para este projeto.
A pesquisa foi feita majoritariamente em sites de grandes fabricantes de compo-
nentes eletronicos, artigos produzidos por estes fabricantes, consultas aos profissio-
nais da area (professores e pesquisadores), projetos de graduacao e livros das diversas
areas de interesse (e.g. instrumentacao eletronica, hardware, sistemas operacionais).
1.6 Descricao
A etapa inicial consiste na analise comparativa das tecnologias, apresentada no
capıtulo 2, especialmente os sistemas presentes em cadeias submarinas atuais, bus-
cando entender seu funcionamento e definir caracterısticas utilizadas no projeto.
Visando menor perda de energia, simplicidade de implementacao e versatilidade, a
abordagem do sistema foi estudada e o componente principal do modulo especificado.
O capıtulo 3 desenvolve o anteprojeto do sistema completo, constituıdo do centro
de processamento (microcontrolador MSP430) e seus perifericos necessarios (pre-
amplificador, conversor A/D, cartao microSD).
No capıtulo 4, apresenta-se um modulo funcional do sistema, capaz de obter e ar-
mazenar dados e o software necessario para a aplicacao, utilizando preferencialmente
rotinas economicas para configuracao de intervalos de medicao e armazenamento de
dados em cartao de memoria.
A partir do prototipo, foi feita a obtencao de medidas de consumo e dados validos
em ambiente de laboratorio, descritos no capıtulo 5.
Ao final, as conclusoes e propostas de trabalhos futuros, no capıtulo 6, encerram
o trabalho.
Para os principais pontos de decisao o texto estara em negrito, possibilitando
a compreensao das partes fundamentais do projeto e uma leitura resumida, caso
desejado.
3
Capıtulo 2
Analise Comparativa
Considerando a demanda caracterizada na secao 1.2, o objetivo deste capıtulo e
escolher, dentre as diversas opcoes presentes no mercado atual, a arquitetura e o
componente principal do sistema, responsavel pelo gerenciamento do modulo de
medicao.
Apos descrever as caracterısticas das tecnologias selecionadas, determina-se a
opcao adotada atraves da realizacao de uma analise comparativa entre os principais
aspectos considerados para o desenvolvimento deste trabalho.
2.1 Requisitos do Sistema
Os principais requisitos sao:
• Baixo consumo (menor que 10 mA com 3.3 Vcc de alimentacao);
• Capacidade de Processamento;
• Memoria suficiente para programacao do modulo e armazenamento de dados;
• Grande autonomia:
– Funcionamento por bateria, visando longos perıodos (maior que 2 meses)
de autonomia;
4
• Relogio interno:
– Armazenamento de data e hora das medicoes;
• Leitura de sinal analogico ou digital:
– O sinal a ser medido pode ser analogico (vindo do sensor), convertido pos-
teriormente pelo modulo desenvolvido ou digital, convertido previamente
por dispositivo externo;
• Amplificador de ganho ajustavel:
– Como o sistema pode ser utilizado por sensores genericos, o sinal de
entrada deve ser ajustado para melhor aproveitamento;
• Conversor A/D de 12 bits ou mais, podendo ser necessaria a inclusao de com-
ponente externo ao modulo principal;
• Possibilidade de rede para comunicacao com um sistema central;
• Protecao adequada ao ambiente marinho e profundidades superiores a cin-
quenta metros.
2.2 Estado da Arte
Apos orientacao inicial, buscou-se definir quais as tecnologias que poderiam se ade-
quar ao desenvolvimento. Alem de atender os requisitos da secao 2.1, o comparativo
tem como foco tambem os seguintes pontos:
• Ferramentas para a pesquisa e desenvolvimento:
– Variedade de modelos;
– Kits de desenvolvimento;
– Literatura acessıvel;
– Ambientes online para discussoes e solucoes;
5
• Facilidade de implementacao e continuidade a pesquisa:
– Adequacao ao perfil do atual e dos futuros desenvolvedores, integran-
tes da equipe de eletronica do LIOc, constituıda majoritariamente por
estagiarios da graduacao em engenharia eletronica e da computacao da
UFRJ.
Das tecnologias pesquisadas, as que se mostraram mais apropriadas
foram: FPGA, SBC e microcontrolador.
A seguir, apresenta-se uma descricao objetiva de cada uma destas e suas carac-
terısticas consideradas na escolha.
2.2.1 FPGA (Field-programmable Gate Array)
O FPGA e um chip contendo um arranjo (ou matriz) programavel de portas logicas
(figura 2.1). Utilizando a porta logica como bloco base, pode-se entao construir
qualquer sistema digital, desde que o FPGA possua portas suficientes [1]. Com
a atual tecnologia de semicondutores, existem chips com possibilidade de milhoes
de portas logicas [2], tornando possıvel a realizacao de estruturas cada vez mais
complexas e poderosas.
Figura 2.1: Chip FPGA Altera Stratix IV EP4SGX230 [3].
6
Atualmente, o FPGA pode ser empregado como o centro de processamento con-
figuravel do sistema ou atuar como controle e interface para um microprocessador
de maior porte, combinando a robustez da execucao sequencial de um processador
com o paralelismo possibilitado pelas diversas unidades logicas do FPGA [4]. Assim
como o processamento, o mesmo pode ser feito tambem com blocos de memoria e
interfaces de conexao, ou seja, o FPGA pode ser configurado para desempenhar es-
tas funcoes, ou atuar como controle, possibilitando a utilizacao de blocos perifericos
dedicados [5].
Quanto ao consumo medio, com a necessidade de especificacao de cada
componente e a infinidade de aplicacoes do FPGA, essas informacoes nao
sao fornecidas pelos fabricantes pesquisados, ja que o consumo de corrente
e totalmente dependente do circuito gerado.
2.2.1.1 Programacao
O comportamento do FPGA e modelado nas linguagens de descricao de hardware
(HDL - Hardware Description Language), tornando-o totalmente dedicado e otimi-
zado para a aplicacao designada, com o custo de que todas as acoes possıveis do
sistema devem ser levadas em consideracao pelo projetista. Assim, projetar o sis-
tema requerido envolve descrever desde a estruturacao das interfaces seriais e geracao
das referencias de clock ate o comportamento geral do modulo, como por exemplo,
medir e entrar em estado de espera [6].
Atualmente, uma alternativa a HDL reside em interfaces graficas, aonde o sis-
tema e construıdo por diagrama de blocos e seu codigo correspondente e gerado
automaticamente. Softwares com tal capacidade, como por exemplo o LabVIEW,
da National Instruments, sao pagos e podem necessitar de treinamento especiali-
zado [7].
7
2.2.1.2 Plataformas
Para o desenvolvimento inicial, e interessante o uso de kits vendidos pelos proprios fa-
bricantes, proporcionando confiabilidade e minimizando erros oriundos da utilizacao
de material de desenvolvedores independentes. Com componentes perifericos (e.g.
LEDs, displays) que auxiliam o andamento do trabalho, o projetista modela o FPGA
e, posteriormente, pode criar seu proprio circuito, com somente o chip principal e
os perifericos voltados para sua aplicacao.
A serie Cyclone, da Altera Corporation, e descrita como de baixo custo e baixo
consumo [5] e algumas variantes da serie (SE, SX e ST) apresentam um processador
ARM Cortex-A9 MPCore integrado a placa. Um exemplo de kit de desenvolvimento
e o modelo Cyclone V GX Starter Kit (figura 2.1).
Figura 2.2: Kit para Iniciantes em FPGA Altera Cyclone V GX [5].
Caracterısticas: Cyclone V GX Starter Kit
• FPGA modelo Cyclone V GX 5CGXFC5C6F27C7N;
• 77 mil elementos logicos programaveis;
• Memoria interna: 4884 kB;
• Conexao USB para programacao;
8
• GPIO: 2x20 pinos;
• Barramentos de memoria: SRAM 16 bits de 4 MB e LPDDR2 32 bits de 4 GB;
• Conexao HDMI (High-definition multimedia interface) compatıvel com DVI 1.0
e HDCP v1.4;
• CODEC de Audio: 24 bits;
• LEDs, 4 displays de 7 segmentos, push-buttons e switches ;
• Alimentacao: 12 VDC;
• Cartao microSD;
2.2.2 SBC (Single-board Computer) [8]
Diferente do FPGA, o SBC ja e um computador completo, dotado de memoria,
processador, interfaces de vıdeo, entrada e saıda (I/O), sistema operacional e tudo
que pode ser visto tambem em computadores pessoais (PCs), sendo construıdo em
apenas uma placa de circuito impresso (figura 2.3). Em geral, um SBC e limitado
por seu espaco fısico, possui consumo reduzido em relacao ao PC e portabilidade, o
que o torna uma boa escolha para sistemas embarcados.
Figura 2.3: SBC Micromint Electrum 100, Utilizado em um dos Projetos Atuais do
LIOc [9, 10].
9
2.2.2.1 Programacao
De maneira analoga a um PC, o SBC opera e e configurado por meio de um sistema
operacional (SO). Geralmente, os SBCs presentes no mercado (descritos a seguir) sao
solucoes de codigo aberto (Linux e derivados), completamente programaveis atraves
de linguagens de alto nıvel [11].
Para a customizacao do SO, a estrutura do sistema segue padroes semelhantes
em diferentes placas, existindo amplos foruns para discussao e pessoas pelo mundo
trabalhando conjuntamente em busca de solucoes comuns, como, por exemplo, nos
foruns Stack Overflow e VivaLinux [12, 13].
2.2.2.2 Plataformas
No caso do SBC, nao ha kits de desenvolvimento e prototipagem posterior, pois
a placa adquirida ja e um produto final e nao deve haver alteracao posterior em
hardware.
Dos diversos tipos de SBCs disponıveis no mercado, dois modelos se sobressaem
pelo foco em baixo consumo e popularidade [14]: o BeagleBone Black Rev. A5B, da
BeagleBoard.org Foundation [15], e o Raspberry Pi Rev. B, da The Raspberry Pi
Foundation [16]. A tabela 2.1 apresenta as caracterısticas principais destas placas.
10
(a) (b)
Figura 2.4: BeagleBone Black [15] (a) e Raspberry Pi [16] (b).
Tabela 2.1: Caracterısticas dos SBCs [14]
BeagleBone Black Raspberry Pi
Processador 1 GHz TI Sitara AM3359 700 MHz ARM1176JZFS
ARM Cortex A8
RAM 512 MB DDR3L @ 400 MHz 512 MB SDRAM @ 400 MHz
Armazenamento 2 GB on-board eMMC, MicroSD SD
Vıdeo 1 Micro-HDMI 1 HDMI, 1 Vıdeo Composto
Audio Stereo (HDMI) Stereo (HDMI ou 3.5 mm)
SO Padrao Angstrom Raspbian
Consumo 210-460 mA @ 5 V 150-350 mA @ 5 V
GPIO 65 pinos 8 pinos
1 USB Host 2 USB Hosts
Perifericos 1 Mini-USB Client 1 Micro-USB Power
1 10/100 Mbps Ethernet 1 10/100 Mbps Ethernet
Conector para RPi camera
11
2.2.3 Microcontrolador
Aplicado amplamente em solucoes mais usuais, com boa capacidade de processa-
mento e facilidade de elaboracao, o microcontrolador (figura 2.5) tambem e um
computador, porem sua simplicidade e a ausencia de certos componentes (e.g. sis-
tema operacional) o tornam mais economico e compacto que o FPGA e o SBC.
Figura 2.5: Microcontrolador MSP430F5529, da Texas Instruments [17].
2.2.3.1 Programacao
As rotinas de comportamento do microcontrolador sao gravadas no chip atraves de
softwares que utilizam linguagem de programacao e armazenadas em memoria in-
terna disponıvel. As linguagens mais comuns sao de alto nıvel, derivadas de C ANSI,
mas ainda e possıvel encontrar microcontroladores programaveis em linguagens de
baixo nıvel. Algumas plataformas, como por exemplo o Arduino [18], desenvolvem
seu software para a gravacao do codigo, construindo funcoes e rotinas que possam
simplificar o desenvolvimento do projeto.
12
2.2.3.2 Plataformas
Da mesma maneira que o FPGA, visando facilitar a elaboracao de projetos, grandes
empresas produzem kits de desenvolvimento modulares (figura 2.6), compostos por
uma placa de circuito impresso com o microcontrolador como componente principal,
pinos de facil acesso aos terminais do microcontrolador, componentes de interacao
com o usuario como conectores, botoes, LEDs sinalizadores e qualquer outro meca-
nismo que torne mais simples, rapida e eficiente sua utilizacao. A maioria dos kits
possui ainda modulos perifericos, expandindo a capacidade da placa principal com
conectores especıficos, interfaces de comunicacao, paineis LCD, tornando o projeto
mais voltado para um objetivo especıfico.
(a) (b)
Figura 2.6: ArduinoPro [19] (a) e Wireless SD Shield, Periferico para Utilizacao deTecnologia sem Fio e Cartao de Memoria [20] (b).
A primeira plataforma estudada foi o Arduino [18], que utiliza microcontrolado-
res ATmega, da Atmel [21], devido ao uso previo do autor durante a graduacao e
a proposta de facilidade de implementacao. Para a comparacao inicial entre tecno-
logias, as caracterısticas consideradas foram do Arduino Pro (figura 2.6), descrito
como “destinado a instalacao semi-permanente em objetos ou exposicoes” [19], en-
fatizando sua aplicacao em sistemas ativos por longa duracao.
13
Caracterısticas: Arduino Pro [19]
• Microcontrolador ATmega168 ou ATmega328;
• Tensao de Operacao: 3.3 V ou 5 V;
• Tensao de Alimentacao: 3.35-12 V ou 5-12 V;
• I/O Digital: 14 (sendo 6 saıdas do PWM);
• Entradas Analogicas: 6;
• Corrente DC: 40 mA;
• Memoria:
– Flash: 16 kB (ATmega168) ou 32 kB (ATmega328), sendo 2 kB usado
para inicializacao (bootloader);
– SRAM: 1 kB (ATmega168) ou 2 kB (ATmega328);
– EEPROM: 512 bytes (ATmega168) ou 1 kB (ATmega328);
• Velocidade do Clock: 8 MHz (Versao 3.3 V) ou 16 MHz (Versao 5 V).
2.2.4 Escolha da Tecnologia
Analisando as tres opcoes e seus exemplos, considerados para uma visao geral de
cada tecnologia, conclui-se que todas podem ser empregadas na construcao de um
sistema de aquisicao de dados que preencha a maioria dos requisitos citados na
secao 2.1.
A tabela 2.2 apresenta um resumo das particularidades.
14
Tabela 2.2: Comparativo entre as Tecnologias
FPGA SBC Microcontrolador
Programacao Descricao de Sistema Operacional Alto Nıvel
hardware (Linux) (C/C++)
Plataformas de Kit Fixo Kit
desenvolvimento Modular
Limitacao Numero de Configuracao Chip principal
portas logicas preestabelecida
Vantagem Personalizacao Estrutura completa Facilidade
Desvantagem Programacao (HDL) Consumo Simplicidade
Analisando os requisitos definidos e as consideracoes no inıcio da secao 2.2,
constatou-se o seguinte:
Especificacoes nao atendidas:
Consumo medio: Pelas especificacoes nominais, o SBC Raspberry Pi apresenta
consumo nominal mınimo (140 mA) cerca de tres vezes maior que o Arduino-
Pro, com 40 mA, possuindo um excedente de 30 mA da corrente requisitada
para o projeto. O Raspberry Pi foi o SBC encontrado com menor
consumo nominal, enquanto que para o microcontrolador, foram en-
contrados, posteriormente, componentes com consumo nominal na
ordem de 2.5 mA, como e o caso do MSP430, da Texas Instruments
[22];
Facilidade e praticidade de implementacao: Destacam-se o microcontrolador
e o SBC, com programacao mais acessıvel, ja que as linguagens de alto nıvel
sao mais exploradas e utilizadas pelo desenvolvedor e os possıveis usuarios
futuros do modulo de aquisicao. Exclui-se entao o FPGA, ja que a HDL
exige um amplo aprendizado inicial e possui logica diferente das linguagens de
programacao de alto nıvel, utilizadas no microcontrolador e SBC;
15
Componentes: Com possibilidade de desenvolvimento modular e especıfico, o FPGA
e o microcontrolador se mostram superiores ao SBC, que possui construcao
fixa, com partes excessivas para este projeto.
Assim, descartam-se o SBC pelo consumo e o FPGA pela dificuldade de con-
figuracao. Apesar destes possuirem capacidade de processamento, quantidade de
memoria e recursos adicionais superiores, o baixo consumo do microcontrolador,
atendendo as necessidades de gerenciamento das medicoes feitas, se sobressai como
solucao para o desenvolvimento do modulo de aquisicao e armazenamento de dados.
Escolhe-se entao o microcontrolador como unidade principal do sis-
tema de aquisicao de dados.
Cabe ressaltar ainda a existencia de diversos fabricantes consagrados, inumeros
kits de desenvolvimento, dos mesmos grandes fabricantes ou de producao indepen-
dente, uma forte comunidade presente na Internet com duvidas, solucoes, discussoes,
sistemas semelhantes e sugestoes de decisoes. Considera-se tambem viavel a evolucao
deste trabalho em um futuro produto final, ja que a partir do kit de desenvolvi-
mento, o circuito pode ser extraıdo e otimizado, visando consumo ainda menor,
area diminuıda e expansao do projeto.
16
2.3 Unidade Principal do Modulo
Tao grande quanto o universo de tecnologias de processamento digital visto na secao
2.2 e o numero de microcontroladores no mercado [23], cada um possuindo ainda
diversos modelos com caracterısticas particulares.
Indicacoes de professores e pesquisadores da UFRJ, pesquisas na Internet e o
conhecimento adquirido ao longo do curso de graduacao trouxeram nomes dos fa-
bricantes conhecidos e os chips mais utilizados. Novamente, o objetivo desta secao
e apresentar as principais caracterısticas que apontaram o modulo escolhido para o
anteprojeto apresentado no capıtulo 3 e prototipado no capıtulo 4.
Os modulos baseados em microcontroladores cotados para o projeto foram o
MicroBolt, da empresa Micromint [24], o Arduino [18], plataforma baseada em con-
troladores da Atmel Corporation [21], o PIC, da Microchip Technology [25] e o
LaunchPad MSP430, da Texas Instruments [26], escolhido ao final da analise.
Para tornar a analise simples e objetiva, sera apresentado apenas a
motivacao para utilizar o modulo e a(s) razao(oes) de seu descarte como
opcao.
2.3.1 Micromint: MicroBolt
Motivacao: A primeira ideia para o modulo do microcontrolador foi checar o
fabricante Micromint. O recente projeto SisCAT [10], do LIOc, e desenvolvido no
SBC Electrum 100 (figura 2.3), da Micromint, e a possibilidade de permanecer com
plataformas de mesma origem e uma pratica comum, pois o relacionamento com a
empresa para suporte e pesquisas e mantido.
Descarte: Baseado em um microcontrolador NXP LPC2106 ARM7, com consumo
nominal de 200 mW [24], o MicroBolt (figura 2.7) foi o modulo encontrado que mais
se aproximou do desejado. Apesar do bom trabalho previo com produtos desta
empresa, os seguintes fatores descartam a Micromint:
17
• Necessidade de uma solucao que atendesse melhor aos requisitos de consumo
de corrente;
• Ausencia de uma forte comunidade para auxılio na pesquisa e desenvolvimento;
• Inexistencia de perifericos modulares.
Figura 2.7: Micromint MicroBolt [24].
2.3.2 Arduino
Motivacao: A plataforma Arduino vem se popularizando nos ultimos anos. Com a
proposta de solucoes faceis e robustas, e amplamente utilizada em projetos academicos
de todo tipo [18].
Baseado em microcontroladores ATmega da Atmel, o modulo Arduino (figura 2.6)
possui diversas interfaces disponıveis, comunicacao via USB, modulos perifericos de
encaixe (chamados de Shields) e programacao simples atraves de interface propria,
baseada em linguagem C.
Descarte: Infelizmente, os controladores usados e as solucoes nao sao moldadas
visando baixo consumo e nao ha nenhuma solucao Arduino com consumo dentro do
requisitado por este projeto [27].
18
2.3.3 Microchip: PIC
Motivacao: Pioneiro no conceito de microcontroladores, o PIC vem se atualizando
e ainda e muito referenciado.
Descarte: Pelas limitacoes dos kits de desenvolvimento encontrados (figura 2.8),
necessitando de hardware adicional e poucas interfaces, com solucoes melhores ela-
boradas somente por terceiros, o tradicional PIC acaba se mostrando ultrapassado
quando avaliado pela facilidade de desenvolvimento e aprendizado inicial.
Figura 2.8: Microchip PICkit 3 [28].
2.3.4 Escolhido – Texas: MSP430 LaunchPad
A Texas Instruments, grande fabricante de circuitos integrados, traz ambientes de
desenvolvimento bastante didaticos e facilitados para a aplicacao de suas tecnologias.
Para microcontroladores, sao oferecidos atualmente sete kits de desenvolvimento,
denominados LaunchPads, com arquiteturas e focos variados [29].
O LaunchPad e uma plataforma baseada em Arduino, com entrada USB para
interface com computador, LEDs auxiliares, contatos (jumpers) com configuracoes
rapidas de hardware, botoes com exemplos de funcionamento e acesso aos pinos do
microcontrolador.
19
Para a adicao de componentes perifericos, os chamados BoosterPacks (semelhan-
tes aos Shields do Arduino) sao placas que se encaixam ao LaunchPad, contendo
componentes especıficos como cartoes de memoria, conectores, protoboards, entre
outros.
Com consumo nominal medio menor que 100 µA/MHz, ADC interno, software
proprio para programacao em alto nıvel, comunidade online e vasta documentacao
disponıvel [22], a Texas apresenta dois modulos de desenvolvimento com foco em
baixıssimo consumo, os LaunchPads MSP-EXP430G2 e MSP-EXP430F5529LP (fi-
gura 2.9), ambos baseados no microcontrolador MSP430.
(a) (b)
Figura 2.9: Launchpads da Texas Instruments [29]: MSP-EXP430G2 (a) e MSP-
EXP430F5529LP (b).
20
Tabela 2.3: Caracterısticas dos LaunchPads MSP430.
MSP-EXP430G2 MSP-EXP430F5529LP
Pinos de acesso 20 40
ADC 10 bits 12 bits
Frequencia de operacao 16 MHz 25 MHz
Memoria Flash 16 kB 128 kB
Memoria RAM 512 B 8 kB
Timers 2 (16 bits) 4 (16 bits)
Interfaces 1 I2C, 2 SPI, 1 UART 2 I2C, 4 SPI, 2 UART
Para uma experiencia ainda mais completa, ha o USB Experimenter’s Board
MSP-EXP430F5529 [30], um kit de desenvolvimento contendo o MSP430F5529
(o mesmo do LaunchPad da figura 2.9b) e diversos componentes adicionais inte-
grados em uma mesma placa, alem de oferecer acesso aos pinos do microcontrolador
(figura 2.10).
Figura 2.10: USB Experimenter’s Board MSP-EXP430F5529, da Texas Instru-
ments [30].
21
Caracterısticas: USB Experimenter’s Board MSP-EXP430F5529
• Microcontrolador MSP430F5529:
– Memoria:
∗ Flash: 128 kB;
∗ SRAM: 8 kB (10 kB desabilitando a USB);
– USB 2.0;
– Arquitetura: RISC 16 bits (ate 25 MHz);
– Timers: 3 tipo A, 1 tipo B (descricao detalhada no manual da serie
MSP430x5xx [31]);
– USCI: 2 UART/SPI/I2C;
– Conversor A/D: 12 bits, 16 canais;
– Comparador: 12 canais;
– I/O: 63;
• Desenvolvimento via USB;
• 5 touchpads capacitivos (funcao botao ou slider);
• Cartao microSD (1 GB incluso);
• Display LCD: 102x64, preto e branco;
• Botoes: 4 push buttons (2 configuraveis, 1 Reset, 1 USB Bootstrap – descricao
detalhada no manual da serie MSP430x5xx [31]);
• LEDs: 3 para uso geral, 5 nos touchpads capacitivos, 1 indicador de ali-
mentacao;
• Potenciometro (Thumb Wheel);
• Suporte a tecnologia RF da Texas;
22
• Tecnologia eX-FET para Spy-By-Wire (JTAG – 2 fios) para programacao e
debug ;
• Cabecalho JTAG completo (4 fios);
• Alimentacao: USB, JTAG, Baterias, Fonte Externa;
• Acesso aos pinos de I/O do F5529.
Com especificacoes melhores do que o MSP-EXP430G2 (tabela 2.3) e
a possibilidade de desenvolvimento do prototipo tanto com o LaunchPad,
quanto com a Experimenter’s Board, o MSP430F5529 foi escolhido para
a construcao do modulo de aquisicao de dados.
O emprego das principais capacidades e particularidades desse circuito serao
descritos ao longo do trabalho.
23
Capıtulo 3
Anteprojeto
O projeto completo de um sistema de aquisicao de dados com os restritos requisitos
apresentados e discutidos no capıtulo 2, partindo desde a escolha da tecnologia
ate a concepcao de um produto completo em placa propria, programacao total do
comportamento do modulo e todos os resultados necessarios para sua validacao foi
entendido como alem do escopo de um projeto de graduacao.
Decidiu-se, entao, limitar a parte prototipada, mostrando resultados iniciais e
apresentar o desenvolvimento teorico da solucao atraves de um estudo preliminar,
ou seja, um anteprojeto.
3.1 Consideracoes Iniciais
Para a realizacao de medidas debaixo d’agua, uma possıvel configuracao apresenta
uma boia com um conjunto de sensores em linha sob o nıvel do mar (figura 3.1).
Um exemplo da utilizacao desta configuracao esta presente no SisCAT [10], projeto
atual do LIOc.
24
Figura 3.1: Exemplo de Sistema de Medicao Subaquatica.
Uma cadeia subaquatica e entao formada pelos diversos sensores, de varios tipos
e ainda com singulares modos de operacao. Baseado nessa diversidade, optou-
se por apresentar um modulo versatil e de simples configuracao para a
aquisicao e armazenamento de dados.
3.1.1 Relacao Um-para-um
Conforme ilustrado na figura 3.2, optou-se por cada modulo ser responsavel por um
sensor, podendo ser diretamente acoplado a ele fısica e eletricamente, desde que nao
interfira nas medicoes. Por sua vez, o conjunto e preso a linha de fundeio, que liga
a cadeia a boia na superfıcie. Havendo necessidade de associacao dos modulos em
rede, um cabo paralelo a linha de fundeio faz essa conexao.
25
Figura 3.2: Conexao para o Modulo e o Sensor em uma Linha de Fundeio.
A escolha de um modulo para cada sensor estabelece compromissos a serem
considerados:
• Independencia:
– O mau funcionamento de um componente nao interfere na cadeia;
– Possibilidade de configuracoes sem boia, ja que todo o equipamento ne-
cessario estara acoplado ao sensor.
• Simplicidade:
– Sem rotinas concorrentes;
– Funcionamento dedicado;
– A proximidade entre o modulo e o sensor reduz a impedancia do cabo,
fonte comum de problemas [32].
26
• Contras:
– Com muitos modulos, o consumo e custo total aumentam;
– Subaproveitamento de componentes que possuem diversos canais (e.g ADC).
3.1.2 Comunicacao Serial
Quando dois circuitos digitais sao conectados, e necessario que a comunicacao entre
eles utilize o mesmo tipo de barramento, para que nao haja conflitos na transmissao
e recepcao dos dados. Atentando para o diagrama da figura 3.3, enquanto blocos
como Conversor A/D, Armazenamento e Rede, geralmente apresentam apenas um
tipo de saıda, voltada para o melhor desempenho do componente, e desejado que
um dispositivo central, como o microcontrolador, seja capaz de interpretar mais de
um padrao.
Para todos os microcontroladores estudados [19, 24–26], o emprego da comu-
nicacao serial e maior em comparacao a paralela, ja que utiliza menos pinos, o que
minimiza problemas por conexoes e espaco fısico.
No caso do MSP430, estao disponıveis as seguintes conexoes digitais [31]:
GPIO (General Purpose Input/Output): Sem uso direcionado, cada pino e
programavel (inclusive pode ser usado como UART, I2C ou SPI) e, geralmente,
utilizado de maneira mais simples, como Enable, Reset ou transmissao de
dados brutos;
UART (Universal Asynchronous Receiver/Transmitter): Constituıdo de dois
pinos, transmissor (Tx) e receptor (Rx), o sinal e transmitido de maneira
assıncrona. Apesar de antigo, e amplamente aplicado, devido a simplicidade e
compatibilidade com padroes RS-232, RS-485;
27
SPI (Serial Peripheral Interface): Tambem conhecido como SSI (Synchronous
Serial Interface), este barramento sıncrono estabelece obrigatoriamente a relacao
mestre/escravo, aonde o dispositivo mestre e responsavel pelo pulso de sincro-
nismo e por designar qual escravo recebera a mensagem, quando necessario.
Para isso, o barramento utiliza de 4 pinos:
• SCLK (Serial Clock);
• MOSI (Master Output, Slave Input);
• MISO (Master Input, Slave Output);
• SS (Slave Select — E especificado como CS no diagrama de pinagem do
MSP-EXP430F5529LP da figura 3.9).
I2C ou I2C(Inter-Integrated Circuit): E um barramento com apenas dois fios:
Serial Data Line (SDA), para transmissao e recepcao de dados, e Serial Clock
(SCL), enviado pelo dispositivo mestre, para o sincronismo. A descriminacao
dos escravos e feita por enderecos nas mensagens.
Alem dos barramentos de comunicacao digital, o MSP430 apresenta entradas
analogicas (Analog In), referentes aos canais de um conversor A/D interno ao chip.
3.2 Principais Componentes
A figura 3.3 mostra o diagrama de blocos da solucao proposta, aonde o
modulo e composto por um pre-amplificador, conversor A/D, controle,
armazenamento e rede.
28
Figura 3.3: Diagrama de Blocos Geral.
Definicao dos Componentes do Modulo:
• Sensor: Transforma a grandeza medida em tensao;
• Pre-Amplificador: Ajusta adequadamente a amplitude do sinal e remove
componentes ruidosas;
• Conversor A/D: Quantifica o sinal analogico, possibilitando armazenamento
em memoria digital;
• Controle: Recebe os dados devidamente tratados, controla os ciclos de medicoes,
envia e recebe dados da memoria externa ou pela rede, gerencia consumo;
• Armazenamento: Guarda os dados em memoria de maior capacidade;
• Rede: Possibilita a comunicacao com a terra ou entre modulos.
29
A ideia inicial era que, para cada aplicacao particular, bastaria que fossem modi-
ficados poucos parametros (e.g. ganho do amplificador, tempo de aquisicao, tempo
em espera) por software e o modulo estaria pronto para o especificado. No entanto,
ao longo deste estudo, foi constatado que as etapas de amplificacao e digitalizacao
sao completamente dependentes do comportamento do sensor (e.g. resposta em
frequencia, impedancia, fundo de escala, sensibilidade), impossibilitando a escolha
de apenas um amplificador e um conversor A/D para qualquer tipo de sensor sub-
marino.
Os topicos 3.2.2 e 3.2.3, referentes a essas etapas, apresentam algumas solucoes
possıveis, ressaltando pontos positivos e negativos, visando referenciar estudos fu-
turos mais detalhados e direcionar cada aplicacao. Desta forma, nao apenas serao
especificados componentes para um modulo versatil, como tambem serao apresen-
tadas, de forma introdutoria, abordagens para solucoes mais especıficas.
Para atender a maioria dos tipos de sensores, o Amplificador de Ins-
trumentacao AD8422 e o Conversor A/D de 12 bits, interno ao MSP430
modelo F5529, sao suficientes para o bom condicionamento de um sinal
bem comportado, ou seja, com frequencia baixa (menor que a maxima
do ADC e respeitando o Teorema da Amostragem de Nyquist [33]), am-
plitude maior que o ruıdo e baixa impedancia em relacao a de entrada
do amplificador.
Conforme orientacao, os circuitos integrados de amplificadores, potenciometros
e conversores indicados foram retirados do catalogo online da Analog Devices, onde
tambem se encontram os datasheets dos quais as especificacoes tecnicas apresentadas
foram obtidas [34].
30
3.2.1 Sensor
Considera-se, para este trabalho, que o sensor e um elemento generico fornecido.
Os sensores que utilizarao deste modulo sao, em geral, transdutores que obtem
as informacoes desejadas (e.g. temperatura, pressao) e as convertem para tensao
analogica.
A tensao produzida pela conversao e diferencial e de baixa amplitude (da or-
dem de milivolts), tornando a leitura direta analogica ou sua digitalizacao imediata
impraticavel, devido a ruıdos externos ou oriundos do proprio modulo.
Como caracterıstica adicional, solucoes comerciais de sensores que ja fornecem
saıda digital atraves de algum protocolo de dados serial (e.g. EIA RS-232) podem ser
diretamente interpretadas pelo MSP430. Neste caso, a ligacao e feita diretamente
do sensor ao microcontrolador, por entradas digitais disponıveis, para transmitir e
receber dados de acordo com o protocolo do sensor, nao necessitando dos estagios
de pre-amplificacao e conversao A/D.
3.2.2 Pre-Amplificador
Para ser enviado ao modulo de controle, o sinal analogico do sensor deve ser pre-
viamente tratado. Neste topico sao propostas as possibilidades para a amplificacao
do sinal analogico vindo do sensor. As solucoes sao baseadas na utilizacao
de Amplificadores Operacionais, pela construcao simples, alta confiabili-
dade, bom desempenho para a aplicacao e existencia de uma ampla gama
de circuitos integrados [35, 36].
3.2.2.1 Amplificador Previamente Fornecido pelo Fabricante do Sensor
Visando maior facilidade para o usuario, fabricantes podem disponibilizar o pre-
amplificador para seus sensores ou indicar como construı-lo em seus manuais. Esta
solucao ja condiciona o sinal para ser digitalizado pelo ADC e interpretado pelo
microcontrolador.
31
Observacao: PGA (Programmable-gain Amplifier) Interno ao MSP430
– Versoes do MSP430 com ADC Sigma-Delta de 24 bits contam tambem com
um estagio de amplificacao na entrada, constituıdo de um PGA. Como nao foram
encontradas informacoes detalhadas sobre esses, o uso do circuito nao pode ser
recomendado.
3.2.2.2 Amplificador de Instrumentacao - Amp. Int.
Com o sinal vindo do sensor de maneira diferencial, o amplificador subtrator e
indicado para utilizacao (figura 3.4).
Figura 3.4: Amplificador Subtrator [37].
A tensao de saıda e dada pela equacao 3.1 a seguir:
Vout = V2
((Rf +R1)Rg
(Rg +R2)R1
)− V1
(Rf
R1
)(3.1)
para Rf/R1 = Rg/R2, a equacao 3.1 fica:
Vout =Rf
R1
· (V2 − V1) (3.2)
32
Uma melhoria da configuracao diferencial muito popular e o chamado amplifi-
cador de instrumentacao, apresentado na figura 3.5. Com a possibilidade de ganho
elevado, ajustado por apenas um resistor (Rgain), o Amp. Int. possui grande re-
jeicao a tensoes de modo comum (CMRR), baixo ruıdo, baixo drift e impedancia
de entrada elevada. Com essas caracterısticas e a existencia de circuitos
integrados, o Amp. Int. se torna uma solucao superior ao subtrator, na
maioria dos casos.
Figura 3.5: Amplificador de Instrumentacao [37].
A equacao 3.3 apresenta a tensao de saıda do amplificador de instrumentacao:
Vout = (V2 − V1) ·(
1 +2R1
Rgain
)· R3
R2
(3.3)
Em CIs, os resistores R1, R2 e R3 sao fixos, deixando Rgain externo para controle
do ganho. Neste caso, uma boa conduta e usar um potenciometro digital, controlado
pelo MSP430. Na tabela 3.1 sao vistos CIs com opcoes de interface de comunicacao
serial (I2C ou SPI), 1024 posicoes e memoria nao volatil. Dessa forma, o ganho
do amplificador e configuravel por software e nao ha necessidade de mudancas no
circuito caso seja feita a troca do sensor.
33
Tabela 3.1: Potenciometros Digitais.
Part# #Canais Valor Nominal (kΩ) Interface
AD5270 1 20, 50, 100 SPI
AD5272 1 20, 50, 100 I2C
AD5175 1 10 I2C
AD5235 2 25, 250 SPI
Os CIs de amplificadores de instrumentacao que apresentaram boas
caracterısticas de alta impedancia de entrada, baixo consumo, ampla faixa
de frequencia, rail-to-rail e baixo ruıdo foram: AD627, AD8223, AD8422
e sua versao de melhor performance DC, AD8422BRZ.
Pode-se ainda considerar os Amplificadores de Instrumentacao de Ganho Pro-
gramavel (PGIA) AD625 e AD8557, com ganho configuravel diretamente por inter-
face digital propria.
Caracterısticas: AD627
• Consumo: 85 µA maximo;
• Alimentacao: +2.2 V a ±18 V ;
• Ganho (G): 5 a 1000;
• Saıda rail-to-rail;
• Performance DC:
– Acuracia do ganho: 0.03% (G=5)(AD627A);
– Drift do ganho: 10 ppm/C (G=5);
– Offset maximo na tensao de entrada: 125 µV (AD627B dual supply);
– Drift maximo do offset na tensao de entrada: 1 µV/C;
– Corrente maxima de polarizacao: 10 ηA;
• Ruıdo: 38 ηV/sqrtHz RTI a 1kHz (G=100);
34
• Especificacoes AC:
– CMRR: mınimo de 83 dB (G=5);
– Largura de banda: 80 kHz (G=5);
– Tempo de estabilizacao (settling time): 135 µs (G=5, degrau de 5 V).
3.2.2.3 Amplificador de Carga
Hidrofones podem possuir impedancia muito elevada (capacitiva, da ordem de mi-
crofarads), sendo percebida pelo amplificador como uma grande capacitancia com
pequena variacao de carga. Para que essa variacao apresente-se como tensao na
saıda, o amplificador de carga e um circuito indicado [38, 39].
Figura 3.6: Circuito Basico do Amplificador de Carga.
Neste caso, a tensao na saıda sera:
∆Vout =−∆Q
C2
=−VC ·∆C
C2
(3.4)
e as frequencias de corte inferior (f1) e superior (f2):
f1 =1
2π ·R1 · C1
(3.5)
f2 =1
2π ·R2 · C2
(3.6)
35
Como cada aplicacao demanda componentes diferentes, nao ha CIs comerciais
para amplificadores de carga completos. Os amplificadores operacionais su-
geridos para esta aplicacao utilizam transistores FET, para aumentar a
impedancia de entrada. Sao exemplos o AD745, sua versao mais atual
ADA4637-1 e AD8067.
Caracterısticas: ADA4637-1
• Alimentacao: ±5 V a ±15 V ;
• Offset de Tensao: 200 µV maximo;
• Offset drift : 1 µV/C;
• Corrente de polarizacao na entrada: 5 ρA maximo;
• Produto Ganho-Banda (GBW): 79 MHz;
• Ruıdo de tensao na entrada: 6.1 ηV/√Hz a 1 kHz;
• Slew rate: 170 V/ηs;
• Ganho em malha aberta: 120 dB;
• CMRR: 116 dB.
3.2.2.4 Amplificador Logarıtmico
Sinais de temperatura variam pouco ao longo do tempo, podendo ser considerados
com pequena faixa de frequencia ou ate como nıvel DC, para a maioria dos tipos de
medicao. Em casos mais complexos, como por exemplo, a resposta de um hidrofone
a passagem de uma embarcacao com motor em funcionamento, o sensor apresentara
na saıda um sinal com diversas componentes em frequencia e variadas amplitudes.
36
A percepcao e distincao das componentes de menor amplitude sao tratadas neste
trabalho de duas formas:
1. Utilizando um conversor A/D de alta resolucao, mostrado posteriormente no
topico 3.2.3;
2. Amplificando a parcela de menor amplitude com ganho maior e a de maior am-
plitude com ganho menor, considerando tambem o limite superior de excursao
do sinal de saıda.
Para o segundo caso, deseja-se um amplificador cujo ganho seja inversamente
proporcional a amplitude do sinal de entrada, de maneira que o sinal resultante pos-
sua toda a informacao, porem com tensoes na mesma ordem de grandeza. O circuito
que pode produzir este comportamento e o Amplificador Logarıtmico, representado
na figura 3.7.
Figura 3.7: Circuito Basico do Amplificador Logarıtmico.
Explorando o comportamento exponencial da corrente de coletor do TJB [40]:
IC = ISO · (eVBE/VT − 1) ≈ ISO · eVBE/VT (3.7)
VBE = VT · ln(ICISO
)(3.8)
no circuito da figura 3.7:
VBE = −Vout (3.9)
IC =VinR
(3.10)
37
a tensao de saıda do amplificador logarıtmico e dada por:
Vout = −VT ln
(Vin
ISO ·R
)(3.11)
onde:
• VT : Tensao termica do transistor;
• ISO: Corrente de saturacao da juncao base-emissor do transistor;
Com a saıda sendo uma funcao nao linear da entrada, o sinal fica comprimido
pelo fator logarıtmico. Reescrevendo a tensao de saıda em termos genericos:
Vy =−VT
logn(e)(3.12)
Vx = ISOR (3.13)
Vout = Vy logn
(VinVx
)(3.14)
e pela figura 3.8, nota-se a compressao do sinal atraves do comportamento linear do
grafico com o eixo x em escala logarıtmica.
Figura 3.8: Grafico Exemplo de uma Funcao Linearizada por Logaritmo.
38
Desta forma, arbitrando, por exemplo, Vx = Vy = 1, n=10 e Vin um sinal entre
1 µV e 100 mV, a amplitude do sinal de saıda sera:
Vout(min) = log(1× 10−6) = −6 V (3.15)
Vout(max) = log(1× 10−3) = −3 V (3.16)
mostrando que o sinal de 1 µV a 100 mV pode ser amplificado e comprimido em
uma faixa de -6 V a -3 V.
Dadas as dificuldades do emprego deste circuito (e.g. valores negativos ou in-
finitos, oriundos da funcao logaritmo) e considerando tambem que, para o caso do
transistor, VT e IOS sao muito dependentes da temperatura, os integrados de um
amplificador logarıtmico possuem circuitos de ajuste e compensacao (datasheet do
AD8310 [34]).
Esta solucao e indicada apenas em aplicacoes especıficas cuja precisao sera sobre-
posta a versatilidade do projeto. Alem disso, o sinal de saıda estara com a informacao
desejada, porem codificada pelo fator logarıtmico, necessitando decodificacao, que
se traduz em pos-processamento.
A complexidade desta solucao gera maior consumo de corrente, con-
sideracao fundamental para este projeto.
CIs que podem ser considerados para estudo futuro sao: AD8310,
AD8307, AD640 e AD641.
Caracterısticas: AD8310
• Alimentacao: 2.7 V a 5 V;
• Consumo de corrente: 8 mA tıpico;
• Faixa de operacao: DC a 440 MHz;
• Tempo de subida: < 15 ηs;
39
• Capacidade de corrente: 25 mA;
• Faixa dinamica: -91 dBV a +4 dBV (95 dB);
• Linearidade: ±0.4 dB;
• Inclinacao (Slope): +24 mV/dB;
• Tempo de inicializacao: 100 ηs;
• Corrente inativa: 1 mA.
3.2.3 Conversor Analogico/Digital
O microcontrolador e um circuito digital, que por sua vez guardara dados em uma
unidade armazenamento. Ate agora, o sinal vindo do sensor foi amplificado, mas
ainda e analogico e, portanto, nao pode ser devidamente armazenado em uma
memoria. O conversor analogico/digital tornara a medida feita pelo sensor inter-
pretavel para o microcontrolador, possibilitando seu processamento e a entrega dos
dados adquiridos ao usuario.
Alguns microcontroladores atuais possuem ADC integrado, facilitando sua uti-
lizacao e reduzindo ruıdos provenientes da interligacao de componentes, fonte de
problemas para sinais de baixa amplitude. Para aplicacoes mais especıficas, porem,
pode ser necessario o ADC externo ao microcontrolador, exigindo entao cuidados
especiais, relacionados principalmente a ruıdos.
3.2.3.1 ADC Interno ao Modulo de Controle
O microcontrolador MSP430 possui conversor A/D interno. Nos mais de quatrocen-
tos tipos de chips MSP430 sao encontradas os seguintes tipos de ADC: Conversores
de aproximacoes sucessivas (SAR) de 10 e 12 bits e do tipo Sigma-Delta (Σ-∆) de
16 e 24 bits [22]. A tabela 3.2 mostra a quantidade de nıveis discretos e o valor de
tensao acrescido a cada nıvel destes ADCs, considerando fundo de escala de 3.3V.
40
Tabela 3.2: Resolucao dos ADCs.Bits Nıveis Discretos (ND) ∆V (3.3V/(ND-1)) %FS
10 1024 3.23 mV 0,09812 4096 805.86 µV 0,02416 65536 50.35 µV 0,001524 16777216 196.70 ηV 0,000006
Para a maioria das aplicacoes, o conversor de 12 bits presente no
MSP430-EXPF5529LP do prototipo e suficiente. A economia de um CI
no modulo gera menor consumo e exclui eventuais problemas de confi-
guracao, intefaceamento e conexoes fısicas.
ADCs de maior capacidade (16 bits ou mais) geram um aumento consideravel
do consumo do modulo e necessitam de maiores cuidados relacionados a ruıdos,
explicados no topico 3.4.2.
3.2.3.2 ADC Externo ao Modulo de Controle
O uso de um ADC externo tem como principal objetivo evitar a troca do chip
microcontrolador e atender especificacoes nao executaveis pelo ADC interno.
O maior problema encontrado no estudo dos ADCs externos foi atender aos
requisitos do sistema, que serao analisados a seguir.
Solucoes de maior precisao, mantendo o baixo consumo, acabam nao
sendo adequadas para alta velocidade, como e o caso do AD7789, um ADC
Sigma-Delta de 24 bits, apresentando frequencia do sinal de saıda de ate
16.6 Hz. Por outro lado, o AD1871, tambem Σ-∆ de 24 bits, utilizado
para audio, opera a 96 kHz, mas possui consumo nominal de 40 mA.
Outros integrados de conversores avaliados apresentam uma estrutura tao
complexa e consumo tao proximo ao do MSP430 que tornam a intencao
inicial, de nao trocar o controlador, incoerente.
Os ADCs de 24 bits avaliados durante a pesquisa so garantem precisao
em frequencia baixa ou com consumo muito alem do desejado. Em altas
frequencias (na ordem de quilohertz), os ADCs de 24 bits perdem 7 a 8
bits de precisao.
41
Considerando o compromisso entre numero de bits, frequencia do sinal
e consumo de corrente, o AD7988-1 e apresentado como boa opcao.
Caracterısticas: AD7988-1
• Alimentacao: 2.5 V;
• Consumo: 700 µW a 100 kSPS;
• Resolucao: 16 bits;
• Nao Linearidade: ±0.6 LSB;
• SINAD: 91.5 dB a 10 kHz;
• THD: -114 dB a 10 kHz;
• Interface de Saıda SPI.
Gerado entao o sinal digital, a conexao do ADC externo com o MSP430 e feita
atraves de UART ou SPI.
3.2.4 Controle
Como visto no capıtulo 2, o microcontrolador responsavel pelo gerenciamento das
atividades do sensor foi o MSP430. Com o objetivo de aproximacao ini-
cial, familiarizacao com a tecnologia e desenvolvimento do prototipo, o
MSP430F5529, presente no LaunchPad MSP-EXP430F5529LP e na USB
Experimenter’s Board MSP-EXPF5529, foi o microcontrolador escolhido
para o estudo.
Ambas as placas sao kits de desenvolvimento que possibilitam a facil interacao e
acesso do usuario aos pinos do microcontrolador, possuindo tambem uma interface
USB montada para programacao e alimentacao.
Como vantagem, a Experimenter’s Board ja possui componentes adicionais (cartao
microSD, touchpads, display LCD, potenciometro) integrados a placa de circuito im-
presso.
42
Figura 3.9: Pinos Acessıveis do Microcontrolador no LaunchPad [41].
43
Observa-se a possibilidade futura de utilizar outro MSP430, em especial para
beneficiar-se de componentes internos mais poderosos, como o ADC Σ-∆ de 24 bits,
necessario para obtencao de dados com maior qualidade de alguns sensores com
espectro de frequencia mais amplo. Como a estrutura, programacao e as interfaces
principais sao iguais para a maioria dos MSP430, o foco no modelo F5529 nao
invalida este trabalho como referencia para a montagem de um modulo baseado em
outro MSP430 ou microcontroladores de estrutura semelhante.
O microcontrolador possui diversos pinos de acesso (figura 3.9) para a interligacao
com os outros componentes do modulo. As conexoes externas podem ser feitas de
maneira digital, atraves de GPIO, UART, SPI, I2C ou analogica, atraves de Analog
Inputs.
Observacao: A Experimenter’s Board tambem permite acesso aos pinos do MCU.
As rotinas, configuracoes de porta e acesso as funcoes do MSP430 sao controladas
via programacao, descrita a seguir.
3.2.4.1 Programacao
Para programar o comportamento do MCU e a interacao com seus perifericos, o
microcontrolador possui uma interface USB (presente fisicamente nas placas de de-
senvolvimento) para comunicacao com um PC.
O maior cuidado relacionado a programacao do modulo reside no pequeno espaco
(16 kB - 128 kB) para o programa. Falhas ou falta de cuidado na programacao, que
apresentem vazamento ou alocacao de grandes quantidades de memoria, acabariam
por impossibilitar o funcionamento do dispositivo por longos perıodos.
As rotinas sao entao desenvolvidas em codigo C/C++ e compiladas para o
MSP430 [22]. Com a popularidade do MSP430, existem IDEs desenvolvidos, nao
so pela Texas, que ajudam no desenvolvimento de uma solucao completa, com o
basico da programacao ate sugestoes de rotinas para melhor uso. As plataformas
mais utilizadas sao:
44
Code Composer Studio (CCS): Principal IDE da Texas, baseada em Eclipse
[42]. Reune vasta documentacao e codigos para diversos microcontroladores
da empresa. Possui versao de avaliacao (90 dias), gratuita limitada ou paga.
Recomendada para grandes projetos, pela organizacao e acessibilidade;
Energia: Outra solucao atual da Texas, baseada nas plataformas Arduino [18] e
Wiring [43]. Com foco no desenvolvimento de prototipos mais simples, pos-
sui diversos exemplos de configuracoes basicas e amostras de funcoes carac-
terısticas do modulo;
CrossWorks: Desenvolvido pela empresa Rowley, segue a mesma linha do CCS,
contendo mais recursos voltados para gerenciamento de projetos. Tambem e
uma plataforma paga;
MSPGCC: Voltado para desenvolvimento em Linux, nao pode ser considerado
uma IDE, sendo um conjunto de componentes (e.g. compilador, debugger)
acionados por linha de comando;
Para o desenvolvimento do prototipo, o software CCS apresenta uma
interface mais completa. A tomada de decisao e as funcionalidades serao
apresentadas no capıtulo 4.
Figura 3.10: Logotipo da Plataforma Code Composer Studio [17].
45
3.2.5 Armazenamento de Dados
Os 128 kB de memoria Flash presentes no MSP-EXP430F5529LP, para armazenar
a rotina de controle e dados obtidos de um sensor por longos perıodos de tempo,
limitaria bastante a programacao e o possıvel pos-processamento dos dados. Assim,
o uso de um cartao microSD como unidade externa de armazenamento e a solucao
adequada.
Para o LaunchPad, ha disponıvel um BoosterPack (figura 3.11) para esta funcao,
onde a conexao com o microcontrolador e feita atraves de SPI. Ja na Experimenter’s
Board, o microSD faz parte da placa (figura 3.12).
Em uma solucao dedicada, nao ha cuidados especıficos em adicionar um slot para
o cartao na mesma placa que o MCU.
Figura 3.11: BoosterPack para Utilizacao de Cartao MicroSD [44].
46
Figura 3.12: Cartao microSD e Compartimento na USB Experimenter’s Board MSP-
EXP430F5529 [17].
Como o tipo de memoria (Flash) e o mesmo para o armazenamento externo
e interno, a melhor opcao e colocar os dados vindos de medicoes diretamente no
cartao e deixar o espaco no microcontrolador somente para sua rotina de execucao,
instrucoes e dados fixos ou pouco alterados. Isso evita contato do usuario final do
modulo com dados de servico e proporciona melhor organizacao do conteudo.
3.2.6 Rede
Uma vez que o modulo esteja embaixo d’agua, nao e interessante retira-lo para
a obtencao de uma pequena quantidade de dados ou alteracao de parametros de
medicao, como por exemplo o sincronismo do relogio. Para isso, cada modulo da
cadeia de sensores deve ser ligado a rede, como escravo, havendo tambem um mestre,
que estara apto a realizar essas operacoes sem remover os sensores do ambiente e
fornecer o sinal de sincronismo.
47
Opcoes para uma rede serial sao via barramento I2C ou configuracao de UARTs
para recepcao e transmissao, adotando um protocolo adequado para este tipo de
rede, como o RS-485.
A configuracao de um dispositivo mestre para gerenciamento da rede esta fora
do escopo do projeto, limitando este topico a relatar a possibilidade do modulo ser
integrante da rede, que se traduz na capacidade do MSP430 em se comunicar com
outro dispositivo, totalmente viavel pela presenca do barramento I2C e de UART,
configuraveis por software.
3.3 Sugestao de Implementacao
Concluindo a escolha dos componentes e das interfaces, foi apresentado um conjunto
de possibilidades para o modulo de aquisicao. Como sugestao para uma solucao
fechada de um modulo versatil, as escolhas indicadas (figura 3.13) para aquisicao de
um sensor generico foram:
• Amplificador de instrumentacao AD627 conectado a entrada Analog In do
microcontrolador;
• Potenciometro digital AD5270, controlado pelo barramento SPI, para mu-
danca no ganho do amplificador;
• Microcontrolador MSP430 F5529;
• Conversor A/D de 12 bits, interno ao MCU;
• Rede configurada por software utilizando o barramento I2C;
• Armazenamento de dados em cartao microSD, via SPI.
Considerando a tensao de alimentacao de +3.3 Vcc, o AD627 podera condicionar
o sinal vindo de um sensor com 3.3 mV (G = 1000) ate 660 mV (G = 5) de saıda.
Esta margem de amplitude abrange uma grande gama de sensores submarinos de
temperatura e pressao hidrostatica.
48
Figura 3.13: Diagrama de Blocos da Sugestao de Implementacao do Modulo de
Aquisicao e Armazenamento de Dados.
3.4 Cuidados Adicionais
3.4.1 Alimentacao
O MSP430 pode ser alimentado por tensoes de 1.8 V a 3.6 V, ou via USB (5 V),
reduzida para 3.3 V por um conversor DC-DC interno, no caso dos kits de desen-
volvimento [41].
Considerando que alguns CIs de amplificadores e conversores A/D trabalham
com tensao mınima de 5V, a alimentacao do modulo deve ser escolhida de ma-
neira a atender todos os integrados, sem que haja necessidade de duas fontes de
alimentacao ou componentes trabalhando fora da faixa especificada, o que leva-
ria a mau funcionamento e problemas posteriores. Alguns perifericos consomem
49
tambem uma corrente consideravel em modo de espera, o que diminui a autonomia
do modulo.
Para evitar esta condicao, o circuito periferico (e.g. amplificador) pode ser ali-
mentado por um pino GPIO, ao inves de diretamente pela bateria. Desta forma, o
controle sobre o pino ativaria o periferico somente quando desejado.
Como sugestao de alimentacao para o LaunchPad, ha um BoosterPack produzido
pela Texas Instruments que utiliza uma bateria recarregavel de 3.7 V, 1200 mAh,
LiPo (Lithium Ion Polymer), apresentado na figura 3.14.
Figura 3.14: FuelTank, o BoosterPack para Alimentacao do LaunchPad.
Para estimar o tempo de duracao desta bateria em funcionamento e designa-la
como adequada ao projeto, considera-se o consumo nominal do microcontrolador
em standby (Istandby) de 500 ηA e em modo ativo de 100 µA/MHz [22], operando a
25 MHz (frequencia maxima do MSP-EXP430F5529LP). O consumo de corrente do
MCU, em modo ativo, sera:
IMCUativo = 100 µA/MHz · 25MHz = 2.5 mA (3.17)
Dos datasheets, obtem-se que o AD627 tem o consumo maximo de corrente de
85 µA e o potenciometro AD5270 consome 1 µA. Considerando que os perifericos
sao desligados quando o modulo nao esta medindo, o consumo em standby do modulo
sera o mesmo do MCU.
50
Desprezando o consumo de corrente da rede e considerando que a gravacao
em cartao ja esteja incluıda no funcionamento do microcontrolador, o consumo do
modulo ativo sera:
Iativo = 2.5 mA+ 85 µA+ 1 µA = 2.586 mA (3.18)
Para uma medicao de 10 minutos (16h) a cada hora do dia, o consumo medio
sera:
Imedio =Iativo + 5 · Istandby
6(3.19)
Imedio =2.5705× 10−3
6(3.20)
Imedio = 428 µA (3.21)
assim, o tempo estimado de duracao da bateria sera:
tbateria =1200 mAh
428 µA= 2804 h (3.22)
tbateria =2804 h
24 h= 117 dias (3.23)
logo, com autonomia de aproximadamente 4 meses, pode-se considerar esta bateria
como adequada ao projeto.
Outra boa opcao para a alimentacao do modulo e a bateria de Li-ion (Lithium-
Ion), muito comum em aparelhos celulares e dispositivos portateis, podendo chegar
a 3000mAh, dando maior autonomia ao modulo. Optando por uma solucao mais
simples, a Experimenter’s Board usa duas pilhas AA em serie, de 1.5 V cada.
3.4.2 Ruıdo
E sabido que circuitos eletronicos reais sempre apresentam componentes ruidosas. A
partir do conteudo encontrado em Noise Reduction Techniques in Electronic Systems
e Notas de Aula de Instrumentacao e Tecnicas de Medida [32, 36], pode-se dividir
o ruıdo em tres tipos basicos:
51
1. Gerado pelo proprio dispositivo;
2. Advindo do sinal de entrada;
3. Externo, que e propagado para dentro do circuito.
O estudo de ruıdos em circuitos hıbridos (com componentes analogicos e digitais)
demanda atencao a medida que o projeto exige precisao. A abordagem e feita de
maneira preventiva, adotando cuidados na confeccao e elaboracao da placa.
No caso do uso direto do LaunchPad, a simples insercao de um BoosterPack ja
transmite ruıdos oriundos do contato sem solda feito pelas placas. Assim, para a
utilizacao de um ADC de 24 bits, por exemplo, e necessario que todo o modulo esteja
disposto em uma unica placa, projetada minimizando efeitos ruidosos, com cuidados
como: plano de terra, separacao fısica da parte analogica da digital, alimentacao
regulada e encapsulamento especıfico.
Para este trabalho, o estudo do ruıdo associado ao sinal, desde sua geracao no
sensor ate o recebimento dos bits pelo ADC, possui pontos crıticos na entrada do
pre-amplificador, onde o sinal e ainda de amplitude muito baixa e no conversor A/D,
onde o ruıdo gerado pela transicao rapida dos bits em um sinal digital de um circuito
vizinho (e.g. microcontrolador) pode alterar os bits menos significativos do ADC,
caso a precisao do mesmo seja muito alta (16-24 bits).
Para minimizar os efeitos no sinal de entrada, o amplificador escolhido deve
possuir CMRR alto e introduzir ruıdo de ordem menor que a amplitude mınima do
sinal, sendo descartado na quantizacao feita pelo ADC.
Em relacao a insercao de um ADC de 16-24 bits, indica-se, adicionalmente, que
a alimentacao do ADC deve ser maior, ja que a divisao de uma tensao de apenas
3.3V em 24 bits significa uma variacao de 196.70ηV no LSB, amplitude que pode
ser facilmente sobreposta por um ruıdo.
52
3.4.3 Protecao Mecanica
Para o modulo ser submetido a alta profundidade, a protecao adequada a pressao
hidrostatica, possıveis choques mecanicos e entrada de agua deve ser designada.
Para isso, a norma ABNT NBR IEC 60529 [45] estabelece os “graus de protecao
para involucros de equipamentos eletricos (codigo IP)”.
Para atender as especificacoes do modulo, a caixa que ira abriga-lo deve entao
possuir codigo de protecao IP-68 (figura 3.15), certificando total protecao contra
poeira e imersao contınua em agua (devendo ser especificada a profundidade de
acordo com o desejado).
Figura 3.15: Caixa com Protecao IP-68 da Empresa CFW Eletrica [46].
As conexoes externas devem fazer uso de prensa-cabos, tambem especificados
como IP-68 (figura 3.16).
Figura 3.16: Prensa cabo IP-68 da Empresa Cemar Legrand [47].
53
Capıtulo 4
Prototipo
Consolidado o anteprojeto do modulo de aquisicao, objetiva-se criar um prototipo
para que os problemas e dificuldades praticas do projeto possam ser vistas e anali-
sadas.
Como o objetivo principal do trabalho e apresentar um sistema capaz de obter
dados de um amplo conjunto de sensores, o foco deste capıtulo e o estudo do MSP430
por meio da Experimenter’s Board e o desenvolvimento do codigo em linguagem C
a ser gravado no microcontrolador.
Para simplificar a explicao do projeto, a placa USB Experimenter’s
Board MSP-EXP430F5529 podera ser referenciada apenas por EB.
4.1 USB Experimenter’s Board
MSP-EXP430F5529 (EB) [30]
O primeiro contato pratico com o MSP430 e feito por meio dos kits de desenvol-
vimento LaunchPad e Experimenter’s Board, que possuem o mesmo controlador:
MSP430F5529. Pelo acesso aos pinos do MCU, as placas trazem ao usuario grande
simplicidade na montagem do sensor e oferecem as primeiras impressoes do pro-
cesso de configuracao de um microcontrolador de uso especıfico (baixo consumo) e
profissional como o MSP430.
54
Inicialmente, optou-se por utilizar o LaunchPad, com seu tamanho reduzido e a
possibilidade de componentes perifericos especıficos em BoosterPacks. Porem, ape-
sar da EB possuir componentes que nao serao utilizados em um sistema de aquisicao
de dados embarcado (e.g. touchpads), complicacoes burocraticas na importacao dos
componentes e a dificuldade em encontrar um fornecedor confiavel para o Booster-
Pack do cartao micro SD impossibilitaram sua aquisicao imediata. Sendo assim,
optou-se pela praticidade e reducao da compra a apenas um componente, a Experi-
menter’s Board, disponıvel para pronta entrega no proprio site do fabricante [30].
A placa utilizada no prototipo, apresentada na figura 4.1, vem acompanhada de
dois cabos USB para a conexao com o computador e insercao do codigo, um manual
para inıcio rapido, um cartao microSD de 1 GB e um compartimento para duas
pilhas AA. Por ja possuir a unidade para cartao microSD integrada e o conector
para alimentacao externa, nao houve necessidade de hardware adicional.
Figura 4.1: Experimenter’s Board MSP-EXP430F5529 Utilizada para o Prototipo
em Laboratorio [17].
55
4.1.1 Componentes da Placa
A figura 4.2 ilustra os principais blocos da EB, descritos em seguida.
Figura 4.2: Principais Componentes da EB [30].
eZ430-FET Emulator: Interface USB para a gravacao do codigo no microcontro-
lador;
PWR SW: Chave seletora de Alimentacao (USB superior direita, USB da interface
eZ-430 FET inferior esquerda ou JTAG/alimentacao externa);
Ext Pwr: Conectores para alimentacao externa;
RST: Botao de Reset da placa;
Buttons: Dois botoes programaveis;
microSD: Entrada para cartao;
56
RF EVMs: Conectores para inclusao de modulos RF;
102x64 Dot Matrix LCD: Display para interacao com o usuario;
LEDs: 3 LEDs (vermelho, verde e amarelo) programaveis;
Cap-Touch Slider / Buttons: Touchpad capacitivo com LEDs;
eZ-RF / PIN Acc: Acesso ao modulo RF (se incluso) e aos pinos do MSP430F5529;
PIN Access: Acesso aos pinos do MSP430F5529;
F5529: Microcontrolador MSP430F5529;
Accelerometer: Sensor de aceleracao;
BSL: Bootstrap Loader para a inicializacao do sistema, caso seja desejado que o
programa inicialize pelo botao;
5529 USB: Conector USB acessıvel ao microcontrolador, para comunicacao;
5529 JTAG: Interface mais antiga, porem ainda utilizada, para gravacao do codigo
no microcontrolador;
Thumb Wheel: Potenciometro ligado ao microcontrolador.
Para o prototipo, sao utilizados os botoes e o potenciometro na configuracao de
um relogio apresentado no LCD, a alimentacao, feita por duas pilhas AA alcalinas
e o sensor, conectado ao pino 7.0, localizado no canto inferior direito da placa.
57
4.1.2 Operacao do Modulo
O sistema de aquisicao de dados ira operar da seguinte forma:
1. O modulo e iniciado assim que e alimentado;
2. O LCD apresenta um relogio com data e hora a serem configurados (figura
4.3):
• O potenciometro altera o valor do campo selecionado;
• O botao S1 confirma o valor;
3. Preenchidos todos os campos, o display e apagado e a medicao e iniciada;
4. Quando desejado, o botao S2 interrompe a medicao e o modulo retorna para
a tela do relogio (item 2).
Figura 4.3: Tela Inicial do Modulo [17].
Cada ciclo de medicao gera um arquivo no cartao de memoria com o nome
“DADOSx”, onde x e incrementado a cada nova configuracao do relogio (DADOS,
DADOS1, DADOS2, ...). Dentro deste arquivo, estao armazenados data (mm/dd/a-
aaa), hora (hh:mm:ss) e valor (0-4095, referente a resolucao 212 do ADC) obtido em
cada medicao (figura 4.4), separados por um caracter de espacamento (TAB). A in-
sercao do espacador torna o arquivo legıvel em diversos softwares, como Excel [48],
MATLAB [49] ou Octave [50].
58
Figura 4.4: Formato dos Dados Armazenados no Cartao microSD.
A conversao dos valores obtidos em tensao e simples. Se o modulo e alimentado
por uma tensao superior a 3 V, o conversor DC-DC interno da placa mantem o nıvel
em 3 V. Sendo 4096 nıveis possıveis, o valor em Volts e:
V alor(V ) = V alor(nivel) · 3
4096− 1(4.1)
4.2 Codigo em Linguagem C
Para executar o algoritmo de operacao, o modulo necessita do codigo referente a
rotina de trabalho, que fara com que receba os dados por uma das entradas Analog
In e armazene-os no cartao de memoria.
A IDE Eclipse [42] e utilizada atualmente pela equipe de desenvolvi-
mento do LIOc, o que torna o CCS uma boa escolha para dar continuidade
a este trabalho.
59
Utilizando a plataforma CCS v5.5 (figura 4.5) em sua versao completa de ava-
liacao de 90 dias, mencionada no topico 3.2.4.1, o codigo em C foi desenvolvido com
base nos exemplos da Texas “MSP-EXP430F5529 User Experience”, que apresenta
todas as funcionalidades da EB e “MSP430F55xx adc 07”, com exemplo de obtencao
de dados pelo ADC.
Figura 4.5: Parte da Janela do software Code Composer Studio, IDE da Texas
Instruments.
60
Os codigos fonte usados como referencia estao inclusos na instalacao do CCS (ou
no site da Texas [30]) e permitem a utilizacao e modificacao sob uma declaracao
de compreensao e utilizacao de direitos autorais, descrita em todos os arquivos da
Texas Instruments. Esta declaracao esta presente nos codigos desenvolvidos pelo
autor deste trabalho, presentes no apendice A.
Apos a inspecao detalhada e estudo do funcionamento dos exemplos citados, o
programa para o sistema de aquisicao e armazenamento foi construıdo.
Para entender melhor o funcionamento do modulo, serao descritos os principais
arquivos e suas funcoes. Os codigos criados ou alterados de alguma forma estao
dispostos no apendice A.
4.2.1 Relogio: Clock.c
O arquivo Clock.c faz parte do exemplo da Texas e nao foi alterado. Este apresenta
um relogio completo com interface grafica para o display da placa. Para a confi-
guracao do modulo de aquisicao, optou-se por inserir manualmente a hora antes de
cada medicao, utilizando-se das seguintes funcoes:
void SetupRTC(void) – Funcao responsavel pela inicializacao do Real Time
Clock, relogio em tempo real do sistema;
void SetTime(void) – Apresenta o relogio no display, possibilitando sua confi-
guracao e armazenando os valores inseridos nas variaveis date e time;
void DigitalClockUpdate(void) – Atualiza as variaveis date e time, possibili-
tando sua utilizacao na construcao da string de medicao.
4.2.2 Medicao: Medir.c
Este arquivo apresenta as funcoes relacionadas a obtencao do valor digital do ADC
e a construcao de uma string correspondente.
61
uint16 t Sensor getValue(void) – Obtem o valor do ADC (0-4095) referente
a entrada analogica (pino 7.0 da placa), considerando a alimentacao (3 V) como
fundo de escala. Esta e a funcao principal a ser alterada para definir o
comportamento do conversor A/D;
char* Sensor getMeasure(void) – A partir do valor obtido em Sensor_getValue(),
monta-se uma string com a data, hora e valor da medicao;
char* itoa(int value, char* result, int base) – Esta funcao converte o inteiro
value em uma string result, utilizando a base numerica base.
Observacao: O Tipo uint16_t e um unsigned int definido nos arquivos da Texas
Instruments.
4.2.3 Armazenamento: Armazenar.c
O arquivo original SDCard.c contem uma interface interativa para visualizar os
dados do cartao microSD no LCD da placa. Como esta nao e a intencao do modulo
de medicao, utilizou-se apenas de uma funcao de escrita no cartao (WriteFile()).
Esta funcao foi dividida em quatro partes, visando separar o acesso ao cartao, a
criacao do arquivo, sua escrita e fechamento, etapas que ocorrem em diferentes
pontos do programa desenvolvido.
FRESULT MountSD(void) – Monta e acessa o cartao microSD;
FRESULT OpenFile(char fileName) – Abre o arquivo de nome fileName. Se
o arquivo nao existir, este sera criado;
FRESULT WriteFile(char* fileName, char* text, WORD size) – Escreve
o texto text, de tamanho size no arquivo fileName;
FRESULT CloseFile(void) – Fecha o arquivo que esta aberto no momento.
62
Observacoes: O tipo FRESULT e um flag que indica o sucesso ou erro ocorrido
durante o acesso ao cartao microSD. O erro de montagem do cartao e apresentado
no LCD (figura 4.6), heranca do arquivo de origem, SDCard.c;
O tipo WORD e um unsigned int definido nos arquivos da Texas Instruments.
Figura 4.6: Erro Apresentado no LCD pela Ausencia do Cartao microSD [17].
4.2.4 Programa Principal: main.c
O programa principal e responsavel pela inicializacao dos componentes da
placa, como o display, os botoes e o potenciometro e pelo loop principal,
constituıdo da configuracao do relogio, medicao e armazenamento dos
dados.
O primeiro ponto a ser observado no programa principal, e sua composicao basica
em duas partes:
1. Setup: Fixa, executada uma unica vez logo que a placa e alimentada;
2. Main Loop: Iterativa, executada repetidamente apos o Setup.
Partindo desta logica, recomenda-se a inicializacao das variaveis na parte 1 e
cuidado com o uso da memoria na parte 2, ja que a alocacao repetida pode ocasionar
o estouro da memoria disponıvel e o mau funcionamento do modulo.
63
Inicializacoes e Configuracoes do Setup
• Portas (GPIO);
• Cristal para referencia de clock ;
• Clock principal (25 MHz);
• Interrupcoes;
• Relogio (Real time clock);
• Display (LCD);
• Potenciometro da placa (Thumb Wheel);
• Variaveis do sensor.
Execucoes no Loop Principal (na ordem de disparo)
• Ajustar hora;
• Montar Cartao microSD;
• Abrir/Criar Arquivo “DADOS”;
• Desabilitar potenciometro da placa;
• Desabilitar Display ;
• Executar Medicoes;
• Reabilitar potenciometro da placa;
• Reabilitar Display ;
• Fechar Arquivo;
• Incrementar Nome do Arquivo (DADOS1, DADOS2, ...);
• Reiniciar Loop.
64
Capıtulo 5
Testes
Estabelecidas as conexoes para o sensor e a estrutura logica do modulo, testes foram
feitos no laboratorio de eletronica do DEL/UFRJ, para obter valores de consumo
de corrente e verificar a qualidade dos dados do modulo.
5.1 Material Utilizado
• Modulo de aquisicao e armazenamento de dados (MSP-EXP430F5529);
• 2 pilhas AA para alimentacao do modulo;
• Potenciometro (5 kΩ), como sensor;
• Gerador de funcoes (Minipa MFG-4221 20 MHz DDS Function Generator),
como sensor;
• Osciloscopio Digital (Tektronix TDS1012C-EDU) para a medicao do sinal de
entrada do modulo;
• Multımetro Digital (Minipa ET-2650B) para medicao de corrente na fonte
(pilhas);
• Notebook (Dell Inspiron 1525) para a leitura dos dados armazenados no cartao;
65
5.2 Consumo de Corrente
O consumo de corrente e um requisito fundamental do projeto, estabelecido na secao
2.1 como 10 mA para o modulo completo. Para o prototipo desenvolvido, um dos
componentes que possui consumo consideravel (visto em 3.2.2) nao esta presente, o
pre-amplificador.
O modulo possui dois estados basicos, ambos ativos:
1. Insercao de data e hora;
2. Medicao.
No estado 1, onde o display fica ligado e os botoes e o potenciometro da placa
estao ativos, a corrente medida foi de 8.15 mA.
Na segunda etapa, o modulo faz a medicao e o armazenamento dos dados. A
corrente media foi de 7.20 mA.
Tendo em vista que este e o primeiro prototipo, solucoes para a
reducao do consumo ainda serao melhor estudadas futuramente. Entao,
considerou-se que, como o prototipo consume menos que 10 mA nesta
etapa inicial, isto atende aos requisitos, mesmo sem a parte de ampli-
ficacao.
5.3 Obtencao de Dados
Para os testes executados relativos aos dados do cartao de memoria, o modulo operou
com taxa de 1 SPS para a utilizacao com o potenciometro e 5700 SPS (taxa maxima
conseguida) para os sinais analogicos do gerador de funcoes. De modo a garantir a
fidelidade dos valores medidos, utilizou-se a frequencia de 100 Hz para os sinais de
entrada, muito abaixo da taxa de Nyquist [33].
Foram aplicados 4 sinais na entrada (pino 7.0) do modulo:
1. Terminal central do potenciometro de 5 kΩ com os terminais das extremidades
conectados a Terra e +3 V;
66
2. Sinal senoidal de frequencia 100 Hz, amplitude de 2.5 Vpp e offset de 1.25 V
(para o sinal variar de 0 a 2.5 V, pois o ADC foi configurado para apenas
valores positivos);
3. Sinal quadratico de frequencia 100 Hz, amplitude de 2.5 Vpp e offset de 1.25 V;
4. Sinal dente-de-serra de frequencia 100 Hz, amplitude de 2.5 Vpp e offset de
1.25 V.
5.3.1 Potenciometro
O potenciometro teve seu valor alterado excursionando a posicao do tap central de
um extremo ao outro. Apos o teste, o cartao foi lido no computador. A aplicacao
da equacao 4.1 e os dados captados originaram a figura 5.1.
Figura 5.1: Variacao de Tensao no Potenciometro: Dados do Cartao de Memoria.
67
5.3.2 Sinal Senoidal
Para os sinais periodicos, configurou-se o gerador de funcoes e observou-se a forma
de onda no osciloscopio (figura 5.2). Novamente, apos o teste, o cartao foi lido no
computador e os dados tratados para a obtencao da figura 5.3.
Figura 5.2: Sinal Senoidal com Amplitude 2.5 Vpp e Frequencia 100 Hz: Captura
de Tela do Osciloscopio [17].
Figura 5.3: Sinal Senoidal com Amplitude 2.5 Vpp e Frequencia 100 Hz: Dados do
Cartao de Memoria.
68
5.3.3 Sinal Quadratico
O mesmo procedimento foi feito para a onda quadrada, visto nas figuras 5.4 e 5.5.
Figura 5.4: Sinal Quadratico com Amplitude 2.5 Vpp e Frequencia 100 Hz: Captura
de Tela do Osciloscopio [17].
Figura 5.5: Sinal Quadratico com Amplitude 2.5 Vpp e Frequencia 100 Hz: Dados
do Cartao de Memoria.
69
5.3.4 Sinal Dente-de-Serra
Finalmente, para a onda dente-de-serra, as figuras 5.6 e 5.7 apresentam os dados do
osciloscopio e do microSD.
Figura 5.6: Sinal Dente-de-Serra com Amplitude 2.5 Vpp e Frequencia 100 Hz:
Captura de Tela do Osciloscopio [17].
Figura 5.7: Sinal Dente-de-Serra com Amplitude 2.5 Vpp e Frequencia 100 Hz:
Dados do Cartao de Memoria.
70
5.3.5 Analise dos Resultados
Conclui-se deste capıtulo, que a obtencao, o armazenamento e o formato dos da-
dos criados atendem as expectativas geradas para este projeto. Os investimen-
tos futuros devem ser relacionados a reducao do consumo, aumento da
frequencia de amostragem e no estudo de tensoes de referencia para o
ADC, com a finalidade de otimizar o desempenho do sistema.
71
Capıtulo 6
Conclusao
Este trabalho consolida a elaboracao de um modulo de aquisicao e armazenamento
de dados, tendo sua aplicacao em ambiente submarino, aonde o baixo consumo de
corrente e uma condicao crucial para a autonomia necessaria. Apresentou-se ainda o
estudo teorico da solucao, de fundamental importancia para a analise macroscopica
dos componentes (fısicos e logicos) que integram o sistema. Assim, considera-se que
o objetivo principal do trabalho foi cumprido.
A partir da teoria, pode-se conhecer melhor as tecnologias atuais e encontrar uma
solucao que satisfizesse todos os requisitos estabelecidos no inıcio do trabalho. Com
o conhecimento adquirido, a descoberta do microcontrolador MSP430 apresentou
uma plataforma estruturada e em constante evolucao. Outro benefıcio da escolha
do MSP430 foi a superacao das expectativas em relacao ao suporte fornecido pela
Texas Instruments. A qualidade e quantidade de material disponıvel, as plataformas
de desenvolvimento e a facilidade relacionada a compra de componentes reforcam a
excelencia da empresa e sua posicao de lideranca no mercado atual.
Desenvolvendo o primeiro prototipo, foram encontradas dificuldades anteriores
a montagem, na escolha e compra do produto. Tendo, enfim, posse de uma placa
de desenvolvimento, a elaboracao de um sistema permitiu a geracao de dados que
validaram as escolhas feitas teoricamente.
72
O modulo resultante deste trabalho sera utilizado nos proximos projetos do LIOc,
inicialmente de menor porte, onde sua aplicacao provera novas conclusoes e o aper-
feicoamento da plataforma.
6.1 Trabalhos Futuros
Todo o material gerado sera utilizado pelo LIOc com o objetivo de, futuramente,
possuir um modulo robusto e com qualidade de produto final, para ser aplicado em
projetos de grande porte do laboratorio.
Citado ao longo do trabalho, a utilizacao de componentes mais especıficos, como
o conversor A/D de 24 bits, tambem e um objeto de estudos futuros.
Outra solucao que eleva o nıvel de precisao e a qualidade do modulo e o auto-
ajuste do ganho do amplificador.
Na fase atual, o modulo desenvolvido sera objeto de estudo de outros projetos de
graduacao. No momento, vislumbra-se a possibilidade de sua implementacao em um
glider, um planador submarino, desenvolvido por integrantes da equipe de pesquisa
do LIOc.
73
Referencias Bibliograficas
[1] IDOETA, I. V., CAPUANO, F. G. Elementos da Eletronica Digital. Editora
Erica, 1984.
[2] NATIONAL INSTRUMENTS. “Introducao a tecnologia FPGA”. . Disponıvel
em: <http://www.ni.com/white-paper/6984/pt/>. Ultimo Acesso: 8
de marco de 2014.
[3] WIKIPEDIA. “Field-programmable gate array”. . Disponıvel em:
<http://en.wikipedia.org/wiki/Field-programmable gate array>.
Ultimo Acesso: 9 de marco de 2014.
[4] EE TIMES. “ESC - Xilinx Extensible Processing Platform com-
bines best of serial and parallel processing”. Disponıvel em:
<http://www.eetimes.com/document.asp?doc id=1313958>. Ultimo
Acesso: 9 de marco de 2014.
[5] ALTERA. “Cyclone V GX Starter Kit”. Disponıvel em:
<http://www.altera.com/products/devkits/altera/kit-terasic-
cyclone-v-gx-starter.html>. Ultimo Acesso: 8 de marco de
2014. “Copyright, Trademark, Patent, and Warranty Information:
http://www.altera.com/common/legal.html”.
[6] WESTE, N. H. E., HARRIS, D. M. CMOS VLSI Design - A Circuits and
Systems Perspective. Pearson, 2011.
[7] NATIONAL INSTRUMENTS. “Modulo NI LabVIEW
FPGA - National Instruments”. . Disponıvel em:
<http://sine.ni.com/nips/cds/view/p/lang/pt/nid/11834>.
Ultimo Acesso: 8 de marco de 2014.
[8] ROSCH, W. L. Hardware Bible. Que Publishing, 2003.
[9] MICROMINT USA. “Electrum 100”. . Disponıvel em:
<http://wiki.micromint.com/index.php/Electrum Documentation>.
Ultimo Acesso: 5 de janeiro de 2014.
74
[10] DE MELLO, M. C. Desenvolvimento de software para controle, aquisicao de
dados e telemetria em uma boia meteo-oceanografica. Projeto final de
graduacao, Universidade Federal do Rio de Janeiro, Rio de Janeiro, RJ,
Brasil, 2013.
[11] TANENBAUM, A. S. Modern Operating Systems.
[12] STACK OVERFLOW. “Stack Overflow”. Disponıvel em:
<http://stackoverflow.com/>. Ultimo Acesso: 16 de marco de
2014.
[13] VIVA O LINUX. “Viva o Linux - A maior comunidade GNU/Linux da America
Latina!” Disponıvel em: <http://www.vivaolinux.com.br/>. Ultimo
Acesso: 16 de marco de 2014.
[14] MAKE. “How to Choose the Right Platform: Rasp-
berry Pi or BeagleBone Black?” Disponıvel em:
<http://makezine.com/magazine/how-to-choose-the-right
-platform-raspberry-pi-or-beaglebone-black/>. Ultimo Acesso: 9
de marco de 2014.
[15] BEAGLEBOARD.ORG FOUNDATION. “BeagleBoard.org - community
supported open hardware computers for making”. Disponıvel em:
<http://beagleboard.org/>. Ultimo Acesso: 17 de marco de 2014.
[16] THE RASPBERRY PI FOUNDATION. “Raspberry Pi — An
ARM GNU/Linux box for $25. Take a byte” Disponıvel em:
<http://www.raspberrypi.org/>. Ultimo Acesso: 17 de marco
de 2014.
[17] BUCHMANN, R. M. “Fotos do Acervo do Autor”, marco de 2014.
[18] ARDUINO. “Arduino”. . Disponıvel em: <http://arduino.cc>. Ultimo
Acesso: 6 de janeiro de 2014.
[19] ARDUINO. “Arduino Board Pro”. . Disponıvel em:
<http://arduino.cc/en/Main/ArduinoBoardPro>. Ultimo Acesso: 12
de marco de 2014.
[20] ARDUINO. “ArduinoWirelessShield”. . Disponıvel em:
<http://arduino.cc/en/Main/ArduinoWirelessShield#.UyCVTvldXlh>.
Ultimo Acesso: 12 de marco de 2014.
[21] ATMEL CORPORATION. “Atmel”. Disponıvel em:
<http://www.atmel.com>. Ultimo Acesso: 6 de janeiro de 2014.
75
[22] TEXAS INSTRUMENTS. MSP430 Product Brochure, 2014. SLAB034W.
“Courtesy of Texas Instruments”.
[23] WIKIPEDIA. “Microcontrolador”. . Disponıvel em:
<http://pt.wikipedia.org/wiki/Microcontrolador>. Ultimo
Acesso: 12 de marco de 2014.
[24] MICROMINT USA. “MicroBolt”. . Disponıvel em:
<http://www.micromint.com/products/by-family/modules/49.html>.
Ultimo Acesso: 6 de janeiro de 2014.
[25] MICROCHIP TECHNOLOGY. “Microchip Technology Inc”. Disponıvel em:
<http://www.microchip.com/>. Ultimo Acesso: 6 de janeiro de 2014.
[26] TEXAS INSTRUMENTS. “MSP430 Microcontroller”. . Disponıvel em:
<http://www.ti.com/lsds/ti/microcontroller/16-bit msp430/
overview.page>. Ultimo Acesso: 15 de fevereiro de 2014. “Courtesy of
Texas Instruments”.
[27] ARDUINO. “Arduino - Compare”. . Disponıvel em:
<http://arduino.cc/en/Products.Compare>. Ultimo Acesso: 6
de janeiro de 2014.
[28] MICROCHIP. “PICkit 3”. Disponıvel em:
<http://www.microchip.com/Developmenttools/ProductDetails
.aspx?PartNO=PG164130>. Ultimo Acesso: 1 de fevereiro de 2014.
[29] TEXAS INSTRUMENTS. “TI LaunchPad Eva-
luation Ecosystem”. . Disponıvel em:
<http://www.ti.com/ww/en/launchpad/launchpad.html>. Ultimo
Acesso: 18 de fevereiro de 2014. “Courtesy of Texas Instruments”.
[30] TEXAS INSTRUMENTS. “MSP430F5529 USB Experimenter’s Bo-
ard - MSP-EXP430F5529 - TI Tool Folder”. . Disponıvel em:
<http://www.ti.com/tool/msp-exp430f5529>. Ultimo Acesso: 13 de
marco de 2014. “Courtesy of Texas Instruments”.
[31] TEXAS INSTRUMENTS. MSP430x5xx and MSP430x6xx Family - User’s
Guide, 2013. SLAU208M. “Courtesy of Texas Instruments”.
[32] OTT, H. Noise Reduction Techniques in Electronic Systems. Wiley, 1988.
[33] HAYKIN, S. Communication Systems. John Wiley & Sons, Inc, 2001.
76
[34] ANALOG DEVICES. “Analog Devices — Semiconductors and Signal Proces-
sing ICs”. Disponıvel em: <http://www.analog.com/en/index.html>.
Ultimo Acesso: 18 de janeiro de 2014.
[35] ANALOG DEVICES. Op Amp Applications. julho de 2002.
[36] PINO, A. V. Notas de Aula de Instrumentacao e Tecnicas de Medida, UFRJ.
2013.2.
[37] WIKIPEDIA. “Operational amplifier applications”. . Disponıvel em:
<http://en.wikipedia.org/wiki/Operational amplifier applications>.
Ultimo Acesso: 29 de janeiro de 2014.
[38] KESTER, W. Practical Design Techniques for Sensor Signal Conditioning.
1999. Analog Devices.
[39] TEXAS INSTRUMENTS. Signal Conditioning Piezoelectric Sensors, 2000.
SLOA033A. “Courtesy of Texas Instruments”.
[40] SEDRA, A. S., SMITH, K. C. Microelectronic Circuits. Oxford, 2004.
[41] TEXAS INSTRUMENTS. MSP-EXP430F5529LP User’s Guide, 2014. “Cour-
tesy of Texas Instruments”.
[42] ECLIPSE. “The Eclipse Foundation open source community website.” Dis-
ponıvel em: <http://www.eclipse.org/>. Ultimo Acesso: 15 de feve-
reiro de 2014.
[43] WIRING. “Wiring”. Disponıvel em: <http://wiring.org.co/>. Ultimo
Acesso: 30 de janeiro de 2014.
[44] TEXAS INSTRUMENTS. “TI LaunchPad - BoosterPacks”. . Disponıvel
em: <http://www.ti.com/ww/en/launchpad/boosterpacks.html>.
Ultimo Acesso: 10 de fevereiro de 2014. “Courtesy of Texas Instruments”.
[45] ABNT - ASSOCIACAO BRASILEIRA DE NORMAS TECNICAS. NBR IEC
60529:2005 Versao Corrigida 2:2011 — Graus de protecao para involucros
de equipamentos eletricos (codigo IP).
[46] CFW ELETRICA. “Catalogo Digital de Caixas”. Disponıvel em:
<http://www.cfweletrica.com.br/public/imgs/up/conexel
catalogo5 caixas.pdf>. Ultimo Acesso: 16 de fevereiro de 2014.
[47] CEMAR LEGRAND. “Catalogo Digital”. Disponıvel em:
<http://files.cemar.com.br/catalogo digital/downloads/5
Processos industriais.pdf>. Ultimo Acesso: 16 de fevereiro de 2014.
77
[48] MICROSOFT. “Microsoft Excel software
de planilhas Office.com”. Disponıvel em:
<http://office.microsoft.com/pt-br/microsoft-excel-software-
de-planilhas-FX010048762.aspx>. Ultimo Acesso: 16 de marco de
2014.
[49] MATHWORKS. “MATLAB - The Language of Technical Computing”.
. Disponıvel em: <http://www.mathworks.com/products/matlab/>.
Ultimo Acesso: 16 de marco de 2014.
[50] MATHWORKS. “GNU Octave”. . Disponıvel em:
<https://www.gnu.org/software/octave/>. Ultimo Acesso: 16
de marco de 2014.
78
Apendice A
Codigo
A.1 Programa Principal (main.c)
/∗∗ UFRJ − Univers idade Federa l do Rio de Jane i ro∗ DEL − Departamento de Engenharia E l e t r o n i c a e da Computacao∗∗ Tı tu lo : main . c∗ Autor : Rafae l Mazza Buchmann∗ Pro je to Fina l : Pesquisa e Desenvolvimento de um Sistema de Aquis i c a o∗ e Armazenamento de Dados para Medic oes Oceanogr a f i cas
∗ Orientadores : Car los Jos e Ribas D ’ Avi la∗ Fabio Nascimento de Carvalho∗∗ Observacao : Comentarios em I n g l e s pertencem ao programa o r i g i n a l ,∗ coment a r ios em portugues foram i n s e r i d o s pe lo autor .∗∗ Baseado em: UserExper ience . c − Main Appl i ca t ion∗∗ Copyright (C) 2010 Texas Instruments Incorporated∗ http ://www. t i . com/∗∗ R e d i s t r i b u t i o n and use in source and binary forms , with or without∗ modi f i ca t i on , are permitted provided that the f o l l o w i n g c o n d i t i o n s∗ are met :∗∗ R e d i s t r i b u t i o n s o f source code must r e t a i n the above copyr ight∗ not i ce , t h i s l i s t o f c o n d i t i o n s and the f o l l o w i n g d i s c l a i m e r .∗∗ R e d i s t r i b u t i o n s in binary form must reproduce the above copyr ight∗ not i ce , t h i s l i s t o f c o n d i t i o n s and the f o l l o w i n g d i s c l a i m e r in∗ the documentation and/ or other m a t e r i a l s provided with the∗ d i s t r i b u t i o n .∗∗ Neither the name o f Texas Instruments Incorporated nor the names∗ o f i t s c o n t r i b u t o r s may be used to endorse or promote products∗ der ived from t h i s so f tware without s p e c i f i c p r i o r wr i t t en∗ permis s ion .∗∗ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS∗ ”AS IS ” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT∗ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
79
∗ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE∗ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,∗ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES∗ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR∗ SERVICES ;∗ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER∗ CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT, STRICT∗ LIABILITY , OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN∗ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE∗ POSSIBILITY OF SUCH DAMAGE.∗∗/
#inc lude <s t d i n t . h>#inc lude <s t d l i b . h>#inc lude <msp430 . h>#inc lude ”HAL PMM. h”#inc lude ”HAL UCS. h”#inc lude ”HAL Board . h”#inc lude ”HAL Buttons . h”#inc lude ”HAL Dogs102x6 . h”#inc lude ”HAL Wheel . h”#inc lude ”Clock . h”#inc lude ” S e t t i n g s . h”
// Meus Inc lude s#inc lude ”Medir . h”#inc lude ”Armazenar . h”
// Setupu i n t 1 6 t timeoutCounter ;
i n t main ( void )
u i n t 8 t con t ra s t = ∗ ( ( unsigned char ∗) cont ras tSe tpo intAddres s ) ;u i n t 8 t b r i g h t n e s s = ∗ ( ( unsigned char ∗) b r i ghtne s sSe tpo in tAddre s s ) ;
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog t imer
// Basic GPIO i n i t i a l i z a t i o nBoard in i t ( ) ;
// Set Vcore to accomodate f o r max . a l lowed system speedSetVCore (3 ) ;
// Use 32 .768kHz XTAL as r e f e r e n c eLFXT Start (XT1DRIVE 0) ;
// Set system c lock to max (25MHz)I n i t F L L S e t t l e (25000 , 762) ;
SFRIFG1 = 0 ;SFRIE1 |= OFIE ;
// Globa l ly enable i n t e r r u p t se n a b l e i n t e r r u p t ( ) ;
// Setup r e a l time c l o ck
80
SetupRTC ( ) ;
// Set up LCDDogs102x6 in i t ( ) ;Dogs102x6 back l i ght In i t ( ) ;
// Br ightnes s not programed in Flash Yeti f ( b r i g h t n e s s == 0xFF)
// Set Defau l t Br ightnes sb r i g h t n e s s = 11 ;
Dogs102x6 setBack l ight ( b r i g h t n e s s ) ;Dogs102x6 setContrast ( con t ra s t ) ;Dogs102x6 c learScreen ( ) ;
// Set up wheelWhee l in i t ( ) ;B u t t o n s i n i t (BUTTON ALL) ;Buttons inte r ruptEnab le (BUTTON ALL) ;buttonsPressed = 0 ;
// St r ing com Valor do Sensorchar ∗ St r ingSensor ;
// Limpando a TelaDogs102x6 c learScreen ( ) ;
// Var i a v e i s para o Armazenamento no microSDchar NomeArquivo [ 7 ] = ”Dados” ;i n t nArquivoInt = 1 ;char nArquivoChar [2 ]= ”” ;
// Main loopwhi l e (1 )
buttonsPressed = 0 ;//Limpar a Tela a cada Loop
Dogs102x6 c learScreen ( ) ;
// Ajustar a horaSetTime ( ) ;// Mostrar a hora ( Exemplo I n i c i a l )// Di sp l ayDig i ta lC lock ( ) ;
// In i c i ando o Cartao SDMountSD( ) ;
// Abrir arquivoOpenFile ( NomeArquivo ) ;
/∗∗ O potenci ometro da Experimenter ’ s Board u t i l i z a o ADC∗ em seu d r i v e r .∗ Como e s t e pot e usado para a j u s t a r a hora no i n ı c i o do∗ programa , o p t e i por d e s a b i l i t a−l o ne s t e ponto e∗ h a b i l i t a−l o novamente ao fim da medicao para e v i t a r∗ p o s s ı v e i s c o n f l i t o s no ADC.
∗/
81
// Desab i l i t ando Wheel ( Potenci ometro da placa )Whee l d i sab le ( ) ;
//Apagando o Display para Economizar EnergiaDogs102x6 setBack l ight (0 ) ;
Dogs102x6 setContrast (0 ) ;Dogs102x6 c learScreen ( ) ;
whi l e ( ! ( buttonsPressed & BUTTON S2) )// MedirSt r ingSensor = Sensor getMeasure ( ) ;
// Armazenar no Cartao SD// WriteFi l e ( NomeArquivo , Str ingSensor , TamanhoPalavra ) ;
Wri teFi l e ( NomeArquivo , Str ingSensor , 22) ;Wri teFi l e ( NomeArquivo , ”\n” ,1 ) ;
// Re in ic iando WhellWheel enable ( ) ;Whee l in i t ( ) ;
// Re in ic iando DisplayDogs102x6 setBack l ight ( b r i g h t n e s s ) ;Dogs102x6 setContrast ( con t ra s t ) ;Dogs102x6 c learScreen ( ) ;
// Fechar ArquivoC l o s e F i l e ( ) ;
// Incrementar Arquivo de Teste ( Teste1 , Teste2 , . . . )nArquivoInt++;i t o a ( nArquivoInt , nArquivoChar , 1 0 ) ;s t r cpy ( NomeArquivo , ”” ) ; //Limpar St r ing em cada loops t r c a t ( NomeArquivo , ”Dados” ) ;s t r c a t ( NomeArquivo , nArquivoChar ) ;
//Fim do loop p r i n c i p a l
A.2 Rotina de Medicao (Medir.c e Medir.h)
/∗∗ UFRJ − Univers idade Federa l do Rio de Jane i ro∗ DEL − Departamento de Engenharia E l e t r o n i c a e da Computacao∗∗ Tı tu lo : Medir . c∗ Autor : Rafae l Mazza Buchmann∗ Pro je to Fina l : Pesquisa e Desenvolvimento de um Sistema de Aquis i c a o∗ e Armazenamento de Dados para Medic oes Oceanogr a f i cas
∗ Orientadores : Car los Jos e Ribas D ’ Avi la∗ Fabio Nascimento de Carvalho∗∗ Observacao : Comentarios em I n g l e s pertencem a pedacos de∗ fun c o e s obt idas na b i b l i o t e c a do Code Composer Studio ,
82
∗ coment a r ios em portugues foram i n s e r i d o s pe lo autor .∗/
#inc lude <s t d i n t . h>#inc lude <s t d l i b . h>#inc lude <msp430 . h>#inc lude ”HAL Board . h”#inc lude ”Medir . h”#inc lude ”Clock . h”
u i n t 1 6 t Valor Int ;char ValorChar [ 4 ] ;char Medida [ 2 5 ] ;i n t n ;
char ∗ Sensor getMeasure ( void ) //Montar a St r ing de Medicao
// Atua l i za r a horaDig ita lClockUpdate ( ) ;
// Medir// Board ledToggle (LED2) ; // P i s ca r LED ( I l u s t r a t i v o )// Delay ent re medidas// d e l a y c y c l e s (25000000) ; // 25 Mcic los /25MHz = 1 s
Valor Int = Sensor getValue ( ) ;
s t r cpy ( ValorChar , ”” ) ; //Limpar St r ingi t o a ( ValorInt , ValorChar , 1 0 ) ;
//Montando a St r ing a s e r retornadas t r cpy ( Medida , ”” ) ; //Limpar St r ing em cada loops t r c a t ( Medida , date ) ; // date e time da func ao Clock . cs t r c a t ( Medida , ”\ t ” ) ; // Separando os campos por TAB para serem l i d o s
no Excels t r c a t ( Medida , time ) ;s t r c a t ( Medida , ”\ t ” ) ;s t r c a t ( Medida , ValorChar ) ;
r e turn Medida ;
u i n t 1 6 t Sensor getValue ( void ) // Usar o ADC para obter o va l o r do pino7 .0
// Usare i o pino 7 .0 da placa , que e o A12// (Re) In i c i ando A/DP6SEL |= BITC ; // Enable A/D channel A12ADC12CTL0 = ADC12SHT02 + ADC12ON; // Sampling time ,
ADC12 onADC12CTL1 = ADC12SHP; // Use sampling
t imerADC12MCTL0 = ADC12INCH 12 ; // Use A12 ( Pot
Externo ) as inputADC12CTL0 |= ADC12ENC; // Enable
conve r s i on s
// measure ADC value
83
ADC12IE = 0x01 ; // Enablei n t e r r u p t
ADC12CTL0 |= ADC12SC; // Star tsampling / conver s i on
b i s S R r e g i s t e r ( LPM0 bits + GIE) ; // LPM0,sensorADC12 ISR w i l l f o r c e e x i t
ADC12IE = 0x00 ; // Disab lei n t e r r u p t
re turn ADC12MEM0;
// Funcao para conver t e r i n t em char ∗// Pois O CCS nao pos su i a func ao i t o a por padrao ./∗∗ C++ ve r s i on 0 .4 char ∗ s t y l e ” i t o a ” :∗ Written by Lukas Chmela∗ Released under GPLv3 .∗ Fonte : http ://www. jb . man . ac . uk/˜ s lowe /cpp/ i t o a . html
∗/char ∗ i t o a ( i n t value , char ∗ r e s u l t , i n t base )
// check that the base i f v a l i di f ( base < 2 | | base > 36) ∗ r e s u l t = ’ \0 ’ ; r e turn r e s u l t ;
char ∗ ptr = r e s u l t , ∗ptr1 = r e s u l t , tmp char ;i n t tmp value ;
do tmp value = value ;va lue /= base ;∗ptr++ = ”
zyxwvutsrqponmlkj ihgfedcba9876543210123456789abcdefghi jklmnopqrstuvwxyz” [35 + ( tmp value − value ∗ base ) ] ;
whi le ( va lue ) ;
// Apply negat ive s i gni f ( tmp value < 0) ∗ptr++ = ’− ’ ;∗ptr−− = ’ \0 ’ ;whi l e ( ptr1 < ptr )
tmp char = ∗ptr ;∗ptr−−= ∗ptr1 ;∗ptr1++ = tmp char ;
re turn r e s u l t ;
/∗∗ UFRJ − Univers idade Federa l do Rio de Jane i ro∗ DEL − Departamento de Engenharia E l e t r o n i c a e da Computacao∗∗ Tı tu lo : Medir . h∗ Autor : Rafae l Mazza Buchmann∗ Pro je to Fina l : Pesquisa e Desenvolvimento de um Sistema de Aquis i c a o∗ e Armazenamento de Dados para Medic oes Oceanogr a f i cas
∗ Orientadores : Car los Jos e Ribas D ’ Avi la∗ Fabio Nascimento de Carvalho
84
∗∗ Observacao : Comentarios em I n g l e s pertencem a pedacos de∗ fun c o e s obt idas na b i b l i o t e c a do Code Composer Studio ,∗ coment a r ios em portugues foram i n s e r i d o s pe lo autor .∗/
#i f n d e f MEDIR H#d e f i n e MEDIR H
#inc lude <s t d i n t . h>#inc lude <s t d l i b . h>#inc lude <msp430 . h>#inc lude ”HAL Board . h”#inc lude ”Clock . h”
extern char ∗ Sensor getMeasure ( void ) ;extern u i n t 1 6 t Sensor getValue ( void ) ;extern char ∗ i t o a ( int , char ∗ , i n t ) ;
#e n d i f /∗ MEDIR H ∗/
A.3 Armazenamento de Dados no Cartao
microSD (Armazenar.c e Armazenar.h)
/∗∗ UFRJ − Univers idade Federa l do Rio de Jane i ro∗ DEL − Departamento de Engenharia E l e t r o n i c a e da Computacao∗∗ Tı tu lo : Armazenar . c∗ Autor : Rafae l Mazza Buchmann∗ Pro je to Fina l : Pesquisa e Desenvolvimento de um Sistema de Aquis i c a o∗ e Armazenamento de Dados para Medic oes Oceanogr a f i cas
∗ Orientadores : Car los Jos e Ribas D ’ Avi la∗ Fabio Nascimento de Carvalho∗∗ Observacao : Comentarios em I n g l e s pertencem ao programa o r i g i n a l ,∗ coment a r ios em portugues foram i n s e r i d o s pe lo autor .∗∗ Baseado em: SDCard . c − Accesses the SD Card∗∗ Copyright (C) 2010 Texas Instruments Incorporated∗ http ://www. t i . com/∗∗ R e d i s t r i b u t i o n and use in source and binary forms , with or without∗ modi f i ca t i on , are permitted provided that the f o l l o w i n g c o n d i t i o n s∗ are met :∗∗ R e d i s t r i b u t i o n s o f source code must r e t a i n the above copyr ight∗ not i ce , t h i s l i s t o f c o n d i t i o n s and the f o l l o w i n g d i s c l a i m e r .∗∗ R e d i s t r i b u t i o n s in binary form must reproduce the above copyr ight∗ not i ce , t h i s l i s t o f c o n d i t i o n s and the f o l l o w i n g d i s c l a i m e r in∗ the documentation and/ or other m a t e r i a l s provided with the∗ d i s t r i b u t i o n .∗∗ Neither the name o f Texas Instruments Incorporated nor the names
85
∗ o f i t s c o n t r i b u t o r s may be used to endorse or promote products∗ der ived from t h i s so f tware without s p e c i f i c p r i o r wr i t t en∗ permis s ion .∗∗ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS∗ ”AS IS ” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT∗ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS∗ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE∗ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,∗ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES∗ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR∗ SERVICES ;∗ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER∗ CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT, STRICT∗ LIABILITY , OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN∗ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE∗ POSSIBILITY OF SUCH DAMAGE.∗∗/
#inc lude <s t d i o . h>#inc lude <s t d i n t . h>#inc lude <s t r i n g . h>
#inc lude ”msp430 . h”#inc lude ”HAL Board . h”#inc lude ”HAL Buttons . h”#inc lude ”HAL Dogs102x6 . h”#inc lude ”HAL SDCard . h”#inc lude ” f f . h”
/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
∗ @brie f This func t i on w i l l c r e a t e a new f i l e , wr i te s , and c l o s e the∗ f i l e . This func t i on w i l l ove rwr i t e your f i l e .∗ @param fi leName Spec i f y the f i l ename o f the f i l e∗ @param text Data to wr i t e to f i l e∗ @param s i z e Data s i z e to be wr i t t en∗ @return None∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/
/∗ Vou d i v i d i r a func ao o r i g i n a l Wri teFi l e em 3 :∗ MountSD( ) ;∗ WriteFi l e ( ) ;∗ CloseSD ( ) ;∗/
// Var i a v e i s// Result codeFRESULT rc ;// F i l e system ob j e c tFATFS f a t f s ;// F i l e ob j e c tFIL f i l ;UINT bw;
// This image has been crea ted by ImageDog us ing
86
// ’ Safety Yel low DangerGenera l . png ’s t a t i c const u i n t 8 t warningSign [ ] =
0x30 , // Image width in p i x e l s0x06 , // Image he ight in rows (1 row = 8 p i x e l s )0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0
x00 , 0x00 , 0x00 , 0x00 , 0x00 ,0x00 , 0x00 , 0x00 , 0x03 , 0x04 , 0x13 , 0 x6f , 0x1c , 0xb8 , 0x5e , 0x27 , 0
x1b , 0x06 , 0x01 , 0x00 , 0x00 ,0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0
x00 , 0x00 , 0x00 , 0x00 , 0x00 ,0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0
x00 , 0x00 , 0x00 , 0x01 , 0x06 ,0x09 , 0x27 , 0xde , 0x38 , 0 xf0 , 0xc3 , 0x07 , 0 x0f , 0 x0f , 0 x0f , 0x87 , 0
xc0 , 0 xf0 , 0x3c , 0 x4f , 0x13 ,0x0c , 0x03 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0
x00 , 0x00 , 0x00 , 0x00 , 0x00 ,0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x03 , 0
x0c , 0x13 , 0 x4f , 0xbc , 0x70 ,0xe0 , 0x80 , 0x00 , 0x00 , 0x00 , 0xe0 , 0 x f f , 0 x f f , 0 x f f , 0 x f f , 0 x f f , 0
x00 , 0x00 , 0x00 , 0x00 , 0xc0 ,0 xf0 , 0x78 , 0x9e , 0x27 , 0x19 , 0x06 , 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0
x00 , 0x00 , 0x00 , 0x00 , 0x00 ,0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x06 , 0x19 , 0x27 , 0x9e , 0x78 , 0
xf0 , 0xc0 , 0x00 , 0x00 , 0x00 ,0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0 xf0 , 0 xfc , 0 xfc , 0 xfc , 0 xf8 , 0
x00 , 0x00 , 0x00 , 0x00 , 0x00 ,0x00 , 0x00 , 0x00 , 0x80 , 0xe0 , 0x78 , 0x1e , 0x47 , 0x13 , 0x0c , 0x03 , 0
x00 , 0x00 , 0x00 , 0x00 , 0x00 ,0x00 , 0x02 , 0x0d , 0x13 , 0 x4f , 0x3c , 0 xf0 , 0xc0 , 0x80 , 0x00 , 0x00 , 0
x00 , 0x00 , 0x00 , 0x00 , 0x00 ,0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x38 , 0x7e , 0x7e , 0x7e , 0x7e , 0x3c , 0
x00 , 0x00 , 0x00 , 0x00 , 0x00 ,0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x80 , 0xc0 , 0 xf0 , 0x3c , 0
x8f , 0x23 , 0x08 , 0x06 , 0x01 ,0xe0 , 0x50 , 0 xf0 , 0xe0 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0
x60 , 0x60 , 0x60 , 0x60 , 0x60 ,0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0
x60 , 0x60 , 0x60 , 0x60 , 0x60 ,0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0
x60 , 0xe0 , 0xe0 , 0x10 , 0xe0 ;
/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
∗ @brie f Stop with dying message , part o f the FatFs sample p r o j e c t∗ by ChaN∗ @param rc FatFs re turn value∗ @return None∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/
void d i e (FRESULT rc )
buttonsPressed = 0 ;Dogs102x6 in i t ( ) ;Dogs102x6 c learScreen ( ) ;Dogs102x6 imageDraw ( warningSign , 2 , 29) ;
87
Dogs102x6 stringDraw (0 , 27 , ”WARNING! ” , DOGS102x6 DRAW NORMAL) ;Dogs102x6 stringDraw (1 , 0 , ”NO SD CARD FOUND! ” ,
DOGS102x6 DRAW NORMAL) ;whi l e ( ! buttonsPressed )
// Wait in low power mode 3 u n t i l a button i s pre s s edb i s S R r e g i s t e r ( LPM3 bits + GIE) ;
FRESULT MountSD( void )
// Reg i s t e r volume work area ( never f a i l s )f mount (0 , &f a t f s ) ;
r e turn rc ;
FRESULT OpenFile ( char ∗ f i leName )
// Open f i l erc = f open(& f i l , f i leName , FA WRITE | FA CREATE ALWAYS) ;i f ( rc )
d i e ( rc ) ;re turn rc ;
FRESULT WriteFi l e ( char ∗ f i leName , char ∗ text , WORD s i z e )
// Write to f i l erc = f w r i t e (& f i l , text , s i z e , &bw) ;i f ( rc )
d i e ( rc ) ;
re turn rc ;
FRESULT C l o s e F i l e ( void )
// Close the f i l erc = f c l o s e (& f i l ) ;i f ( r c )
d i e ( rc ) ;
re turn rc ;
/∗∗ UFRJ − Univers idade Federa l do Rio de Jane i ro
88
∗ DEL − Departamento de Engenharia E l e t r o n i c a e da Computacao∗∗ Tı tu lo : Armazenar . h∗ Autor : Rafae l Mazza Buchmann∗ Pro je to Fina l : Pesquisa e Desenvolvimento de um Sistema de Aquis i c a o∗ e Armazenamento de Dados para Medic oes Oceanogr a f i cas
∗ Orientadores : Car los Jos e Ribas D ’ Avi la∗ Fabio Nascimento de Carvalho∗∗ Observacao : Comentarios em I n g l e s pertencem a pedacos de∗ fun c o e s obt idas na b i b l i o t e c a do Code Composer Studio ,∗ coment a r ios em portugues foram i n s e r i d o s pe lo autor .∗/
#i f n d e f ARMAZENAR H#d e f i n e ARMAZENAR H
#inc lude <s t d i o . h>#inc lude <s t d i n t . h>#inc lude <s t r i n g . h>
#inc lude ”msp430 . h”#inc lude ”HAL Board . h”#inc lude ”HAL Buttons . h”#inc lude ”HAL Dogs102x6 . h”#inc lude ”HAL SDCard . h”#inc lude ” f f . h”
void d i e (FRESULT rc ) ;extern FRESULT MountSD( void ) ;extern FRESULT OpenFile ( char ∗ f i leName ) ;extern FRESULT WriteFi l e ( char ∗ f i leName , char ∗ text , WORD s i z e ) ;extern FRESULT C l o s e F i l e ( void ) ;
#e n d i f /∗ ARMAZENAR H ∗/
89