Monitorização de temperatura e humidade



 


LABSIS

2014

Autores:

Rogério Neves (Nº1100999)

1100999@isep.ipp.pt

João Paulo (Nº1101357)

1101357@isep.ipp.pt

Introdução

Arquitetura

Hardware

Software

Resultados

Conclusões

Referências

 

 

  • Introdução

Início

1.      Contextualização

Este projeto nasceu fora do ISEP com a necessidade para resolver um problema relacionado com humidade criada dentro de certos armários com equipamentos eletrónicos em zonas com valores de humidade elevados que com a queda acentuada de temperatura provocam frequentemente avarias.

Dado o facto de ser um caso real em ambiente industrial, com possibilidade de mais do que um equipamento e a distâncias consideráveis, achamos adequada a sua integração numa rede.

2.      Objetivos

Os objetivos a que nos propusemos foram:

·        Interligar vários destes dispositivos em rede.

·        Comunicação de dados relativos a temperatura e humidade para um PC

  • Arquitetura

Início

1.    Requisitos

Efetuamos uma análise da infraestrutura que tem como destino a implementação dos interfaces e identificamos as seguintes necessidades:

·        Criar uma rede (figura 1) que funcione com 30 interfaces autónomos;

·        Distância entre equipamentos não superior a 100mts;

·        Enviar dados de temperatura e humidade locais em cada um dos interfaces;

·        Acionar um ventilador segundo determinadas condições de humidade e temperatura;

·        Acionar uma unidade de aquecimento segundo determinadas condições de humidade e temperatura;

·        Controlar por meio de um contacto NF a alimentação do armário;

·        Visualizar num interface gráfico no computador os dados de temperatura e humidade e redefinir set points para cada equipamento.

 

Figura 1 - Diagrama da rede RS-485

 

2.    Opções tomadas na Arquitetura

a.      Comunicações RS485

Relativamente à implementação de uma rede de comunicações, optamos por uma rede do tipo RS-485, desenvolvida pela EIA (Electronics Industry Association) e em que “RS” provem da denominação Recommended Standard é baseada numa transmissão diferencial e balanceada de dados a velocidades aceitáveis para o tipo de aplicação, tendo como característica a fiabilidade na aplicação em ambientes industriais, propícios a interferências eletromagnéticas.

As principais características da opção tomada:

·        Transmissão diferencial balanceada;

·        Multiponto;

·        Até 32 estações (pode ir ate 256 estações dependendo do hardware selecionado);

·        Taxa de transmissões de dados até 10Mbps, numa distância 12 metros e até uma distância máxima de 1200 metros, levando a um decréscimo na velocidade de transmissão dos dados, em que no limite poderá chegar aos 100kbps.

 

A comunicação RS-485 pode operar nos modos, full-duplex e half-duplex. No primeiro caso a implementação física é efetuada com um único par em twisted pair (figura 2), sendo que no caso de full-duplex necessitamos de um outro par nas mesmas condições.

 

Figura 2 - Implementação Twisted Pair em half duplex[1]

Este tipo de redes 485 tem diversas tipologias de implementação. No nosso caso optamos pela tipologia Daisy Chain (figura 3) em modo half-duplex, caracterizada pela utilização de resistências de terminação (RT) de 120.

 

Figura 3 - Tipologia Daisy-Chain [2]

 

b.      Comunicações RS-232

É importante, no nosso conceito ter a possibilidade de comunicação com um computador por intermédio de ligação RS-232 (figura 4), ou para que a solução desenvolvida tenha a possibilidade de ser usada em aplicações locais do tipo stand alone sem ligação em rede.

A comunicação série RS-232, também denominado EIA232C e padronizado desde 1969, consiste numa forma padrão de troca de dados binários entre um terminal de dados (DTE) e um comunicador de dados (DCE).

É um tipo de comunicação bastante utilizado entre computadores e periféricos dada a sua simplicidade de implementação.

As principais características são:

·        Configuração de diferentes níveis de tensão, taxa de sinal, comportamento em curto-circuito entre outros;

·        Diferentes tipos de conectores. A nossa escolha recairá para DB9 macho-fêmea;

·        Taxas de transmissão que podem ir até 115.200 bits/s;

·        Distância de cabo que habitualmente pode ser no máximo 15 metros. Aqui poderá haver bastantes divergências, no entanto existem fabricantes de hardware (nomeadamente Texas Instruments) em que descrevem como possível ir até 914 metros com um baud rate de 2400 bits/s;

 

Figura 4 - Ligação típica PC - microcontrolador PIC

 

As principais características comparativas entre RS-232 e RS-485 podem ser observadas na tabela 1.

 

