2014 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Autores: |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Rogério Neves (Nº1100999) |
1100999@isep.ipp.pt |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
João Paulo (Nº1101357) |
1101357@isep.ipp.pt |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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
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; |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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
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 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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
2.
Fluxogramas
do código de cada equipamento com microcontrolador A logica de funcionamento é descrita nos links para fluxogramas abaixo. · main(); · inic(); · dht_init(); · TIMER0_isr(); · RDA_isr(); · RSgetc(); · dht22.h; · 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. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
[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 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||