Controllo automatico per tende da sole con modulo Iono

0

Scopo di questo tutorial è illustrare una semplice applicazione di controllo per una tenda da sole motorizzata, sviluppata in un contesto di integrazione: saranno infatti utilizzati un modulo Iono, prodotto dalla Home System Consulting di Milano, un motore CAME e un sensore PCE Instruments. Il mini impianto permetterà la chiusura automatica della tenda in presenza di vento o pioggia, parallelamente alla possibilità di controllare il movimento di apertura e chiusura anche tramite due pulsanti ad azionamento manuale. Il progetto, che nasce come applicazione stand alone, sarà sviluppato ulteriormente in un secondo tutorial dove sarà inserito un modulo di supervisione allo scopo di dimostrare le potenzialità offerte da un sistema connesso e comandabile da remoto tramite lan e internet.

iono_702

Modulo Iono Ethernet

 

Il cuore della presente applicazione è il modulo Iono, di cui abbiamo già parlato in questo articolo, che consiste in una interfaccia input/output basata su Arduino e realizzata con componentistica di alta qualità e affidabilità. Il modulo è dotato di 6 ingressi analogico – digitali, 6 uscite a relè di potenza (250V – 12A) e di una uscita analogica che rispetta lo standard 0-10V. Il tutto è assemblato in un contenitore DIN Rail da 9 moduli, per essere facilmente inserito in un qualsiasi quadro elettrico. Il modulo può essere alimentato da un ampio intervallo di tensioni, sia in continua che in alternata, per la massima flessibilità di installazione. Iono è disponibile in tre versioni : Iono Ethernet, utilizzato per questo tutorial, che monta una scheda Arduino Ethernet R3; Iono Uno, che monta una scheda Arduino Uno R3 SMD e Iono Solo, che viene fornito privo di scheda Arduino preinstallata, in modo da poterlo configurare a seconda delle proprie esigenze.

 

I sistemi di controllo per tende sono ormai abbastanza diffusi: i principali produttori infatti forniscono delle apposite centraline da collegare ai motori della tenda, ai sensori, che di solito sono costituiti da un anemometro e un sensore di pioggia, e al comando manuale per l’apertura, in modo da automatizzare la chiusura della tenda in caso di condizioni metereologiche avverse e proteggerla da possibili danni. La soluzione proposta nel tutorial evidenzia come sia semplice ottenere le funzionalità di base (la chiusura in caso di vento o pioggia) e comandare manualmente il motore in apertura e chiusura, e fornisce alcuni spunti per modificare il programma aggiungendo altre funzioni utili: ad esempio si potrebbe misurare, tramite un sensore aggiuntivo, l’intensità luminosa e decidere l’apertura automatica in caso di forte irraggiamento solare.

 

Schema dei collegamenti

Schema dei collegamenti

 

Nella figura è mostrato lo schema generale dei collegamenti tra il modulo Iono e gli altri componenti utilizzati: si possono notare i due pulsanti per il comando manuale, l’anemometro, il sensore di pioggia e il motore della tenda con le due fasi di apertura e chiusura. Nel progetto si è scelto di utilizzare un anemometro con uscita 0-10 V, che quindi fornisce un valore di tensione proporzionale alla velocità del vento, che viene letto e confrontato con un riferimento preimpostato nel programma in modo da stabilire la soglia di intervento dell’automatismo . Sarebbe possibile in alternativa impiegare anche modelli con uscita digitale, modificando opportunamente la funzione nel software in modo da convertire la frequenza degli impulsi ricevuti dal sensore nella relativa velocità del vento misurata. Il sensore di pioggia dispone invece di una uscita a relè che viene azionato in presenza di una quantità prestabilita di pioggia.

 

Anemometro PCE Instruments

Anemometro PCE Instruments

 

L’anemometro scelto per il tutorial è il modello PCE-FST-200-201 della PCE Instruments, azienda che propone a catalogo una vasta gamma di strumenti e accessori per la misura di variabili elettriche o fisiche. Il sensore pioggia proposto è invece il modello M152 della Kemo.

 

Sensore pioggia Kemo

Sensore pioggia Kemo

 

Relativamente al motore per la tenda, viene qui segnalato il modello Mondrian 5 dell’azienda CAME, specializzata in prodotti per automatismi e movimentazioni.

 

Motore Mondrian 5 CAME

Motore Mondrian 5 CAME

 

E’ di seguito riportato il codice dello sketch da utilizzare per la programmazione della scheda Arduino contenuta nel modulo Iono Ethernet, in cui sono implementate le funzioni di chiusura automatica e i comandi manuali della tenda motorizzata. Per la programmazione occorre assicurarsi di avere posizionato correttamente le librerie di Iono (iono.h) nella relativa cartella “libraries” del software di programmazione.

 


