90
UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE TECNOLOGIA PROGRAMA DE GRADUAÇÃO EM ENGENHARIA ELÉTRICA DESENVOLVIMENTO DE SISTEMA DE CONTROLE E AQUISIÇÃO MICROCONTROLADO Francisco Lincoln Matos da Costa Filho Fortaleza Dezembro de 2010

FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

Embed Size (px)

Citation preview

Page 1: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE TECNOLOGIA

PROGRAMA DE GRADUAÇÃO EM ENGENHARIA ELÉTRICA

DESENVOLVIMENTO DE SISTEMA DE CONTROLE E AQUISIÇÃO MICROCONTROLADO

Francisco Lincoln Matos da Costa Filho

Fortaleza Dezembro de 2010

Page 2: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

ii

FRANCISCO LINCOLN MATOS DA COSTA FILHO

DESENVOLVIMENTO DE SISTEMA DE CONTROLE E AQUISIÇÃO MICROCONTROLADO

Monografia submetida à Universidade Federal

do Ceará como parte dos requisitos para

obtenção do grau de Graduado em Engenharia

Elétrica.

Orientador:

Profª. Dra. Laurinda Lúcia Nogueira dos Reis

Fortaleza Dezembro de 2010

Page 3: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf
Page 4: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

iv

“Resolve fazer o que deves, e não deixes de fazer o que tiveres resolvido”

(Benjamin Franklin)

Page 5: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

v

A Deus,

A todos os meus familiares e amigos.

Page 6: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

vi

AGRADECIMENTOS

Antes de tudo a Deus por tudo que me foi concedido e pelas oportunidades que me

foram dadas.

A professora Dra. Laurinda Lúcia Nogueira dos Reis por sua orientação, motivação e

disponibilidade durante todo o tempo de trabalho.

Aos professores do Departamento de Engenharia Elétrica da UFC bem como aos

técnicos e funcionários do departamento responsáveis diretamente ou indiretamente pela

minha formação.

Aos meus amigos e colegas de graduação que contribuíram em forma de apoio,

amizade e auxílio em forma de repasse de conhecimento para a realização deste trabalho e

para minha formação. Agradeço especialmente aos meus amigos de laboratório com os quais

superei os momentos mais difíceis de toda a caminhada e com os quais passei boa parte de

todo o período de graduação.

Agradeço ainda aos colegas que passaram pelo mestrado e doutorado no departamento

durante todo o tempo que permaneci na graduação e que também contribuíram de forma

semelhante aos colegas já citados.

A todos os meus familiares, em especial aos meus pais e irmão, por todo suporte e

companheirismo em todos os momentos da minha vida.

A todas as pessoas que por motivo de esquecimento não foram citadas anteriormente

agradeço também da mesma forma.

Page 7: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

vii

Filho, F. L. M. C. e “Desenvolvimento de sistema de controle e aquisição microcontrolado”,

Universidade Federal do Ceará – UFC, 2010, 76p.

O presente trabalho tem como objetivo o desenvolvimento e aprimoramento de um sistema de controle e aquisição para fins de aplicação em âmbito educacional e industrial. O sistema é composto basicamente de partes distintas, que são: Software de interface com o usuário alocado em um computador padrão e placa de controle e aquisição de dados para interface com plantas diversificadas. O kit desenvolvido é de baixo custo e simples ao ponto de ser possível sua reprodução dentro de qualquer universidade. A placa de aquisição elaborada possui funcionalidades variadas que são coordenadas pelo microcontrolador utilizado PIC18F4550. A comunicação do dispositivo de interface com o computador é do tipo USB emulada serialmente. O trabalho é baseado na placa Mônica de controle e aquisição criada na Universidade Federal de Santa Catarina que apresentava comunicação via porta paralela com o computador.

Palavras-Chave: Sistema de controle e aquisição, software de interface, placa de

aquisição.

Page 8: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

viii

Silva, R. N. A. L. e “Development of control and data acquisition system microcontrolled”, Universidade Federal do Ceará – UFC, 2010, 76p. This work aims the development and improvement of an acquisition and control system for application in the educational and industrial segments. The system is basically composed of distinct parts, which are: Software user interface allocated on a standard computer and board of control and data acquisition to interface with several plants. The kit is of low cost and so simple that reproduction is possible in any university. The acquisition board has many features which are coordinated by the microcontroller used PIC18F4550. The communication of the interface device with the computer is of USB type emulated serially. The work is based on Monica's board of control and data acquisition created firstly at the Federal University of Santa Catarina. This board implemented the communication with the computer through the parallel port.

Keywords: Acquisition and control system, software user interface, acquisition board.

Page 9: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

SUMÁRIO

ix

SUMÁRIO

LISTA DE FIGURAS ............................................................................................................... xi

LISTA DE TABELAS ............................................................................................................ xiii

SIMBOLOGIA ........................................................................................................................ xiv

INTRODUÇÃO .......................................................................................................................... 1

CAPÍTULO 2

HARDWARE DE CONTROLE E AQUISIÇÃO DE DADOS ................................................. 4

2.1 CONSIDERAÇÕES INICIAIS .................................................................................. 4

2.2 CONCEITOS, CARACTERÍSTICAS E COMPARAÇÕES ..................................... 4

2.3 DESCRIÇÃO DO HARDWARE DE PROJETO ...................................................... 5

2.3.1 MICROCONTROLADOR PIC18F4550 ........................................................... 6

2.3.2 COMUNICAÇÃO USB ..................................................................................... 8

2.3.3 CONVERSÃO DIGITAL/ANALÓGICA .......................................................... 9

2.3.4 PROGRAMAÇÃO PIC18F4550 ...................................................................... 11

2.3.5 PROTEÇÕES E SINCRONISMOS ................................................................. 16

2.3.5.1 BUFFER ....................................................................................................... 16

2.3.5.2 CONDICIONADORES DE SINAL ............................................................. 17

2.3.5.3 ISOLADORES ............................................................................................. 18

2.3.5.4 FONTE SIMÉTRICA ................................................................................... 18

2.3.6 INSTALAÇÃO DA PLACA ............................................................................ 19

2.3.7 DETALHES DE HARDWARE E COMUNICAÇÃO .................................... 23

2.4 CONSIDERAÇÕES FINAIS ................................................................................... 24

CAPÍTULO 3

SOFTWARE E INTERFACE COM O USUÁRIO ................................................................. 25

3.1 CONSIDERAÇÕES INICIAIS ................................................................................ 25

3.2 SOFTWARES PARA COMUNICAÇÃO DE DADOS .......................................... 25

3.3 INTERFACE COM O PROGRAMA MATLAB ..................................................... 26

3.4 SIMULINK ............................................................................................................... 29

3.4.1 S-FUNCTIONS ................................................................................................ 31

3.4.2 SAÍDA ANALÓGICA ..................................................................................... 33

3.4.3 ENTRADA ANALÓGICA .............................................................................. 33

3.4.4 LEITURA DIGITAL ........................................................................................ 35

3.4.5 SAÍDA DIGITAL ............................................................................................. 35

Page 10: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

SUMÁRIO

x

3.4.6 PWM ................................................................................................................. 36

3.4.7 RELÓGIO DE TEMPO REAL ........................................................................ 37

3.5 GUI ........................................................................................................................... 38

3.6 TEMPO DE AMOSTRAGEM ................................................................................. 39

3.7 INTERFACE COM O PROGRAMA SCILAB ....................................................... 40

3.8 SCICOS .................................................................................................................... 41

3.9 CONSIDERAÇÕES FINAIS ................................................................................... 42

CAPÍTULO 4

IMPLEMENTAÇÕES PRÁTICAS ......................................................................................... 43

4.1 CONSIDERAÇÕES INICIAIS ................................................................................ 43

4.2 AMBIENTE DE TRABALHO GRÁFICO .............................................................. 43

4.3 CÓDIGO PARA MODELAGEM DE UM SISTEMA ............................................ 49

4.4 CONSIDERAÇÕES FINAIS ................................................................................... 50

CAPÍTULO 5

CONCLUSÃO E TRABALHOS FUTUROS .......................................................................... 51

REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................................... 53

APÊNDICE A – CÓDIGOS DESENVOLVIDOS NO TRABALHO ..................................... 55

Page 11: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

LISTA DE FIGURAS

xi

LISTA DE FIGURAS

Figura 2.1 – Esquema geral da placa de controle e aquisição .................................................... 6

Figura 2.2 – Esquemático microcontrolador PIC18F4550 ......................................................... 7

Figura 2.3 – Tipos de comunicação em relação as suas velocidades ......................................... 9

Figura 2.4 – Esquema elétrico geral detalhado da “DAQ board”.............................................. 9

Figura 2.5 – Conversor digital-analógico TLC5615cp da Texas Instruments ......................... 10

Figura 2.6 – buffer de tensão .................................................................................................... 16

Figura 2.7 – Circuito com buffer e sincronizador de tensão para saída analógica ................... 17

Figura 2.8 – Circuito com buffer e sincronizador de tensão para entrada analógica ............... 18

Figura 2.9 – Circuito isolador de PWM ................................................................................... 18

Figura 2.10 – Fonte simétrica (-12V e +12V). ......................................................................... 19

Figura 2.11 – Primeira tela de instalação da placa ................................................................... 20

Figura 2.12 – Segunda tela de instalação da placa ................................................................... 20

Figura 2.13 – Terceira tela de instalação da placa ................................................................... 21

Figura 2.14 – Quarta tela de instalação da placa ...................................................................... 21

Figura 2.15 – Quinta tela de instalação da placa ..................................................................... 22

Figura 2.16 – Gerenciador de dispositivos ............................................................................... 22

Figura 2.17 – Placa de controle e aquisição conectada ao computador ................................... 24

Figura 3.1 – Ambiente de desenvolvimento de programas de controle ................................... 26

Figura 3.2 – Biblioteca de blocos Simulink fornecida com os arquivos de projeto ................. 30

Figura 3.3 – Modelo teste Simulink com procedimento de inicialização e finalização do

sistema .............................................................................................................................. 31

Figura 3.4 – canal de trabalho deve ser escolhido através de um duplo clique no bloco ......... 33

Figura 3.5 – A entrada do bloco é utilizada para definir o valor analógico na saída do canal . 33

Figura 3.6 – O canal receptor e o tempo de amostragem do bloco devem ser definidos. ........ 34

Figura 3.7 – Exemplo de aplicação do bloco ........................................................................... 34

Figura 3.8 – Exemplo de aplicação da recepção digital. De forma similar ao bloco “AD_pm”

o tempo de amostra e o número do canal também devem ser configurados .................... 35

Figura 3.9 – Configurações do bloco “ENVIA_digital_pm”. .................................................. 36

Figura 3.10 – Aplicação do bloco de envio de valores digitais. A entrada deve ser 0 ou 1 para

nível alto ou baixo digital ................................................................................................. 36

Figura 3.11 – Configurações do bloco de PWM ...................................................................... 37

Figura 3.12 – Na entrada do bloco o duty cycle desejado deve ser aplicado............................ 37

Page 12: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

LISTA DE FIGURAS

xii

Figura 3.13 – Leitura do tempo real do Sistema Operacional e sincronismo deste com o

sistema .............................................................................................................................. 38

Figura 3.14 – Parâmetros do “Real-time Clock”. ..................................................................... 38

Figura 3.15 – Interface de manipulação da placa de controle e aquisição ............................... 39

Figura 3.16 – simples de aquisição analógica a partir de bloco encontrado na biblioteca do

Scicos ................................................................................................................................ 41

Figura 4.1 – Ambiente de controle PID da velocidade de um servo motor ............................. 45

Figura 4.2 – Planta para controle de velocidade do servo motor do kit ED4400B .................. 45

Figura 4.3 – Esquema de controle proporcional do sevo motor do kit ED4400B .................... 46

Figura 4.4 – Controle proporcional aplicado ao servo motor ................................................... 47

Figura 4.5 – Sinal contínuo e saída discretizada equivalente do sinal fornecida pelo Zero-

Order Hold ........................................................................................................................ 47

Figura 4.6 – Controle PI aplicado ao servo motor .................................................................... 48

Figura 4.7 – Resposta ao degrau da planta para posterior modelagem .................................... 49

Page 13: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

LISTA DE TABELAS

xiii

LISTA DE TABELAS

Tabela 2.1 – Programação em formato de máquina de estados................................................ 12

Tabela 3.1 – Funções de comunicação com o protótipo de controle e aquisição ..................... 27

Tabela 3.2 – Parâmetros de uma S-function ............................................................................. 32

Tabela 4.1 – Código de aquisição ............................................................................................. 49

Page 14: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

Siglas e abreviaturas

xiv

Siglas e Abreviaturas:

Símbolo Significado

CA Corrente Alternada

CC Corrente Contínua

CCS Custom Computer Services

CDC Communication Device Class

COM Component Object Model

EEPROM Electrically-Erasable Programmable Read-Only Memory

GUI Graphical User Interface

LPT Line Print Terminal

MIMO Multiple – Input / Multiple - Output

PC Personal Computer

PI Proporcional Integral

PID Proporcional Integral Derivativo

PLL Phase-Locked Loop

PWM Pulse Width Modulation

RAM Random Access Memory

RMS Root Mean Square

RS232 Protocolo de Comunicação Serial

SIE Serial Interface Engine

SISO Single – Input / Single - Output

SPP Serial Port Profile

UFC Universidade Federal do Ceará

UFSC Universidade Federal de Santa Catarina

USB Universal Serial Bus

Page 15: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

Introdução

CAPÍTULO 1

INTRODUÇÃO

Na implementação dos sistemas de controle contínuo e discretos são discutidas diferen-

tes formas de leitura de grandezas físicas e de envio de sinais a diferentes atuadores. A busca

constante por ferramentas de aquisição de dados é promovida com a finalidade de alcançar

resultados de menor custo e maior rendimento que se adaptem aos requisitos de projeto de

plantas diversas.

O estágio atual em que se encontram os processos científicos, industriais e médicos le-

vam a necessidade do conhecimento e monitoramento de grandezas físicas associadas ao tipo

específico de processo. Na indústria alimentícia, por exemplo, o controle das condições de

produção e armazenagem não seria realizável sem o conhecimento de variáveis tais como

temperatura, umidade, pressão e pH.

Sistemas de aquisição de dados, como o nome sugere, são os produtos ou sistemas usa-

dos para coletar dados ou informações de determinada fonte. Estes sistemas são diferenciados

nas seguintes condições: comunicação serial, “Universal Serial Bus” (USB), portas paralelas e

placas plug-in. O conceito de aquisição pode ser mais bem definido como o processo de ob-