Tabela 1 - Principais características de interfaces RS-232 e RS-485

Principais características de interfaces de comunicação série RS-232 e RS-485

Especificações

RS232

RS485

Modo de operação

Ponto a ponto

Multiponto

Numero total de drivers e receivers

1 driver – 1 receiver

1 driver – 32 receivers

Comprimento máximo da rede

15 Metros

1200 Metros

Taxa de transmissão

20 kbits (tipicamente)

10Mbps

Faixa de tensão do circuito de saída

-7V a +12V

Nível de tensão do circuito de saída – 2 nós (com carga)

Nível de tensão do circuito de saída – 2 nós (sem carga)

Impedância do circuito de saída (Ω)

3k a 7k

54

Consumo máximo de corrente em tri-statepower on

 

Consumo máximo de corrente em tri-statepower off

Faixa de tensão do circuito de entrada

-7V a +12V

Sensibilidade do circuito de entrada

Impedância do circuito de entrada (Ω)

3k a 7k

 

 

c.       Interfaces de entradas

Como entradas digitais para o desenvolvimento do nosso projeto, temos dividido em dois conjuntos. O primeiro diz respeito aos periféricos que se encontram na placa e os restantes ficaram disponíveis para o exterior.

Assim, integrados teremos:

·        Sensor de temperatura e humidade;

·        Endereçamento para rede RS-485.

Disponibilizamos para o exterior 8 entradas digitais que poderão ter terminais comuns diferentes para cada grupo de 4.

Foi equacionada a implementação de 3 entradas analógicas, que possibilitavam a aquisição de sinais 0 a 10V, mas, durante o seu desenvolvimento verificamos que ocuparia espaço adicional e como não era fulcral para o projeto, foi adiada a sua implementação.

 

d.      Interfaces de saídas

A placa vai dispor de 8 saídas digitais independentes entre si. Essas saídas deverão controlar relés com contactos inversores.

Internamente deverão ser utilizadas saídas para indicações locais nomeadamente:

·        Uma saída PWM (futuramente)

·        LED com informação do estado da placa

·        LED com informação do estado de comunicações

·        LED do sistema mínimo – Representa uma onda quadrada com frequência de 1 Hertz.

 

e.      Microcontrolador

No seguimento do que foi a nossa escolha desde o primeiro momento de avaliação e que recaiu para um microcontrolador da Microchip, visto ser uma arquitetura que não foi alvo de estudo no programa do curso e que achamos por bem aproveitar a disciplina para explorar esta tecnologia.

Reunidos os nossos requisitos voltamo-nos para a escolha do “core” do projeto e que dentro das amplas gamas de microcontroladores da Microchip, deveríamos guiar a nossa escolha com base nas necessidades referidas acima. Assim teríamos que reunir no mínimo:

·        Possuir 8 ou 16 Bits;

·        31 Entradas / Saídas

·        Comunicação USART, SPI, I2C;

·        2 PWM;

·        5 Entradas analógicas com resolução mínima de 8 bit;

 

 

  • Hardware

Início

Para a implementação do projeto proposto foi desenhado e implementado um circuito microcontrolado que pode ser subdividido nos seguintes blocos:

·        Unidade de alimentação.

·        Driver para entradas digitais.

·        Driver para saídas digitais.

·        Periféricos de comunicação

·        Unidade de controlo e processamento

 

1.      Unidade de alimentação

Este projeto foi pensado para trabalhar em ambiente industrial e como tal é muito comum estarem disponíveis os 24Vdc nos armários elétricos das máquinas, essa foi a razão pelo qual este valor foi escolhido para alimentar o nosso circuito. Foi escolhido um regulador de 3 terminais LM317 para converter os 24 em 5V (figura5). Mas como o diferencial entre a alimentação e a tensão necessária (5V) é elevada usaram-se dois andares, um primeiro de 24 para 12V e um outro de 12 para 5V. A razão pela qual se escolheu esta conversão em degrau e os 12V intermédios foi porque se pretende numa segunda versão deste projeto incluir saídas analógicas, aproveitando as saídas de PWM do microcontrolador e nesse caso os 12V serão necessários para a alimentação dos amplificadores operacionais de forma a serem possíveis duas saídas analógicas de 0-10Vdc.

 

Figura 5 – Regulador de tensão LM317

2.      Driver para entradas digitais

Para interface de entradas digitais a escolha foi, usar opto acopladores (figura 6) com dois leds em oposição, esta escolha permite que o comum das estradas possa ser o positivo ou o GND. O circuito foi dimensionado para poder trabalhar com os 24Vdc. 

 

