You are on page 1of 34

1.

Introdução

Este artigo tem o interesse de mostrar como pode ser feita a integração entre o
Arduino e o MATLAB, no controle de um processo. O processo de teste e
demonstração criado foi um sistema de aquecimento, automatizado pelo Arduino, que
é uma ferramenta prática para reger circuitos eletrônicos, sendo este então o meio
físico pelo qual a automação acontece. O MATLAB, por sua vez, está sendo o guia
inteligente, que envia sua programação para o micro-controlador do Arduino que
executa os comandos criados via IDE do MATLAB.
Este processo é possível graças a porta serial inerente ao Arduino, que o faz
capaz de comunicar-se com um computador, através de uma entrada USB. O MATLAB
por sua vez, pode receber ou enviar dados pela comunicação serial, e assim o controle
é completo. A exploração desta comunicação foi feita neste projeto para enfatizar o
que de melhor há em cada uma dessas ferramentas. O projeto deste artigo é um
sistema de aquecimento, que possui uma estrutura física, e um controle virtual por
trás da mesma. O Arduino controla duas válvulas e um fogareiro que serão
responsáveis pela vazão de água quente ou fria para dentro do compartimento ao qual
se deseja controlar a temperatura. Os dados poderiam ser interpretados pelo Arduino
que controlaria essa temperatura, porém ou essa temperatura teria que estar prédefinida no código fonte do programa, ou então o circuito seria muito mais complexos,
envolvendo displays, potenciômetros e outros componentes para que fosse possível
um controle dinâmico da temperatura.
Neste ponto, o MATLAB entra como segunda ferramenta em nosso problema.
Através do ambiente de interface gráfica do MATLAB. Foi criada uma interface (GUI –
Graphical User Interface) onde poderão ser modificados os valores bases para o
controle de temperatura, além de uma coleta de dados muito mais elegante. Isso
porque o MATLAB possui vasta cadeia de ferramentas gráficas, e assim os dados
podem ser acompanhados através de um gráfico, que mostrará o limite inferior e
superior da faixa de controle de temperatura. Assim realizando a tarefa do sistema de
controle de temperatura com maior êxito.
Nas próximas etapas deste artigo poderemos ver com mais detalhadas a
funcionalidade desse sistema e como o mesmo poderia ser expandido. Demonstrando
também os detalhes da comunicação entre cada ferramenta, MATLAB e Arduino.
Contudo, o leitor após o término do artigo terá condição de utilizar o conjunto aqui
apresentado para criar processos diversos na automação e instrumentação como
termômetros, sensores de ruídos, entre outras as diversas necessidades do ambiente
acadêmico de se medição para a realização de experimentos e atividades de extensão.

2. Metodologia e Fundamentação Teórica

2.1. O MATLAB

Jack Little e Cleve Moler, são os fundadores da MathWorks, a empresa que
surgiu após a criação do MATLAB. Este surgiu quando eles perceberam a necessidade
que engenheiros e cientistas tinham de uma ferramenta mais abrangente que as
linguagens de programação disponíveis até então, como o Fortran e o C. Criaram então
uma ferramenta baseada nos cálculos de matrizes, para realizar todo tipo de cálculos
tanto da linha científica quanto da linha das engenharias.

Figura 2.1.1 – Tela de inicialização do MARLAB da versão utilizada neste artigo.

O MATLAB é uma linguagem de programação orientada a objeto com uma
vasta biblioteca, onde estão funções de uso em diversas áreas, como análise e
modelagem econômica e financeira, cálculos de estruturas, estudos de sinais e ondas,
propagação e análise de erros, gráficos entre outros. Sua biblioteca possui um
comando muito importante, que interliga e mostra todos os comandos disponíveis
naquela versão, o “help”. Com ele é possível entender como a sintaxe de uma função
deve ser utilizada e para que esta serve, além de mostrar exemplos de sua utilização.
Também inerente ao MATLAB está o GUIDE (GUI Development Environment),
que é o ambiente de desenvolvimento das interfaces gráficas do MATLAB. Este

ambiente é de fácil entendimento e fácil manuseio, tornando possível o
desenvolvimento de programas em MATLAB para todo o tipo de utilização. Os
programas criados pelo GUIDE geram um arquivo “.fig” que guarda o modelo visual do
programa e um arquivo “.m” onde está contida toda a sua codificação. Claro, que
dependendo do programa, sendo este possuidor de diversas janelas e seções, o
número de arquivos gerados é igual a duas vezes o número de janelas existentes.

Figura 2.1.2 – Janela de edição de uma nova GUI

Estas GUI’s (Graphical User Interfaces), podem ser executadas fora do ambiente
MATLAB a partir do comando “mcc –m ‘nome do arquivo’.m”, que gera o executável
do programa criado no GUIDE, ou qualquer outro arquivo .m, sendo que então será
possível que o arquivo seja executado em qualquer computador. Para isso não é
necessário que o programa possua a IDE do MATLAB instalada, apenas é requerida a
instalação do MATLAB Compiler Runtime (MCR), disponível no site da MathWorks, na
seguinte url: <http://www.mathworks.com/products/compiler/mcr/>. A MathWorks
permite que criadores de programas em linguagem MATLAB distribuam junto à seu
programa o MCR (somente o MCR). Maiores informações sobre os direitos autorais
encontram-se no site da MathWorks.

2.2. O Arduino

Iniciado em 2005 na cidade de Ivre, na Itália, o Arduino foi criado como uma
nova opção em plataformas de prototipagem eletrônica, frente às plataformas não
acessíveis existentes na época. E também tinha o objetivo de tornar a iniciação
daquelas pessoas que não possuíam conhecimentos em eletrônica mais rápida no
sentido de produção aplicável. Em 2006, o Arduino recebeu a menção honrosa na
categoria Comunidades Eletrônicas, pela Prix Ars Eletrônica, e também a marca de
50.000 placas vendidas.
Com a facilidade em operar-se fisicamente a placa, e a fácil linguagem de
programação e o seu ambiente limpo de desenvolvimento, que tornou essa expansão
extremamente rápida possível. Além do fato de ser uma plataforma Open-Source, ou
seja, os códigos Arduino são abertos a todos, bem como também todos os
componentes da placa. Devido a isso hoje existem diversas variações do Arduino.
Qualquer um pode montar seu próprio Arduino.

Figura 2.2.1 – Placa Arduino UNO correspondente com a utilizada no projeto.

Tecnicamente falando, o Arduino possui diversos modelos de placa, cada um
deles com algumas diferenças em seu hardware, como mais portas digitais e
analógicas, comunicações através de serial ou wireless, entre outras. Neste artigo foi
utilizado o modelo da placa Arduino UNO Ver 3. Que contém 6 portas analógicas, 12
portas digitais sendo seis destas podendo ser configuradas como PWM (Pulse Width
Modulation), que são portas que podem ser utilizadas para saída de valores de 0 a 255,
para controle de componentes não digitais. A versão UNO é uma placa bastante limpa
e com as funções principais do Arduino, sendo necessário o uso de Shields e outros
componentes para expandi-lo a ambientes como Bluetooth.
Uma outra importante característica é a comunicação pela serial, que permite
que os códigos sejam inseridos de um computador para dentro do micro-controlador
do Arduino UNO (ATMega 328), através da porta USB. E isso também permite a