tenção de dados do mundo real que produz informações passíveis de manipulação em softwa-

re. As variáveis adquiridas podem ser armazenadas no computador e o controle destas pode

também ser realizado com o uso de linguagens de programação como Basic ou C, por exem-

plo.

Assim como em cursos de engenharia, em processos industriais sistemas de aquisição e

controle se tornam essenciais na composição de estruturas de controle quase sempre funda-

mentais sejam em laboratórios de universidades ou em processos generalizados na indústria.

A crescente necessidade de um hardware prático que realize a aquisição de informações

de um meio físico para um meio computacional levou a popularização das chamadas “Data

Acquisition Boards” ou “DAQ Boards”, placas constituídas de ferramentas capazes de adqui-

rir grandezas digitais e analógicas e repassá-las a um computador. Nesse contexto, os micro-

controladores, circuitos integrados programáveis, são bastante utilizados por conterem em

uma mesma pastilha a maioria dos blocos funcionais necessários a um sistema de aquisição de

dados (França, 1997).

Soluções comerciais de plataformas de aquisição ou “DAQ Boards” que atendem dife-

rentes níveis de complexidade estão disponíveis atualmente no mercado. Devido aos elevados

Page 16: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

2

Introdução

custos embutidos nesses sistemas de aquisição e monitoramento de dados, é importante a pes-

quisa e o desenvolvimento de novas alternativas feitas pelos alunos nas universidades, que

visam baixar os custos para a indústria e ao mesmo tempo proporcionarem uma funcionalida-

de tão boa quanto às existentes em soluções desenvolvidas por grandes empresas do ramo da

automação (Coelho et al., 2001).

O presente trabalho busca o desenvolvimento de um hardware funcional de aquisição e

controle aplicável em controle de processos e de ferramentas computacionais que possibilitem

a elaboração de códigos de controle sobre as plantas dos processos independentemente de sua

área de aplicação. O sistema projetado é composto basicamente de funções e interfaces gráfi-

cas de fácil entendimento ao usuário elaboradas em software alocado em um computador pa-

drão e de uma “DAQ Board” com múltiplas funcionalidades. A comunicação entre o hardwa-

re de coleta e o computador que hospeda o software de controle é feita via USB. Esse tipo de

tráfego de dados é vantajoso devido a características próprias da USB, como seu caráter “plug

and play” que possibilita como o próprio nome diz a instalação simplificada do dispositivo

para uso subseqüente. O trabalho desenvolvido aqui tem como base o projeto de uma placa de

controle e aquisição desenvolvida na Universidade Federal de Santa Catarina, UFSC, deno-

minada “Placa Mônica” descrita em (Bittencourt, 2002).

A plataforma construída neste trabalho busca uma solução para aquisição de dados e

controle que opere em velocidade suficiente para ser empregada em quaisquer sistemas de

tempo real, disponibilizando os dados em um computador convencional, onde ferramentas

gráficas e estatísticas podem ser usadas posteriormente na análise dos dados coletados.

O sistema elaborado como um todo consiste de um arranjo de dispositivos que direcio-

nam, sincronizam e compatibilizam a comunicação de dados entre um microcomputador e o

meio externo e de um computador com software capaz de executar controles digitais. Contro-

les estes que poderão ser aplicados em diferentes plantas e em diferentes áreas de estudo, den-

tre as aplicações possíveis podem-se citar como exemplo motores de corrente contínua, tan-

ques de nível de água e incubadoras neonatais. No último exemplo é interessante notar a ne-

cessidade de atuação sobre a umidade relativa e a temperatura do meio.

O objetivo do trabalho é descrever o funcionamento do sistema desenvolvido no contex-

to de promover um meio de aquisição de dados e controle de baixo custo para aplicação em

estudos acadêmicos de controle e automação ou projetos industriais.

Neste capítulo, um conceito inicial sobre sistemas de aquisição e uma discussão sobre a

necessidade destes são introduzidos como base para o entendimento dos capítulos que se se-

guem.

Page 17: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

3

Introdução

No capítulo 2 é feita a análise do hardware de projeto e de suas características como ti-

po de comunicação, ferramenta microcontrolada utilizada, funcionalidades e construção. É

destacado também o emprego da plataforma ou a posição que esta ocupa em meio ao ciclo de

controle.

No capítulo 3 uma descrição detalhada do software desenvolvido bem como das funções

e interfaces gráficas são discutidas levando em consideração vantagens e desvantagens da uti-

lização dos diferentes pacotes de softwares existentes para criação, Matlab/Simulink e Sci-

lab/Scicos. Neste capítulo é possível obter uma visualização clara de como o usuário poderá

desenvolver seu código ou interface de controle a partir das estruturas fornecidas pelo projeto.

O capítulo 4 segue na seqüência lógica de trabalho evidenciando possíveis aplicações

em que o protótipo pode ser empregado. Com o conhecimento geral do sistema adquirido nos

capítulos anteriores é possível o entendimento do funcionamento a partir de exemplos práticos

de comum emprego de controle.

Ao final do trabalho são apresentadas as conclusões e algumas sugestões para trabalhos

futuros, presentes no capítulo 5.

Nos apêndices são apresentados os códigos implementados.

Page 18: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

CAPÍTULO 2

HARDWARE DE CONTROLE E AQUISIÇÃO DE DADOS

2.1 - CONSIDERAÇÕES INICIAIS

Este capítulo apresenta uma descrição detalhada da plataforma física para emprego em

processos de controle bem como de suas funcionalidades e características intrínsecas. A fer-

ramenta microcontrolada PIC 18F4550 é abordada para melhor conhecimento do sistema e o

processo de instalação do equipamento é detalhado. O padrão de comunicação USB também é

discutido dado seu uso no interfaceamento entre “DAQ Board” e computador.

O emprego do material em meio aos processos de controle é relatado tendo em vista o

estabelecimento de possíveis aplicações. As vantagens e desvantagens em relação a soluções

comerciais existentes também são debatidas.

2.2 - CONCEITOS, CARACTERÍSTICAS E COMPARAÇÕES

A placa microcontrolada para consecução de dados e controle descrita aqui de modo

semelhante a “Placa Mônica” citada em (Bittencourt, 2002) atua como uma ponte de comuni-

cação entre um microcomputador e o meio externo. A placa em questão pode ser mais facil-

mente entendida como uma placa de aquisição e controle externo de dados acessíveis ao usuá-

rio.

O modelo de aquisição é mencionado aqui devido à adaptação simples permitida da pla-

ca a elementos básicos formadores de um sistema de aquisição. Um sistema manipulador de

informações (aquisição) é basicamente composto pelas seguintes partes: senso-

res/transdutores, condicionadores de sinais, conversor A/D, controles associados e programa.

As partes mencionadas e a correta adequação destas as características da placa serão discuti-

das posteriormente.

A real diferença entre a placa Mônica já mencionada e a placa discutida aqui consiste

basicamente no modo de comunicação entre o microcontrolador utilizado e o computador de

interface com o usuário. A comunicação utilizada é do tipo USB com emulação serial, isto é,

a velocidade e compactação da comunicação USB são aliadas a simplicidade do já conhecido

e consagrado protocolo de comunicação RS232. Outra característica importante da nova placa

Page 19: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

5

é a característica de circuito Bus-Powered, ou seja, a alimentação é proveniente do próprio

computador utilizado.

As conexões básicas de dispositivos na placa resultam nas seguintes configurações: 6

conversores A/D (0 – 5 volts de entrada), 3 conversores D/A (0 – 5 volts de saída), dois canais

de saída PWM e cinco portas para comunicação digital. As configurações da placa e a comu-

nicação implementada serão explanadas de maneira que permitam a utilização pelo usuário na

configuração de sistemas de controle ou simplesmente de aquisição.

2.3 - DESCRIÇÃO DO HARDWARE DE PROJETO

O esquema elétrico geral da placa produzida pode ser observado na figura 2.1. Como já

mencionado, a placa possui seis entradas analógicas protegidas por esquemas de buffer casa-

dores de impedância. O buffer é implementado a partir de um circuito seguidor de tensão

construído com o amplificador operacional LMC6482AIN. Existem também três saídas ana-

lógicas obtidas pela ligação microcontrolador, PIC18F4550, e conversor digital-analógico,

TLC5615CP. As saídas analógicas apresentam uma faixa de valores de 0 a 5 volts. Vale res-

saltar que as proteções se encontram em placas separadas que foram adaptadas para facilitar o

acoplamento da placa de controle e aquisição.

A placa possui ainda duas saídas de PWM protegidas pelo acoplador óptico 6N137 que

permite trabalho em altas freqüências. O isolamento óptico é essencial no controle de circui-

tos de potência, ele também previne eventuais danos ao computador utilizado já que a alimen-

tação da placa é proveniente da USB do PC. O acoplamento óptico também se encontra em

placa de proteção à parte.

Existem ao todo cinco pinos que servem como entradas ou saídas digitais protegidos por

buffers casadores de impedâncias. O código da placa foi elaborado de modo que haja três en-

tradas e duas saídas digitais totalizando cinco pinos para eventuais comunicações digitais que

venham a ser necessárias como é comum em alguns sensores.

Page 20: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

6

Figura 2.1 – Esquema geral da placa de controle e aquisição.

2.3.1 - MICROCONTROLADOR PIC18F4550

Microcontrolador é um circuito integrado composto por um microprocessador e disposi-

tivos periféricos essenciais para o seu funcionamento como: memória de programa e de da-

dos; e também periféricos acessórios como: interfaces de entrada e saída de dados (Santos,

2009). Os microcontroladores são úteis por permitirem diferentes tipos de aplicações em ele-

trônica através da simples programação e subseqüente gravação do código no dispositivo,

também são funcionais por possuírem diversas funcionalidades compactadas e acessíveis ao

usuário como conversores analógico-digitais, por exemplo.

Esse tipo de pastilha eletrônica é utilizado em diferentes tipos de sistemas embarcados e

é vantajoso por seu baixo custo e possibilidade de adaptação do dispositivo a projetos especí-

ficos. O baixo consumo de energia é outro fator preponderante que justifica sua populariza-

ção.

A capacidade de processamento e de armazenamento é diversificada entre os microcon-

troladores existindo assim famílias de processadores com funções semelhantes. Algumas fa-

mílias são de linhas compactas possuindo, portanto, poucas funções e consumindo menos e-

nergia. Os componentes destas famílias são utilizados na execução de funções simplórias que

não exigem muitos recursos. Outros tipos de pastilha são compostos por maior capacidade de

armazenamento, palavras de bits maiores, diversas funcionalidades e podem ser usados para a

execução de atividades mais complexas. Além das vantagens citadas podem-se citar a portabi-

lidade dos microcontroladores, eliminação da necessidade de vários componentes externos e a

necessidade de pouco tempo para desenvolvimento.

Page 21: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

7

O microcontrolador utilizado no hardware de projeto é o PIC18F4550

(www.microchip.com) que pode ser visualizado na figura 2.2. Considerado um dos dispositi-

vos mais completos de sua categoria ele apresenta funcionalidades tais como:

• Possibilidade de regravação código;

• 1 Módulo Universal Serial Bus (USB). O PIC18F4550 possui um USB SIE (Serial In-

terface Engine) compatível com os modos full-speed e low-speed USB o que possibilita a rá-

pida comunicação entre um host USB e o microcontrolador. Além disso, o módulo USB pos-

sui 16 endpoints (locais físicos onde é armazenado o fluxo de dados) bidirecionais e suporta

até quatro tipos de transferências: controle, interrupção, isossíncrona e de massa.

• 13 Conversores analógico-digitais de 10 bits. Seis dos conversores são utilizados;

• Memória de programa Flash com 32 Kbytes;

• Memória de dados EEPROM 256 Bytes;

• Memória RAM 2 Kbytes;

• Freqüência de operação de até 48 MHz;

• Portas de entrada e saída: A, B, C, D e E;

• 4 Timers;

• 1 Módulo Capture/Compare/PWM;

• 2 Comparadores;

• 1 Streaming Parallel Port (SPP).

Figura 2.2 – Esquemático microcontrolador PIC18F4550.

O PIC 18F4550 foi escolhido como ferramenta de trabalho por possuir um conjunto de

funcionalidades de hardware que permitem a implementação de operações diversas. A diver-

Page 22: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

8

sificação de aplicações possibilitadas pelo microcontrolador de trabalho é desejável em siste-

mas de aquisição de dados. O dispositivo foi escolhido também porque contém módulo USB

que permite a utilização desse tipo de comunicação.

2.3.2 - COMUNICAÇÃO USB

A constante atualização da forma de conexão entre computadores e dispositivos varia-

dos levou o mercado tecnológico a uma ampla difusão da interface USB. Sua versatilidade e

vantagens tornaram esse tipo de comunicação bastante amigável ao usuário, e popularizaram

seu uso na conexão entre computadores pessoais e periféricos, em substituição a interfaces

mais antigas, como as portas serial (COM) e paralela (LPT). A velocidade na transferência de

dados, figura 2.3, e a utilização da tecnologia “Plug and Play” são exemplos de característi-

cas da comunicação USB que vem tornando esta interface cada vez mais dominante na comu-

nicação entre computadores pessoais e periféricos.

Neste trabalho foram aproveitadas as vantagens apresentadas desse tipo de comunicação

como forma de adotar uma estrutura simples e de fácil manuseio para interface da “DAQ Bo-

ard”. O microcontrolador utilizado (PIC18F4550) foi programado para se comportar como

um dispositivo do tipo CDC (Communications Device Class). Dispositivos deste tipo de clas-

se implementam um mecanismo de comunicação de propósito geral que pode ser usado para a

comunicação entre a maioria dos dispositivos existentes. É interessante notar que a utilização

do compilador CCS para programação do PIC18F4550 possibilitou uma simplificação consi-

derável na montagem do algoritmo e na interface com os outros dispositivos além do micro-

controlador na placa. Isto foi possível devido aos drivers intrínsecos ao compilador CCS for-

necidos em forma de bibliotecas. O driver necessário para a comunicação com o dispositivo

CDC também é fornecido no pacote CCS. O compilador e a programação específica do mi-

crocontrolador merecem um item dedicado e serão discutidos mais adiante. Deverá ser deta-

lhada a forma em que se deu a comunicação entre computador e hardware.

Page 23: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

9

Figura 2.3 – Tipos de comunicação em relação as suas velocidades. Fonte - (Santos, 2009).

2.3.3 - CONVERSÃO DIGITAL/ANALÓGICA

Como já mencionado anteriormente a “Data Acquisition Board” do projeto possui três

conversores digital-analógicos que possibilitam saídas de 0 a 5 V na placa a partir de valores