Figura 6 - Desenho esquemático do opto acoplador

3.     Driver para saídas digitais

O ULN2803, (figura 7) foi o circuito integrado escolhido para fazer de interface entre o microcontrolador e os relés, o seu uso permitiu poupar componentes e espaço de placa, uma vez que está preparado para cargas até 500mA e já tem integrado os díodos roda livre. As saídas digitais estão equipadas com um relé de dois contatos inversores que serão usados para sinalizar alarmes localmente, controlar um sistema de ventilação, aquecimento e inibir a máquina de ligar caso as condições de temperatura e humidade assim o exigirem.

Figura 7 - Diagrama do ULN2803

 

 

4.      Periféricos de comunicação

Como os armários das máquinas estão normalmente afastados algumas dezenas a centenas de metros e no nosso projeto queremos monitorizar/parametrizar vários destes equipamentos num só terminal, equipamos o nosso projeto com comunicação em rede. Para tal foi escolhida uma rede RS485 [3] que pela sua simplicidade de implementação (Figura 8) e também por ser uma rede muito usada na indústria já tem provas dadas de que se adapta bem em ambientes industriais. Uma vez que na nossa arquitetura, apenas é necessário um mestre e todos os outros se comportaram como escravos, optou-se por uma rede half duplex. Na nossa configuração apenas o PC inicia a comunicação e todos os outros se limitam a receber e a responder quando o seu endereço é chamado. O driver escolhido foi o MAX14780E porque preenche os requisitos e também porque a MAXIM nos disponibilizou amostras para o projeto.

 

Figura 8 – Exemplo de ligação utilizado no nosso projeto

 

O nosso projeto dispõe de uma interface RS232, com uma montagem típica do MAX232, referida anteriormente na figura 4.

 

5.      Unidade de controlo e processamento

A escolha do microcontrolador foi influenciada pela vontade de explorar uma arquitetura diferente da estudada até então e como o grau de exigência a nível de processamento para a nossa aplicação não é muito elevado optamos por um microcontrolador de gama média [4] da família pic16f da Microchip.

O microcontrolador escolhido foi o PIC16f887 que é um dos produtos mais recentes da Microchip. Tem todos os componentes de um moderno microcontrolador, e pelo seu baixo custo, amplo campo de aplicação, alta qualidade e facilidade de adquirir, é a solução ideal para aplicações como:

·        Controlo de processos industriais

·        Controlo de máquinas

·        Medição de valores, entre outros.

 

Algumas das suas características são descritas abaixo:

·        Arquitetura RISC (numero de instruções reduzidas, 35)

·        Todas as instruções precisam de apenas um ciclo máquina, exceto os saltos que gastam dois.

·        Frequência de operação até 20 Mhz.

·        Oscilador interno de 31 Khz até 8 Mhz calibrado de fábrica

·        Tensão de alimentação entre 2.0 e 5.5V.

·        Trinta e cinco (35) pinos de entradas/saídas configuráveis por software.

·        Conversor A/D com 14 canais de 10 bits de resolução.

·        Três temporizadores/contadores independentes.

·        Duas saídas PWM

·        Uma porta USART

Figura 9 - Arquitetura gama média Microchip

 

 A facilidade de obter amostras também contribuiu para a escolha do microcontrolador.

 

6.      Sensor de temperatura e humidade DHT22

A pontos que levaram à opção do sensor DHT22, foram essencialmente o facto de possuir integrado sensor de temperatura e de humidade, o seu preço e a sua fácil implementação. Foi equacionada a opção do SHT11, mas dada a maior amplitude de valores do DHT22 (figura 10) e a diferença de preço, a opção recaiu pelo primeiro.

Este sensor funciona numa gama de tensões de 3.3 a 5V e tem um erro na humidade que varia de  e na temperatura de . Embora a sua precisão não seja um ponto forte, no tipo de aplicações a que se destina é perfeitamente adequado. A sua comunicação é de um bus a uma linha e adicionalmente possui verificação de erro de 8 bits.

 

Figura 10 - Sensor de temperatura e humidade DHT22

 

 

7.      Interligação dos diversos módulos

Uma vez descritos os módulos que compõem o projeto passamos á interligação dos mesmos.

·        O esquema elétrico pode ser visto aqui. Para o desenho do circuito impresso foi usado o KICAD [5]

 

Nas figuras seguintes podem ser observados os vários processos efetuados até à conclusão do protótipo final.

 

 

Figura 11 - Desenho PCB em dupla face

Figura 12 - Imagem 3D e primeiros testes em papel

Figura 13 - Revelação do circuito e teste da fonte

 

 

 

