scieee AI-readable full text Open interactive document viewer

Desenvolvimento de uma solução de aquisição de dados para laboratório

Diogo Nogueira de Moura

Full text

Faculdade de Engenharia da Universidade do Porto Desenvolvimento de uma Solução de Aquisição de Dados para Laboratório Diogo Nogueira de Moura Dissertação em Automação Mestrado Integrado em Engenharia Mecânica Orientador: Prof. Joaquim Gabriel Magalhães Mendes novembro de 2014 Diogo Nogueira de Moura [email protected] http://diogonmoura.com Secção de Automação, Instrumentação e Controlo (SAIC) Departmento de Engenharia Mecânica (DEMec) Faculdade de Engenharia da Universidade do Porto (FEUP) Porto Portugal Resumo Os sistemas SCADA são comummente utilizados na industria na monitorização e controlo de processos, com grandes vantagens demonstradas. Em contrapartida, esta tecnologia não é ainda muito utilizada no controlo de laboratórios, não se estando assim a aproveitar as melhorias que estes sistemas podem oferecer para tornar estes locais mais seguros e "inteligentes". Este projeto foi realizado no âmbito de uma colaboração entre a Laborial, uma empresa portuguesa que fabrica mobiliário de laboratório e a Faculdade de Engenharia da Universidade do Porto. O objetivo que esta colaboração quer alcançar é redefinir os standards no mobiliário de laboratório, pela incorporação de tecnologia em bancadas. Assim, o desafio desta dissertação é fazer um sistema de aquisição de dados remoto de baixo custo baseado num microcontrolador, que interage diretamente com o ambiente que o rodeia. Neste projeto foi desenvolvido um sistema que permite adquirir dados de vários tipos de sensores, tanto analógicos como digitais, maioritariamente termómetros (sensores infravermelhos, circuitos integrados, termopar, Pt100), sensor de humidade relativa, sensor de iluminação ambiente e RFID. Para conectar os sensores digitais são usados os protocolos I C e 1-Wire. O processamento da informação é feito em placas de desenvolvimento baseadas na plataforma Arduino. Para minimizar o consumo elétrico, foi implementado um sleep code que desativa algumas funcionalidades da placa. A arquitetura deste sistema incorpora uma rede de aquisição de dados cujos nós são constituídos pelos módulos Arduino referidos que comunicam com o sistema SCADA (InduSoft Web Studio) por Zigbee (baseado na norma IEEE 802.15.4) ou comunicação série, tanto USB como RS-232, através de protocolo Modbus. O protótipo desenvolvido foi interligado no advanLabR(SCADA desenvolvido pela Laborial, em InduSoft Web Studio v7.0), encontrando-se totalmente funcional. i ii Abstract SCADA systems are commonly used in industry to monitor and control processes, with great proven advantages. On the other hand, this technology is not very used to control laboratories, not taking advantage of the improvements that these systems can offer to make these sites safer and more "intelligent" This project was accomplished in the scope of a collaboration between Laborial, a Portuguese company that manufactures laboratory furniture, and Faculdade de Engenharia da Universidade do Porto. The objective which this collaboration aims to achieve is to redefine the standard of laboratory furniture, by incorporating technology in stands. Therefore, the challenge is to make a low cost remote data acquisition system based on a microcontroller, which can interact directly with the environment. In this project was developed a system that can acquire data from several types of sensors, both analog and digital, mainly thermometers (IR sensor, integrated circuits, thermocouple, Pt100), relative humidity sensor, environment light sensors and RFID. To connect the digital sensors the protocols used were I C and 1-Wire. Information processing is done on development boards, based on the Arduino platform. To minimize the power consumption, was implemented a sleeping mode that deactivates some features of the board. The architecture of the system encloses a data acquisition network whose nodes consist in Arduino modules that communicate with the SCADA system (Indusoft Web Studio) over Zigbee (based on the standard IEEE 802.15.4) or over serial communication, both USB and RS-232, through Modbus. The prototype was integrated in advanLabR, a commercial solution offered by Laborial, developed in InduSoft Web Studio v7.0, being totally functional. iii iv Agradecimentos Antes de tudo, gostaria de expressar a minha gratidão aos meus mentores e exemplos como pessoa, que estiveram sempre presentes em todos os momentos, mesmo nos menos bons. Mãe e Pai, um enorme obrigado pela oportunidade que me ofereceram. Gostaria ainda de agradecer a todo o suporte e orientação dados pelo Professor Doutor Joaquim Gabriel como supervisor e mentor deste projeto, pela oportunidade de manter o foco da minha dissertação num assunto que tanto me interessa. A todos os colaboradores do "L003", pela ajuda e conselhos dados durante todo o semestre, principalmente à Ana, ao André, António, João, Marco, Prof. Ricardo eRui. A todas as pessoas que trabalharam comigo na Laborial, Luciano, Carlos e Emanuel, muito obrigado pelas ideias, pela ajuda na ligação de todos os elementos ao advanLab e principalmente pelo "empurrãozinho"a ultrapassar os obstáculos que se interpuseram no caminho. Sem esta precisa ajuda, possivelmente não teria conseguido chegar tão longe no projeto. A todos os meus colegas e amigos, pelos 5 anos de companheirismo, partilha e ajuda, a minha sincera gratidão! Por fim, mas não menos importante, um obrigado enorme à minha namorada, à minha irmã e a toda a minha família por todo o apoio, suporte e paciência durante os dias menos animados! Este trabalho foi apoiado pelo projeto de I&D INTELLAB II, “Inteligência em Laboratórios”, FCOMP-01-0202-FEDER-033877 - financiado pelo Fundo da Comissão Europeia (FEDER) através da COMPETE - Programa Operacional Factores de Competitividade (POFC). v LISTA DE FIGURAS C.3 Esquema de ligação entre o sensor integrado Dallas DS18B20 e o Arduino................................. 79 C.4 Ligação Sensor de Humidade Relativa e Temperatura - SHT15 - ao Arduino................................. 79 C.5 Esquema de Ligação entre o Arduino e o Sensor de Temperatura Infravermelhos ............................. 80 C.6 Ilustração da Montagem do Controlo do Sistema Anestésico . . . . 80 xii Lista de Tabelas 2.1 Custo da solução da Advantech . . . . . . . . . . . . . . . . . . . . 14 2.2 Comparação de Hardware ....................... 16 2.3 Tabela comparativa entre software específico para laboratório . . . 18 2.4 Algumas soluções de software SCADA disponíveis no mercado . . 19 3.1 Lista de sensores e algumas especificações . . . . . . . . . . . . . . 31 4.1 Comparação entre os diferentes estados . . . . . . . . . . . . . . . 45 4.2 Tabela sumária com o preço da solução final . . . . . . . . . . . . . 52 xiii LISTA DE TABELAS xiv Abreviaturas BBB BeagleBone Black E/S Entradas e Saídas HDMI High-Definition Multimedia Interface HMI Human-Machine Interface - Interface Homem-Máquina IDE Integrated Development Environment IR InfraRed - Infravermelho IWS InduSoft Web Studio I/O Input/Output I C Inter-Integrated Communication Kbps Kilobits per second (1024 bits per second) NTC Negative Temperature Coefficient PWM Pulse-Width Modulation RAM Random-Access Memory RFID Radio-Frequency IDentification SCADA Supervisory, Control And Data Acquisition - Supervisão, Controlo e Aquisição de Dados SPI Serial Peripheral Interface UART Universal Asynchronous Receiver / Transmitter USB Universal Serial Bus xv Capítulo 1 Introdução Na indústria os sistemas SCADA são uma ferramenta extremamente útil na monitorização e gestão de processos de produção, porém ainda não são muito utilizados em laboratórios. Neste âmbito, a Laborial, uma empresa de fabrico de mobiliário de laboratório, desafiou a Faculdade de Engenharia da Universidade do Porto no sentido de desenvolver soluções de hardware de baixo custo. Este hardware deverá completar o leque de soluções oferecidas pela empresa e integrar o software SCADA já desenvolvido - advanLabR. Este sistema SCADA visa automatizar as tarefas mais comuns desempenhadas em laboratórios, tornando-os mais “inteligentes” e seguros. Ao longo de todo o projeto foi tido em consideração o custo dos componentes utilizados, pois esta é uma área onde os componentes associados devem ter um preço acessível de forma a tornar estas soluções desejáveis e competitivas. Serão de seguida apresentadas a Motivação desta dissertação e a Laborial, empresa onde o projeto está a ser desenvolvido. Os Objetivos deste projeto, os Resultados alcançados e a sua Estrutura também estão presentes neste local. 1 Introdução 1.1 Motivação Para dar resposta à falta de soluções open source para a automatização de laboratórios, a Laborial, em parceria com a Faculdade de Engenharia da Universidade do Porto, está a desenvolver o Projeto INTELLAB II - Inteligência em Laboratórios. Este projeto surge como continuação de um projeto anterior, denominado INTELLAB, onde foi criada uma solução para monitorização de laboratórios, tendo por base o desenvolvimento de um sistema SCADA -o advanLabRbaseado no software InduSoft Web Studio 7.0. Estas inovações levaram a Laborial a atingir uma posição de reconhecimento entre os produtores de laboratórios, resultando em dois 1os prémios em feiras internacionais da especialidade. Para melhorar a solução prévia, constatou-se a necessidade de implementar um sistema que adquirira e guarde a informação de forma automática e independente, um data logger. Esta funcionalidade é bastante requisitada por muitos clientes, pois permite manter um backup dos dados adquiridos no caso de não ser possível efetuar a comunicação com o servidor. Para além disso, em algumas aplicações menos exigentes, a resolução dos conversores analógico-digitais (ADC) existentes em microcontroladores é suficiente para responder a essas necessidades, permitindo assim diminuir os custos. 1.1.1 Laborial A Laborial tem como atividade principal a produção, comercialização e instalação de laboratórios e mobiliário técnico hospitalar [1]. Ao longo do tempo, a empresa adquiriu conhecimento e ganhou cada vez mais interesse na criação de soluções para fins específicos, como laboratórios para a área da saúde e educação, a nível nacional e internacional. Situada na Zona Industrial da Maia, esta empresa encontra-se a redefinir os limites daqueles que são considerados como laboratórios de alta tecnologia. Este grande 2 Introdução salto deu-se quando foi introduzida a Blautouch1eoadvanLab R. O INTELLAB II pretende explorar novas características de monitorização e controlo que até hoje ainda não foram desenvolvidas, aproveitando as capacidades da “Computação Ubíqua”2e da "Internet das coisas". Estas características farão parte de uma nova geração de laboratórios que estão a ser desenvolvidos em áreas como anatomia patológica, segurança biológica ou veterinária [3]. 1.2 Objetivos O objetivo principal definido para este trabalho é o desenvolvimento de um data logger de baixo custo para integrar o advanLabR. A solução desenvolvida deve estar focada principalmente na aquisição de temperatura e humidade, uma vez que são as grandezas com mais necessidade de monitorização nos projetos que a empresa desenvolve. No desenvolvimento do data logger está implícito que a solução proposta deverá cumprir requisitos básicos, como por exemplo, estar preparada para lidar com sensores de diferentes fabricantes, tanto analógicos como digitais (I C e 1-Wire). A comunicação entre o sistema a desenvolver e o sistema SCADA deverá ser estabelecida recorrendo ao protocolo Modbus, atualmente utilizado na empresa. Numa fase final, o sistema desenvolvido deverá ser otimizado de modo a ter um consumo energético reduzido e estar conectado ao advanLabRrecorrendo a tecnologia sem fios, sendo que a solução cablada deverá ser uma redundância do sistema, se assim for justificável. 1Blautouch - Bancada de Laboratório com um computador integrado, passível de ser utilizada em salas brancas. 2Ubíqua – Presente em todo o lado [2]. 3 Introdução 1.3 Resultados Obtidos Neste projeto utilizou-se a plataforma de desenvolvimento Arduino, que no máximo consegue adquirir a uma taxa de 10 kHz (para um canal), com um conversor analógico-digital (ADC) de 10 bit. Para além da aquisição de dados, este nó permite gravar os dados num cartão de memória, funcionando como um data logger. De modo a assegurar que o instante registado é o da aquisição e não da transmissão, foi introduzido uma placa de Real-Time Clock no sistema. Para reduzir o consumo energético da solução foram aproveitadas as potencialidades de sleep do microcontrolador, desligando os periféricos quando estes não se encontram em utilização. A solução final deste projeto inclui vários sensores de temperatura analógicos (sensores integrados, termístor, termopar e Pt-100) e digitais (sensores digitais integrados e sensores infravermelhos via 1-Wire e I C). Para comunicação com o servidor, o nó de aquisição de dados utiliza o protocolo Modbus que pode ser usado por cima de comunicação série (USB e RS-232) ou via wireless,utilizando o protocolo Zigbee (baseado na norma IEEE 802.15.4). O protótipo foi implementado na empresa, numa bancada de operação veterinária, cumprindo todos os requisitos e objetivos propostos. 4 Introdução 1.4 Estrutura Este documento está dividido em 5 capítulos que irão descrever o trabalho que foi executado ao longo deste projeto. No Capítulo 2, Estado da Arte, são apresentadas e discutidas algumas soluções de hardware esoftware existentes no mercado. No Capítulo 3, é apresentada a arquitetura implementada para o desenvolvimento do projeto, desde a solução proposta até à solução final, sendo justificadas as opções relevantes que foram tomadas. No Capítulo 4são discutidos os resultados obtidos, bem como alguns testes que foram efetuados durante a dissertação. As conclusões deste trabalho são apresentadas no Capítulo 5, bem como uma proposta de Trabalhos Futuros. Extratos do código implementado para programar a solução serão apresentados nos Anexos, assim como alguns esquemas relevantes de montagem dos sensores. 5 Revisão do Estado da Arte Resolução: 0,1 % (Humidade Relativa), 0,1 oC (Temperatura); Intervalo de medição: de 1 a 20 segundos; Amostras por transmissão: 1 a 5 amostras; Duração da bateria: 3 anos ( com 1 amostra enviada por transmissão e intervalos de medição de 20 segundos); Comunicação por Zigbee (alcance de 1000 m em linha de vista); (a) Estação base WS-BU (b) Sensor de temperatura e humidade WS-DLTc Figura 2.6: Solução laboratorial da WiSensys 2.2.3.2 VAISALA Ohardware desenvolvido pela VAISALA é semelhante ao da WiSensys: existe uma estação base que comunica com o servidor e com os módulos de aquisição. As estações base têm a capacidade de ligar até 16 módulos e podem guardar até 250 registos por cada sensor. A VAISALA tem disponíveis vários tipos de sensores, de destacar os de temperatura (Termopar ou termístor) e os de humidade relativa. Relativamente aos sensores de temperatura, por exemplo, o modelo HMT140, Figura 2.7 [12] tem as seguintes características: 12 Revisão do Estado da Arte Gama de medição: 0 a 100 % (Humidade Relativa), -40 a 80 oC (Temperatura); Resolução: 0,4 oC (Temperatura); Comunicação por Wi-Fi; Este fabricante oferece ainda a possibilidade de ligar os seus equipamentos através de ethernet ou via Wi-Fi, tendo por base a norma IEEE 802.11 [12]. Figura 2.7: Módulo HTM140 da VAISALA 2.2.4 Hardware genérico A característica principal definida pela empresa é tornar o hardware o mais versátil possível para poder responder às necessidades atuais da empresa. Por exemplo, situações em que é necessário adquirir sinais apenas de um ou dois sensores, ou ter uma única saída. Na Tabela 2.2 [13] estão listadas algumas características das soluções mais exploradas. 13 Revisão do Estado da Arte 2.2.4.1 Advantech Os módulos da Advantech, Figura 2.8 [14], são aqueles que são considerados como um dos standards industriais pelas suas características. São dispositivos de aquisição de dados robustos e certificados. A solução deste fabricante que foi estudada consiste numa estação base que interliga o servidor e os módulos de aquisição de dados. Neste caso foi analisada uma solução sem fios, da série ADAM-2000. Ofabricantedispõedeummóduloespecíficoparaaquisiçãodetemperaturae humidade e módulos genéricos, tanto analógicos como digitais. Estes módulos suportam RS-232 e RS-485, no entanto não têm disponíveis comunicações como I C e 1-Wire. Os custos desta solução encontram-se explícitos na Tabela 2.1 [14]. Uma das desvantagens desta solução é a necessidade de comprar um módulo para cada função e de estes não serem programáveis [14]. Tabela 2.1: Custo da solução da Advantech Modelo Função Custo ADAM-2031Z-AE Nó de aquisição de temperatura e humidade relativa 196,00 e ADAM-2520Z-AE Wireless Modbus RTU Gateway 216,00 e ADAM-2051Z-AE Nó de aquisição de sinais digitais (8 canais) 162,00 e ADAM-2017PZ Nó de aquisição de sinais analógicos (6 canais) n.d. Figura 2.8: Módulo de aquisição de dados Advantech 14 Revisão do Estado da Arte 2.2.4.2 BeagleBone Black O BeagleBone Black, Figura 2.9 [15], é um mini computador que pode ser adquirido a baixo custo, tem bom desempenho, interage com diversos periféricos, no entanto é focado em projetos pessoais. As suas características podem ser consultadas na Tabela 2.2 [13]. Com 7 entradas analógicas e 65 entradas e saídas digitais esta poderia ser uma solução bastante interessante, todavia o fabricante não autoriza projetos com propósitos comerciais [16,17]. Figura 2.9: Exemplo do BeagleBone Black 2.2.4.3 Arduino UNO A placa de desenvolvimento Arduino UNO, Figura 2.10 [18], tem por base um microcontrolador ATmega 328, que tem 32KB de memória interna, funciona com uma velocidade de relógio de 16 MHz, tem um ADC de 10 bits e é capaz de adquirir amostras, no máximo, a uma frequência de 10 kHz (apenas num canal). Devido ao seu baixo custo e facilidade de uso, existe bastante informação disponível e tem uma comunidade de developers considerável. Com esta solução é possível realizar soluções com fins comercias, no entanto o fabricante pede que se informe o cliente que a sua solução é baseada na plataforma Arduino. 15 Revisão do Estado da Arte Figura 2.10: Fotografia do Arduino Uno Tabela 2.2: Comparação de Hardware Controlador Série ADAM-2000 BBB Arduino Uno Processador TI Sitara AM3359 ARM Cortex A8 ATmega 328 Velocidade do Relógio 1GHz 16MHz RAM 512 MB 2 KB Memória 2 GB SD 32 KB USB 0 1 1 Saída de Audio Saída de Vídeo N.D. HDMI N.D. Ethernet N.D. 10 / 100 MBps N.A. I/O 6 Entradas Analógicas (Tensão e Corrente) 8 Entradas Digitais Temperatura e Humidade Relativa 8 Entradas Digitais (com amplificador de potência) 3IC 2 CAN 2 SPI 5 Portas Serie 65 GPIO 8 PWM 7 Entradas Analógicas (ADC com 12bit) 14 GPIO (6 PWM ou I C ou SPI) 6 Entradas Analógicas (ADC com 10bit) Tamanho 8,63 x 5,33 cm 7,49 x 5,33 cm OS N.D. Linux Android MS Windows N.D. Ferramentas Desenvolvimento Python Scratch Linux Eclipse Arduino IDE Preço Total 900 e55 e22 e 16 Revisão do Estado da Arte 2.3 Software No desenvolvimento desta solução foram tidos em consideração dois tipos de software; os que foram criados especificamente para laboratórios e os que foram projetados para aplicações industriais. Os desenvolvidos para laboratórios normalmente são criados pelos fabricantes de hardware para comunicação cos seus produtos. Osoftware pensado exclusivamente para laboratório será apresentado na Subsecção 2.3.1,enquantoqueosoftware para fins industriais será introduzido na Subsecção 2.3.2. 2.3.1 Software específico para laboratório Osoftware criado para satisfazer as necessidades de um laboratório apresenta vantagens no que toca à manipulação da informação obtida pelas variáveis para o qual está programado. No entanto, uma grande desvantagem deste tipo de programas é a falta de flexibilidade que eles apresentam. Se for necessário adquirir uma variável para o qual o programa não está pré-programado, por norma estas soluções não o permitem. Para além disso, usualmente quem desenvolve estas aplicações são os fabricantes de hardware. Esta última característica inviabiliza um dos pontos fulcrais do projeto, que é a capacidade de interagir com uma vasta gama de produtos, de diversos fabricantes. Ainda assim, são listadas na Tabela 2.3 [11] algumas das soluções encontradas no mercado. 17 Revisão do Estado da Arte Tabela 2.3: Tabela comparativa entre software específico para laboratório Empresa Variáveis Comunicações disponíveis Características Gerais Rmoni Temperatura Humidade Relativa CO Outras, quando encomendado IEEE 802.15.4 / Zigbee Respeita a norma FDA 21 part 11, Sistema local ou Web accsense Temperatura Humidade Relativa CO Porta Aberta Vibração Som Luminosidade IEEE 802.15.4 Totalmente baseado na Web; Alarme e sistema de notificação Exportação de dados VAISALA Temperatura Humidade Relativa CO Porta Aberta Pressão pH Outros RS-232 USB Ethernet Wifi Cumpre FDA 21 part 11; Sistema baseado na Web CheckPoint Temperatura Porta Aberta CO N.A. Sistema baseado na Web ; Usa base de dados SQL Capacidade de alarmes testo Temperatura Humidade Relativa Entradas Analógicas(4 - 20 mA) Ethernet Wireless 868 MHz Wireless 2.4 GHz Sistema baseado localmente Assistente de Configuração Diferentes níveis de alarme WiSensys Temperatura Humidade Relativa CO Consumo Energético Entradas Analógicas(0 - 25 mA, 0 - 30 V, 0 - 4 V) RS-232 RS-485 GPRS Ethernet Sistema baseado no local e na Web Capacidade de Login e de Alarmes Exportação de dados; labguard Temperatura Humidade Relativa CO Pressão Entradas Analógicas (0 - 5V, 0 - 10V and 4 - 20mA) Outros Ethernet RS-232 RS-485 Wireless 868 MHz GPRS Wavenis Interface gráfica intuitiva Deteção automática de Hardware; Capacidade de conexão à Web Diferentes níveis de acessos HANNA instruments Temperatura N.A. N.A. Aginova Temperatura Humidade Relativa Energia Luminosidade Corrosão Low power IEEE 802.11 Sistema Baseado na Web Alarmes e exportação de dados Diferentes níveis de acesso Respeita FDA21 part 11 Suporte de base de dados SQL Rees Scientific Temperatura Humidade Relativa CO Pressão Atmosférica Luminosidade O Tensão e corrente Velocidade do Ar Deteção de fugas Zigbee N.A. IsatecLtd Temperatura caudal CO pH Pressão Condutividade Consumo energético IEEE 802.11 b/g Sistema localmente baseado, com ligação à internet Aquisição de dados automática Capacidade de alarmes exportação de dados E-Control Systems Temperatura Humidade Relativa Entradas analógicas (0 - 5 V, 4 - 20 mA) Fuga de liquido refrigerante Pressão Compressor Runtime IEEE 802.15.4 Zigbee Sistema baseado na Web exportação de dados, diferentes níveis de acessos Comark Instruments Temperatura Humidade Relativa Pressão Caudal CO Porta Aberta Outros IEEE 802.15.4 Sistema Baseado na Web SENSONET Temperatura Humidade Relativa Luminosidade Raios Ultravioleta Pressão Atmosférica IEEE 802.15.4 Sistema baseado localmente, com ligação a internet Exportação de dados Capacidade de Alarmes má qualidade gráfica 18 Revisão do Estado da Arte 2.3.2 SCADA OSCADA (Supervisão, Controlo e Aquisição de Dados2) é ,como o próprio nome sugere, um sistema de monitorização e controlo industrial. É uma tecnologia que permite ao utilizador adquirir dados de processos produtivo que se encontram em diferentes locais e interagir com estes em tempo real, quer local, quer remotamente. AimplementaçãodesistemasSCADA évastamenteutilizadaquandoháa necessidade de controlar e monitorizar processos que requerem interação em tempo real e armazenamento de dados. Na Tabela 2.4 [19] são apresentados alguns exemplos de software SCADA e os seus fabricantes. De todas as soluções enumeradas, a Laborial selecionou o software o InduSoft Web Studio. Tabela 2.4: Algumas soluções de software SCADA disponíveis no mercado Software Fabricante ArcInfo PcVue Citect Schneider Electric ControlMaestro Elutions DAQFactory AzeoTech DSC (Datalogging and & Supervisory Control) National Instruments Ez Data Logger ICP DAS Fast/Tools Yokogawa General Electric iFIX Geo Scada Iconics InduSoft Web Studio Schneider Electric iX Software Beijer Electronics Lookout National Instruments RsView Rockwell Automation Satec eXperManager Simatic Siemens Winlog Pro Sielco Sistemi 2Supervisory, Control And Data Acquisition 19 Revisão do Estado da Arte 2.3.2.1 InduSoft Web Studio O InduSoft Web Studio (IWS) cumpre todos os requisitos que foram pré-estabelecidos, disponibilizando as seguintes características: Funcionalidades Permite a criação de aplicações onde é possível identificar o utilizador recorrendo ao sistema Login / Password, permite ainda a visualização gráfica da evolução de variáveis, registo temporal de dados, visualização online de alarmes e a criação automática de relatórios. Esta aplicação é programável utilizando a linguagem Visual Script, o que permite aumentar as funcionalidades que vêm pré-programadas. Interface Gráfica Como o aspeto gráfico da aplicação final é bastante importante numa solução comercial, bem como o facto desta ser user friendly,estacaracterísticateveum peso importante na escolha do software para desenvolver a aplicação final. OIWS permite flexibilidade no ambiente gráfico, já que é dotado de funções de manipulação gráfica. nomeadamente alterar cores ou formas de acordo com o estado das variáveis. Protocolos de Comunicação Um software SCADA, por definição, suporta uma grande variedade de protocolos de comunicação, bem como drivers distintos que lhe permite interagir com o hardware disponível no mercado. Esta característica valoriza os SCADA perante os softwares específicos. Este software tem ao seu dispor um vasto leque de drivers que suporta a maioria do hardware utilizado na industria. Para além disso é possível desenvolver um driver específico para um determinado componente. Oferece também a possibilidade de configurar o acesso à aplicação via Web, assim como via dispositivo móvel. Licenças 20 Revisão do Estado da Arte Para os software SCADA existem dois tipos de licenças: uma para desenvolver o aplicativo, denominada de licença de desenvolvimento e outra para utilizar o software,queéadquiridapeloclientefinal,alicençadeRun-Time. O InduSoft oferece uma licença de desenvolvimento com 1500 tags3euma utilização de três drivers diferentes. Disponibiliza também uma licença de Run-Time que oferece suporte para as funções de Web Thin Client,Secure Viewer Thin Client eSMA Thin Client4. A Figura 2.11 exibe o ambiente de programação do InduSoft do lado esquerdo, e a aplicação em funcionamento do lado direito. Figura 2.11: Ambiente de desenvolvimento do InduSoft Web Studio e a aplicação em funcionamento 3Tags – Variáveis de entradas, saídas ou internas 4Funções para acesso à aplicação via Web e dispositivos móveis 21 Arquitetura recebem a mensagem, mas só o destinatário responde. Este protocolo de comunicação funciona em half-duplex, uma vez que transmite informação em ambos os sentidos, apenas um de cada vez. Um master controla todos os elementos que estejam disponíveis no barramento a uma taxa de transferência de dados de 14,4 Kbps, 100 nós e um cumprimento máximo de 500 m. Os slaves não estão autorizados a comunicar entre si. Na Figura 3.3 está representado um esquema deste tipo de instalação [23–25]. Figura 3.3: Esquema para a instalação de 1-Wire 3.2.2.2 I C Inter-Integrated Communication (I C) significa comunicação entre integrados e é um protocolo usado na transferência de informação entre dispositivos. Foi projetado pela Philips Semiconductor (hoje NXP) no início da década de 80. Algumas das características do protocolo estão listadas em baixo [26,27]: Necessidade apenas de dois fios de ligação serial data line (SDA) e serial clock line (SCL); Dispositivos com endereços que podem estar no mesmo barramento, com um máximo de capacitância de 400 pF; Velocidade até 400 Kbps (em modo rápido) e 100 Kbps modo normal; Barramento com capacidade de multi-master, havendo deteção de colisões; 28 Arquitetura Consumo energético extremamente baixo; Imunidade ao ruído elétrico. 29 Arquitetura 3.3 Sensores Esta Secção apresenta os sensores que foram utilizados para o desenvolvimento da solução. Alguns extratos do código implementado podem ser consultados no Anexo Ae os esquemas de montagem encontram-se disponíveis no Anexo C. Na Figura 3.4 são apresentados alguns sensores, bem como a placa de desenvolvimento Arduino. Também está presente um Transmissor Universal que transforma o sinal elétrico de um Termopar e de um Pt100 em saídas em tensão de 0 a 5 Volt. Na Figura 3.5 é mostrado o esquema elétrico da ligação de alguns dos sensores utilizados ao Arduino. Figura 3.4: Aspeto da ligação de alguns sensores ao Arduino ATabela3.1 [28–32] resume os sensores mais importantes do projeto, bem como algumas das suas características. 30 Arquitetura Nesta dissertação recorreu-se à implementação de tão variados sensores para se criar um vasto leque de soluções, uma vez que a aquisição de temperatura é a maior necessidade dos projetos da Laborial. Tabela 3.1: Lista de sensores e algumas especificações Sensor Fabricante Comunicação Resolução Alcance Analog LM35 Texas Instruments Analog (0-5V) 0,49 oC (10 bit) -55 a 150 oC Termístor Analog (0-5V) -1 a 130 oC Termopar tipo T A. J. Antunes & CO. Analog (0-5V) 0,0075 Temperatura -40 to 180 oC Pt100 Analog (0-5V) -30 to 300 oC Digital DS18B20 Maxim Integrated 1-Wire 0,05 oC -55 a 125 oC SHT 15 (Temperatura) Sensorion I C 0,01 oC -40 a 123,8 oC SHT 15 (Humidade) Sensorion I C 0,1% RH20 - 100 % RH MLX90614 (IR) - Ambiente Malexis I C 0,05 oC -40 a 85 oC MLX90614 (IR) - Objeto Malexis I C 0,02 oC -30 a 382,2 oC 2RH - Relative HumidityHumidade Relativa 31 Arquitetura Figura 3.5: Esquema da ligação elétrica de alguns sensores 32 Arquitetura 3.4 RFID RFID, ou radio-frequency identification3é a tecnologia que é utilizada para identificar pessoas, objetos e animais. Existem diversas formas para fazer esta identificação, embora seja recorrente guardar-se um número de identificação numa cartão ou chip, que posteriormente será associado ao individuo. Este sistema é composto por uma tag e por um leitor. A tag éajunçãodeum chip que conserva a informação e uma antena que a transmite. As tags podem ser ativas ou passivas estando esta última limitada a distâncias de leitura menores [33,34]. 3Identificação por frequência rádio 33 Arquitetura 34 Capítulo 4 Resultados Este Capítulo apresenta os resultados alcançados no âmbito deste projeto, bem como os resultados dos testes mais relevantes. 4.1 Data Logger Para implementar a funcionalidade de data logger, foi selecionado um modelo de Arduino que já possui um leitor de cartões, Arduino Ethernet. Mais tarde utilizou-se o Arduino UNO com um shield que tivesse esta funcionalidade. A placa foi programada para escrever os dados adquiridos no cartão de memória, recorrendo à biblioteca “<SD.H>”. 4.1.1 Real-Time Clock Para tornar esta solução mais exata, foi incorporada na solução um RTC - RealTime Clock1, Figura 4.1. Este dispositivo irá fornecer à solução desenvolvida a hora e data real, uma vez que o Arduino não é capaz de efetuar essa contagem. O RTC necessita apenas de ser configurado uma vez, e a partir desse momento conta o tempo desde o dia 1 de janeiro de 1970 (ou o chamado UNIX Time). 1Relógio de Tempo Real 35 Resultados A necessidade da junção deste pequeno dispositivo foi detetada quando se verificou que a hora que estava anexa aos dados era a hora de transmissão dos mesmos e não o momento de aquisição, podendo esta questão comprometer a exatidão temporal da solução. Figura 4.1: Real-Time Clock DS1307 4.2 Implementação do Protocolo Modbus Como foi referido no Capítulo 3, o protocolo Modbus foi implementado de forma a estabelecer a ligação entre a solução desenvolvida e o advanLabR. Foi importada uma biblioteca de Modbus [35] e reconfigurada para cumprir os requisitos do projeto. Uma vez que esta já tinha sido desenvolvida há bastante tempo e encontrava-se um pouco desatualizada, foi revista e foram implementadas algumas melhorias. Após esta fase de análise inicial, foram programadas as funções necessárias para suprir as necessidades da empresa. Na Figura 4.2 éapresentado o Arduino Uno conectado ao software SCADA por RS-232 usando Modbus. No extrato de código do Anexo A.3, podem ser vistas as configurações a serem implementadas. Se as definições corresponderem às do Modbus Master, a ligação estabelecer-se-á e os dois dispositivos irão comunicar. Na Figura 4.3 pode ser vista uma captura 36 Resultados Figura 4.2: Arduino Uno conectado por Modbus sobre RS-232 de ecrã do painel do software utilizado no projeto para testar as configurações aplicadas. Figura 4.3: Definições do Modbus Probe A Figura 4.4 mostra o ambiente de trabalho do Modbus Probe2desenvolvido pela R Engineering, Inc and Volitans Software. 2Software para testar o protocolo Modbus. 37 Resultados 4.6 Sensor de Infravermelhos Durante o decorrer desta dissertação foi ainda adicionado um sensor de infravermelhos que permite a medição de temperaturas de objetos sem contacto (útil para minimizar o efeito de contaminações). Desta forma, foi utilizado um sensor MLX90614 da Melexis que comunica com o Arduino via I C. Este sensor tem uma resolução máxima de 0,02oC e consegue fazer leituras de temperatura de objetos desde os -70 até aos 382,2 oC e na gama de -40 a 125 oCpara temperatura ambiente.Este foi montado num oximentro de pulso, Figura 4.7, sendo assim possível, por exemplo, efetuar leituras de temperatura não invasivas na ponta do dedo de um paciente. Figura 4.7: Sensor de infravermelhos montado num oximetro de pulso 44 Resultados 4.7 Testes de Desempenho Durante todas as fases do desenvolvimento do projeto foram efetuados vários testes com o intuito de confirmar as funcionalidades implementadas, corrigir alguns erros e antecipar alguns problemas que poderão vir a surgir. Um dos testes realizados inicialmente foi a comparação das leituras dos sensores entre si. Após a verificação de os valores se encontrarem dentro das gamas de leitura dos mesmos, foram comparados com um pirómetro. 4.7.1 Consumo Energético Foi feita uma análise ao consumo energético da solução desenvolvida. Para tal efetuaram-se várias medidas da corrente consumida da seguinte forma: utilizou-se uma fonte de tensão constante de 9 Volt e foi analisada a corrente consumida pelo equipamento. A corrente consumida pela Arduino quando este se encontra com um programa que apenas o mantém ligado são 50 mA. Na Tabela 4.1 são apresentados os valores durante os diferentes estádios do programa implementado. A fase do ciclo de funcionamento onde é consumia a maior quantidade de energia é quando existe comunicação dos dados com o SCADA, uma vez que é necessário fornecer energia à antena de Zigbee. Tabela 4.1: Comparação entre os diferentes estados Corrente Estado OBS 36 mA Modo Slepping 50 mA Em funcionamento Programa "Bare Minimum" 66 mA Adquirindo dados 123 mA Transmitindo dados 45 Resultados 4.8 Solução Final A solução final é composta por um Arduino UNO e por um Shield “Wireless SD”. Esta solução permite a ligação de uma antena Zigbee para comunicação sem fios, mas também a comunicação cablada, tendo sido testadas as comunicações recorrendo a USB e a RS-232. Para além desta funcionalidade básica, é possível incorporar todas as funcionalidades descritas em baixo: Comunicação Série (tanto USB como RS-232); Comunicação sem fios (Zigbee); Data logger com RTC ; Sensores de temperatura; Detetor; Funcionalidade RFID Sensores de Luminosidade Ambiente (LDR); Na Figura 4.8 é possível ver a arquitetura da solução final. I2C - Termómetro IR - RTC 1-Wire - Circuito Integrado Analog - Circuito Integrado - Termopar - Pt100 Data Logger - µSD Zigbee Modbus advanLab®– InduSoft Web Studio Figura 4.8: Arquitetura da solução final O código implementado contém algumas funções base para o funcionamento do dispositivo, que são a função setup eloop. 46 Resultados Na primeira função são definidos os valores de algumas variáveis como as de funcionamento do Modbus, nomeadamente o baud rate e a paridade da ligação. É também inicializada a verificação da existência de um cartão na ranhura devida. Esta função apenas é executada no início do funcionamento do Arduino ou sempre que este for reiniciado. De seguida está definida a função de poupança de energia, o sleep code.Nesta função todos os equipamentos não necessários são desligados. A função que se encontra definida após o sleep code éafunçãodeloop. Esta é a rotina que se repete sempre que o Arduino se encontrar em funcionamento. É aqui que são definidas as aquisições dos dados e a gravação destes para o data logger. Sempre que existe um pedido por parte do servidor, o programa é interrompido e inicia-se a comunicação ao SCADA. Após esta comunicação ter sido terminada o programa retorna ao seu funcionamento normal. 47 Resultados 4.9 Integração da Solução Desenvolvida no advanLab R  Para terminar os testes ao produto, a solução foi submetida a um teste em "situação real". Assim, o hardware desenvolvido foi ligado com sucesso ao advanLabR. Para tal, recorreu-se à comunicação sem-fios, uma vez que é a que, à partida, poderia incorrer em mais problemas. Após a configuração da base de dados do SCADA, que consistiu na adição de mais um módulo para ser possível a troca de informação, a comunicação foi estabelecida sem qualquer percalço, verificando-se que estavam todas as funcionalidade operacionais. Na Figura 4.9 é possível ver uma captura do ecrã do servidor, onde se destaca a atenção para o nome do módulo em funcionamento (no canto inferior esquerdo da imagem, a verde - Arduino). Assim, conclui-se o ciclo de desenvolvimento do protótipo da solução que se almeja alcançar. Figura 4.9: Captura do ecrã do servidor do advanLabR, com a solução desenvolvida 48 Resultados 4.9.1 Controlo do Sistema de Anestesia de uma Bancada de Operação Veterinária Após a integração do produto desenvolvido no advanLabRo protótipo foi integrado numa bancada de operação veterinária, para o controlo do sistema de anestesia. O esquema da Figura 4.10 monstra esquematicamente essa implementação. Figura 4.10: Esquema Explicativo do Controlo do Sistema de Anestesia O sistema de exaustão do gás anestésico é controlado através do Arduino, tanto o on/off, como a velocidade de rotação da ventoinha, aumentando ou diminuindo o volume de ar extraído. Para controlar a administração do gás anestésico, o Arduino faz a comutação das válvulas distribuidoras. A válvula distribuidora 1 permite ou não a passagem do gás, enquanto que a válvula distribuidora 2 comanda o local para onde este se deverá dirigir, ou para a máscara ou para a câmara anestésica. Para ligar os 2 sistemas (exaustão e administração) ao Arduino, construi-se uma placa de interface de potência para ser possível comandar a comutação das válvulas e do sistema de exaustão. 49 Resultados A velocidade de rotação da ventoinha do sistema de exaustão é controlada recorrendo a uma saída PWM do Arduino. O controlo da temperatura do tapete de aquecimento é realizado pelo Controlador Omron E5CZ Q2MT, mediante a informação do sensor Termopar tipo K. Este controlador é ligado ao advanLabR, via Modbus, onde é possível definir e ler todos os parâmetros. Um excerto do código utilizado para a implementação do Sistema Anestésico e uma ilustração da montagem do mesmo podem ser consultados nos Anexos A.4 eC.6, respetivamente. Na Figura 4.11 está presente o esquema elétrico do Sistema de Anestesia. 50 Resultados Figura 4.11: Esquema elétrico do sistema de controlo de anestesia da bancada veterinária 51 Resultados 4.10 Discussão dos Resultados Após a análise dos resultados e dos testes executados é possível concluir que a solução desenvolvida está implementada e a funcionar conforme previsto. O custo desta solução, tanto do hardware, como do software pode ser analisado na Tabela 4.2, assim como um local onde é possível adquirir este material em Portugal. Osleep code é uma função de extrema importância caso se queira implementar o uso de baterias, pois reduz o consumo energético do equipamento. No entanto, ohardware de desenvolvimento não é o melhor para este tipo de soluções. Para tal recomenda-se a utilização de um dispositivo chamado LilyPad (baseado na plataforma Arduino), que já é projetado para consumos reduzidos. Tabela 4.2: Tabela sumária com o preço da solução final Componentes Quantidade Preço sem IVA loja sítio Software Licença de desenvolvimento IWS 1 340,00 eInduSoft Web Site URL Licença de Run-Time IWS 1 190,00 eInduSoft Web Site URL Arduino IDE free Arduino Web Site URL XCTU free Digi Web Site URL Hardware Arduino UNO 1 20,00 eInMotion URL WiFi SD Shield 1 19,90 eInMotion URL XBee Pro 2 2 x 34,50 eInMotion URL USB XBee BreakOut 1 14,95 eInMotion URL Cartão SD 1 9,90 eInMotion URL Suporte de Bateria 1 0,40 eInMotion URL Bateria 9 Volt carregável 2 Carregador de Baterias 1 52 Capítulo 5 Conclusões e Trabalhos Futuros Os sistemas SCADA são ferramentas que têm sido bastante utilizadas em ambiente industrial, com provas dadas das vantagens da sua utilização. Estes sistemas também têm vindo a ser implementados em locais que até há relativamente pouco tempo a sua presença não era comum. Desta forma, estas soluções têm tido uma utilização crescente em ambientes com necessidades muito específicas como os laboratórios. Deste modo, os SCADA são utilizados para tornar estes locais mais "inteligentes", eficientes e seguros. A automação laboratorial terá um papel de bastante relevância num futuro próximo, uma vez que têm sido impostos novos padrões de qualidade que só recorrendo a este tipo de solução serão possíveis de alcançar. Sentindo uma necessidade de inovar na sua principal atividade, a Laborial aliouse à Faculdade de Engenharia da Universidade do Porto para desenvolver um sistema SCADA que pudesse elevar os standards de laboratórios inteligentes, de onde resultou o advanLabR. O objetivo desta dissertação é desenvolver um produto para complementar o sistema SCADA que foi desenvolvido num projeto anterior, denominado INTELLAB. O projeto desenvolvido visa atender a necessidades de clientes que pretendam uma solução simples e compatível com o sistema existente, de baixo custo, com 53 REFERÊNCIAS 60 Anexo A Código Arduino Neste Apêndice serão apresentados extratos de códigos relevantes para o projeto. A.1 Código Usado para Testar os Sensores Nesta Secção será apresentado o código usado para testar alguns sensores. Todas as licenças de utilização e alteração do código estão presentes no Apêndice B A.1.1 Sensores Analógicos Código para leitura de sinais analógicos, nomeadamente o sensor LM35: A.1.1.1 LM35 1\\TheLM35sensor should be connected to the Analog Input 0 2void setup() { 3Serial.begin(9600); 4} 5 6void loop() { 7int LM35 = analogRead (A0) ; 8 61 Código Arduino 9float temp = (100.0 5.0 / 1023.0) LM35 10 11 Ser ia l . println (temp) ; 12 delay (100) ; 13 } A.1.1.2 Térmistor NTC 1 2\\Thermistor should be connected to the Analog Input 1 3void setup() { 4Serial.begin(9600); 5} 6 7void loop() { 8int thermistor = analogRead(A1); 9 10 float temp = (5.0 / 1023.0) thermistor 11 12 Ser ia l . println (temp) ; 13 delay (100) ; 14 } A.1.2 Sensores Digitais Será apresentada a forma de leitura de alguns sensores digitais. O primeiro usa o protocolo 1-Wire, o segundo usa I C. A.1.2.1 Sensor DS18B20 1#include <OneWire . h> 2 3int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2 4 5//Temperature chip i/o 62 Código Arduino 6OneWire ds(DS18S20_Pin); // on digital pin 2 7 8void setup(void){ 9Serial.begin(9600); 10 } 11 12 void loop(void){ 13 float temperature = getTemp() ; 14 Ser ia l . println ( temperature ) ; 15 delay (100) ; 16 } 17 18 19 float getTemp(){ 20 //returns the temperature from one DS18S20 in DEG Celsius 21 byte data [ 1 2 ] ; 22 byte addr [ 8 ] ; 23 24 if (!ds.search(addr)){ 25 //no more sensors on chain , reset search 26 ds . reset_search () ; 27 return 1000; 28 } 29 30 if (OneWire::crc8(addr,7)!=addr[7]){ 31 S er ia l . println ( "CRC i s not valid ! ") ; 32 return 1000; 33 } 34 35 if (addr[0]!=0x10&&addr[0]!=0x28){ 36 S er ia l . print ( "Device i s not recognized " ) ; 37 return 1000; 38 } 39 40 ds . reset () ; 41 ds . s el ec t ( addr ) ; 42 ds . write (0x44 ,1) ; // start conversion , with parasite power on at the end 43 63 Código Arduino 44 byte present = ds . reset () ; 45 ds . s el ec t ( addr ) ; 46 ds . write (0xBE) ; // Read Scratchpad 47 48 for (int i=0; i<9; i++){// we need 9 bytes 49 data [ i ] = ds . read () ; 50 } 51 52 ds . reset_search () ; 53 byte MSB = data [ 1 ] ; 54 byte LSB = data [ 0 ] ; 55 56 float tempRead = ((MSB << 8) | LSB) ; //using two ’s compliment 57 float TemperatureSum = tempRead / 16; 58 return TemperatureSum; 59 } A.1.2.2 Sensor InfraRed MLX 1 2#include <i2cmaster .h> 3 4 5void setup(){ 6Serial.begin(9600); 7Serial.println("Setup..."); 8 9 i2c_init() ; // Initialise the i2c bus 10 PORTC = (1 << PORTC4) | (1 << PORTC5) ; //enable pullups 11 } 12 13 void loop(){ 14 int dev = 0x5A<<1; 15 int data_low = 0; 16 int data_high = 0; 17 int pec = 0; 18 19 i2c_start_wait (dev+I2C_WRITE) ; 64 Código Arduino 20 i2c_write (0 x07) ; 21 22 // read 23 i2c_rep_start ( dev+I2C_READ) ; 24 data_low = i2c_readAck () ; //Read 1 byte and then send ack 25 data_high = i2c_readAck () ; //Read 1 byte and then send ack 26 pec = i2c_readNak () ; 27 i2c_stop () ; 28 29 //This converts high and low bytes together and processes temperature , MSB is a error bit and is ignored for temps 30 double tempFactor = 0.02; // 0.02 degrees per LSB (measurement resolution of the MLX90614) 31 double tempData = 0x0000 ; // zero out the data 32 int frac; // data past the decimal point 33 34 // This masks off the error bit of the high byte , then moves it left 8 bits and adds the low byte. 35 tempData = (double)(((data_high & 0x007F) << 8) + data_low); 36 tempData = (tempData tempFactor) 0.01; 37 38 float celsius = tempData 273.15; 39 40 Seri al . print ("") ; 41 Seri al . print (" Celsius degree : ") ; 42 Se ri al . println ( c e l s i u s ) ; 43 44 45 delay (1000) ; // wait a second before printing again 46 } A.2 Data Logger Nesta Secção é apresentado o código para implementação do data logger no Arduino. 1#include <SD . h> 65 Código Arduino 2 3// On the Ethernet Shield , CS is pin 4. 4const int chipSelect = 4; 5 6void setup() 7{ 8Serial.begin(9600); 9while (!Serial) { 10 ; 11 } 12 13 14 Ser ial . print (" I n i t i a l i z i n g SD card . . . ") ; 15 16 pinMode(10 , OUTPUT) ; 17 18 // see i f the card is present and can be initialized : 19 if (!SD.begin(chipSelect)) { 20 Se ria l . println ( "Card f ailed , or not present ") ; 21 // don ’ t do anything more: 22 return ; 23 } 24 Ser ial . println ("card i n i t i a l i z e d . ") ; 25 } 26 27 void loop() 28 { 29 // make a string for assembling the data to log : 30 String dataString = "" ; 31 32 // read three sensors and append to the string : 33 for (int analogPin = 0; analogPin < 3; analogPin++) { 34 int sensor = analogRead(analogPin) (500.0 / 1023.0); 35 dataString += String ( sensor ) ; 36 if (analogPin < 2) { 37 dataString += " ," ; 38 } 39 } 40 66 Código Arduino 41 // open the f i l e . note that only one f i l e can be open at a time , 42 // so you have to close this one before opening another . 43 Fi le dataFile = SD. open ( " datalog . txt " , FILE_WRITE) ; 44 45 // i f the f i l e is available , write to i t : 46 if (dataFile) { 47 dataFile . println ( dataString ) ; 48 dataFile . close () ; 49 // print to the serial port too : 50 Seri al . println ( dataString ) ; 51 } 52 // i f the f i l e isn ’ t open , pop up an error : 53 else { 54 Seri al . println (" error opening datalog . txt ") ; 55 } 56 } A.3 Modbus e Sleep Code Nesta Secção é apresentado o código para implementação do sleep code bem como do Modbus. 1#include <SD . h> 2#include <avr/interrupt .h> 3#include <avr/power .h> 4#include <avr/sleep .h> 5#include <avr/wdt.h> 6 7volatile int sleep_count = 0; 8const int interval=1; //minutes between acquisiions 9const int sleep_total = (interval 60)/8; // Approximate number 10 // of sleep cycles needed before the interval defined above 11 // elapses . Not that this does integer math. 12 13 14 int sleepStatus = 0 ; 15 int count = 0; 67 Código Arduino 16 const int chipSelect = 4; 17 void configure_mb_slave(long baud , char parity , char txenpin); 18 19 int update_mb_slave(unsigned char slave , int regs , 20 unsigned int regs_size); 21 22 23 enum { 24 MB_SLAVE = 1 , /id do slave / 25 }; 26 27 28 enum {MB_REG1, 29 MB_REG2, 30 MB_REG3, 31 MB_REG4, 32 MB_REG5, 33 MB_REG6, 34 MB_REG7, 35 MB_REG8, 36 MB_REG9, 37 MB_REG10, 38 MB_REGS /numero de t o tal de registos no Slave / 39 }; 40 41 int regs[MB_REGS]; /mapa de r e g i s t o s do s lav e / 42 43 44 void sleepNow() 45 { 46 set_sleep_mode (SLEEP_MODE_IDLE) ; // sleep mode is set here 47 sleep_enable () ; // enables the sleep bit in the mcucr register 48 // so sleep is possible . just a safety pin 49 power_adc_disable () ; 50 power_spi_disable () ; 51 power_timer0_disable () ; 52 power_timer1_disable () ; 53 power_timer2_disable () ; 68 Código Arduino 54 power_twi_disable () ; 55 sleep_cpu () ; 56 57 sleep_mode () ; // here the device is actually put to sleep !! 58 // THE PROGRAM CONTINUES FROM HERE AFTER WAKING UP 59 sleep_disable () ; // firs t thing after waking from sleep : 60 power_all_enable () ; 61 digitalWrite (3 ,LOW) ; 62 digitalWrite (5 ,LOW) ; 63 } 64 65 66 void setup() 67 { 68 watchdogOn () ; 69 /ADCSRA = ADCSRA & B 0 1 1 1 1 1 1 1 ; / / d i s a b l e s ADC 70 ADCSRA = ADCSRA & B 0 1 1 1 1 1 1 1 ; / / d i s a b l e s a n a l o g c o m p a r a t o r 71 DIDR0 = DIDR0 | B00111111 ; // d i s a b l e s d i g i t a l i n p ut s . 72 / 73 74 pinMode(10 ,OUTPUT) ; 75 SD. begin ( chipSelect ) ; 76 configure_mb_slave (9600 , ’n ’ , 0) ; 77 //Serial . begin (9600) ; 78 //Serial . println ("comecar") ; 79 80 81 } 82 83 84 85 void loop() 86 { 87 update_mb_slave(MB_SLAVE, regs , MB_REGS) ; 88 89 90 regs [0]= analogRead (A0) ; 69 Licença da Utilização de Código 76 Anexo C Ilustração das Ligações dos Sensores ao Arduino Figura C.1: Esquema de Ligação entre o Arduino e o sensor de temperatura analógico integrado LM35 [36] 77 Ilustração das Ligações dos Sensores ao Arduino Figura C.2: Esquema de Ligação entre o Arduino e um Termístor 78 Ilustração das Ligações dos Sensores ao Arduino Figura C.3: Esquema de ligação entre o sensor integrado Dallas DS18B20 e o Arduino [37] Figura C.4: Ligação Sensor de Humidade Relativa e Temperatura - SHT15 - ao Arduino [38] 79 Ilustração das Ligações dos Sensores ao Arduino Figura C.5: Esquema de Ligação entre o Arduino e o Sensor de Temperatura Infravermelhos [39] Figura C.6: Ilustração da Montagem do Controlo do Sistema Anestésico 80