digitais enviados pelo microcontrolador. A conexão entre o PIC18F4550 e os conversores

TLC5615cp utilizados pode ser observada na figura 2.4 que apresenta o esquema elétrico ge-

ral detalhado da placa.

Figura 2. 4 – Esquema elétrico geral detalhado da “DAQ board”.

Page 24: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

10

O TLC5615cp mostrado na figura 2.5 é um conversor da Texas Instruments de apenas

um canal que permite uma entrada serial com valores digitais de 10 bits e saída analógica des-

tes valores com ou sem ganho dependendo da configuração de ligação elabora para o circuito

integrado. O dispositivo de oito pinos possui basicamente três deles dedicados à comunicação

serial que são: DIN, SCLK e CS/. O DIN é o próprio canal de entrada de dados, se a entrada

estiver em nível baixo o bit é interpretado como zero e se em nível alto como um. O SCLK é

o clock do dispositivo que coordena o envio das informações digitais, no processo de envio o

circuito integrado define a entrada de um bit através do pulso gerado no pino SCLK. Isto é,

para transmissão de um bit é necessário que a entrada de clock seja colocada em nível baixo e

após o envio do bit para o pino DIN em nível alto. Este procedimento deve ser efetuado se-

qüencialmente até que os 10 bits permitidos pelo dispositivo sejam recebidos. O pino CS/ é o

pino de load ou carregamento que permite o início da comunicação serial entre conversor e

dispositivo de envio de informações que no presente projeto é o microcontrolador

PIC18F4550. O pino de load habilita a comunicação quando em nível baixo e desabilita

quando em alto.

Figura 2.5 – Conversor digital-analógico TLC5615cp da Texas Instruments.

O pino REFIN do conversor digital-analógico é um pino de referência de tensão e serve

como parâmetro para os valores analógicos da saída. Este circuito integrado permite a utiliza-

ção de um ganho como observado na equação (2.1) que aplicado aos valores de entrada au-

menta os valores de tensão na saída. Isto é essencialmente útil quando se trabalha com gran-

dezas digitais bem pequenas que resultam em valores analógicos também pequenos com o uso

Page 25: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

11

de ganho unitário. A equação para obtenção do sinal analógico definida em (Filho; Reis,

2010) é dada por:

( )1024

10•2= INPUT

REFINOUT

BITSVV (2.1)

A transmissão de dados ao TLC5615cp para obtenção dos valores analógicos na saída

da placa é realizada através de código desenvolvido para o PIC18F4550. Ou seja, uma pro-

gramação para comunicação específica com o DA foi elaborada e compactada em um driver

(código definido para uso geral) criado no compilador CCS, tabela 2.1. O driver é chamado

pelo programa principal do microcontrolador e coordena as atividades dos três circuitos inte-

grados utilizados. Isto é, os pinos de dados, clock e load são sincronizados para o correto en-

vio de dados. O valor de tensão de referência utilizado foi de 2,5V que resulta em um valor

máximo na saída do dispositivo de 5V utilizando 10 bits serializados. A programação especí-

fica de comunicação será explorada no decorrer do trabalho.

2.3.4 - PROGRAMAÇÃO PIC18F4550

A programação do PIC18F4550, peça central do hardware, tendo em vista a implemen-

tação das funcionalidades da placa foi elaborada no compilador CCS em linguagem C. O CCS

fornece completa estrutura lógica de programação e tem baixo custo de trabalho. Este compi-

lador é vantajoso porque é composto por operadores (drivers) que foram empacotados em bi-

bliotecas que são específicas para os microcontroladores PICs. O driver necessário para a co-

municação USB com o dispositivo CDC é fornecido no pacote do compilador.

O conjunto de arquivos de código em C do apêndice A.2 foi reunido para que possibili-

tem a comunicação USB e o correto funcionamento dos dispositivos ligados ao PIC 18F4550.

É importante notar que dentre os códigos do apêndice o “usb_biblioteca.c” foi obtido de (San-

tos, 2009), o programa principal e o driver para comunicação com o conversor digital-

analógico foram criados e os demais códigos foram obtidos do pacote do compilador CCS.

O programa principal do microcontrolador gerado foi organizado de modo que funcione

como uma máquina de estados e possibilite o acesso às diversas funções da placa não somente

através de softwares como Matlab ou Scilab, mas também através de qualquer outro programa

Page 26: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

12

que forneça interface de comunicação serial. É importante lembrar aqui que a comunicação

USB utilizada é emulada serialmente e por isso se fala em interface serial.

A tabela 2.1 mostra com clareza as opções que devem ser enviadas ao microcontrolador

para que as funções da “DAQ Board” mostradas na coluna da direita sejam acessadas por uma

interface serial sem o uso dos softwares ou comandos citados, as funcionalidades das funções

da tabela serão explanadas no próximo capítulo onde o software de comando da placa é abor-

dado. As opções devem ser enviadas em formato hexadecimal por programas como, por e-

xemplo, o comunicador serial “Docklight”.

Tabela 2.1 - Programação em formato de máquina de estados.

Opção Função

1 setpm_pwm_duty(1, duty, 3000) -> “O duty cycle deve ser enviado após

a escolha da opção em formato hexadecimal no caso de comunicação manual

(sem uso da função)”.

2 setpm_pwm_duty(1, duty, 6000) -> “O duty cycle deve ser enviado após

a escolha da opção em formato hexadecimal no caso de comunicação manual

(sem uso da função)”.

3 setpm_pwm_duty(1, duty, 12000) -> “O duty cycle deve ser enviado a-

pós a escolha da opção em formato hexadecimal no caso de comunicação ma-

nual (sem uso da função)”.

4 setpm_pwm_duty(1, duty, 24000) -> “O duty cycle deve ser enviado a-

pós a escolha da opção em formato hexadecimal no caso de comunicação ma-

nual (sem uso da função)”.

5 setpm_pwm_duty(1, duty, 48000) -> “O duty cycle deve ser enviado a-

pós a escolha da opção em formato hexadecimal no caso de comunicação ma-

nual (sem uso da função)”.

6 setpm_pwm_duty(1, duty, 60000) -> “O duty cycle deve ser enviado a-

pós a escolha da opção em formato hexadecimal no caso de comunicação ma-

nual (sem uso da função)”.

7 setpm_pwm_duty(1, duty, 96000) -> “O duty cycle deve ser enviado a-

pós a escolha da opção em formato hexadecimal no caso de comunicação ma-

Page 27: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

13

nual (sem uso da função)”.

8 setpm_pwm_duty(1, duty, 120000) -> “O duty cycle deve ser enviado

após a escolha da opção em formato hexadecimal no caso de comunicação

manual (sem uso da função)”.

9 setpm_pwm_duty(2, duty, 3000) -> “O duty cycle deve ser enviado após

a escolha da opção em formato hexadecimal no caso de comunicação manual

(sem uso da função)”.

10 setpm_pwm_duty(2, duty, 6000) -> “O duty cycle deve ser enviado após

a escolha da opção em formato hexadecimal no caso de comunicação manual

(sem uso da função)”.

11 setpm_pwm_duty(2, duty, 12000) -> “O duty cycle deve ser enviado a-

pós a escolha da opção em formato hexadecimal no caso de comunicação ma-

nual (sem uso da função)”.

12 setpm_pwm_duty(2, duty, 24000) -> “O duty cycle deve ser enviado a-

pós a escolha da opção em formato hexadecimal no caso de comunicação ma-

nual (sem uso da função)”.

13 setpm_pwm_duty(2, duty, 48000) -> “O duty cycle deve ser enviado a-

pós a escolha da opção em formato hexadecimal no caso de comunicação ma-

nual (sem uso da função)”.

14 setpm_pwm_duty(2, duty, 60000) -> “O duty cycle deve ser enviado a-

pós a escolha da opção em formato hexadecimal no caso de comunicação ma-

nual (sem uso da função)”.

15 setpm_pwm_duty(2, duty, 96000) -> “O duty cycle deve ser enviado a-

pós a escolha da opção em formato hexadecimal no caso de comunicação ma-

nual (sem uso da função)”.

16 setpm_pwm_duty(2, duty, 120000) -> “O duty cycle deve ser enviado

após a escolha da opção em formato hexadecimal no caso de comunicação

manual (sem uso da função)”.

17 recebe_pm(1)

Page 28: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

14

18 recebe_pm(2)

19 recebe_pm(3)

20 recebe_pm(4)

21 recebe_pm(5)

22 recebe_pm(6)

23 setpm_pwm_freq(3000, duty) -> “O duty cycle deve ser enviado após a

escolha da opção em formato hexadecimal no caso de comunicação manual

(sem uso da função)”.

24 setpm_pwm_freq(6000, duty) -> “O duty cycle deve ser enviado após a

escolha da opção em formato hexadecimal no caso de comunicação manual

(sem uso da função)”.

25 setpm_pwm_freq(12000, duty) -> “O duty cycle deve ser enviado após a

escolha da opção em formato hexadecimal no caso de comunicação manual

(sem uso da função)”.

26 setpm_pwm_freq(24000, duty) -> “O duty cycle deve ser enviado após a

escolha da opção em formato hexadecimal no caso de comunicação manual

(sem uso da função)”.

27 setpm_pwm_freq(48000, duty) -> “O duty cycle deve ser enviado após a

escolha da opção em formato hexadecimal no caso de comunicação manual

(sem uso da função)”.

28 setpm_pwm_freq(60000, duty) -> “O duty cycle deve ser enviado após a

escolha da opção em formato hexadecimal no caso de comunicação manual

(sem uso da função)”.

29 setpm_pwm_freq(96000, duty) -> “O duty cycle deve ser enviado após a

escolha da opção em formato hexadecimal no caso de comunicação manual

(sem uso da função)”.

30 setpm_pwm_freq(120000, duty) -> “O duty cycle deve ser enviado após

a escolha da opção em formato hexadecimal no caso de comunicação manual

Page 29: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

15

(sem uso da função)”.

31 envia_pm(1, valor) -> “O valor deve ser enviado após a escolha da op-

ção em formato hexadecimal no caso de comunicação manual (sem uso da

função). O valor deve estar entre 0 e 255 para comunicação manual e entre 0 e

5 na utilização da função”.

32 envia_pm(2, valor) -> “O valor deve ser enviado após a escolha da op-

ção em formato hexadecimal no caso de comunicação manual (sem uso da

função). O valor deve estar entre 0 e 255 para comunicação manual e entre 0 e

5 na utilização da função”.

33 envia_pm(3, valor) -> “O valor deve ser enviado após a escolha da op-

ção em formato hexadecimal no caso de comunicação manual (sem uso da

função). O valor deve estar entre 0 e 255 para comunicação manual e entre 0 e

5 na utilização da função”.

34 recebepm_dig(1)

35 recebepm_dig(2)

36 recebepm_dig(3)

37 enviapm_dig(1, 1)

38 enviapm_dig(1, 0)

39 enviapm_dig(2, 1)

40 enviapm_dig(2, 0)

41 Controle de PWM por entrada analógica (AN0 -> PWM1)

42 Controle de PWM por entrada analógica (AN1 ->PWM2)

43 usb_detach(); -> ”Desconecta USB”.

Page 30: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

16

2.3.5 - PROTEÇÕES E SINCRONISMOS

Neste trabalho estão previstos circuitos auxiliares a placa principal com a finalidade de

isolamento e condicionamento de níveis de tensão para adequação em aplicações que necessi-

tam ou fornecem grandezas analógicas com limites superiores aos padrões da “DAQ Board".

2.3.5.1 – BUFFER

Um buffer de tensão é um circuito seguidor de tensão construído com amplificador ope-

racional utilizado para isolar uma fonte de alta impedância de saída de uma carga com baixa

impedância de entrada. Este circuito é também conhecido como acoplador ou casador

de impedâncias. Devido a sua característica de ganho unitário o buffer não fornece ganho de

tensão, entretanto neste circuito é o amplificador operacional e não a fonte de sinal que forne-

ce potência a carga. Isso pode ocasionar ganho de potência na carga alimentada pelo seguidor

de tensão já que o amplificador operacional possui impedância de saída nula e poderá forne-

cer corrente ilimitada a carga, dentro das limitações do componente. Portanto, estes dispositi-

vos são utilizados como forma de garantir acoplamento de impedâncias e ganho de potência

estável.

Conforme observado na figura 2.6 seguidores de tensão estão previstos para as entradas

e saídas digitais assim como entradas e saídas analógicas. Nas entradas e saídas analógicas

circuitos condicionadores de tensão são associados aos buffers.

Figura 2.6 – buffer de tensão.

Page 31: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

17

2.3.5.2 – CONDICIONADORES DE SINAL

O condicionamento de sinal empregado aqui é do tipo alteração de nível e é utilizado

para adequar os níveis de saída analógica a possíveis aplicações que exigiam uma faixa de

tensão maior, ou ainda adequar limites de tensão fornecidos a placa entre os 0 a 5 V das en-

tradas analógicas.

Aliado ao buffer casador de impedâncias descrito na subseção anterior um circuito am-

plificador da saída analógica composto por amplificadores operacionais é mostrado na figura

2.7. O circuito do esquema estende o limite de saída analógica de 0 a 5 V para -10 V a +10 V

teóricos onde 0 V corresponde a -10V e 5 V a +10 V. A malha é composta pelo seguidor de

tensão continuado por uma configuração de amplificador diferença, donde é obtida uma faixa

de -2,5 V a +2,5 V, e é finalizada por um amplificador não-inversor que eleva os limites do

estágio anterior a -10 V e +10 V.

Figura 2.7 – Circuito com buffer e sincronizador de tensão para saída analógica.

De modo similar às saídas analógicas, o casador de impedâncias é empregado em conjunto

com circuitos condicionadores nas entradas analógicas. Assim, como pode ser visto na figura

2.8 o circuito condicionador é projetado para adaptar uma faixa analógica de -10 V a +10 V a

faixa de trabalho das entradas analógicas que está entre 0 e 5 V. O valor de -10 V corresponde

a 0 V e o valor +10 V ao limite de 5 V. O buffer que é empregado após um divisor resistivo é

ligado a um somador inversor cuja finalidade é fornecer a grandeza analógica em valor positi-

vo. Após o somador é utilizado um amplificador em configuração inversora de ganho 0.5, a

saída do conjunto resulta na amplitude de saída desejada.

Page 32: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

18

Figura 2.8– Circuito com buffer e sincronizador de tensão para entrada analógica.

2.3.5.3 – ISOLADORES

São utilizados acopladores ópticos nas saídas de PWM com a finalidade de eliminar

tensões de modo comum com valores suficientemente elevados que possam vir a causar danos