/*
  Sample code for the control of an automation through iono in combination with
  an anemometer and a pluviometer.

    Copyright (C) 2014-2015 Sfera Labs, a division of Home Systems Consulting S.p.A. - All rights reserved.

    For information, see the iono web site:
    http://www.iono.cc/

  This code is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
  FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

#include <Iono.h>

uint8_t anem_in = AV4;
uint8_t pluv_in = DI5;
uint8_t man_open_in = DI1;
uint8_t man_close_in = DI2;

uint8_t open_out = DO2;
uint8_t close_out = DO1;

float anem_threshold = 5.0;
long move_time = 30000; // 30 seconds

long start_time = 0;
boolean is_open = true;

void setup() {
  check(0, 0);

  // Call check() every time
  // the voltage on the input
  // changes of a value >= 0.5V
  // and is stable for 500ms
  Iono.subscribeAnalog(anem_in, 500, 0.5, &check);

  // Call check() every time
  // the state of the input changes
  // and is stable for 2sec
  Iono.subscribeDigital(pluv_in, 2000, &check);

  // Monitor the manual command inputs
  Iono.subscribeDigital(man_open_in, 300, &manCommand);
  Iono.subscribeDigital(man_close_in, 300, &manCommand);
}

void loop() {
  if (start_time != 0) { // if the automation is closing
    if (millis() > start_time + move_time) {
      // after the predefined time
      // (move_time) we stop it
      stop();
    }
  }

  // Check the monitored inputs
  Iono.process();

  delay(100);
}

/**
* Returns true if it is raining or windy
* and thus the automation shold stay closed
*/
boolean shouldBeClosed() {
  return (Iono.read(pluv_in) == HIGH || Iono.read(anem_in) > anem_threshold);
}

/**
* Checks the pluviometer and anemometer inputs
* and starts closing the automation if needed
*/
void check(uint8_t pin, float value) {
  if (shouldBeClosed()) {
    startAutoClose();
  }
}

/**
* Processes the manual commands.
*/
void manCommand(uint8_t pin, float value) {
  if (value == HIGH) {
    if (pin == man_open_in) { // open command
      if (!shouldBeClosed()) { // if it is ok
        open(); // we open the automation
      }
    } else { // close command
      close(); // it is always safe to close
    }
  } else { // open/close input released -> stop command
    if (!shouldBeClosed() || start_time == 0) { // if not automatically closing
      stop();
      is_open = true;
    }
  }
}

/**
* Starts closing the automation
* if it is not already closed or closing
*/
void startAutoClose() {
  if (is_open && start_time == 0) {
    is_open = false;
    start_time = millis();
    close();
  }
}

/**
* Activates the relay to open the automation
* and deactivates the one close it
*/
void open() {
  is_open = true;
  Iono.write(close_out, LOW);
  Iono.write(open_out, HIGH);
}

/**
* Activates the relay to close the automation
* and deactivates the one open it
*/
void close() {
  Iono.write(open_out, LOW);
  Iono.write(close_out, HIGH);
}

/**
* Deactivates opening and closing relays
*/
void stop() {
  start_time = 0;
  Iono.write(close_out, LOW);
  Iono.write(open_out, LOW);
}

 

Nelle prime linee del programma vengono definiti gli ingressi, le uscite, il valore di soglia per la velocità del vento e il tempo totale di apertura della tenda.

All’interno del blocco “setup” sono quindi inizializzate le funzioni dedicate alla lettura e al mononitoraggio della velocità del vento, del segnale di pioggia e dello stato dei comandi per l’azionamento manuale della movimentazione.

Viene quindi eseguito il loop principale dove sono iterate le funzioni che provvedono alla chiusura della tenda in presenza del valore di velocità del vento impostato all’inizio, o della condizione di pioggia, tramite una funzione booleana che viene condizionata dalla lettura di tali valori.

Allo stesso modo vengono monitorati i pulsanti di azionamento manuale: i comandi di apertura, chiusura e stop della tenda sono gestiti da tre funzioni che hanno il compito di impedire che le due fasi del motore possano eccitarsi contemporanemente, provocando danni al meccanismo. La funzione di interblocco è di solito ottenuta meccanicamente grazie a un particolare pulsante doppio appositamente progettato per azionare le motorizzazioni di tende e tapparelle che impedisce la pressione contemporanea dei due contatti; grazie alla soluzione software è possibile utilizzare, per ottenere lo stesso risultato, due pulsanti singoli qualsiasi.

 

La presente realizzazione prevede l’utilizzo del modulo Iono in modalità stand – alone e non necessita di altri componenti, escluse le alimentazioni, al di fuori di quelli indicati nello schema. In un articolo successivo mostreremo invece come, grazie al supporto di un componente di supervisione, le funzionalità di Iono possano essere aumentate e ampliate, trasformandolo in un vero e proprio protagonista dell’Internet o Things.

 

Componenti utilizzati nel tutorial:

Modulo Iono di Sferalabs
Motore per tenda CAME Mondrian 5
Anemometro PCE Instruments
Sensore pioggia Kemo

 

Per maggiori informazioni:

www.sferalabs.cc/iono/
Maria Chizzali
maria.chizzali@hsyco.com 
tel. +39 02 45077418

www.came.com
Elisabetta Guidali
eguidali@came.com

www.pce-italia.it
info@pce-italia.it



Share.

Comments are closed.