Escolar Documentos
Profissional Documentos
Cultura Documentos
Raquel Andrade
Jaízo Júnior
Emerson Oliveira
Matheus Cardoso
Cláudio Bergossi
Feira de Santana – BA
Março / 2009
1
Diego Fiscina
Raquel Andrade
Jaízo Júnior
Emerson Oliveira
Matheus Cardoso
Cláudio Bergossi
Orientador:
Prof. Paulo César Machado de Abreu Farias
Departamento de Exatas
Universidade Estadual de Feira de Santana
Feira de Santana – BA
Março / 2009
2
Relatório da disciplina Projeto Anual sob o título “Interface
microcontrolada para automação de experimentos”, apresentado como
requisito parcial para a formação em Engenharia de Computação, Março
de 2009. Feira de Santana – BA.
3
Resumo
4
Sumário
Lista de figuras
1. Introdução ............................................................................................................... 9
2. Fundamentação teórica........................................................................................ 10
2.3.1. Polling....................................................................................................... 14
4. Conclusão ............................................................................................................. 37
5. Referências ........................................................................................................... 39
5
Lista de Figuras
6
Lista de tabelas
7
Lista de Ilustrações
8
1. Introdução
9
2. Fundamentação teórica
Esta seção irá explicar, de forma breve, os conceitos teóricos utilizados
na confecção da interface microcontrolada.
10
• Barramentos;
• Unidade de entrada/saída;
• Comunicação série;
• Unidade de temporização;
• Watchdog Timer;
• Conversor analógico – digital.
11
Comunicação serial - é uma alternativa de comunicação com interfaces
externas. Possui três linhas de execução, uma usada para enviar e outra para
receber dados; a terceira é a linha de referência tanto do lado de entrada
quando do de saída. Este tipo de comunicação obedece a um protocolo para
troca de dados.
Contador/Temporizador - é um registrador de 8 bits do microcontrolador que
trabalha independentemente do programa. Tomando como exemplo alguns
microcontroladores, ao fim de cada conjunto de quatro ciclos de relógio do
oscilador, o contador incrementa o valor armazenado, até atingir o valor
máximo (255), que, a esta altura, recomeça a contagem a partir de zero. O
tempo exato entre dois incrementos sucessivos do conteúdo do temporizador,
pode ser utilizado para medir intervalos de tempo, o que o torna muito útil em
vários dispositivos.
Watchdog - é um contador que está continuamente em funcionamento onde,
caso haja alguma condição de erro no fluxo do programa principal, este
contador, sem necessidade de intervenção humana, reseta o microcontrolador
para que este funcione, novamente, de forma adequada.
Conversor A/D: os sinais dos periféricos são diferentes daqueles que o
microcontrolador pode entender (zero e um), e devem ser convertidos no
formato compreendido pelo microcontrolador. Esta tarefa é executada por
intermédio de um bloco destinado à conversão analógico-digital ou conversor
A/D convertendo um valor analógico para um valor digital.
12
Figura 2 – Esquema geral de um microcontrolador.
Plug and Play ("Colocar e Usar"): quase todos os dispositivos USB são
concebidos para serem conectados ao computador e utilizados logo em
seguida. Apenas alguns exigem a instalação de drivers, como é o caso
deste trabalho, ou softwares específicos.
14
operação e precisa ficar verificando periodicamente o estado do dispositivo de
E/S.
Para exemplificar pode ser feita uma analogia com um telefone que não
tivesse campainha. Seria necessário tirar o fone do gancho periodicamente,
para ver se alguma comunicação está em curso. No entanto, tal como o
telefone, há outro meio de resolver esse problema: usar um "sinal de
chamada", o que equivale a solicitar ao dispositivo que execute uma tarefa e
que avise quando tiver terminado; enquanto isto, a CPU poderia fazer outras
coisas.
A principal vantagem da e/s com polling é a sua simplicidade. No entanto,
esta técnica possui a desvantagem de que a CPU fica dedicada à operação de
e/s. Isto pode ser extremamente ineficiente, sob o ponto de vista da utilização
da CPU.
2.3.2 Interrupção
Interrupções são modificações no fluxo de controle causadas por uma
ação externa relacionada à entrada ou saída. Uma interrupção é um sinal de
controle enviado por um agente externo à CPU, quando um determinado
evento é detectado. Este mecanismo força a CPU a tratar o evento externo. A
detecção de uma interrupção faz com que o processador transfira o controle
para uma rotina de tratamento de interrupção ("interrupt handler"). A rotina de
tratamento de interrupções faz o processador executar as seguintes ações:
15
2.4 Conversor A/D por aproximações sucessivas
O circuito conversor A/D clássico que usa um conversor D/A é chamado de
aproximação sucessiva, sendo o mais usado. Ele é mostrado na Figura 3. Vin é
a entrada analógica e Dn até D0 são as saídas digitais.
Esse circuito utiliza um buffer e, portanto, o sinal digital ainda permanece
no circuito enquanto o conversor está processando a próxima amostra. RAS
significa Registrador de Aproximação Sucessiva (ou, em inglês, SAR,
Successive Approximation Register). Ele tem os mesmos sinais de controle que
o conversor A/D contador de rampa: START, que comanda o conversor A/D
para iniciar a conversão, CLOCK e END, que diz que a conversão daquela
amostra em particular foi finalizada.
16
encontrado em até oito pulsos de clock (comparado aos 255 no contador de
rampa), e para um conversor A/D de 16 bits o valor digital para cada amostra
pode ser encontrado em até 16 pulsos de clock.
Outra grande vantagem deste circuito é o uso de um buffer de saída que
permite ao circuito que está sendo alimentado pelo conversor A/D ler o dado
digital enquanto o conversor A/D já está trabalhando na próxima amostra.
3. Desenvolvimento do projeto
Nessa sessão é abordado o desenvolvimento do projeto analisando
cada parte eleborada.
18
3.1.2 Confecção do circuito
19
3. Posteriormente, passa-se um ferro de passar roupas em sua superfície,
fazendo com que a tinta se desprenda do papel e grude na placa.
Após esses passos a placa está, então, pronta para ser furada, colocada
os componentes e soldada.
21
Primordialmente, foi feito um estudo do programa EAGLE 5.3.0 que foi o
utilizado para a confecção da PCB. Para a elaboração da PCB inicial, primeiro
foi feito um diagrama do circuito com todas as ligações entre os componentes
baseado no diagrama inicial fornecido pelo professor com algumas alterações
no regulador de tensão. Alguns pinos do microcontrolador ficaram ligados com
conectores para serem acessados posteriormente conforme necessário. Como
as ligações básicas do PIC 18F877A são iguais as do PIC 18F4550, para fazer
a alteração da placa para abrigar o PIC 18F4550 foi utilizado o mesmo
diagrama da placa para o PIC 18F877A, fazendo alterações nos pinos 18, 23 e
24 responsáveis pela comunicação USB (Figura 7). Dessa forma foi gerado um
novo arquivo para ser impresso e produzir a placa final com comunicação USB
e RS232.
3.3. Firmware
Firmware é o conjunto de instruções de um programa gravado
diretamente no hardware, de forma a ser armazenado permanentemente no
circuito. Em geral, é não-volátil e permanece armazenado mesmo após o
desligamento do aparelho que o esteja armazenando.
O firmware desenvolvido no projeto que está gravado no
microcontrolador PIC18F4550 [7] tem como finalidade se comunicar através de
comunicação serial (RS232 ou USB) com o software de gerenciamento da
estação aquisição de dados o sistema de supervisão. Este software foi
desenvolvido na linguagem de programação Java, visando a portabilidade, e
intermedia o acesso do usuário com a estação de aquisição de dados. A
primeira funcionalidade pensada para o firmware foi em virtude da
comunicação através da porta serial: como saber que um dado foi recebido?
23
Como o único evento que interessa a esse firmware é a entrada de dados pela
porta serial, não há nenhum prejuízo em deixá-lo em um loop contínuo,
verificando da porta serial se algum dado foi recebido. Além disso, é a forma
mais simples, e, conseqüentemente a que exige menos tempo de
implementação, fato realmente relevante na escolha do método, devido ao
curto espaço de tempo de desenvolvimento disponível. Esse é o fluxo básico e
central do funcionamento do firmware, que está sempre ‘ouvindo’ a porta serial.
Depois de resolvida esta questão, começou-se então a listar e,
posteriormente, implementar as funcionalidades que o usuário deveria dispor
nesse sistema. Por questão de organização, dividimos essas funcionalidades
em módulos, que são um conjunto de funções (métodos) responsáveis por
funcionalidades especificas do microcontrolador. O primeiro módulo construído
foi o responsável pela conversão analógico-digital, ou simplesmente A/D. Ele é
constituído de três funções, bastante simples, como descrito abaixo:
channel_adc_0(): faz a conversão A/D do sinal lido no PORT A0, e
escreve esse valor na porta serial;
channel_adc_1():faz a conversão A/D do sinal lido no PORT A1, e
escreve esse valor na porta serial;
channel_adc_3():faz a conversão A/D do sinal lido no PORT A3, e
escreve esse valor na porta serial;
24
5. set_cicly_pwm_50(): seta em 50% o percentual de tempo ativo do
ciclo.
25
Figura 9: Estrutura do firmware.
FUNÇÃO
CÓDIGO
ASSOCIADA
A channel_adc_0
B channel_adc_1
C channel_adc_3
D set_time_adc
T set_tris_io_digital
P set_ports_io_digital
G get_ports_io_digital
H set_cicly_pwm_high
L set_cicly_pwm_low
0 set_cicly_pwm_0
1 set_cicly_pwm_25
2 set_cicly_pwm_50
3 set_cicly_pwm_75
4 set_cicly_pwm_100
Por fim, para que a estação possa iniciar suas funções, basta, claro, que
o firmware já tenha sido gravado no micro-controlador e conectar o circuito
através do cabo USB na devida e correspondente porta no computador. Após
isso, será exibida uma mensagem que o dispositivo foi detectado (em ambiente
Windows). Contudo, o computador – assim como todos os demais com sistema
Windows - não possui nativo um driver necessário para gerenciar a
comunicação com o dispositivo (microcontrolador). Como foi dito antes, já que
essa é uma forma de comunicação específica de emulação RS232 e não
comunicações HID, faz-se necessário um driver específico. Após indicar onde
se encontra o driver correto, (utilizou-se o driver que acompanha o software
desenvolvimento) o micro-controlador será enumerado pelo computador e o
firmware poderá funcionar corretamente.
30
Ilustração 2 - Adicionar Experimento.
31
Ilustração 3 - Gráfico de um Experimento.
32
3.5.2. Comunicação Serial com Java
listSerialPorts;
openSerialPort;
setParametersPort;
o bit de dados = 8
o bit de parada = 1
o paridade = 0
o timeout = 1000
o velocidade = 9600
o defaultPort=COM1
writeDataToSerialPort;
33
readDataFromSerialPort;
serialEvent;
closeSerialPort;
34
Figura 11 - Modelo de dados – System Monitoring.
35
Figura 12 - Estrutura de Pacotes.
DataBaseConnection
DataBaseparameters
ExperimentoDAO;
o insertExperiment
o delExperiment
36
Método responsável por deletar um determinado
experimento do banco de dados.
o insertSample
o getExperiment
o getAllExperiments
o getAllSamplesFromExperimento
Vale ressaltar que estas operações com banco de dados, são exclusivas
para experimentos com leitura de dados de conversores A/D no micro-
controlador.
4. Conclusão
37
Para o desenvolvimento desse trabalho foi necessário o estudo e
entendimento principalmente, do funcionamento dos microcontroladores da
família PIC da Microchip, de comunicação USB-RS232 e de confecção de
placas de circuito impresso.
A despeito da maior facilidade de uso de dispositivos HID, somente a
comunicação CDC ou USB-RS232 pode ser desenvolvida. Dentre os principais
motivos para a não conclusão da comunicação HID, foi o grande atraso
ocorrido no desenvolvimento da comunicação CDC. Esta última que possui
complexidade consideravelmente inferior à comunicação HID, implicou
considerável atraso no desenvolvimento, devido, principalmente, à
inexperiência em montagem e análise de circuitos eletrônicos do estudante
responsável pelo desenvolvimento, além da novidade da pesquisa sobre o
padrão USB. O estudante responsável encontrou, em relação à montagem,
vários outros problemas/dificuldades quanto, por exemplo, à verificação de fios
sem continuidade, valores corretos para os componentes necessários para
realizar a comunicação (capacitores, resistores, etc.) e gravação do firmware,
etc. Outra grande dificuldade encontrada, talvez tão impactante quanto à
inexperiência do estudante, foi a escassez de fonte de pesquisa e estudo sobre
a programação em C com PIC para comunicação USB, utilizando a ferramenta
de desenvolvimento CCS C (CCS Inc.). Esta ferramenta somente dispunha de
alguns exemplos que abarcavam algumas nuances de formas para programar
para USB (embora, posteriormente, tenham sido fundamentais, após intenso e
laborioso estudo). Além de explicações pouco elucidativas a respeito das
funções para USB que a ferramenta implementava.
Outra grande dificuldade na fase de montagem da comunicação USB: a
gravação do firmware. Uma tarefa que deveria ser simples, e de fato é, tornou-
se complicada em certo período do projeto devido a contínuas inconstâncias no
gravador - somente havia um único disponível no início. Além dos eventuais
problemas com fios, havia computadores em que a tensão necessária da porta
serial, fundamental para concretizar a gravação, não era suficiente, resultando
inconstâncias no reconhecimento do microcontrolador pelo software
responsável pela gravação (WinPic800). Posteriormente outros dois
gravadores foram montados por um componente do grupo e a constância de
problemas com gravações de firmware diminuiu bastante ou se esvaiu em
alguns casos.
A partir dos testes realizados pôde-se verificar o funcionamento adequado
do sistema atendendo as funcionalidades previstas no início do projeto como o
sistema supervisório, a comunicação Serial RS232, execução das funções do
firmware e a placa feita para abrigar o sistema. A comunicação USB foi
desenvolvida como CDC. Os testes realizados foram ensaios feitos no
laboratório e os módulos de leitura ADC e PWM foram os únicos módulos
38
estáveis e funcionais da estação após a transição do PIC16F877A para o atual
PIC18F4550.
Em relação à comunicação serial (RS-232), a codificação do firmware
começou usando como microcontrolador o PIC 16F877A, e apenas no final do
projeto o código foi migrado para o PIC 18F4550.
Problemas em relação à equipamentos defeituoso, que atrasaram o
andamento da codificação desse firmware, também ocorreram, porém,
considera-se que o mesmo está em um nível razoável de desenvolvimento.
Somado a isso, tem-se que o código está bastante inteligível, e há a
possibilidade de se ampliar, sem maiores dificuldades (em relação ao código),
inserindo novas funcionalidades ao sistema.
5. Referências
39
http://www.instructables.com/id/Understanding-ICSP-for-PIC-
Microcontrollers/
[6] Multi chip programmer. Acesso em 19 de dezembro de 2008, disponível
em:
http://www.talkingelectronics.com/projects/MultiChipPgmr/MultiChipPgmr
-02-Construction.html
[7] PIC18F2455/2550/4455/4550 Data Sheet. Disponível em:
http://ww1.microchip.com/downloads/en/DeviceDoc/39632D.pdf
40