ao sistema de aquisição. O componente empregado, 6N137, é capaz de isolar com total segu-

rança dois circuitos eletrônicos mantendo uma comunicação ou controle entre ambos. O iso-

lamento é garantido porque não existe contato elétrico entre o sinal emitido de PWM e a saída

do acoplador como é observado na figura 2.9.

Figura 2.9– Circuito isolador de PWM.

2.3.5.4 – FONTE SIMÉTRICA

Tendo em vista alimentar os circuitos das figuras 2.7 e 2.8 uma nova placa auxiliar de

fonte simétrica se junta ao kit de desenvolvimento composto pelos componentes de hardware

já descritos. Portanto, de acordo com a figura 2.10 os valores de -12V e +12V são fornecidos

Page 33: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

19

a partir da construção de uma fonte simétrica de comum utilização que é formada por um reti-

ficador de onda completa e por reguladores de tensão para +12V e -12V.

Figura 2.10 – Fonte simétrica (-12V e +12V).

2.3.6 - INSTALAÇÃO DA PLACA

A instalação do sistema é dada de modo bastante simples. Quando o sistema é conecta-

do ao computador o usuário é interrogado quanto ao driver de instalação. O driver é um ar-

quivo fornecido na instalação do CCS C Compiler que se encontra na pasta de instalação

\...\PICC\Drivers e são os arquivos cdc9Xpt1.inf, cdc9Xpt2.inf, cdc_NTXP.inf e

cdc_NTXPVista.inf, respectivamente para os sistemas operacionais Windows 9xpt1, 9xpt2,

NT/XP e Vista. No término da instalação é possível fazer a comunicação USB com o sistema.

Ao conectar o dispositivo e concluir a instalação é adicionada uma nova porta serial ao com-

putador.

A observação de qual porta serial foi adicionada é essencial na escolha do parâmetro

que deve ser passado a função “inicializa(porta)”, função de software que será discutida no

próximo capítulo. O número da porta serial adicionada pode ser verificado através do “Geren-

ciador de dispositivos”, Painel de controle > Sistema > Hardware, no item “Portas (COM &

LPT)”.

O passo a passo da instalação pode ser observado nas figuras 2.11 a 2.16 para o Win-

dows XP. Para outros Sistemas Operacionais Windows o procedimento é bastante similar ao

demonstrado. Após a conexão do dispositivo USB da placa o Sistema Operacional interroga o

usuário conforme mostrado na figura 2.11. A última opção deve ser marcada e logo após o

botão “Avançar” deve ser pressionado.

Page 34: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

20

Figura 2.11 – Primeira tela de instalação da placa.

A janela para indicação do caminho a ser tomado pelo assistente de instalação aparecerá

logo em seguida, figura 2.12. A segunda opção deve ser marcada para uma indicação mais

rápida e precisa da pasta onde se encontra o Hardware.

Figura 2.12– Segunda tela de instalação da placa.

Page 35: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

21

A pasta onde se encontra o driver a ser instalado deve ser indicada na figura 2.13.

Figura 2.13 – Terceira tela de instalação da placa. Após encontrar o Hardware é comum que o Assistente encontre mais de uma opção

disponível. O usuário deve selecionar aquela solução compatível com seu Sistema Operacio-

nal, figura 2.14.

Figura 2.14 – Quarta tela de instalação da placa.

Page 36: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

22

Caso a instalação seja concluída com sucesso o usuário do sistema chegará à janela

mostrada na figura 2.15.

Figura 2.15 – Quinta tela de instalação da placa.

Como já dito anteriormente a porta COM serial instalada pode ser observada no

"Gerenciador de dispositivos", figura 2.16. Observar que a porta serial adicionada foi a

COM3 no exemplo.

Figura 2.16 – Gerenciador de dispositivos.

Page 37: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

23

2.3.7 - DETALHES DE HARDWARE E COMUNICAÇÃO

Como pode ser observado no esquemático da figura 2.4 o microcontrolador apresenta

geração de clock através do oscilador primário, ou seja, um cristal externo de 20 MHz é loca-

lizado junto ao PIC18F4550. O dispositivo USB deve ser configurado para operar com 6

MHz, caso esteja configurado para transmissão Low Speed e 48MHz caso esteja configurado

para transmissão Full Speed. Neste trabalho é adotado o segundo tipo de comunicação, a de-

finição do tipo adotado ocorre através da configuração em software dos bits do dispositivo

central.

O PLL (Phase Locked Loop - Laço Travado em Fase) do dispositivo microcontrolado é

um módulo que provoca pré e pós-escalamento dos valores de clock do núcleo do microcon-

trolador e do circuito USB. Assim como o PLL existem também diretivas de configuração

denominadas USBDIV e NOUSBDIV projetadas para configurar o clock do dispositivo USB

integrado ao microcontrolador. O oscilador é definido aqui como HSPLL (oscilador a cristal

de alta velocidade com PLL habilitado). Os bits de configuração definidos neste sistema são:

USBDIV, PLL5 e CPUDIV1. Isso significa que é utilizado o módulo PLL pré escalar com a

configuração PPL5, onde o cristal externo de 20 MHz é divido por cinco gerando uma fre-

qüência de 4 MHz. Este valor é o adequado para a geração de 96 MHz no PLL. O sinal de 96

MHz é encaminhado para dois módulos diferentes, USBDIV, que divide o sinal por dois ge-

rando uma freqüência de 48 MHz para o módulo USB, e PLL pós escalar, onde o sinal é tam-

bém dividido por dois de acordo com a diretiva CPUDIV1 e é enviado para o núcleo do mi-

crocontrolador. Portanto, a configuração em código permite que microcontrolador e periférico

USB trabalhem com a mesma freqüência de 48 MHz (Santos, 2009) no modo Full Speed.

Outro detalhe importante visualizado na figura 2.4 é a alimentação do circuito da placa

de controle e aquisição através do próprio dispositivo USB. A vantagem deste tipo de alimen-

tação é a portabilidade gerada pela diminuição de circuitos presentes.

Um capacitor de 100uF é ligado entre a alimentação e o terra para que seja mantida uma

estabilidade na tensão. Do mesmo modo é feita a conexão do pino Vusb do PIC18F4550, aqui

deve ser empregada uma capacitância em torno de 470nF. O Vusb é uma entrada no micro-

controlador que funciona como alimentação dos resistores pull-up para a detecção da veloci-

dade da transmissão USB, isto é, detecta se o dispositivo opera em modo Full Speed ou Low

Speed, ele funciona ainda como regulador interno de tensão para o dispositivo USB. É válido

Page 38: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 2 – Hardware de controle e aquisição de dados

24

notar que o emprego do capacitor no Vusb é uma recomendação do fabricante do dispositivo

para manter a estabilidade do circuito USB interno ao PIC. O capacitor deve ser do tipo cerâ-

mico multicamada para uma melhor estabilidade na comunicação.

A possibilidade de simulação de comunicação USB fornecida a partir da versão 7.4 do

software Proteus facilitou e abreviou a fase de testes de hardware. Os arquivos de simulação

no Proteus se encontram na pasta de arquivos do kit de desenvolvimento e são disponibiliza-

dos ao usuário do sistema. A placa construída é mostrada na figura 2.17.

Figura 2.17 – Placa de controle e aquisição conectada ao computador.

2.4 - CONSIDERAÇÕES FINAIS

Neste capítulo foi apresentada a construção do hardware do kit de desenvolvimento cri-

ado para controle e aquisição em processos. Entende-se por hardware a “DAQ Board” discu-

tida aliada aos circuitos auxiliares de sincronismo. Existe um foco importante na caracteriza-

ção das funcionalidades da placa assim como também ocorre na implementação da comunica-

ção USB emulada serialmente. Detalhes importantes no estabelecimento da comunicação

USB são explanados, a localização do capacitor no pino Vusb é um exemplo. A instalação da

placa de aquisição é ainda descrita tendo em vista a formação completa de um conjunto de

informações que possibilitem a reprodução e utilização do material gerado.

Page 39: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

CAPÍTULO 3

SOFTWARE E INTERFACE COM O USUÁRIO

3.1 - CONSIDERAÇÕES INICIAIS

O presente capítulo tem por finalidade apresentar os softwares utilizados para estabele-

cer comunicação e controle com a placa de trabalho e os códigos criados que são fornecidos

na pasta de projeto junto a “DAQ Board”. Os arquivos de código fornecidos são funções pré-

definidas que simplificam a operação do sistema desenvolvido. Neste capítulo também é a-

bordada a elaboração de interfaces gráficas de software e sua respectiva aplicação.

3.2 – SOFTWARES PARA COMUNICAÇÃO DE DADOS

Existem possibilidades diversas para implementação e simulação de sinais de controle.

Os softwares empregados no controle digital são, em geral, compostos de ambientes gráficos

que facilitam a construção de modelos de sistemas simbolicamente. Dentre as opções disponí-

veis o pacote Matlab/Simulink bem como o Scilab/Scicos são ferramentas que podem ser uti-

lizadas para esta finalidade, destacando-se o Scilab por ser um software livre. As ferramentas

(toolboxes) que compõem os pacotes tornam-se atualmente mais atrativas em ambiente de

simulação.

Conforme pode ser observado na figura 3.1 o ambiente de desenvolvimento de progra-

mas propicia funcionalidades essenciais ao usuário. O toolbox de controle é constituído de

metodologias para desenvolvimento e análise de sistemas de controle tais como métodos para

representação de sistemas, análise de respostas em freqüência e resposta temporal, entre ou-

tras. O ambiente gráfico permite o desenvolvimento de sistemas de controle de forma gráfica

ou simbólica. Real Time, DLL’s etc., correspondem a rotinas geralmente desenvolvidas em

linguagens de alto nível que fazem a comunicação do sistema com hardware de aquisição e

processamento de informação. Outros toolboxes para as mais diferentes aplicações também

estão disponíveis (Filho; Reis, 2010).

Page 40: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

26

Figura 3.1 – Ambiente de desenvolvimento de programas de controle. Fonte – (Coelho et al., 2001).

Através do software de análise em comunicação com o hardware de aquisição é possí-

vel obter a resposta temporal, estudar a estabilidade, projetar controladores digitais e efetuar

tarefas de modelagem de um determinado sistema. O programa localizado em um computador

padrão também é responsável pela comunicação com o processo, monitoramento e aciona-

mento em ensaios de malha aberta e malha fechada de sistemas linear SISO (“single-input,

single output”) e MIMO (“multiple-input, multiple-output”).

3.3 - INTERFACE COM O PROGRAMA MATLAB

Tendo em vista o crescente uso do software Matlab na área de Controle de Processos e a

necessidade do fornecimento de comandos práticos para utilização do hardware, funções para

o pacote foram criadas para comunicação com a placa de aquisição de dados. Expõe-se aqui o

Matlab como uma ferramenta computacional de alto desempenho aplicada ao desenvolvimen-

to de controle de sistemas. O desenvolvimento de código nessa ferramenta é facilitado pela

linguagem de alto nível empregada no software e também pela possibilidade da análise da ve-

locidade de execução das funções através de recursos como, por exemplo, o “profiler”. O

“profiler” permite a visualização do tempo empregado para execução de cada linha de código

de um arquivo padrão do Matlab e posterior otimização do programa pelo aprimoramento das

funções que levam maior tempo de processamento.

As funções de comando da placa são disponibilizadas em uma pasta digital que acom-

panha a “DAQ Board” compreendendo assim um kit de desenvolvimento que pode ser facil-

mente reproduzido. Além dos comandos fornecidos em linguagem padrão do Matlab blocos

gráficos de interface também podem ser encontrados na pasta do pacote. Os últimos serão dis-

cutidos nas próximas seções.

Page 41: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

27

Os códigos estabelecidos utilizados na formulação de programas de controle ou somente

de aquisição envolvem as funcionalidades do hardware como, por exemplo, aquisição analó-

gica ou PWM (Pulse-Width Modulation). Existem ainda duas funções responsáveis pela inici-

alização e término da comunicação com o hardware, ou seja, o comando “inicializa (porta)”

deve ser chamado no prompt de comando do Matlab antes do início da transferência de dados

entre placa e computador e a função “finaliza” deve ser invocada ao término da comunicação.

As funções organizadas em forma de biblioteca e criadas através do próprio Matlab são

apresentadas de forma sucinta na tabela 3.1.

Tabela 3.1 - Funções de comunicação com o protótipo de controle e aquisição.

inicializa (porta)

inicializa.m

Função que permite inicialização da comunicação com a placa. O comando

deve ser executado antes do início de qualquer uma das funções abaixo. A função de-

ve obedecer à seguinte sintaxe: “inicializa(‘com1’)”.

finaliza

finaliza.m

Função que permite a correta finalização da comunicação com a placa. O

comando deve ser executado ao término da comunicação estabelecida com a placa.

Sintaxe de chamada no prompt de comando: “finaliza”.

envia_pm (canal, valor)

envia_pm.m

Função que permite enviar uma tensão entre 0 e 5 volts à uma das três saídas

analógicas da placa de aquisição de dados. Assim, o canal deve ser 1, 2 ou 3, e o valor

pode estar entre 0 e 5. Não retorna nenhum valor. A sintaxe deve ser da seguinte for-

ma: “envia_pm(1,4)”.

recebe_pm(canal)

recebe_pm.m

Função que permite ler (receber) uma tensão entre 0 e 5 volts de uma das seis

Page 42: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

28

entradas analógicas da placa de aquisição de dados. Assim, o canal deve ser 1, 2, 3, 4,

5 ou 6 , e o valor retornado é um float entre 0 e 5. A função deve ser implementada

como, por exemplo: “recebe_pm(1)”.

setpm_pwm_freq(freqüência, duty_cycle)

setpm_pwm_freq.m

Função que permite selecionar a freqüência de trabalho e o ciclo de trabalho dos

dois canais PWM ao mesmo tempo. As freqüências podem ser 3khz, 6khz, 12khz,

24khz, 48khz, 60khz, 96khz ou 120khz, passadas como parâmetros 3000, 6000, 12000

e assim por diante. O duty_cycle deve estar entre 0 e 1 onde 0 corresponde a um nível

mínimo de ciclo de trabalho de 0% e 1 a um nível máximo de 100%. Não retorna va-

lor. A sintaxe é da forma: “setpm_pwm_freq(6000,0.5)”.

setpm_pwm_duty(canal, duty_cycle, freqüência)

setpm_pwm_duty.m

Função que permite selecionar o duty cycle do canal de PWM, ou seja, a por-

centagem do período na qual se tem nível lógico alto. Assim, canal deve ser 1 ou 2 e