Figura 14 - Ensaio do hardware

 

 

 

  • Software

Início

1.    Descrição do funcionamento

O funcionamento do sistema segue pontos que passamos a enumerar:

·        Cada interface localmente executa uma rotina de verificação dos valores pré-definidos de temperatura máxima, temperatura mínima e humidade máxima. Essa rotina funciona quer em modo online ou offline.

·        Controlo definido na tabela de funcionamento para determinados valores de temperatura e humidade (Tabela 2);

·        Quando ligado a uma consola ou terminal no PC apresenta o valor de temperatura e humidade lidos em cada estação, bem como os valores de set point de cada dispositivo;

·        Cada interface está preparado para responder a pedidos de:

o   Temperatura;

o   Humidade;

o   Temperatura e humidade;

o   Temperatura, humidade e set points.

 

O protocolo de rede RS-485 foi desenvolvido por nós, de acordo com as necessidades que verificamos e com condições que filtram ruídos na rede.

 

 

 

Tabela 2 - Condições de funcionamento do controlo de temperatura e humidade

Modo de funcionamento da climatização das máquinas

Entradas

Saídas

Temperatura

Humidade

Inibição

Alarme

Ventilador

Aquecimento

<= Tmin

>= Hmax

ON

ON

ON

ON

>= Tmax

>= Hmax

ON

ON

ON

OFF

<= Tmin

OK

OFF

OFF

ON

ON

>= Tmax

OK

OFF

ON

ON

OFF

OK

>= Hmax

ON

ON

ON

ON

OK

OK

OFF

OFF

OFF

OFF

 

2.    Fluxogramas do código de cada equipamento com microcontrolador

A logica de funcionamento é descrita nos links para fluxogramas abaixo.

·        main();

·        inic();

·        dht_init();

·        ler_sensor_dth();

·        controlo_th();

·        TIMER0_isr();

·        RDA_isr();

·        RSgetc();

·        dht22.h;

·        ler_dados_dht();

·        ler_dht22();

 

3.    Software, descrição do funcionamento

O IDE utilizado para o desenvolvimento do código para o µc foi o MPlabx V2.10 da Microchip e o compilador CCS com a versão 5.008. Para a programação foram usados os programadores PICkit2, PICkit3 e o programador JDM.

Foi desenvolvido um código igual para qualquer que seja o dispositivo que monitoriza as máquinas, sendo que o que difere de entre cada um será o seu endereço na rede RS485.

O código é composto por uma função ‘main’, onde na primeira vez que é executada, inicializa variáveis locais e executa uma outra função denominada ‘inic’ que inicializa configurações relacionadas com velocidade de funcionamento do µc bem como timers, interrupções, portas digitais e analógicas, e por fim a inicialização do sensor de temperatura e humidade DHT22 com a função ‘dht_init’. Ainda nesta função existe um ciclo infinito, que é onde estará a operar o µc após a sua inicialização. Este ciclo tem algumas funções, nomeadamente a de verificar se as mensagens recebidas na USART são válidas e efetuar o seu parsing. Uma vez validada a mensagem, e confirmado o seu destino através do seu endereço correto, é executado o pedido de uma leitura de temperatura e humidade ao sensor DHT22 através da função ‘ler_sensor_dth’. Em cada ciclo é feito o controlo elementar de temperatura e humidade da máquina ou local onde estiver instalado o dispositivo através da função ‘controlo_th’.

 

Existem duas interrupções configuradas neste programa para além da global. A interrupção do TIMER0 e a da USART.

Relativamente à interrupção do TIMER0, esta foi o recurso utilizado para a implementação de uma representação de uma onda quadrada de 1 Hertz solicitada no sistema mínimo no âmbito da disciplina.

Para a determinação do tempo de instrução temos que:

Como temos o prescaller de 1:256, deduzimos:

Assim a flag de interrupção INT_TIMER0 será ativada a cada:

Como temos varias iterações no código, temos de fazer alguns ajustes no tempo que leva a INT_TIMER0 a ser 1. Para isso inicializamos a cada fim de ciclo ISR o valor de 12 no TIMER0 para que o INT_TIMER0 fique ativo ao fim de 16 contagens. Assim:

Após o ajuste anterior temos que:

No que à interrupção da USART diz respeito, ela a cada caráter recebido invoca a função ‘RSgetc’ que o que faz é enviar esse mesmo caráter para um variável buffer.