comunicação do Arduino em tempo de execução com diversos programas em diversas
plataformas. Uma delas será abordada aqui. A comunicação entre Arduino e Matlab.
Para a aplicação deste projeto, é importante o conhecimento das
características técnicas do Arduino. Suas portas digitais suportam uma corrente de até
50 mA. Enquanto as Power Pins, que são as portas de Vcc e Ground, suportam até 500
mA. Poucas aplicações práticas utilizarão uma corrente tão baixa. Motores, válvulas,
displays e muitos outros tenderão a puxar uma corrente bem maior que essas. Neste
caso, é necessário um circuito de proteção. Que consiste em um transistor com sua
base sendo acionada pela saída digital do Arduino, assim possibilitando passagem de
corrente através do coletor e do emissor. Nele estará conectado um relé, que então
abrirá o circuito onde está conectado o componente a ser usado. Neste projeto, os
relés ativarão as duas válvulas e o fogareiro.

2.3. Integrando as duas plataformas

Falando desta aplicação específica, para controlarmos o Arduino pela
codificação em MATLAB existem duas maneiras. Uma é fazendo com que o Arduino
envie valores a porta serial, que serão lidos pelo MATLAB, e vice-versa. Outra solução é
a desenvolvida pela MathWorks, para gerir a comunicação com o Arduino. Um pacote
é disponibilizado no site do MathWorks, em http://www.mathworks.com/hardwaresupport/arduino-matlab.html. Esta conexão criará um servidor para o MATLAB na placa
do Arduino. Dessa forma, toda codificação é feita no MATLAB e então é executada na
placa Arduino. Para isso, descompacta-se o arquivo baixado, e se abre o arquivo
“adiosrv.pde” na pasta adiosrv. Então faz-se o upload do mesmo para o Arduino. A
partir daí, não é necessário que mais nenhum código seja enviado ao Arduino, sendo
todos os comandos feitos a partir da conexão com o MATLAB.

2.4. Eletrônica aplicada neste projeto

Para tornar este projeto possível sem danificar o Arduino devido às altas
tensões e correntes que alguns componentes consomem são necessários circuitos de
proteção, compostos de diodos, transistores e relés basicamente. Além destes
também serão usados resistores que são longos conhecidos, desde os estudos do
ensino médio de todos nós. Também analisaremos o funcionamento de um
componente essencial neste projeto, o sensor de temperatura e dos motores (mini
bombas d’água) que tornarão possível a capitação de uma grandeza física levando-a

para dentro do computador através do Arduino e transformá-la
transformá la em ação sobre o meio
ao qual o sistema é aplicado.

2.4.1 Resistores

Os resistores são utilizados como divisores
divisores de tensão e como barreiras para a
corrente, provocando sua redução. Como divisores de tensão é o caso onde tem-se
tem
uma fonte de tensão com um ponto de tensão de entrada Ventrada e então tem-se
tem dois
resistores em série terminando-se
terminando
no terra. Assim a tensão
são captável entre o ponto
entre os dois resistores,, a tensão de saída Vsaída é dada pela soma das duas resistências
dividindo
ndo a resistência ligada à terra vezes a tensão de entrada, como na fórmula: 

í   

2.4.1.1 

 

Figura 2.4.1.1 – Esquema de ligação de um divisor de tensão

Além disso, sabemos que para a corrente em um fio de resistência R, que a
relação entre a tensão e a corrente é dada pela Lei de Ohm. Assim quando precisamos
reduzir a corrente, como no caso deste projeto em que as portas digitais podem
suportar no máximo uma corrente de 50 mA e as portas de alimentação no máximo
correntes de 500 mA, dimensiona-se
dimensiona se os resistores para que com a tensão em questão
esse limite decorrente não seja ultrapassado.  

2.4.1.2 

2.4.2 Relés

Relés são componentes que atuam como chaves que são extremamente fáceis
de serem usados. O dispositivo é formado por uma bobina que é ligada ao circuito
através de dois pinos e possui outros pinos que são completamente independentes
quanto ao circuito ao qual a bobina pertence. Quando surge uma tensão nos terminais
da bobina uma corrente é gerada e esta passa através da bobina gerando um campo
magnético que move uma haste de metal que abre o contado entre dois pinos
(terminais) do relé e fecha um curto-circuito entre um desses terminais e outro
terminal que antes estava fechado. Dessa forma é possível controlar através de quais
dos pinos fluirá a corrente.
Pode parecer estranho é claro o uso dos relés à primeira vista, pois o por quê
de fazermos a ligação para permitir ou não a corrente num circuito independente se já
controlamos a corrente no próprio circuito. A justificativa é simples, em circuitos
eletrônicos as correntes são baixas sendo da ordem de miliampères, porém para
algumas existe uma corrente maior no uso, como em motores movidos a 110 V que
precisam ser acionados por um circuito eletrônico. Neste caso é necessário que apenas
o circuito independente do relé esteja conectado ao dispositivo alimentado pela
tensão de 110 V, separado do circuito. Dessa forma o relé atua como uma chave para
um circuito de proteção.

Figura 2.4.2.1 – Parte interna de um relé de 5 terminais.

2.4.3 Transistores e diodos

Alguns componentes foram essenciais para o desenvolvimento da eletrônica
nos últimos anos. Estes componentes são baseados nas propriedades dos materiais
semicondutores (à base de óxidos de silício e germânio). Não cabe a este artigo

descrever o mecanismo físico real destes dispositivos, porém é de sua alçada fazer
uma breve introdução ao seu funcionamento prático.
Desta forma, inicialmente, o diodo é um componente que possui polarização,
ou seja, o seu funcionamento muda ao invertermos a tensão. Quando uma tensão é
aplicada diretamente aos pólos do diodo ideal então este permitirá a passagem de
corrente. Em contrapartida, quando uma tensão é aplicada em seus terminais
reversamente, nenhuma corrente flui pelo diodo. Em diodos normais na verdade
quando na polarização reversa, o diodo permite a passagem de corrente, porém de
apenas alguns nanoampéres ou microampéres dependendo do material do diodo.
Sendo assim ainda pode ser utilizado com a finalidade de bloquear a corrente em um
determinado sentido. Contudo, basta saber que as aplicações de um diodo se
distribuem em todo tipo de uso, desde circuitos simples como o empregado neste
artigo até circuitos extremamente complexos como os circuitos internos de alguns
dispositivos eletrônicos.

Figura 2.4.3.1 – Diodo, o pólo negativo é representado pelo traço em cinza.

Figura 2.4.3.2 – Representação de um diodo em simbologia de circuitos

Os transistores por outro lado, apesar de serem feitos também de materiais
semi-condutores, devido a sua alocação no dispositivo, possuem um funcionamento
diferente. Os transistores possuem três terminais, onde a passagem de corrente
através de um destes, que é a base, permite a passagem de corrente através dos
outros dois, o emissor e o coletor. Com isso, os transistores atuam como já chaves no
sentido de um circuito controlar o outro. Por exemplo, tem-se um circuito onde está
ligado um LDR (Resistor dependente de luz), no escuro este resistor tem uma alta
resistência, porém na presença de luz sua resistência abaixa drasticamente. Desta
forma se um LDR estivesse ligado à base de um transistor, cujos terminais emissor e
coletor estão ligados a uma lâmpada, ao receber luz o LDR diminuiria sua resistência e
assim permitiria a passagem de corrente através do mesmo, fazendo assim com que a
lâmpada fosse ligada. Como conclusão vemos que seu uso pode ser expandido a
diversas aplicações onde haja a necessidade de controlar o funcionamento de partes

de um determinado circuito, tornando-as em alguns momentos ativado e em outros
desativado.

Figura 2.4.3.3 – Representação de um transistor em um modelo de circuito

Figura 2.4.3.3 – Transistor 2n-3904

2.4.4 O sensor de temperatura LM35