o duty_cycle deve estar entre 0 e 1 de forma similar a função anterior. As freqüências

podem ser 3khz, 6khz, 12khz, 24khz, 48khz, 60khz, 96khz ou 120khz, passadas como

parâmetros 3000, 6000, 12000 e assim por diante. Não retorna nenhum valor. A sinta-

xe de chamada deve ser similar a: “setpm_pwm_duty(2,0.6,3000)”.

recebepm_dig(canal)

recebepm_dig.m

Função que permite ler (receber) um valor de nível lógico alto ou baixo (5 ou 0

enviapm_dig(canal, valor )

enviapm_dig.m

Função que permite enviar um valor de nível lógico alto ou baixo (5 ou 0 volts

respectivamente) à um dos dois canais digitais de saída da placa de aquisição de da-

dos. Assim, os canais podem ser 1 ou 2 que correspondem aos pinos D0 e D1 e o va-

lor deve ser 1 ou 0. Não retorna nenhum valor. A sintaxe de chamada é da seguinte

forma: “enviapm_dig(1,0)”.

Page 43: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

29

volts respectivamente) à um dos três canais de entrada digital da placa de aquisição de

dados. Assim, o canal deve ser um inteiro 1, 2 ou 3 que correspondem aos pinos RE0,

RE1 E RE2 respectivamente. O valor retornado será 0 ou 1. De forma similar a função

recebe_pm.m um exemplo da sintaxe de chamada é dada por: “recebepm_dig(2)”.

3.4 – SIMULINK

Um dos fatores de grande interesse neste trabalho reside no ambiente Simulink do Matlab.

Nesse ambiente, os sistemas dinâmicos são tratados com base em funções de transferência a

partir de diagramas de bloco. Em um editor de modelos é possível desenvolver modelos de

sistemas dinâmicos utilizando-se de blocos provenientes de uma biblioteca padrão do softwa-

re ou criada em uma interface gráfica de fácil entendimento. O modelo criado pode ser simu-

lado de forma que o usuário possa acompanhar os valores de todas as variáveis envolvidas.

Essas variáveis podem ser visualizadas graficamente através de blocos do tipo “scope” ou po-

dem ser armazenadas na forma de matrizes para manipulação. São parâmetros padrões e que

devem ser definidos na janela de trabalho o tempo de simulação e o tempo de amostragem,

que determinam a velocidade de simulação e a exatidão da solução, à qual se pode chegar por

diversos métodos de integração. É importante notar que as simulações realizadas no Simulink

não se processam comumente em tempo real, característica a ser contornada ainda neste capí-

tulo.

A presente seção aborda de forma detalhada e em caráter tutorial o projeto de utilização

dos blocos de interface gráfica produzidos em ambiente Simulink alocados em uma nova pas-

ta que também é intrínseca ao kit fornecido ao usuário da plataforma. Portanto, visando facili-

tar a transferência de informação, dispõe-se de um Toolkit Simulink especialmente desenvol-

vido para a comunicação com a placa através do uso de ícones característicos de envio, rece-

bimento, relógio de tempo real etc. Com o Toolkit o controle digital pode ser desenvolvido

sem que haja preocupação com questões de hardware como, por exemplo, envio e recebimen-

to de dados para a placa de aquisição e controle. A figura 3.2 mostra os blocos projetados.

Antes de apresentar os blocos Simulink gerados é necessário que o usuário entenda o processo

de inicialização e finalização da “DAQ Board” que sempre deve ser executado no modelo de

trabalho criado.

Page 44: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

30

Figura 3.2 – Biblioteca de blocos Simulink fornecida com os arquivos de projeto.

Antes da simulação do modelo criado com os blocos fornecidos o usuário deve acessar o

menu File > Model Properties > Callbacks e chamar a função “inicializa(porta)” dentro da

moldura “Model start function”, conforme figura 3.3. A função “finaliza.m” também deve ser

escrita em “Simulation stop function”. O procedimento descrito permitirá a correta inicializa-

ção e finalização do modelo. As funções “envia_pm(canal,0)” bem como

“setpm_pwm_duty(canal,0, freqüência)” também podem ser adicionadas ao “stop” do modelo

como forma de retornar algum tipo de controle efetuado ao estado inicial anterior a simulação,

as funções devem ser chamadas quando se trabalha com saídas analógicas e de PWM respecti-

vamente. Um exemplo desenvolvido em Simulink do tipo “mdl”, extensão padrão, se encontra

na pasta digital fornecida já comentada junto à biblioteca de blocos.

Page 45: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

31

Figura 3.3 – Modelo teste Simulink com procedimento de inicialização e finalização do sistema.

Os blocos criados em ambiente Simulink possuem visual similar a aqueles produzidos

no projeto “Placa Mônica” desenvolvido em (Bittencourt, 2002). O diferencial reside na im-

plementação de código, a semelhança gráfica com a “Placa Mônica”, que se comunica via

porta paralela com o computador permite uma familiarização mais rápida com o protótipo de-

senvolvido aqui. As interfaces desenvolvidas são explicitadas individualmente a seguir. As

“S-functions” correspondentes aos blocos podem ser encontradas na pasta de projeto relacio-

nada ao Simulink do kit e devem ser copiadas no diretório padrão de trabalho para que pos-

sam ser utilizadas. A biblioteca dos blocos também pode ser encontrada na mesma pasta com

o nome “PM.mdl”.

3.4.1 – S-FUNCTIONS

A S-function é o código que descreve a atuação de um bloco do Simulink em uma lin-

guagem que pode se codificada em Matlab, C / C++, Fortran ou Ada. As S-functions dos blo-

cos deste projeto foram escritas em Matlab e, portanto foram guardadas em m-files de mesmo

nome das funções.

Page 46: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

32

A codificação em Matlab tem a forma de uma função:

[sys,x0,str,ts] = f (t,x,u,flag,p1,p2,...)

Onde os parâmetros correspondem ao descrito na tabela 3.2.

Tabela 3.2 - Parâmetros de uma S-function.

f Nome da S-function.

t Tempo corrente.

x Vetor de estado.

u Entrada do bloco.

flag Representa uma tarefa a ser desempenhada durante a simulação.

p1, p2, ... São parâmetros adicionais de entrada. Podem ser variáveis definidas no workspace do Ma-tlab ou um valor de entrada de um bloco no

Simulink.

sys É um argumento de retorno genérico. Os va-lores dependem da flag. (Ex: se flag = 3, sys contém a saída da S-function ou do bloco).

x0 Valores iniciais dos estados.

str Reservado para uso futuro. S-functions devem retornar a matriz vazia [].

ts Matriz com duas colunas contendo o interva-lo de amostragem.

Os códigos das S-functions construídas para cada bloco representativo do Simulink po-

dem ser encontradas no apêndice A.4. É interessante notar que nos códigos produzidos o pa-

râmetro “ts” não é utilizado já que o tempo de amostragem é definido como uma entrada em

cada bloco e é obtido pelo bloco de relógio digital do Simulink. Logo, internamente a cada

bloco o relógio digital é conectado e o tempo de amostragem é representado então pelo parâ-

metro de entrada “u”. Os parâmetros de entrada que devem ser configurados no Simulink co-

mo o canal ou duty cycle, por exemplo, são representados por “p1” e “p2”

Page 47: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

33

3.4.2 – SAÍDA ANALÓGICA

O bloco denominado “DA_pm” implementa a função “envia_pm.m”, presente na tabela

3.1, que permite enviar uma tensão entre 0 e 5 volts à uma das três saídas analógicas da placa

de aquisição de dados. O bloco pode ser visto na figura 3.5, um duplo clique no “DA_pm”

possibilita a escolha do parâmetro “Canal”, ou seja, o usuário digita em qual canal quer a sua

saída analógica como é observado na figura 3.4. A entrada do bloco é utilizada para definir o

valor de tensão na saída do canal. O “DA_pm” permite a manipulação dos componentes digi-

tal-analógico do hardware de controle e aquisição e pode ser aplicado como saída para um

determinado controle digital ou mesmo envio de sinal de referência. É importante notar que

as telas de interface de parâmetros são similares aquelas do projeto placa Mônica (Bittencourt,

2002), as configurações visuais são mantidas deste modo como forma de aproveitar a familia-

rização já existente do usuário com a placa de referência do projeto.

Figura 3.4 - O canal de trabalho deve ser escolhido através de um duplo clique no bloco.

Figura 3.5 - A entrada do bloco é utilizada para definir o valor analógico na saída do canal.

3.4.3 – ENTRADA ANALÓGICA

O bloco “AD_pm” executor da função “recebe_pm.m”, tabela 3.1, é responsável pela

leitura de um valor analógico obtido através do conversor A/D do microcontrolador localiza-

Page 48: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

34

do na placa de aquisição. A grandeza é disponibilizada ao usuário por meio de uma saída que

pode ser visualizada em um gráfico por exemplo. Um duplo clique no bloco da figura 3.7

possibilita a escolha dos parâmetros da figura 3.6. O canal de leitura deve ser escolhido em

“Canal A/D”, o tempo de amostragem também deve ser definido em “Sample Time”. O bloco

“AD_pm” é importante na captura de sinais analógicos de sensores e permite que estes valo-

res sejam trabalhados com as ferramentas de cálculo do Simulink.

Figura 3.6 - O canal receptor e o tempo de amostragem do bloco devem ser definidos.

Figura 3.7 - Exemplo de aplicação do bloco.

Page 49: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

35

3.4.4 – LEITURA DIGITAL

O bloco “RECEBE_digital_pm” implementa a função “recebepm_dig.m”, tabela 3.1.

Ou seja, o bloco efetua a leitura de valores das portas digitais do protótipo de aquisição. Os

parâmetros passados a interface da figura 3.8 são semelhantes a aqueles passados na figura

3.6. A saída do “RECEBE_digital_pm” representa o valor aquisitado. As entradas digitais são

importantes em algumas situações comuns em eletrônica como a captura de sinais de sensores

ou cascateamento de microntroladores, por exemplo. Existem sensores que implementam um

protocolo de comunicação próprio e fornecem informações digitais donde se obtém a necessi-

dade de entradas e saídas que possibilitem esse tipo de comunicação. O SHT75 da empresa

Sensirion é um tipo de sensor digital que envia dados binários quando em comunicação com

um microcontrolador (www.sensirion.com/en/01_humidity_sensors).

Figura 3.8 - Exemplo de aplicação da recepção digital. De forma similar ao bloco “AD_pm” o tempo de amos-

tra e o número do canal também devem ser configurados.

3.4.5 – SAÍDA DIGITAL

A interface “ENVIA_digital_pm” implementa a função “enviapm_dig.m”, tabela 3.1, e

é responsável pelo envio de valores digitais, 0 ou 1, que são as saídas responsáveis pelo for-

necimento de grandezas em nível baixo ou alto da “DAQ Board”. O bloco é observado na fi-

gura 3.10 enquanto os parâmetros de ajuste canal e tempo de amostragem na figura 3.9. Esse

Page 50: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

36

bloco é essencialmente importante em acionamentos que exigem uma saída em nível alto ou

baixo.

Figura 3.9 - Configurações do bloco “ENVIA_digital_pm”.

Figura 3.10 - Aplicação do bloco de envio de valores digitais. A entrada deve ser 0 ou 1 para nível alto ou baixo

digital.

3.4.6 – PWM

O “PWM_pm” executor da função “setpm_pwm_duty.m”, tabela 3.1, possibilita a con-

figuração de um sinal PWM de saída através do ajuste dos parâmetros canal, freqüência e ci-

clo de trabalho. O ciclo de trabalho ou duty cycle é escolhido na entrada do bloco e varia entre

0 e 1 assim como ocorre na função que este implementa, figura 3.12. Os parâmetros a serem

definidos freqüência, canal e tempo de amostra são acessados por um duplo clique na figura e

são observados na figura 3.11.

Page 51: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

37

Figura 3.11 - Configurações do bloco de PWM.

Figura 3.12 - Na entrada do bloco o duty cycle desejado deve ser aplicado.

3.4.7 – RELÓGIO DE TEMPO REAL

Como já discutido anteriormente um dos grandes problemas de simulação é a distinção entre

tempo de simulação e tempo real de processo, ou seja, a simulação se torna mais rápida que o proces-

so. Tendo em vista tal situação, uma solução prática foi adotada em ambiente Simulink para obtenção

de ensaios de acordo com o tempo real de execução. O processo para gerar o relógio de tempo real,

figura 3.13, é bastante simples e é descrito no parágrafo a seguir.

Na pasta relacionada ao Simulink presente junto ao kit de projeto existe um código em lingua-

gem C denominado “rtclock.c”, a este código deve ser aplicado o comando “mex” do Matlab como

forma de produzir um arquivo “mex” padrão do software. Logo após este procedimento o arquivo

“rtc.m” também presente na pasta mencionada deve ser executado. A seqüência descrita produzirá um

arquivo modelo do Simulink “rtc”, o modelo possuirá o relógio de tempo real. O bloco criado permite

ao modelo rodar em um tempo aproximadamente real onde a tolerância se adéqua aos objetivos do

sistema desenvolvido. A figura 3.14 mostra os parâmetros que devem ser passados, tempo de sincro-

nismo e tolerância entre o tempo real e de simulação. A interface deve ser copiada para o modelo de

simulação do usuário.

Page 52: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

38

Figura 3.13 - Leitura do tempo real do Sistema Operacional e sincronismo deste com o sistema.

Figura 3.14 – Parâmetros do “Real-time Clock”.

3.5 – GUI

Uma interface GUI (Graphical User Interface) do Matlab foi criada de modo que even-

tuais testes possam ser efetuados na placa de maneira bastante intuitiva. Conforme é visuali-

zado na figura 3.15, todas as funcionalidades da placa são abrangidas e o envio e recepção de

dados se tornam simples devido a configuração gráfica. A interface observada na figura 3.15

é útil porque possibilita testes rápidos das funcionalidades do sistema como, por exemplo, ve-

rificar o recebimento de dados de um sensor intrínseco ao processo.

Page 53: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

39

Figura 3.15 – Interface de manipulação da placa de controle e aquisição.

A interface é dividida em cinco agrupamentos de funções e possui o procedimento de

inicialização e finalização similar ao já comentado, apenas com a diferença de que tal proce-

dimento é realizado agora por botões no canto inferior da tela. O quadrante superior esquerdo

permite a manipulação dos dois canais de PWM onde é possível ativar individualmente ou

coletivamente os canais. O quadrante superior direito realiza a leitura analógica dos canais

A/D pelo pressionamento dos botões. O quadrante inferior esquerdo está relacionado à saída