Na função ’ler_sensor_dth’ está implementada a verificação de qual o pedido feito na mensagem e após efetuar uma leitura atual dos valores de temperatura e humidade responde com os valores solicitados. Esta função necessita do ficheiro dht22.h, que contem todos os procedimentos necessários para a obtenção dos dados do DHT22. O sensor DHT22 tem um determinado modo definido no datasheet para ser colocado em modo de leitura (ver hardware > DHT22).

A função ‘controlo_th’ verifica a cada ciclo os valores de temperatura e humidade e aciona as saídas de inibição de funcionamento, aquecimento, ventilação e alarme em conformidade com o predefinido.

 

4.    Consola de PC

Utilizando a ferramenta de desenvolvimento Visual C# Express, adaptamos uma consola a interagir com dispositivos numa rede RS485 levando a possibilidade efetuar leituras dos dispositivos bem como alteração de valores.

Esta consola permite de fazer seleção de porta COM, bem como a utilização de RTS para o caso de utilizarmos do lado do PC apenas um conversor USB/RS232 ligado a um SN7516BP. Para efeitos de testes usamos um conversor ADAM-4520 entre o PC e a rede.

 

 

  • Resultados

Início

Neste ponto apresentamos o resultado final com dois vídeos. Um referente à apresentação 3D do PCB e um outro com o modo de funcionamento pela consola.

·        Um atalho para um vídeo do desenho PCB em 3D feito no KICAD[5]

·        Para ver o vídeo de apresentação do funcionamento de 2 dispositivos em rede pode clicar aqui.

 

Figura 15 - Placa C.I. em testes de rede sem relés instalados

Figura 16 – Evolução e testes com 3 dispositivos em rede, sendo 2 protótipos em breadboard

  • Conclusões

Início

No decorrer do relatório fomos justificando as escolhas que foram de encontro às nossas necessidades. Nesta última secção faremos uma síntese e principais conclusões do trabalho, bem como propostas de desenvolvimento em futuro.

Várias formas existiriam de abordar o tema da comunicação RS-485, entre eles seria a integração de um protocolo standard com verificação de erro, como por exemplo MODBUS, PROFIBUS, FIELDBUS, ARCNET entre outros, mas na nossa opinião seria mais interessante para nós criarmos o nosso próprio protocolo. Muito embora o PIC16F887 possua funções direcionadas à deteção de endereço como o bit ADDEN[6], passamos para o software essa mesma deteção com sucesso. Entre alguns pontos de criação do protocolo definimos o ‘start bit’ da trama das mensagens e o ‘stop bit’ bem como a formatação de cada mensagem. Como na nossa rede apenas possui um mestre e todos os restantes equipamentos funcionam como escravos, estes só respondem a pedidos bem definidos e direcionados a si.

O interface gráfico no PC foi desenvolvido a partir de uma consola já existente em C#, mas completamente adaptado á realidade da nossa solução. Este permite verificar a pedido, os valores de temperatura, humidade de cada dispositivo instalado na rede, bem como os set points de cada um deles. Podemos alterar esses mesmos set points individualmente, sem que sejam obrigados a ter todos os mesmos valores. Esta consola não se encontra completamente finalizada, já que teremos futuramente como objetivos a melhorar, a criação de uma base de dados onde possamos obter histogramas e relatórios dos valores de temperatura e humidade, bem como alarmes.

 

A experiencia da criação de um protocolo foi interessante, mas temos a noção que a integração dos dispositivos criados em redes instaladas e em ambientes industriais só terá a ganhar ao poder ser integrada em redes com autómatos e outros dispositivos que habitualmente são usados nessas instalações. Futuramente pretendemos adaptar o código a fim de comunicar com redes standard, tal como as citadas acima. Entre pontos a melhorar temos a melhoria e fiabilidade da unidade de alimentação, eventualmente com a implementação de um conversor DC/DC, bem como a possibilidade de cada dispositivo dispor de um interface visual que poderá ser um display ou uma consola.

Numa versão mais recente da placa desenvolvida já avançamos para a implementação de entradas analógicas 0 a 10V e de saídas analógicas com recurso a PWM.

 

 

  • Referências

Início

[1] Twisted Pair — http://embedsoftdev.com/tag/rs-485/,12.06.2014 21:45

[2] RS485 Daisy-Chain — http://www.ti.com/lit/an/slla272b/slla272b.pdf, pag. 2

[3] maxim integrated - http://www.maximintegrated.com/en/app-notes/index.mvp/id/367

[4] http://www.microchip.com/pagehandler/en-us/family/8bit/

[5] http://www.kicad-pcb.org/display/KICAD/KiCad+EDA+Software+Suite

[6] https://www.dropbox.com/s/zc0cpkvql0k2dat/pic16f887.pdf, pag 155

Início