Neste projeto foi utilizado o sensor de temperatura LM35, por possuir um
funcionamento muito simples e uma boa precisão. O LM35 possui o formato de um
transistor, e é um equipamento que precisa de uma alimentação de até 5 V corrente
contínua. Desta forma os pinos laterais são a alimentação, sendo o da esquerda
olhando pela parte achatada, o do positivo +5V e o da direita o terra. O pino do centro
é o responsável pelo sinal que identifica a temperatura. Para cada 1 °C o pino do
centro libera uma tensão de 10 mV. Dessa forma é fácil obter a temperatura ambiente.
Basta pegar o valor da tensão e multiplicá-la por 100. Porém a entrada analógica do
Arduino não fornece diretamente a tensão, mas sim um valor analógico que vai de 0 a
1023 numa faixa de 0 V a 5 V. Assim para efetuar a conversão basta aplicar-se uma
regra de três simples para se descobrir o valor da tensão lida a partir do valor entregue
pelo Arduino.

Figura 2.4.4.1 - Sensor de temperatura LM35.

2.4.5 Amplificadores operacionais e o LM324

Amplificadores operacionais são dispositivos com inúmeras aplicações, sendo
usados em microfones, sensores, e diversos casos onde é necessário aumentar-se a
amplitude do sinal para torná-lo mais claro. O que eles fazem é simplesmente criar um
ganho para uma tensão de entrada, que dependerá da forma com que se monta o
circuito do amplificador, já que existem vários tipos, e das resistências utilizadas nesta
forma. Os amplificadores são dispositivos de três terminais principais, sendo estes,
entrada inversora, entrada não-inversora e saída. Além disso, se tem os dois terminais
de alimentação do amplificador, já que a amplificação só é possível se existe tensão
suficiente para aquela amplificação.
Neste projeto a montagem do amplificador utilizada foi a de amplificador nãoinversor. Ele recebe este nome pois o sinal é recebido com uma fase e amplificado
nesta mesma fase, ou seja, se a entrada do amplificador é de uma tensão positiva, sua
saída também será positiva, proporcional a entrada vezes o ganho de acordo com as
resistências. A Montagem consiste no sinal que se deseja amplificar, conectado a
entrada positiva (não-inversora) e a realimentação negativa, que consiste em um
resistor Rf que é ligado a saída e a entrada negativa (inversora). Além disso, um
resistor Ri é ligado a entrada negativa e conectado ao terra. A representação abaixo
mostra a montagem.

Figura 2.4.5.1 – Circuito de um amplificador operacional não-inversor

O ganho da tensão de saída Vo é dado pela relação a seguir: 

 1 +  

 (2.4.5.1) 

O LM324 nada mais é que um circuito integrado de 4 amplificadores. Circuitos
integrados são dispositivos que possuem a montagem de vários circuitos úteis dentro
dos mesmos, e assim facilitam o uso de várias ferramentas. O LM324 neste caso,
permitiu que fosse usado um amplificador operacional neste projeto. Os pinos 4 e 11
do CI (Circuito Integrado) LM324 são o +V e –V respectivamente. E os pinos laterais e
das pontas são as saídas e entradas de cada um dos quatro amplificadores internos.
Neste projeto usamos o gate B, que especifica o uso do amplificador inferior esquerdo
olhando o CI de cima onde a contagem dos pinos começa encima à esquerda. Como
mostrado na figura abaixo.

Figura 2.4.5.2 – Esquema de um LM 324, visto de cima.

Figura 2.4.5.2 – LM 324N, empacotado com plástico, como o usado neste projeto.

2.4.6 Capacitores

O uso de capacitores circuitos pode ter vários objetivos, mas em muitos deles o
objetivo de colocar um capacitor é o de filtrar o sinal. Num circuito de corrente
contínua o capacitor permite a passagem de corrente até que sua capacidade de
armazenar carga elétrica se esgote e então ele impede a passagem de corrente, e
então é como se o circuito estivesse aberto. Este é basicamente seu funcionamento
num circuito de corrente contínua.
Ao colocarmos um capacitor em série com uma fonte de tensão V, ele será
carregado até esta tensão, com uma carga qualquer própria dependente de sua
capacitância. Se essa fonte de corrente contínua não for constante, ou seja, for
oscilante entre valores positivos, o capacitor no momento que a tensão da fonte for
menor que a tensão já alcançada pelo capacitor, fornecerá tensão ao circuito. Como
mostrado na figura abaixo.

Figura 2.4.6.1 – Gráfico da tensão de uma fonte em paralelo com um capacitor.

Figura 2.4.6.2 – Esquema de ligação em paralelo Fonte-Capacitor.

Na figura 2.4.6.1 acima, as linhas pontilhadas em forma de sino seriam a tensão
fornecida pela fonte em paralelo com o capacitor como mostrado na figura 2.4.6.1,
onde o capacitor é o símbolo com um “C” ao lado esquerdo e “r” é a resistência
interna da fonte. Vemos que quando a tensão vai cair o capacitor começa a fornecer
tensão, que dessa forma fica mais constante. Isso pode ser feito em circuitos quando

não se tem muita constância da tensão fornecida pela fonte, então se coloca
capacitores em paralelo para que a tensão seja mais constante.

Figura 2.4.6.3 – Capacitor eletrolítico como o utilizado no projeto, o terminal com a faixa cinza é o
negativo.

2.5 Alguns pontos importantes sobre eletromagnetismo e blindagem

Muitos foram os físicos que tiveram grande impacto no mundo graças às suas
descobertas. No ramo do eletromagnetismo podemos citar Faraday, Lenz, Maxwell,
Ohm, Gauss e muitos outros. Durante a resolução deste projeto, alguns obstáculos
surgiram e é possível perceber a aplicação de leis de alguns destes cientistas. Então
nada mais justo que fazer uma breve passagem sobre o conceito destas leis, a Lei de
Faraday da indução e a lei de Biot-Savart.
A Lei de Faraday diz o seguinte: “A fem induzida em uma espira fechada é dada
pela taxa de variação do fluxo magnético, com sinal negativo, através da área
delimitada pela espira”. Esta lei pode ser representada por: 
− 

Φ 
!

Isso quer dizer que se um circuito fechado estiver na presença, por exemplo, de
um campo magnético gerado por fios que transportam corrente alternada. O efeito
deste campo magnético pode ser altamente prejudicial ao funcionamento do circuito.
Uma vez que a corrente é alternada, quer dizer que ela varia, chamando-se a
amplitude de 2A, entre +A e –A na forma de uma, senóide que é a convencional
fornecida pelas redes elétricas, como mostrado no gráfico a seguir.

Figura 2.5.1 – LM 324N, empacotado com plástico, como o usado neste projeto.

Este gráfico mostra que a corrente varia bastante ao longo do tempo. A relação
entre a corrente neste fio de c.a. com a campo magnético gerado é dada pela lei de
Biot-Savart:
#$ 
"

% ( )$ * +̂
'
4&
+