analógica e o direito a um ajuste do duty cycle do PWM de acordo com os níveis de tensão

lido em duas das entradas analógicas da placa. O agrupamento inferior da tela corresponde ao

trabalho com as entradas e saídas digitais.

3.6 – TEMPO DE AMOSTRAGEM

O tempo de amostragem é uma discussão importante e serve como critério de avaliação

de desempenho das “DAQ Boards”. O tempo de amostragem obtido por software varia de a-

cordo com o a capacidade de processamento de cada computador, pois este tempo é o período

gasto pelo Matlab para executar cada iteração de aquisição, o que torna o tempo de amostra-

gem variável também na execução do programa.

Page 54: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

40

Os testes realizados em Simulink apresentaram ótimos resultados com um tempo de

amostragem em torno de 30 ms com a ressalva de que esse período pode ser ainda minimiza-

do. Um sistema computacional é considerado como um sistema em tempo real se ele proces-

sar os cálculos em períodos de amostragem bem menores que a dinâmica da planta, ou seja, a

sua constante de tempo deve ser grande em relação ao tempo de amostragem obtido (Teixeira,

2008). Considerando que em um motor o tempo de subida à entrada degrau é de aproximada-

mente 200 ms e em um sistema de tanque este tempo é de 1 s pode-se afirmar que o protótipo

desenvolvido se adéqua muito bem a processos laboratoriais e industriais.

3.7 – INTERFACE COM O PROGRAMA SCILAB

De forma similar ao programa Matlab, no software livre Scilab foram desenvolvidas

funções de comunicação com a placa de aquisição de modo que o protocolo de comunicação

permanecesse o mesmo. Portanto, as mesmas funções da tabela 3.1 existem no programa em

questão com a mudança da sintaxe de chamada apenas na função de inicialização. No softwa-

re livre é necessária também a execução de um procedimento padrão para o carregamento das

funções conforme descrito a seguir.

Na pasta de bibliotecas Scilab fornecida junto ao kit de desenvolvimento o usuário deve

copiar todos os arquivos para o diretório padrão do Scilab. No console do software devem ser

executados os seguintes arquivos internos a pasta “serial-port-master/serial_port” denomina-

dos “loader.sce” e “builder.sce”. Após a execução dos arquivos o diretório corrente do conso-

le deve ser retornado para o diretório padrão inicial através do menu “Arquivo - > Alterar o

diretório atual”. De volta ao diretório padrão a função “loadall.sce” deve ser executada para o

carregamento de todas as funções de comunicação. Finalizado o procedimento o usuário pode

então trabalhar normalmente com as funções. É importante notar que na função “iniciali-

za(‘comxx’)” a sintaxe agora é “inicializa(5)”, onde cinco é a porta de comunicação no caso.

A grande vantagem do Scicos em relação ao Matlab é a apresentação de maneira aberta

de ferramentas de simulação e comunicação externa com a possibilidade de aprimoramento

do software através dos próprios usuários.

Page 55: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

41

3.8 – SCICOS

O projeto gráfico similar ao desenvolvido no Simulink quando desenvolvido no Scicos

ou Xcos como é chamado nas versões mais modernas do pacote Scilab é interessante por ser

produzido em um software livre característico. No software abordado, elementos não originá-

rios ao programa podem ser criados em forma de toolbox pelos usuários e adicionados a plata-

forma sem grandes dificuldades. É observável no complemento Scicos o fornecimento de

“Palettes”, bibliotecas, que possibilitam a implementação de código dentro de diagramas de

blocos. Dentro das “Palettes” se encontram alguns blocos que permitem a execução de fun-

ções construídas na linguagem Scilab ou outra tal como a linguagem C, são exemplos o “sci-

func_block_m” e o “generic_block3” da versão 5.2.2. Estes blocos pré-existentes permitem a

alocação de funções computacionais sem que o usuário necessite se preocupar com funções de

interface. Logo, o Scicos é vantajoso por facilitar a implementação de código do projetista em

uma interface já fornecida junto ao programa. A figura 3.16 representa um exemplo de aquisi-

ção de grandezas analógicas desenvolvido no Scicos que se aproveita de um bloco já existen-

te, o “scifunc_block_m”, para alocação do código de captura dos valores analógicos da placa

mencionado na seção anterior.

Figura 3.16 – Esquema simples de aquisição analógica a partir de bloco encontrado na biblioteca do Scicos.

Embora bastante evoluído e competitivo se comparado ao Simulink o Scicos apresenta

ainda erros de execução notórios que dificultam o desenvolvimento de projeto. Portanto, erros

gráficos na interface e na configuração das portas dos blocos impossibilitam um desenvolvi-

mento mais prático com o Scicos. Por ser um software livre a expectativa é que o programa se

desenvolva ainda mais rapidamente do que já cresceu no lançamento de suas versões e, por-

tanto a sua utilização se torne mais cômoda para o usuário. O que se desenvolveu aqui em re-

Page 56: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 3 – Software e interface com o usuário

42

lação ao Scicos foram esquemas como o da figura 3.16 que podem ser também construídos

pelo usuário do kit a partir das funções desenvolvidas. Observa-se uma diferença em relação

ao projeto no Simulink em que se desenvolveram blocos personalizados com diferentes fun-

cionalidades.

3.9 – CONSIDERAÇÕES FINAIS

Nesse capítulo foram abordados tópicos relacionados ao software do kit elaborado que

consiste em uma placa de controle e aquisição e dos códigos de controle onde se inserem fun-

ções que exploram os atributos da placa, interface gráfica de comando e blocos gráficos para

implementação de diagrama de blocos. O capítulo relatou as experiências e o trabalho produ-

zido utilizando os programas Matlab e Scilab bem como seus complementos Simulink e Sci-

cos. No decorrer do texto é possível notar que é dada uma grande importância as interfaces

criadas para desenvolvimento de diagrama de blocos, isso ocorre pela comum opção dessas

ferramentas nos diversos setores de controle de processos. Uma discussão sobre sistemas de

aquisição de tempo real e como o projeto explanado resolve os problemas de compatibilização

entre tempo real de processo e tempo computacional é ainda realizada.

Page 57: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 4 – Implementações Práticas

CAPÍTULO 4

IMPLEMENTAÇÕES PRÁTICAS

4.1 - CONSIDERAÇÕES INICIAIS

Este capítulo apresenta as possibilidades básicas de trabalho com o já desenvolvido nos

capítulos anteriores. Implementações gráficas e manuseio de código são abordados com a fi-

nalidade de ilustrar a metodologia prática de operação no computador que resulta nas opera-

ções da “DAQ Board” sobre um sistema (planta). O kit educacional CC Servo Trainer ED-

4400B é tomado como referência de planta para a explanação do proposto. A análise das res-

postas gráficas obtidas é ainda discutida revelando perspectivas de avaliação de índices de

desempenho.

4.2 – AMBIENTE DE TRABALHO GRÁFICO

No projeto das malhas de controle é interessante que sempre um ambiente de simulação

seja construído antes da efetivação da aplicação prática. A simulação permite que o projetista

possa então realizar a tarefa proposta, ou seja, o projeto de um controlador para o processo

estimado, de modo que sua malha seja testada quanto aos índices de desempenho previamente

estabelecidos sem que o controle seja verdadeiramente aplicado a planta.

Após a simulação do processo, o projetista deve então verificar na prática os resultados

obtidos na simulação. Para a implementação do sistema de controle o usuário do kit de desen-

volvimento pode utilizar os blocos de comunicação com a placa de controle e aquisição de

dados apresentados no capítulo anterior.

Um exemplo de sistema de controle em que a placa desenvolvida se aplica muito bem

no aspecto educacional é o kit didático CC Servo Trainer ED-4400B que é composto por mó-

dulos de funções distintas. O principal elemento dentre os dispositivos é o módulo servo mo-

tor que é um motor CC com um redutor e um taco gerador incorporado (Sousa, 2009). Os e-

lementos do conjunto didático são descritos a seguir:

Page 58: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 4 – Implementações Práticas

44

U-156B – Fonte de alimentação CC (± 15V );

U-154B – Driver amplificador / Potência de saída: 15V, 0.7A (10W) máximo;

U-161B – Servo motor /Motor: 12Vcc; 4,5W / Taco Gerador: Aproximadamente 3Vp-

p/4000rpm;

U-155B – Unidade taco detector: Produz polaridade orientada e tensão CC proporcional

a velocidade pelo processamento da saída do taco gerador através de um conversor de

freqüência para tensão e um amplificador. Entrada: CA 1 ~ 1200Hz, 0 ~ 3V; Saída: 0 ~

±15Vcc;

U-159B – Medidor de RPM (4000rpm máximo);

U-163B – Freio Magnético: Fornece carga para o motor.

A figura 4.1 representa um ambiente de trabalho em Simulink criado para o controle de

velocidade do servo motor pertencente ao equipamento educacional. Na representação, tem-se

a seguinte seqüência em malha fechada: o software a partir dos blocos de comunicação exter-

na envia um sinal para o motor através de uma das saídas analógicas da placa de controle e

aquisição e a unidade taco detector mede a velocidade da planta convertendo-a em nível de

tensão, o valor de tensão é capturado por uma das entradas analógicas da placa de aquisição

sendo este o último passo para o fechamento da malha. É importante notar que o projeto deve

ser sempre simulado antes da aplicação real do controle. O ambiente Simulink ou o seu cor-

respondente Scicos são responsáveis pela inserção do bloco controlador junto ao processo real

e também pela disponibilização dos resultados do experimento.

Page 59: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 4 – Implementações Práticas

45

Figura 4.1 – Ambiente de controle PID da velocidade de um servo motor.

A utilização da plataforma criada neste trabalho tem como objetivo final a obtenção do

comportamento real do sistema quando submetido a algum método de controle e para isto

permite a visualização gráfica do comportamento citado e a obtenção de respostas onde diver-

sos índices de desempenho podem ser verificados, a visualização dos gráficos de resposta é

obtida por meio de blocos “scope” do Simulink. A figura 4.2 ilustra a montagem de um siste-

ma em malha fechada com os módulos do kit ED-4400B de acordo com (Teixeira, 2008).

Figura 4.2 – Planta para controle de velocidade do servo motor do kit ED4400B. Fonte – (Teixeira, 2008).

Page 60: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 4 – Implementações Práticas

46

A figura 4.3 ilustra o controle proporcional do motor CC do kit Servo Trainer imple-

mentado em software com os blocos de saída e entrada analógica presentes. As entradas e saí-

das em software comandam seus correspondentes na placa de aquisição e o processo tem co-

mo complemento, para fechamento da malha, a figura 4.2 que representa a planta do processo.

É importante observar que as ferramentas gráficas fornecidas pelos softwares de con-

trole em conjunto com o kit criado possibilitam a avaliação do controle efetuado e a melhoria

do sistema caso esta seja necessária. Na figura 4.4 é possível observar com clareza caracterís-

ticas intrínsecas ao controle proporcional como o erro em regime permanente, por exemplo. A

resposta ilustrada evidencia uma referência de tensão em 2,5V, o controle enviado à planta

que é representado pelo sinal com maior variação de amplitude e a resposta do sistema.

Figura 4.3 – Esquema de controle proporcional do sevo motor do kit ED4400B.

Page 61: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 4 – Implementações Práticas

47

Figura 4.4 – Controle proporcional aplicado ao servo motor.

Os sinais gráficos ilustrados na figura 4.4 foram obtidos com um tempo de aquisição de

30ms por amostra no Simulink. Os resultados gráficos demonstram a importância da placa de

controle e aquisição aliada às ferramentas de software. No esquema da figura 4.3 é inserido

ainda um bloco segurador de ordem zero, ou “zero-order hold” do inglês, muito comum em

sistemas controlados por computador com a finalidade de garantir a reconstrução de sinal dis-

creto. Por meio do uso do dispositivo Zero-Order Hold, conforme a figura 4.5, o sinal analó-

gico amostrado no bloco em intervalos periódicos é mantido constante durante o tempo de

amostragem, o que produz uma aproximação do sinal analógico em forma de degraus (Nise,

2004). O período de amostragem do bloco deve ser compatível com os períodos de todos os

outros blocos definidos no modelo.

Figura 4.5 – Sinal contínuo e saída discretizada equivalente do sinal fornecida pelo Zero-Order Hold.

Page 62: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 4 – Implementações Práticas

48

Na figura 4.6 é demonstrada a resposta de um controle PI para o esquema montado na

figura 4.1, o método de sintonia utilizado é o de (Ziegler; Nichols, 1942). É notável na figura

4.6 a correção do erro existente no controle proporcional em regime permanente e um maior

tempo de assentamento do que o exibido na figura 4.5, o controle é representado pela onda de

maior amplitude enquanto a de menor representa a resposta do sistema. A comparação entre

os tipos de controle através de respostas gráficas e a possibilidade de implementações rápidas

de métodos variados revelam a real finalidade e motivação deste trabalho.

Figura 4.6 – Controle PI aplicado ao servo motor.

Outra aplicação do kit de desenvolvimento se coloca ainda sobre a possibilidade de mo-

delar processos variados. A figura 4.7 ilustra a resposta ao degrau do motor já descrito e reve-

la a possibilidade de uma modelagem de primeira ordem através dos resultados obtidos com a

placa de controle e aquisição em conjunto com o software.

Page 63: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 4 – Implementações Práticas

49

Figura 4.7 – Resposta ao degrau da planta para posterior modelagem.

4.3 – CÓDIGO PARA MODELAGEM DE UM SISTEMA

Embora a aquisição e controle através de interfaces gráficas seja um elemento facilita-

dor em meio ao manuseio e comunicação das plantas tanto na área educacional como fora de-

la, o trabalho por meio de código em nível de software se torna fundamental em determinadas

situações e é também preferido por vários usuários.

Tomando o pressuposto acima como base é necessário o desenvolvimento de um mode-

lo geral de código que sirva como base para implementações mais complexas utilizando os

elementos criados disponíveis. Portanto, o escopo de um programa simples de aquisição que

pode ser aproveitado em um ensaio de resposta ao degrau é evidenciado a seguir, os comentá-

rios das funções em linguagem Matlab revelam o caráter de cada função.

Tabela 4.1 - Código de aquisição.

% Condições iniciais

n = 50; ts = 0.1;

% Sinal de entrada

u(1:n) = 3;

% Inicialização da placa

inicializa('com6');

% Simulação

for k = 1:n

Page 64: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 4 – Implementações Práticas

50

% Recebe saída da planta

y(k) = recebe_pm(1);

% Envia sinal de entrada

envia_pm(3,u(k));

pause(ts);

end

% Finalização da placa

finaliza;

% Resultados

t = 1:n;

plot(t,y(t),t,u(t)),title('saída e entrada'),xlabel('amostras');

O código da tabela 4.1 é fonte do acumulo de funções geradas no decorrer do trabalho

aliado a funções próprias do Matlab. A união entre as ferramentas próprias de cada software e

o material desenvolvido em projeto é o que torna a manipulação de hardware através do com-

putador uma atividade intuitiva e simplificada.

O processo de aquisição de dados é uma operação básica em meio aos processos e sua

aplicação se estende desde tarefas mais simples como medir pequenas tensões até missões

mais complicadas como o controle de uma planta industrial. O processo básico de aquisição é

sempre similar exceto pela diferença entre os elementos utilizados e a complexidade destes. O

equipamento discutido aqui se adapta aos vários tipos de processos e é flexível em relação aos

modos de captura de sinal. Portanto, o emprego da plataforma criada se torna recomendável

para uma gama variada de aplicações.

4.4 – CONSIDERAÇÕES FINAIS

As formulações e esquemas estudados nesse capítulo revelaram as alternativas existen-

tes relacionadas à consecução de um determinado tipo de controle ou obtenção de dados. A

formulação de código introduziu a base para programas mais complexos e a exemplificação

da disposição dos blocos gráficos reiterou a simplicidade de implementação em ambiente Si-

mulink.

Page 65: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 5 - Conclusão

CAPÍTULO 5

CONCLUSÃO E TRABALHOS FUTUROS

Este trabalho foi realizado com o objetivo de desenvolver um protótipo microcontrolado

de controle e aquisição de dados com alternativas diversificadas de comando por software. O

kit desenvolvido no presente trabalho composto por uma “Data Acquisition Board” e pelos

arquivos de códigos e modelos computacionais se mostrou eficiente em diversos quesitos co-

mo, por exemplo, portabilidade, estabilidade, funcionalidades e velocidade. As configurações

do sistema construído possibilitam a perfeita execução de controle de sistemas dinâmicos e

atendem a exigências de baixo custo. Isto, porque o sistema é de fácil reprodução e pode ser

produzido dentro de universidades quando voltado para fins educacionais.

A montagem da plataforma mostrou adaptabilidade a uma série de aplicações e tanto

bom emprego didático como industrial. A vantagem do sistema desenvolvido reside na aglo-

meração de funcionalidades de hardware em uma única placa de aquisição e controle de baixo

custo que se equipara a soluções comerciais existentes produzidas em escala industrial. O

tempo de amostra alcançada pela placa supre adequadamente a implementação de processos

considerados rápidos como é o caso do controle do motor CC e permite a obtenção de respos-

tas passíveis de análise dos índices de desempenho. Assim, os objetivos iniciais e condições

impostas de baixo custo, funcionalidade e operação são atendidos com êxito no projeto.

A explanação detalhada do hardware projetado revelou alguns aspectos importantes que

tornam o protótipo de aquisição uma ferramenta bastante interessante. A comunicação USB

emulada serialmente entre o computador e o PIC18F4550 simplificou consideravelmente a

transferência de informação através da fácil codificação, aproveitamento de drivers e uso de

biblioteca de funções já existentes do microcontrolador. Esta simplificação resulta em uma

facilitação da cópia do esquema proposto. No capítulo 2, a descrição em forma de tutorial da

instalação da placa permitiu a familiarização do usuário com o kit trabalhado.

No decorrer do trabalho é possível perceber o foco sobre as interfaces criadas para de-

senvolvimento de diagrama de blocos, isso ocorre pela preferência dessas ferramentas sobre

as outras nos diversos setores onde o uso de controle de processos é corrente. Questões rela-

cionadas a sistemas de aquisição de tempo real foram também levantadas e um bloco foi em-

pregado como forma de resolver problemas de compatibilização entre tempo real de processo

e tempo computacional no Simulink.

Page 66: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

CAPÍTULO 5 - Conclusão

52

No último capítulo o leitor ganha intimidade com o software de projeto por meio do es-

boço de formulações práticas. São exemplificados modelos gráficos assim como um código

base de aquisição.

Finalmente, com uma configuração simples composta por computador e placa de aqui-

sição e controle se conseguiu um protótipo sólido para o desenvolvimento de diversos modos

de controle, treinamento educacional e interfaceamento com diversificados tipos de plantas e

sensores.

Para trabalhos futuros é proposto o desenvolvimento de interfaces no software Scicos

semelhantes aquelas existentes no ambiente Simulink, o estudo de formas para melhorar a ve-

locidade de aquisição via USB através dos softwares trabalhados e ainda o teste da plataforma

com outras plantas.

Page 67: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

Referência Bibliograficas

REFERÊNCIAS BIBLIOGRÁFICAS

Bittencourt, F.; Projeto e desenvolvimento de uma Placa de Controle e Aquisição de Dados

Multivariável via porta paralela do PC. 20 f. Trabalho desenvolvido no departamento de

Engenharia da UFSC. Universidade Federal de Santa Catarina, 2002.

Coelho, A.A.R., Almeida, O.M., Santos, J.E.S., Sumar R.R. e Bittencourt F.; Da teoria à

prática: projeto motor taco-gerador, 29º Congresso Brasileiro de Ensino de Engenharia,

2001, Porto Alegre - Brasil, PP. 162–169.

Datasheet do Sensor SHT75 disponível em

http://www.sensirion.com/en/01_humidity_sensors/06_humidity_sensor_sht75. Acessado

em 02/11/2010.

Datasheet do microcontrolador PIC18F4550 disponível em

http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010300. Acessado

em 03/11/2010.

Filho, F.L.M.C., Reis, L.L.N.; Projeto de implementação de sistema de baixo custo aplicável

em aulas práticas de controle de processos, 18º Congresso Brasileiro de Automática, 2010,

Bonito, MS - Brasil.

França, J.A., Sistemas de aquisição de dados baseados em microcontrolador. Campina

Grande, Paraíba, Brasil, Junho de 1997. Dissertação de Mestrado, Universidade Federal

da Paraíba.

Nise, N.S.; Control Systems Engineering, 2004, 4ª ed. Wiley International Edition.

Santos, L.S.L.; Sistema de comunicação USB com microcontrolador, 69 f. Trabalho de

Conclusão de Curso (Graduação em Engenharia da Computação) – Escola Politécnica de

Pernambuco, 2009.

Page 68: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

Referência Bibliograficas

54

Sousa, M.R.; Estimação utilizando mínimos quadrados (MQR) e controle de velocidade do

motor DC Servo Trainer. 63 F. Trabalho de Conclusão de Curso (Graduação em

Engenharia Elétrica) – Universidade Federal do Ceará, 2009.

Teixeira, H.T.; Desenvolvimento de um ambiente de controle e monitoramento em tempo real

usando o Matlab e a placa de aquisição NUDAQ PCI-9112. 67 F. Trabalho de Conclusão

de Curso (Graduação em Engenharia Elétrica) – Universidade Federal do Espírito Santo,

2008.

Ziegler, J.G., Nichols, N.B.; Optimum settings for automatic controllers, 1942, Trans. ASME,

v64, pp.759-768.

Page 69: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

APÊNDICE A CÓDIGOS DESENVOLVIDOS NO TRABALHO

Page 70: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

56

A.1 - CONSIDERAÇÕES INICIAIS

No presente apêndice são apresentados os códigos de projeto que tornaram o

desenvolvimento da plataforma elaborada possível. Dentre os programas é possível

encontrar o programa principal do microcontrolador PIC18F4550 bem como as funções

de comunicação escritas no software Matlab. As funções desenvolvidas para o software

Scilab são bastante similares as apresentadas aqui.

A.2 – ARQUIVOS DE CÓDIGO EM C PARA PROGRAMAÇÃO DO

MICROCONTROLADOR

usb_pm_teste.c (Programa principal)

usb_biblioteca.c (Funções complementares)

usb_cdc.h (Adiciona porta COM ao PC na

comunicação com CDC)

usb_desc_cdc.h (Definição dos descritores)

USB.c (Funções para USB)

pic18_usb.c (Funções para comunicação pic -

USB)

18F4550.h (Definições do microcontrolador)

stdlib.h (Driver intrínseco ao CCS)

stddef.h (Driver intrínseco ao CCS)

string.h (Driver intrínseco ao CCS)

ctype.h (Driver intrínseco ao CCS)

driver_tlc5615cp.c (Driver para comunicação com o

conversor digital-analógico)

Page 71: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

57

A.3 – PROGRAMA PRINCIPAL DO MICROCONTROLADOR PIC18F4550

(“usb_pm_teste.c”)

// Inclue a biblioteca basica do PIC 18F4550 #include <18F4550.h> #include <stdlib.h> #use delay(clock=48000000) // Inclue a biblioteca de funções #include <usb_biblioteca.c> #include <driver_tlc5615cp.c>//Driver para os DAs. // Atribui os Bits de configuração e define o clock do nucleo do microcontrolador #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,MCLR,PUT int8 value1=0,value2=0,reg1,reg2,value=0,sel=0,stk=0,select=0; float value3=0,value4,value5,value6,value7,value8,val3,val4,val5,val6,val7,val8; void main() { int opcao; // Declaração de variaveis unsigned long int cont = 0; DA1_inicio(); DA2_inicio(); DA3_inicio(); // Inicializa, configura e enumera o dispositivo USB usb_cdc_conectar(); do { usb_task(); if (usb_enumerated()) // Verifica se o dispositivo está pronto { // Simula uma rotina de um processo qualquer usual de microcontrolador cont++; // Verifica se existe caractere para recepção if(usb_cdc_kbhit()) { // Recebe um hexadecimal opcao = gethex_usb(); if (opcao ==01) //função set_pwm_duty(canal,duty,freq). { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp2(CCP_OFF); setup_ccp1(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*16*250= 333.3us us or 3 khz setup_timer_2(T2_DIV_BY_16, 250, 1); set_pwm1_duty(value);

Page 72: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

58

} if (opcao ==02) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp2(CCP_OFF); setup_ccp1(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*16*125= 166.67us us or 6 khz setup_timer_2(T2_DIV_BY_16, 125, 1); set_pwm1_duty(value); } if (opcao ==03) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp2(CCP_OFF); setup_ccp1(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*4*250= 83.3us us or 12 khz setup_timer_2(T2_DIV_BY_4, 250, 1); set_pwm1_duty(value); } if (opcao ==04) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp2(CCP_OFF); setup_ccp1(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*4*125= 41.67us us or 24 khz setup_timer_2(T2_DIV_BY_4, 125, 1); set_pwm1_duty(value); } if (opcao ==05) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp2(CCP_OFF); setup_ccp1(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*1*250= 20.83us us or 48 khz setup_timer_2(T2_DIV_BY_1, 250, 1); set_pwm1_duty(value); } if (opcao ==06)

Page 73: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

59

{ while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp2(CCP_OFF); setup_ccp1(CCP_PWM); O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*1*200= 16.67us us or 60 khz setup_timer_2(T2_DIV_BY_1, 200, 1); set_pwm1_duty(value); } if (opcao ==07) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp2(CCP_OFF); setup_ccp1(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*1*125= 10.42us us or 96 khz setup_timer_2(T2_DIV_BY_1, 125, 1); set_pwm1_duty(value); } if (opcao == 8) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp2(CCP_OFF); setup_ccp1(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*1*100= 8.333us us or 120 khz setup_timer_2(T2_DIV_BY_1,100, 1); set_pwm1_duty(value); } if (opcao ==9) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_OFF); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*16*250= 333.3us us or 3 khz setup_timer_2(T2_DIV_BY_16, 250, 1); set_pwm2_duty(value); } if (opcao ==10) {

Page 74: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

60

while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_OFF); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*16*125= 166.67us us or 6 khz setup_timer_2(T2_DIV_BY_16, 125, 1); set_pwm2_duty(value); } if (opcao ==11) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_OFF); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*4*250= 83.3us us or 12 khz setup_timer_2(T2_DIV_BY_4, 250, 1); set_pwm2_duty(value); } if (opcao ==12) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_OFF); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*4*125= 41.67us us or 24 khz setup_timer_2(T2_DIV_BY_4, 125, 1); set_pwm2_duty(value); } if (opcao ==13) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_OFF); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*1*250= 20.83us us or 48 khz setup_timer_2(T2_DIV_BY_1, 250, 1); set_pwm2_duty(value); } if (opcao ==14) { while(!usb_cdc_kbhit()) {cont=cont+1;}

Page 75: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

61

value=gethex_usb(); setup_ccp1(CCP_OFF); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*1*200= 16.67us us or 60 khz setup_timer_2(T2_DIV_BY_1, 200, 1); set_pwm2_duty(value); } if (opcao==15) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_OFF); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*1*125= 10.42us us or 96 khz setup_timer_2(T2_DIV_BY_1, 125, 1); set_pwm2_duty(value); } if (opcao == 16) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_OFF); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*1*100= 8.333us us or 120 khz setup_timer_2(T2_DIV_BY_1,100, 1); set_pwm2_duty(value); } if (opcao==17) //função recebe_pm(canal), leitura analog. { setup_port_a(AN0); setup_adc(ADC_CLOCK_DIV_4); set_adc_channel(0); //Especifica qual o canal que será lido pela função read_adc(). value3 = read_adc(); val3 =(5*value3)/255; printf(usb_cdc_putc, "%1.2f", val3); } if (opcao==18) //função recebe_pm(canal), leitura analog. { setup_port_a(PIN_A1); setup_adc(ADC_CLOCK_DIV_4); set_adc_channel(1); //Especifica qual o canal que será lido pela função read_adc(). value4 = read_adc(); val4 =(5*value4)/255; printf(usb_cdc_putc, "%1.2f", val4); }

Page 76: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

62

if (opcao==19) //função recebe_pm(canal), leitura analog. { setup_port_a(PIN_A3); setup_adc(ADC_CLOCK_DIV_4); set_adc_channel(3); //Especifica qual o canal que será lido pela função read_adc(). value5 = read_adc(); val5 =(5*value5)/255; printf(usb_cdc_putc, "%1.2f", val5); } if (opcao==20) //função recebe_pm(canal), leitura analog. { setup_adc_ports(AN0_TO_AN7); setup_adc(ADC_CLOCK_DIV_4); set_adc_channel(5); //Especifica qual o canal que será lido pela função read_adc(). value6 = read_adc(); val6 =(5*value6)/255; printf(usb_cdc_putc, "%1.2f", val6); } if (opcao==21) //função recebe_pm(canal), leitura analog. { setup_adc_ports(AN0_TO_AN7); setup_adc(ADC_CLOCK_DIV_4); set_adc_channel(6); //Especifica qual o canal que será lido pela função read_adc(). value7 = read_adc(); val7 =(5*value7)/255; printf(usb_cdc_putc, "%1.2f", val7); } if (opcao==22) //função recebe_pm(canal), leitura analog. { setup_adc_ports(AN0_TO_AN7); setup_adc(ADC_CLOCK_DIV_4); set_adc_channel(7); //Especifica qual o canal que será lido pela função read_adc(). value8 = read_adc(); val8 =(5*value8)/255; printf(usb_cdc_putc, "%1.2f", val8); } //função set_pwm_freq(freq,duty). if (opcao ==23) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp2(CCP_PWM); setup_ccp1(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*16*250= 333.3us us or 3 khz setup_timer_2(T2_DIV_BY_16, 250, 1); set_pwm1_duty(value); set_pwm2_duty(value); }