E como há uma relação entre o campo e a corrente, e como a corrente varia ao
longo do tempo, sabemos que o campo também o faz. Neste sentido sabemos que
haverá uma fem induzida no circuito fechado próximo ao fio de c.a. Além disso, essa
fem induzida gera uma fem induzida, que é igual a ε/R, onde R é a resistência do
circuito no pedaço onde o campo está agindo.
Dessa maneira, a corrente no circuito não será aquela prevista nos cálculos,
mas sim a prevista mais a corrente induzida, sendo assim, ter-se-ia, a partir das leis
mostradas e da discussão feita:
(  - = (. /0  + (0 120 = (. /0  −

1  % ( )$ * +̂
. 3 '
4 
! 4&
+

Com isso, as leituras de um sensor, por exemplo, que dependeriam da corrente
que é recebida no mesmo, seriam alteradas já que não mais apenas a corrente
alternada está presente. E mais, além disso, como a corrente varia entre valores
positivos e negativos, o sentido do campo magnético gerado varia e assim o sentido da
corrente induzida também, gerando grandes alterações nas leituras, com grandes
oscilações.
Para contornar o problema de correntes induzidas em um fio elétrico é
necessário o uso da blindagem. Em termos práticos muito se houve falar da gaiola de
Faraday, famoso experimento do cientista inglês Michael Faraday, que ficou dentro de
uma gaiola metálica fechada e mandou que seus assistentes a eletrizassem com altas
descargas elétricas, o cientista porém em seu interior não se feriu. Isso porque no

interior de um condutor metálico o campo elétrico é nulo. Sem campo elétrico não há
d.d.p. e sem esta não há corrente. Porém este é um fato eletrostático, que não
continua sendo satisfeito no caso descrito acima. A blindagem metálica por si só não
protege fios elétricos de campos magnéticos indutores de corrente. Para este fim é
preciso fazer o aterramento da estrutura metálica que envolve o cabo, permitindo que
a corrente seja induzida na superfície metálica externa e flua através dela até o
aterramento, que possui potencial nulo.
Isso aplicado ao problema do projeto tornou-se a solução, visto que o campo
gerado pelo fio de c.a. flui através da blindagem metálica externa, não havendo fem
induzida sobre o fio interno, e assim sobre o circuito (ou sobre o sensor caso o
envolvamos em material condutor) e assim a corrente induzida não existe, logo a
corrente real é aquela prevista para aquele circuito.
Muitos dispositivos utilizam este tipo de blindagem para justamente evitar os
campos magnéticos ao redor, comuns em aparelhos eletrônicos e mesmo nas paredes
por onde passa a corrente alternada através dos fios. Cabos de telefone, de fontes, de
rede e muitos outros possuem uma blindagem metálica, que nos equipamentos é
ligada ao aterramento, muitas vezes a própria estrutura metálica do equipamento.

Figura 2.5.2 – Representação de um cabo com sua blindagem exposta: o condutor é o cabo de cobre no
centro, o metal externo é a blindagem.

3. Montagem experimental

3.1 Material Utilizado

- Duas válvulas de água, de 110 V, da marca Emicol.
- 2 joelhos à 90% de 3/4 de polegada, com rosca.
- Uma protoboard.
- 3 latas de tinta vazias.

- 3 relés CF413005, fabricante NCR.
- 3 transistores modelo 2N 3904-H36.
- 3 diodos modelo 11001N1.
- 4 resistores de 1 KΩ e 1 resistor de 8,2 KΩ.
- Arduino UNO Rev 3.
- 2 capacitores de 1 mF.
- Um sensor de temperatura LM35.
- 4 m de cabo paralelo de 2,5 mm de diâmetro.
- 2 m de fio de cobre isolado de 0,5 mm de diâmetro.
- 6 conectores RCA macho.
- 6 conectores RCA fêmea.
- 1 fogareiro de 110 V.
- 1 m de tubo de borracha móvel de 5 mm de diâmetro.
- 50 cm de tubo de plástico transparente de 1 cm de diâmetro.
- Um circuito integrado LM324N.
- Um computador com MATLAB ou MCR instalados.

3.2 Montagem Mecânica do Sistema

A montagem desses componentes consiste em um recipiente central (uma
lata), onde se permite controlar a temperatura. Nela haverá um furo para quando o
nível de água chegar a certo nível ele escorra pelo ladrão e caia no recipiente
posicionado à seu lado. Outro recipiente estará posicionado em um nível mais alto. Um
fogareiro estará posicionado abaixo do recipiente de controle (central). O outro
recipiente terá água a temperatura ambiente. Um furo é feito na base do recipiente
que está a um nível elevado. Nele está conectada a válvula, que então é ligada ao
recipiente central por uma tubulação. Dentro do tubo central existe um sensor que
está conectado com o Arduino.
A válvula do recipiente a nível elevado e o fogareiro são conectados a tomada
de 110 V e aos relés que fecharão os circuitos quando acionados pelo circuito de
proteção do Arduino. Mais à frente veremos como é o funcionamento do circuito.

A partir das leituras deste sensor, e dos valores fornecidos pelo usuário do
sistema pelo programa desenvolvido no ambiente MATLAB, o controle será ativado.
Um gráfico mostra em tempo real as leituras de temperatura dentro do recipiente
central. Quando esta temperatura está abaixo da temperatura mínima da faixa de
temperatura fornecida ao programa pelo usuário, é ativado o fogareiro. A ativação se
dará através do sinal digital enviado pelo Arduino ao circuito de proteção, que o
ativará. Da mesma forma, se a temperatura passa da máxima estabelecida, o sistema
passa o sinal digital ao circuito de ativação pelo Arduino, que ativa a válvula de água
fria. Dentro da faixa estabelecida, ambos os mecanismos ficam desligados dentro da
faixa de controle.

Figura 3.2.1 – Esquema de montagem da parte mecânica do sistema, excluindo conexões com o circuito.

3.3 Montagem do circuito

Existem dois circuitos neste projeto. Um é o circuito de entrada, que fornecerá
dados da leitura do sensor ao Arduino, que por sua vez passará os dados ao MATLAB.
O segundo é o circuito de proteção que ativa os dispositivos de controle de
temperatura (Válvula e fogareiro), também ligado ao Arduino, pois dependendo da
leitura feita no primeiro circuito, o Arduino liberará os sinais necessários para ativação
dos equipamentos necessários naquele momento.
Começando pelo circuito de proteção, temos abaixo o esquema da montagem
do circuito.

Figura 3.3.1 – Esquema do circuito de saída do sistema de controle de temperatura.

O funcionamento de cada uma das saídas, ou seja, dos pinos digitais 8 e 12 é
exatamente o mesmo, pois podemos ver que os circuitos são idênticos em cada uma
dessas saídas, portanto entendendo uma, entendemos todas.
Inicialmente, temos que entender o por quê do sistema de proteção. O Arduino
como dito anteriormente, só pode suportar uma corrente máxima de 50 mA. Como o
relé tende a consumir uma corrente maior que essa, cerca de 500 mA, para a tensão
fornecida nas saídas digitais que é de cerca de 5 V, há a necessidade de haver
transistores entre ambos. Assim quando o sinal é liberado pelo Arduino, a base de
transistor o recebe, permitindo assim a passagem de corrente através do mesmo, uma
vez que este está sendo alimentado por uma bateria de 9 V. O ganho de corrente do
transistor é de 10, logo precisamos de dois transistores. O primeiro por estar com sua
base diretamente ligada ao Arduino, recebe a corrente máxima que o mesmo fornece,
quase 50 mA, porém se fosse só isto, teríamos uma sobrecarga. Assim o coletor do
primeiro transistor fica ligado a base do segundo, e como há um resistor de 270 Ω, a
corrente fica limitada a 9 V/270 Ω = 33 mA. Com isso, a corrente da base do primeiro
transistor fica dez vezes menor que isso, logo 3,3 mA. E a corrente no coletor do
segundo transistor fica sendo 330 mA, já sendo o suficiente para ativar o relé. Assim,
ao ativar a saída em um dos pinos de saída digital, o circuito permite a passagem de
corrente pelo relé que por sua vez ativa o circuito dos dispositivos de controle. Este é o
funcionamento do circuito.
Porém, se notarmos bem, ainda não se tem uma explicação para o motivo de
haver um diodo com polaridade revertida em paralelo com a bobina do relé. Sabemos
que o ativador do circuito individual do relé é o campo magnético gerado pela bobina

do relé que liga a chave, fechando o circuito separado. É sabido também que bobinas
ao serem descarregadas, têm uma variação em seu fluxo magnético, ou seja, uma
f.e.m. é induzida como prevê a lei de Faraday. E Como diz a lei de Lenz, essa f.e.m.
induzida surge de tal forma que ela se opõe a força que cria a variação no fluxo
magnético, desta forma uma corrente no sentido contrário ao da corrente existente é
criada, podendo essa corrente em sentido oposto danificar o transistor. Por isso então,
é colocado um diodo em paralelo ao relé, pois ele só permite que a corrente passe no
sentido de ida, não no de volta e assim o transistor fica protegido.
Olhemos agora para o circuito de entrada de dados. Que fornece tensão do
sensor para a porta analógica 0 do Arduino.

Figura 3.3.2 – Circuito de entrada do sistema de controle de temperatura.

Ao analisar o fato de que as leituras deste sistema devem ser de no máximo
100 °C, pois acima disso não haveria mais água e sim vapor, percebemos uma
deficiência no sinal do sensor. A faixa de sinal de entrada do Arduino varia de 0 a 1023
quando o a tensão de entrada vai de 0 V a 5 V. Porém, se prestarmos atenção, o LM35
confere 10 mV para cada 1 °C, desta forma, para 100° C a tensão fornecida é igual a
100x10 mV = 1 V, logo não se aproveita toda a faixa de leitura do Arduino. Sendo que o
menor intervalo entre uma leitura já convertida no Arduino e outra, por exemplo,
entre 104 e 105, tem-se que este 1 está para a tensão x assim como 1023 está para 5
V, logo a a tensão x é igual a 5 mV, que equivale a 0,5 °C, ou seja, a leitura de
temperaturas correria variando 0,5 °C entre uma e outra.
Para melhorar esta leitura, precisamos multiplicar a tensão vinda por um
determinado ganho, pois, por exemplo, multiplicando por 10 a tensão do sensor,
teríamos que agora a tensão lida no arduino estaria não mais equivalente 10 mV para
cada 1 °C, mas sim 100 mV para 1 °C, e assim a menor variação na leitura do Arduino

passaria a ser 0,05 °C. Para conseguir este ganho de 10 vezes a tensão utilizamos o
amplificador operacional LM 324. No caso deste circuito, ele fornece um ganho de 9,2
vezes a tensão de saída do sensor. Pois aplicando as resistências utilizadas na fórmula
2.4.5.1, temos que a tensão na saída do amplificador operacional é 8,2/1 + 1 = 9,2.
Para alimentar o amplificador operacional usamos a montagem de fonte de
alimentação simétrica, onde com duas baterias de 9 V, conectadas em série com um
fio entre elas ligado ao terra, para que se possa fornecer +9 V e -9V ao circuito. Além
disso, com o objetivo de tornar a d.d.p. vinda da saída 5 V do Arduino ainda mais
constante, fez-se necessário o uso de dois capacitores de 1000 μF em paralelo com a
alimentação do sensor. Desta forma as leituras do sensor ficam mais constantes, sem
grandes amplitudes entre picos. E assim é terminada a análise do circuito de entrada
do Arduino.

Figura 3.3.2 – Arduino conectado aos dois circuitos de entrada e saída. Visão superior.

Figura 3.3.2 – Arduino conectado aos dois circuitos de entrada e saída. Visão semi-frontal.

Figura 3.3.3 – Foto ampla da montagem realizada no laboratório de mecânica da EEIMVR.

Figura 3.3.4 – Foto da montagem, vista em parte, realizada no laboratório de mecânica da EEIMVR.

4. Software de Controle

Para este projeto, foi desenvolvida uma GUI onde estão contidos: Uma caixa de
texto para a temperatura máxima da faixa de controle, uma caixa de texto para a
temperatura mínima da faixa de controle, um indicador de temperatura atual, um
gráfico mostrando a temperatura ao longo do tempo com os limites de temperatura
demarcados, um botão para iniciar o controle da temperatura e um botão para parálo, além de um botão que permite que se abra gráficos de antigos controles de
temperatura. A codificação nas GUI’s é feitas de uma maneira um pouco diferente da
programação direta dos scripts padrões. Elas são baseadas nas funções que pertencem
a cada componente na interface, sendo que a codificação é separada entre estas
funções, não seguindo então um código único com início, meio e fim.
Cada componente da GUI possui uma função no arquivo do script da interface,
chamada Callback. Essas funções são ativadas quando estes componentes são
acionados. Por exemplo, para um botão executar uma ação quando este for “clicado”,
basta colocar o comando que se deseja na função Callback deste botão. Desta forma
então, foi codificado o script da GUI deste projeto em trÇes funções Callback e uma na
função CloseRequest, que é parecida com a Callback, porém é acionada quando a tela
inteira do programa é fechada.
As funções Callback ficam uma no botão “Parar Controle”, uma no botão
“Iniciar Controle” e uma no botão “Abrir Arquivo”. A função CloseRequest é para o
caso do usuário apertar o botão que fecha a janela do programa. Esta janela é
mostrada a seguir.

Figura

4.1: Tela do programa de controle

O código mais importante está presente na Callback do botão “Iniciar
Controle”, que é responsável pela manutenção o gráfico da temperatura em tempo
real do sistema de aquecimento, sendo este:
function btt_Inicia_Callback(hObject, eventdata, handles)% Definição
da função CallBack do botão de Iniciar Controle

temp_Max = get(handles.caixa_TempMax,'String');
temperatura Máxima da caixa de Texto

%

pega

o

valor

da

temp_Min = get(handles.caixa_TempMin,'String'); % pega o valor da
temperatura Mínima da caixa de Texto
if isnan(str2double(temp_Max)) || (str2double(temp_Max) <= 0) %Testa
se a temp_Max é numérica e maior menor ou igual a zero
errordlg('Por favor, digite uma temperatura máxima
válida.','Erro');% mostra a mensagem
return;% sai da função CallBack
end
if isnan(str2double(temp_Min)) || (str2double(temp_Min) <= 0) %Testa
se a temp_Min é numérica e maior menor ou igual a zero
errordlg('Por favor, digite uma temperatura mínima válida.',
'Erro');% mostra a mensagem
return;% sai da função CallBack
end
if str2double(temp_Max) <= str2double(temp_Min) %Testa se a temp_Max é
menor ou igual a temp_Min
errordlg('A temperatura Máxima deve ser maior que a temperatura
Mínima', 'Erro');% mostra a mensagem
return;% sai da função CallBack
end
conectado = 0; %inicializa a variável que verificará se foi realizada
a conexão com o arduino via porta serial
try % tenta executar os comandos descritos em sua estrutura
if exist('a','var') && isa(a,'arduino') && isvalid(a), %testa se
há alguma conexão com o arduino
% nada a fazer
else
set(handles.caixa_Info,'String','Conectando...');%Exibe
mensagem enquanto efetua a conexão
a=arduino('COM6');%estabeleca a conexão com o arduino na
variável a pela porta serial COM6
set(handles.caixa_Info,'String','Conectado!');%Exibe mensagem
quando conexão é alcançada
end
conectado = 1; % coloca o valor 1 mostrando que a conexão foi
estabelecida
catch err % capita o erro ao tentar executar o código dentro da
estrutura do try
msg = 'Erro ao tentar efetuar a conexão com o arduino'; % atribua
a mensagem a variável "msg"
errordlg(msg); % exibe a mensagem de erro em uma janela ao usuário
rethrow(err) % exibe a descrição do erro na Command Window do
MATLAB
end % encerra o try
if conectado == 1 % verifica se a conexão do arduino foi estabelecida

set(handles.btt_Inicia,'Enable','off'); % Desabilita o botão
"Iniciar Controle"
set(handles.btt_Abrir,'Enable','off'); % Desabilita o botão "Abrir
Arquivo"
set(handles.btt_Para,'Enable','on'); % Habilita o botão "Parar
Controle"
set(handles.caixa_TempMax,'Enable','off'); % Desabilita a caixa de
texto da temperatura máxima
set(handles.caixa_TempMin,'Enable','off'); % Desabilita a caixa de
texto da temperatura mínima
handles.graficoTemperatura; %aciona o gráfico
x=0:500;y=0.*x+str2double(temp_Max); %define a linha de
temperatura máxima
handle.graficoTemperatura=plot(x,y,'r-');%plota a temperatura
máxima de controle
x=0:500;y=0.*x+str2double(temp_Min); %define a linha de
temperatura mínima
handle.graficoTemperatura=plot(x,y,'b-');%plota a temperatura
mínma de controle
axis([0 50 str2double(temp_Min)-15
str2double(temp_Max)+15]);%fixando a escala do gráfico
sens_Pin=0; % porta analógica onde será posto o sensor de
temperatura
valvFria_Pin=8; % porta digital que ativará a válvula de água fria
fogareiro_Pin=12; % porta digital que ativará o fogareiro
a.pinMode(valvFria_Pin,'OUTPUT'); % configurando a porta como
saída
a.pinMode(fogareiro_Pin,'OUTPUT'); % configurando a porta como
saída
tempo=0;%inicia o contador de tempo
cont=0; %inicia o contador
tempoG=50; %faixa de tempo mostrado no gráfico
FD=1; %frequência de amostragem na aquisição da medida de
temperatura
casas=tempoG*FD; % inicia o número total de leituras para a faixa
inicial abrangida pelo gráfico
vTempo(casas)=zeros; %inicia o vetor tempo com número de células
igual ao da variável casa
vTemperatura(casas)=zeros; %inicia o vetor temperatura com número
de células igual ao da variável casa
format bank;
while strcmp(get(handles.btt_Para,'Enable'),'off') == 0 % verifica
o estado do botão de Parar
for i=(1+tempoG*FD*cont):(tempoG*FD+tempoG*FD*cont)
%inicia o loop que manterá o gráfico rolando ao longo das amostragens
de temperatura
if strcmp(get(handles.btt_Para,'Enable'),'off') == 1 %
verifica se o botão "Parar Controle" foi pressionado
break % encerra toda a estrutura da função
CallBack
end
pause(1/FD);%pausa para respeitar a taxa de amostragem
tempo=tempo+1/FD; %acréscimo no contador de tempo
estado = a.analogRead(sens_Pin) % capita o valor na
porta analógica que vai de 0 a 1023 numa faixa de 0 a 5 V
temperatura = estado*500/(1023*9.2); %Calcula a
temperatura lida

set(handles.txt_TempAtual,'String',num2str(temperatura));
if tempo*FD>=casas %verifica se o número de leituras
ultrapassou o número abrangido pela faixa do gráfico
casas=casas+1;% aumenta em 1 o número de casas
lidas
end
vTempo(i:casas)=tempo; %guarda o novo tempo no vetor
tempo
vTemperatura(i:casas)=temperatura; %guarda uma nova
temperatura no vetor temperatura
handle.graficoTemperatura=plot(vTempo(1:casas),
vTemperatura(1:casas),'g-'); %plota os vetores tempo e temperatura
dentro da faixa valores atual
axis([casas/FD-tempoG casas/FD str2double(temp_Min)-15
str2double(temp_Max)+15]);%estabelece a faixa de valores abrangida
pelo gráfico na amostragem atual
if temperatura>str2double(temp_Max) %verifica se a
temperatura atual está acima da temp_Max
set(handles.txt_TempAtual,'ForegroundColor','r');%Pin
ta de vermelho o indicador da temperatura atual
a.digitalWrite(valvFria_Pin,1);%Liga a válvula de
água fria
a.digitalWrite(fogareiro_Pin,0);%Desliga o
fogareiro
elseif temperatura<str2double(temp_Min)%verifica se a
temperatura atual está abaixo da temp_Min
set(handles.txt_TempAtual,'ForegroundColor','b');%Pinta de azul o
indicador da temperatura atual
a.digitalWrite(fogareiro_Pin,1);%Liga o fogareiro
a.digitalWrite(valvFria_Pin,0);%Desliga a válvula
de água fria
else
set(handles.txt_TempAtual,'ForegroundColor','k');%Pinta de preto o
indicador da temperatura atual
a.digitalWrite(fogareiro_Pin,0);%Desliga o
fogareiro
a.digitalWrite(valvFria_Pin,0);%Desliga a válvula
de água fria
end
end
cont=cont+1;% adiciona um ao contador de escalas de tempo
end
end
a.digitalWrite(fogareiro_Pin,0);%Desliga o fogareiro
a.digitalWrite(valvFria_Pin,0);%Desliga a válvula de água fria
delete(instrfind({'Port'},{'COM6'})); % esclui relações de variáveis
com conexões à porta serial 'COM6'
opcao=questdlg('Deseja salvar os dados de controle?','Sistema de
Aquecimento'); % exibe mensagem de pergunta ao usuário
switch opcao % inicia a estrutura do escolha
case 'Yes' % verifica se a opção escolhida foi sim
filename = char(inputdlg('Digite o nome para o arquivo a ser
salvo.','Salvando controle')); % exibe mensagem requerindo o nome que
deve ser salva o controle de temperatura e o aloca na variável
"filename"
save(strcat(filename,'.mat'),'vTempo','vTemperatura','temp_Max','temp_

Min'); % salva as variáveis necessárias para a plotagem do controle
quando reacionado
case 'No'
%nada a fazer
end
set(handles.txt_TempAtual,'ForegroundColor','k'); % Pinta de preto as
letras no display que mostra as temperaturas atuais
set(handles.txt_TempAtual,'String',''); % Escreve o valor de texto em
branco no display de temperatura atual
set(handles.graficoTemperatura,'NextPlot','replace'); % Coloca o
estado do gráfico como substituível
handle.graficoTemperatura=plot(0,0,'w'); % plota um ponto em branco no
gráfico de temperatura
set(handles.graficoTemperatura,'NextPlot','add'); % Coloca o estado do
gráfico como adicionável
clear; % apaga as variáveis na memória do MATLAB

A função deste código é toda aquela esperada pelo botão “Iniciar Controle”.
Seu funcionamento é simples. Ao usuário pressionar o botão, o sistema verifica se as
caixas de texto de temperatura estão preenchidas e com valores cabíveis, uma vez
verificado isto, o sistema continua à próxima etapa, que consiste em se fazer a
conexão com o Arduino. Então é nessa hora que o MATLAB tenta acessar o código do
arquivo “adiosrv.pde” que já fora transferido anteriormente para a placa, para que
possam ser feitos os comandos a seguir. Tendo conectado, a etapa seguinte é a de
determinação das portas de entrada e saída de dados, sendo a analógica a de entrada
e as digitais as de saída. Então começa o controle, a medida que o tempo passa o
sistema ativa ou desativa as saídas digitais de acordo com a leitura feita pelo sensor
que é conectado à entrada analógica do Arduino. Os valores da leitura do sensor
também são plotados no gráfico para o acompanhamento em tempo real da situação.
Uma vez pressionado o botão “Parar Controle” este é desabilitado, então essa
desabilitação é capitada na função CallBack do botão “Iniciar Controle” e todas as
variáveis são apagadas e o controle é encerrado.
Agora temos que analisar então o código presente no botão “Parar Controle”,
ou seja, o código da sua função de CallBack. Que é a seguinte:
function btt_Para_Callback(hObject, eventdata, handles)% Definição da
Função CallBack do Botão de Parar Controle
set(handles.btt_Inicia,'Enable','on');% Habilita o botão de Iniciar
Controle
set(handles.btt_Abrir,'Enable','on');% Habilita o botão de Abrir
Arquivo
set(handles.btt_Para,'Enable','off');% Desabilita o botão Parar
Controle
set(handles.caixa_TempMax,'Enable','on');% Habilita a caixa de texto
de temperatura máxima
set(handles.caixa_TempMin,'Enable','on');% Habilita a caixa de texto
de temperatura mínima
set(handles.caixa_Info,'String','');% Apaga mensagem de conexão

Este código é bem simples, pois de fato sua função é apenas a de avisar a
função CallBack do botão “Iniciar Controle” que o botão de “Parar Controle” foi
acionado. Desta forma ao desabilitar o botão de “Parar Controle” a função do loop do
controle de sistema previamente iniciada é encerrada. A próxima função a ser
analisada também é simples, sendo esta parte do tipo CloseRequestFcn. Ela é acionada
ao ser fechada a janela inteira do sistema, então temos o seguinte código:
function TelaPrincipal_CloseRequestFcn(hObject, eventdata, handles)%
Definição da função acionada ao se tentar fechar a janela do programa

if exist('a','var') && isa(a,'arduino') && isvalid(a), % testa se o
arduino ainda está conectado
opcao=questdlg('O sistema está será encerrado assim como todas as
comunicações ativas seriais, deseja realmente fechar?','Sistema de
Aquecimento');
switch opcao
case 'Yes'
a.end; % encerra a comunicação com o Arduino
delete(instrfind({'Port'},{'COM6'})); % deleta quaisquer
variáveis relacionadas com a porta 6
delete(hObject); % fecha a tela do programa
case 'No'
%nada a fazer
end
else
delete(hObject);% fecha programa todo
end

A função deste código é simplesmente verificar se a conexão com o Arduino
está estabelecida no momento que o usuário fecha o programa, pois nesse caso,
poderia ser um engano, pois se perderia o controle e a oportunidade de salvá-lo. Neste
caso, em que o Arduino encontra-se conectado, o sistema pergunta ao usuário se ele
de fato deseja encerrar o programa, caso afirmativo, ele o encerra e perde-se o
controle corrente.
A última função a ser analisada é o CallBack do botão “Abrir Arquivo”, que
permite ao usuário verificar controles anteriores do sistema.
function btt_Abrir_Callback(hObject, eventdata, handles) % Define a
função CallBack do Botão Abrir Arquivo

if strcmp(get(handles.btt_Abrir,'String'),'Abrir Arquivo')% Verifica o
texto do botão Abrir Arquivo
filename=char(inputdlg('Digite o nome do arquivo a ser
encontrado.','Abrir Arquivo'));% Exibe mensagem pedindo o nome do
arquivo a ser procurado e aloca o nome adquirido na variável
"filename"
try % tenta executar a sequência de comandos limitado por sua
estrutura
if strcmp(filename,'') %verifica se o nome digitado é nulo
%nada a fazer

else % capita o caso contrário, quando algum nome foi passado
load(strcat(filename,'.mat')); % carrega o arquivo com o
nome dentro da variável filename
set(handles.btt_Abrir,'String','Fechar Arquivo'); % coloca
o texto "Fechar Arquivo" no botão Abrir Arquivo
set(handles.btt_Inicia,'Enable','off'); % Desabilita o
botão Iniciar Controle
set(handles.caixa_TempMax,'Enable','off'); % Desabilita a
caixa de texto de Temperatura Máxima
set(handles.caixa_TempMin,'Enable','off'); % Desabilita a
caixa de texto de Temperatura Mínima
set(handles.caixa_TempMax,'String',char(temp_Max)); %
Coloca na caixa de texto de Temperatura Máxima o valor da Temperatura
Máxima do controle carregado
set(handles.caixa_TempMin,'String',char(temp_Min)); %
Coloca na caixa de texto de Temperatura Mínima o valor da Temperatura
Mínimaa do controle carregado
x=0:length(vTempo);y=0.*x+str2double(temp_Max); % Define
uma função de forma de reta com valor da Temperatura Máxima
handle.graficoTemperatura=plot(x,y,'r-'); % plota a
temperatura máxima de controle
x=0:length(vTempo);y=0.*x+str2double(temp_Min); % Define
uma função de forma de reta com valor da Temperatura Mínima
handle.graficoTemperatura=plot(x,y,'b-'); % plota a
temperatura mínma de controle
handle.graficoTemperatura=plot(vTempo, vTemperatura,'g-');
%plota os vetores tempo e temperatura dentro da faixa valores atual
axis([0 length(vTempo) str2double(temp_Min)-20
str2double(temp_Max)+20]); % Define o intervalo de dados mostrado no
gráfico de acordo com as variáveis carregadas do controle em questão
end
catch err
errordlg('O arquivo não foi encontrado'); % Exibe a mensagem
de erro caso não seja encontrado o arquivo deixado pelo usuário
rethrow(err) % Exibe no Command Window a descrição completa do
erro
end
else
set(handles.btt_Abrir,'String','Abrir Arquivo'); % Coloca o Texto
"Abrir Arquivo" no botão Abrir Arquivo
set(handles.graficoTemperatura,'NextPlot','replace'); % Define
como substituível o estado do gráfico de Temperatura
handle.graficoTemperatura=plot(0,0,'w'); % Plota um ponto em
branco no gráfico
set(handles.graficoTemperatura,'NextPlot','add'); % Define como
adicionável o estado do gráfico de Temperatura
set(handles.caixa_TempMax,'String',''); % Coloca o texto em branco
na caixa de Temperatura Máxima
set(handles.caixa_TempMin,'String',''); % Coloca o texto em branco
na caixa de Temperatura Mínima
set(handles.btt_Inicia,'Enable','on'); % Habilita o botão Iniciar
controle
set(handles.caixa_TempMax,'Enable','on'); % Habilita a caixa de
texto de temperatura máxima
set(handles.caixa_TempMin,'Enable','on'); % Habilita a caixa de
texto de temperatura mínima
clear; % Apaga todas as variáveis da memória do MATLAB
end

Este código simplesmente faz a pergunta ao usuário de qual o nome do arquivo
a ser aberto. Após isso, ele tenta encontrar o arquivo com o nome fornecido pelo
usuário, caso o arquivo não seja encontrado então é mostrada a mensagem de erro,
caso contrário, o programa plota os gráficos referentes aos dados de controle
encontrados. Uma vez aberto o arquivo, o usuário ao terminar de vê-lo pressiona
novamente o botão que agora está com o texto “Fechar Arquivo” e o arquivo é
fechado e o programa volta à configuração padrão de habilitações na tela.

5. Resultados e Análise

Utilizando as montagens já descritas e mostradas, foram feitos testes que nos
geraram arquivos de controle, que analisaremos aqui, o controles de ampla faixa de
temperatura, controles de baixa faixa de temperatura e controles sem os mecanismos
de tratamento de sinais. Com base nos gráficos faremos a análise do funcionamento
do sistema como um todo.

Figura 5.1 – Gráfico de controle com faixa curta entre as temperaturas máxima e mínima de controle.

Inicialmente, olhemos os problemas encontrados durante o planejamento do
projeto e de sua execução. Os problemas como um todo giram em torno do sensor e
da coleta de seu sinal adequadamente, do tempo de resposta e de sua precisão. Como
o sensor foi encapsulado em um pedaço de tubo de plástico, ele não está em contato
direto com a água. Isso provoca certo atraso no tempo de resposta da mudança de
temperatura dentro do tubo em relação a temperatura d’água. E como dentro do tubo
ainda existe ar e só então o sensor, existe um atraso na resposta do sensor. Porém

este atraso mostrasse não muito importante visto que no longo prazo todo sistema
tende ao equilíbrio, assim ele funciona adequadamente.
Agora olhemos para o gráfico da figura 5.1, nosso primeiro resultado. Vemos
que à medida que o tempo passa, no início, como a temperatura no recipiente está
abaixo da temperatura mínima de controle, o fogareiro estava ligado, porém por um
certo tempo o gráfico tem bem no início uma taxa de aumento da temperatura baixa.
Isso ocorre porque o fogareiro é ligado e devido a sua baixa potência demora a
aquecer a água, além disso, transfere calor à blindagem do sensor e só depois ao
próprio sensor que então responde a este estímulo. A partir daí a temperatura vai
subindo gradualmente sem grandes picos e quando atinge a faixa de temperatura
mínima, quando o fogareiro é desligado, porém devido ao calor armazenado nas
estruturas metálicas do fogareiro e da lata, a temperatura continua a subir. Depois de
um tempo, então acontece o abaixamento da temperatura, pois esta passou do nível
máximo, que ligou a válvula fria, que a resfriou até a temperatura máxima. Este ciclo
se repete por um tempo até que todo o calor armazenado na estrutura acabe e então
a temperatura atinja a temperatura mínima e assim o fogareiro é ligado novamente. O
fato de as estruturas guardarem calor é benéfico, pois assim o sistema mantém sua
temperatura por mais tempo, como é percebido no final do gráfico. Através desse
gráfico o sistema mostrou sucesso
Após esta análise, olhamos para o gráfico da figura 5.2. Este é diferente do
primeiro no sentido de que a faixa de temperaturas aceitáveis é maior, então
analisamos outro aspecto do sistema e do mecanismo como ele funciona. Vemos que
o comportamento ao início do controle é análogo ao do primeiro gráfico, tendo o início
temperatura uma pequena taxa de aquecimento e depois crescendo mais
rapidamente. E também apresenta o comportamento de sobe e desce ao longo do
tempo. Mas uma coisa fica visível, a temperatura alcança a temperatura máxima de
controle, mas não a ultrapassa demais. Pois o calor armazenado foi mais dispersado ao
percorrer uma faixa maior de temperaturas. Isso representa um controle bem estável
da temperatura. Mostrando sua eficácia maior em faixas maiores.
Apesar disso, somos levados a analisar se de fato é necessária uma faixa de
temperatura em vez de simplesmente estabelecer uma temperatura pontual de
controle. De fato é preciso uma temperatura máxima, pois do contrário para este
sistema, haveria um caos maior e não constância. Isto ocorreria porque tendo a
temperatura com valor único buscado, os sistemas ligariam e desligariam a todo o
momento, pois a temperatura não fica muito tempo de fato constante no recipiente,
assim, à todo momento água quente e fria estariam sendo solicitadas sem
necessidade, visto que a temperatura encontrar-se-ia estabilizada. E também a
estrutura metálica não encontraria forma de estabilizar a temperatura só pelo calor
que a mesma guardou.

Figura 5.2 – Gráfico de controle com faixa curta entre as temperaturas máxima e mínima de controle.

Tendo visto os bons resultados obtidos, surge o momento de analisarmos a
quão prejudicada teria sido a coleta de dados caso não tivesse sido feita a blindagem
ou o filtro da tensão no sensor através dos capacitores. De fato ao olharmos a figura
5.3 vemos que o sinal devido ao não filtro da tensão no capacitor é prejudicado, mas
não é absurdo. Em média é possível olhar e dizer por volta de quanto estava passando
a temperatura em cada momento determinado. Sendo que o comportamento do
gráfico foi mantido. O que de fato deveria ocorrer, pois o sistema de funcionamento
não foi alterado, então tudo está dentro do esperado.
Em acréscimo, temos que olhar para a figura 5.4 para perceber que todo o
projeto teria falhado se não tivesse sido encontrada a origem do problema no sinal
(indução de corrente devido à interferência eletromagnética) e feito a devida
blindagem ligando-a a terra para dissipar essa corrente. De fato, ao olharmos para a o
gráfico vemos picos que impossibilitam a leitura. Isso mostra que a origem de fato era
a indução de corrente, pois o sentido da corrente induzida deve ser alternado, pois o
campo que o gera altera seu sentido a medida que a corrente que o gerou ascende ou
descende. Desta maneira surgem picos tão distantes e opostos. Mas felizmente o uso
da blindagem permitiu ao projeto ser finalizado com o sistema em funcionamento
pleno.

Figura 5.3 – Gráfico de histórico controle do sistema sem o uso dos capacitores como filtro no sensor.

Figura 54 – Gráfico de histórico controle do sistema sem o uso da blindagem dos fios do sensor.

6. Conclusão

Toda a análise de um experimento é feita a partir de aproximações e hipóteses e na
hora em que se cria o protótipo e para se por em prática o projeto surgem complicações e
obstáculos. Estes podem ou não ser fáceis de ultrapassar, dependendo do quão bem feito foi o
planejamento e da habilidade de resolver problemas do condutor do projeto. Neste sistema de

controle foram identificados alguns obstáculos como o isolamento do sensor e a vazão da
válvula.
Com vista nestes obstáculos cabe agora avaliar se os resultados demonstraram que
estes obstáculos foram ultrapassados. Tendo em vista a análise anteriormente feita, podemos
dizer que o sistema de controle alcançou o sucesso, isso porque a temperatura obtida durante
os controles eram até certo ponto constantes e, além disso, o tempo de controle não era
demasiado longo. Se pensarmos bem, um ar condicionado, por exemplo, leva certo tempo
para refrigerar um ambiente, então é cabível que o sistema de aquecimento também leve um
tempo para alcançar a temperatura desejada e estabilizá-la. Além disso, a vazão da válvula
mostrou-se boa após a implantação de certa altura ao recipiente que fornecia a água. E, além
disso, as leituras do sensor estavam bastante precisas, não sendo prejudicadas por campos
magnéticos e cargas externas.

Dentro do objetivo deste artigo, que era o de mostrar a interação entre
Arduino e MATLAB e, em acréscimo, de mostrar a capacidade desta união em
controlar um sistema físico com precisão, concluímos que a missão foi terminada com
êxito. Com ferramentas práticas e não muito caras é possível criar uma grande gama
de aplicações, que se expandem desde o meio prático comercial industrial, até o meio
acadêmico. Por exemplo, com o número de experimentos de medidas de tensões e
que poderiam ser realizados com o uso desta ligando, tornando laboratórios mais
eficazes com menor custo.

Referências Bibliográficas

<http://www.mathworks.com/company/aboutus/founders/> 27/07/13 – 15:45
<http://www.mathworks.com/products/compiler/mcr/> 27/07/13 – 16:00
<http://www.mathworks.com/discovery/matlab-gui.html> 27/07/13 – 16:05
<http://www.arduino.cc/> 27/07/13 – 17:00
<http://arduino.cc/en/Main/Software> 27/07/13 – 17:15
<http://pt.wikipedia.org/wiki/Arduino> 27/07/13 – 17:45
BOYLESTAD, R. NASHELSKY, L. “Dispositivos Eletrônicos e Teoria de Circuitos”, Sexta Edição.
Editora LTC.
GILAT, A. “MATLAB com Aplicações em Engenharia”, Segunda Edição. Editora Bookman.
GUSSOW, M. “Eletricidade Básica”, Segunda Edição. Editora Makron Books.

YOUNG, HUGH D. e FREEDMAN, ROGER A., “Física III - Eletromagnestimo”, Décima Segunda
Edição. Editora Pearson.