Page 77: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

63

if (opcao ==24) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*16*125= 166.67us us or 6 khz setup_timer_2(T2_DIV_BY_16, 125, 1); set_pwm1_duty(value); set_pwm2_duty(value); } if (opcao ==25) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*4*250= 83.3us us or 12 khz setup_timer_2(T2_DIV_BY_4, 250, 1); set_pwm1_duty(value); set_pwm2_duty(value); } if (opcao ==26) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*4*125= 41.67us us or 24 khz setup_timer_2(T2_DIV_BY_4, 125, 1); set_pwm1_duty(value); set_pwm2_duty(value); } if (opcao ==27) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*1*250= 20.83us us or 48 khz setup_timer_2(T2_DIV_BY_1, 250, 1); set_pwm1_duty(value);

Page 78: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

64

set_pwm2_duty(value); } if (opcao ==28) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); // The cycle time will be (1/clock)*4*t2div*(period+1) // (1/48000000)*4*1*200= 16.67us us or 60 khz setup_timer_2(T2_DIV_BY_1, 200, 1); set_pwm1_duty(value); set_pwm2_duty(value); } if (opcao==29) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*1*125= 10.42us us or 96 khz setup_timer_2(T2_DIV_BY_1, 125, 1); set_pwm1_duty(value); set_pwm2_duty(value); } if (opcao == 30) { while(!usb_cdc_kbhit()) {cont=cont+1;} value=gethex_usb(); setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*1*100= 8.333us us or 120 khz setup_timer_2(T2_DIV_BY_1,100, 1); set_pwm1_duty(value); set_pwm2_duty(value); } if (opcao == 31) //função envia_pm(canal,valor), saída analog. {DA1();} if (opcao == 32)//função envia_pm(canal,valor), saída analog. {DA2();} if (opcao == 33)//função envia_pm(canal,valor), saída analog. {DA3();} //função recebepm_dig(canal). if (opcao ==34) {

Page 79: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

65

setup_adc_ports(NO_ANALOGS); stk=input(PIN_A2); printf(usb_cdc_putc, "%u", stk); } if (opcao ==35) { setup_adc_ports(NO_ANALOGS); stk=input(PIN_A4); printf(usb_cdc_putc, "%u", stk); } if (opcao ==36) { setup_adc_ports(NO_ANALOGS); stk=input(PIN_A5); printf(usb_cdc_putc, "%u", stk); } //função enviapm_dig(canal,valor). if ( opcao==37) {setup_adc_ports(NO_ANALOGS); output_high(PIN_D0); } if (opcao ==38) {setup_adc_ports(NO_ANALOGS); output_low(PIN_D0); } if (opcao ==39) {setup_adc_ports(NO_ANALOGS); output_high(PIN_D1); } if (opcao ==40) {setup_adc_ports(NO_ANALOGS); output_low(PIN_D1); } if (opcao==41)//saída pwm com entrada analog. { setup_ccp2(CCP_OFF); setup_ccp1(CCP_PWM); // O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/48000000)*4*16*250= 333.3 us or 3 khz setup_timer_2(T2_DIV_BY_16, 250, 1); setup_port_a(AN0); setup_adc(ADC_CLOCK_DIV_8); set_adc_channel(0); //Especifica qual o canal que será lido pela função read_adc(). reg1 = read_adc(); set_pwm1_duty(reg1); } if (opcao==42)//saída pwm com entrada analog. { setup_ccp1(CCP_OFF); setup_ccp2(CCP_PWM);

Page 80: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

66

// O ciclo de trabalho será (1/clock)*4*t2div*(period+1) // (1/20000000)*4*16*250= 333.3 us or 3 khz setup_timer_2(T2_DIV_BY_16, 250, 1); setup_port_a(PIN_A1); setup_adc(ADC_CLOCK_DIV_8); set_adc_channel(1); //Especifica qual o canal que será lido pela função read_adc(). reg2 = read_adc(); set_pwm2_duty(reg2); } if (opcao==43) { // Desconecta o dispositivo usb_detach(); } if (opcao>43) { char mensagem6[] = {"\n\nDigite um valor valido !\n"}; usb_cdc_putString(mensagem6); }}}} while (TRUE); }

Page 81: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

67

A.4 – FUNÇÕES DO MATLAB

A.4.1 – FUNÇÃO DO MATLAB (“envia_pm.m”)

function y = envia_pm(canal,valor) e=0; val1 = 0; global SerPIC % Colocar o valor de saída dentro da faixa permitida if (valor >= 5) valor = 4.9; elseif (valor < 0) valor = 0; end %Avalia qual canal foi escolhido e envia o valor informado switch canal case 1, val1 = (204.8)* valor; val1=uint8(val1/4); fprintf(SerPIC, '%c', dec2hex(31)); if(val1<=15) fprintf(SerPIC, '%X', e) ; fprintf(SerPIC, '%c', dec2hex(val1)); else fprintf(SerPIC, '%c',dec2hex(val1)); end case 2, val1 = (204.8)* valor; val1=uint8(val1/4); fprintf(SerPIC, '%c', dec2hex(32)); if(val1<=15) fprintf(SerPIC, '%X', e); fprintf(SerPIC, '%c',dec2hex(val1)); else fprintf(SerPIC, '%c', dec2hex(val1)); end case 3, val1 = (204.8)* valor; val1=uint8(val1/4); fprintf(SerPIC, '%c', dec2hex(33)); if(val1<=15) fprintf(SerPIC, '%X', e); fprintf(SerPIC, '%c',dec2hex(val1)); else fprintf(SerPIC, '%c',dec2hex(val1)); end %Se o canal não é conhecido envia mensagem otherwise disp('Canal desconhecido') end

Page 82: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

68

A.4.2 - FUNÇÃO DO MATLAB (“recebe_pm.m”)

function y = recebe_pm(canal) global SerPIC switch canal %Avalia o canal escolhido e faz a leitura do AD case 1, fprintf(SerPIC, '%c',dec2hex(17)); y = str2double(fscanf(SerPIC,'%c', 4)); case 2, fprintf(SerPIC, '%c', dec2hex(18)); y = str2double(fscanf(SerPIC,'%c', 4)); case 3, fprintf(SerPIC, '%c', dec2hex(19)); y = str2double(fscanf(SerPIC,'%c', 4)); case 4, fprintf(SerPIC, '%c',dec2hex(20)); y = str2double(fscanf(SerPIC,'%c', 4)); case 5, fprintf(SerPIC, '%c', dec2hex(21)); y = str2double(fscanf(SerPIC,'%c', 4)); case 6, fprintf(SerPIC, '%c', dec2hex(22)); y = str2double(fscanf(SerPIC,'%c', 4)); otherwise disp('Canal desconhecido') end

A.4.3 - FUNÇÃO DO MATLAB (“setpm_pwm_duty.m”)

function y = setpm_pwm_duty(canal,duty,freq) global SerPIC if (canal==1)%Avalia canal escolhido e logo após a frequência escolhida if (freq == 3000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%X', 1); duty = int16((250)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 6000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%X', 2);

Page 83: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

69

duty = int16((125)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 12000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%X', 3); duty = int16((250)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 24000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%X', 4); duty = int16((125)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 48000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%X', 5); duty = int16((250)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 60000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%X', 6); duty = int16((200)*duty); if(duty<=15) fprintf(SerPIC, '%X',0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c',dec2hex(duty)); end elseif (freq == 96000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%X', 7);

Page 84: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

70

duty = int16((125)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else duty = dec2hex(duty); fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 120000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%X', 8); duty = int16((100)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end else disp('Frequencia inválida. Parametros aceitos(3000, 6000, 12000, 24000, 48000, 60000, 96000, 120000).') end end if (canal==2) %Avalia canal escolhido e logo após a frequência escolhida if (freq == 3000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%X', 9); duty = int16((250)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 6000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(10)); duty = int16((125)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 12000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c',dec2hex(11)); duty = int16((250)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0);

Page 85: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

71

fprintf(SerPIC, '%c', dec2hex(duty)); else duty = dec2hex(duty); fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 24000) fprintf(SerPIC, '%X',0); fprintf(SerPIC, '%c', dec2hex(duty)); duty = int16((125)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else duty = dec2hex(duty); fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 48000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(13)); duty = int16((250)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 60000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(14)); duty = int16((200)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c',dec2hex(duty)); end elseif (freq == 96000) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c',dec2hex(15)); int16((125)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 120000) fprintf(SerPIC, '%c', dec2hex(16)); duty = int16((100)*duty); if(duty<=15)

Page 86: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

72

fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end else disp('Frequencia inválida. Parametros aceitos(3000, 6000, 12000, 24000, 48000, 60000, 96000, 120000).') end end

A.4.4 - FUNÇÃO DO MATLAB (“setpm_pwm_freq.m”)

function y = setpm_pwm_freq(freq,duty) global SerPIC % O programa avalia a freqüência escolhida e envia o pwm para dois canais if (freq == 3000) fprintf(SerPIC, '%c', dec2hex(23)); duty = int16((250)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 6000) fprintf(SerPIC, '%c',dec2hex(24)); duty = int16((125)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 12000) fprintf(SerPIC, '%c', dec2hex(25)); duty = int16((250)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 24000) fprintf(SerPIC, '%c', dec2hex(26)); duty = int16((125)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0);

Page 87: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

73

fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 48000) fprintf(SerPIC, '%c',dec2hex(27)); duty = int16((250)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c',dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 60000) fprintf(SerPIC, '%c',dec2hex(28)); duty = int16((200)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c', dec2hex(duty)); end elseif (freq == 96000) fprintf(SerPIC, '%c', dec2hex(29)); duty = int16((125)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c',dec2hex(duty)); end elseif (freq == 120000) fprintf(SerPIC, '%c', dec2hex(30)); duty = int16((100)*duty); if(duty<=15) fprintf(SerPIC, '%X', 0); fprintf(SerPIC, '%c', dec2hex(duty)); else fprintf(SerPIC, '%c',dec2hex(duty)); end else disp('Frequencia inválida. Parametros aceitos(3000, 6000, 12000, 24000, 48000, 60000, 96000, 120000).') end

Page 88: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

74

A.4.5 - FUNÇÕES DO MATLAB (“enviapm_dig.m” e “recebepm_dig.m”)

function y = enviapm_dig(canal,valor) global SerPIC %Avalia canal e valor de entrada if(canal==1 && valor==1) fprintf(SerPIC, '%c', dec2hex(37)); elseif(canal==1 && valor==0) fprintf(SerPIC, '%c', dec2hex(38)); elseif(canal==2 && valor==1) fprintf(SerPIC, '%c',dec2hex(39)); elseif(canal==2 && valor==0) fprintf(SerPIC, '%c', dec2hex(40)); else disp('Canal ou valor não identificado. Canal(1 ou 2) e Valor(1 ou 0).') end

function y = recebepm_dig(canal) global SerPIC %Avalia canal de leitura digital switch canal case 1, fprintf(SerPIC, '%c', dec2hex(34)); y = str2double(fscanf(SerPIC,'%c', 1)); case 2, fprintf(SerPIC, '%c', dec2hex(35)); y = str2double(fscanf(SerPIC,'%c', 1)); case 3, fprintf(SerPIC, '%c', dec2hex(36)); y = str2double(fscanf(SerPIC,'%c', 1)); otherwise disp('Canal desconhecido.') end

A.4.6 - FUNÇÕES DO MATLAB (“inicializa.m” e “finaliza.m”)

function y = inicializa(porta) global SerPIC %Abre porta de comunicação SerPIC = serial(porta); set(SerPIC,'BaudRate', 128000, 'DataBits', 8, 'Parity', 'none','StopBits', 1, 'FlowControl', 'none'); fopen(SerPIC);

global SerPIC fclose(SerPIC); %Fecha porta de comunicação delete(SerPIC); delete(instrfind);

Page 89: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

75

A.5 – S-FUNCTIONS

A.5.1 – S-FUNCTION DO BLOCO “DA_pm”

function [sys, x0] = D_A(t,x,u,flag,canal); if abs(flag) == 3 % rotina envia_pm(canal,u); elseif flag == 0 % Condições iniciais %estados contínuos = 0 %estados discretos = 0 %saídas = 1 %entradas = 1 %raizes continuas. reservado deve ser 0 %direct feedtrough deve ser 1 se u usado em flag=3 sys = [0 0 1 1 0 1]; x0 = []; else sys = []; end

A.5.2 – S-FUNCTION DO BLOCO “AD_pm”

function [sys, x0] = A_D(t,x,u,flag,canal); if abs(flag) == 3 % rotina aux1 = recebe_pm(canal); sys = [aux1]; elseif flag == 0 % initial conditions sys = [0 0 1 1 0 1]; x0 = []; else sys = []; end

A.5.3 – S-FUNCTION DO BLOCO “PWM_pm”

function [sys, x0] = PWM(t,x,u,flag,freq,canal); if abs(flag) == 3 % rotina setpm_pwm_duty(canal,u,freq); elseif flag == 0 sys = [0 0 1 1 0 1]; x0 = []; else sys = []; end

Page 90: FRANCISCO LINCOLN MATOS DA COSTA FILHO.pdf

76

A.5.4 – S-FUNCTION DOS BLOCOS “ENVIA_digital_pm” e “RECEBE_digital_pm”

%ENVIA_digital_pm function [sys, x0] = D_A_dig(t,x,u,flag,canal); if abs(flag) == 3 % rotina enviapm_dig(canal,u); elseif flag == 0 sys = [0 0 1 1 0 1]; x0 = []; else sys = []; end

%RECEBE_digital_pm function [sys, x0] = A_D_dig(t,x,u,flag,canal); if abs(flag) == 3 % rotina aux1 = recebepm_dig(canal); sys = [aux1]; elseif flag == 0 sys = [0 0 1 1 0 1]; x0 = []; else sys = []; end