Arduino, relè e carico induttivo

Ciao a tutti, primo post sul forum, e prime esperienze con arduino e elettronica in generale, avrei bisogno di un pò di supporto (ammessi anche gli scappellotti virtuali per evidenti carenze elettroniche/elettriche :slight_smile:

Sto lavorando ad un piccolo progetto di automazione il cui scopo dovrà essere, una volta terminato e funzionante, l'attivazione di una o due pompe per acque scure (la prima da 0.75 hp, la seconda da 1.75hp).

Lato arduino ho acquistato questa board: http://blog.iteadstudio.com/arduino-with-4-channels-relays-development-platform-rboard/ che è in pratica un arduino duemilanove con quattro relè 5V/220V 10A (carico resistivo) (300W carico induttivo)
I relè montati sono questi: Mini_5V_DC_HUIKE_Power_Relay

L'attivazione dei relè, in funzione della chiusura di due galleggianti (eventualmente diventeranno quattro per ridondanza) collegati a due input analogici non è stata un problema, lato software e circuito di controllo tutto è filato liscio.

Dopo aver consultato forum e documentazione ed essermi accorto di aver preso un pò sotto gamba il discorso dell'utilizzo di un relè per l'attivazione di una pompa invece che, per esempio, di una lampadina, e dopo aver studiato un pò cosa voglia dire pilotare un carico induttivo invece che resistivo, ho realizzato la non idoneità (nonchè il rischio di friggere tutto e/o di fare delle belle scintille) dell'utilizzare la board da me scelta per pilotare direttamente le pompe.

Se ho fatto bene i compiti (e qui ho bisogno di input) direi che ho bisogno di due contattori, da pilotare con i relè della mia scheda che siano in grado di sopportare il carico induttivo da me previsto, tipo questi: http://it.rs-online.com/web/p/contattori/0202710/, ma prima di saltare sul mio cavallo (e spendere altri soldi) volevo avere qualche indicazione se sto seguendo la strada giusta (e sicura, invece di provare ad attaccare la mia schedina e vedere se fa le scintille) o se mi sto complicando troppo la vita.

L'idea in generale è che il sistema, una volta montato a dovere con collegamenti a 220 in apposite scatole IP e/o centralini, parte arduino separata (tranne per le fasi che vanno ai connettori dei relè) e in apposite scatole ip, interruttore magnetotermico per isolare il tutto quando bisogna fare prove/manutenzioni, supervisione di un elettricista per le parti critiche funzioni meglio del sistema meccanico attuale (galleggianti collegati direttamente alle pompe che molto spesso non partono per cause non ben specificate ... grovigli, non abbastanza acqua, troppa acqua) che in caso di malfunzionamento causa un allagamento del garage , quindi vorrei evitare di procedere per tentativi ....

Mattia

non ci hai detto quanti W necessitano le pompe

Ciao, la prima 0.75HP quindi più o meno 650W a regime, la seconda circa 1250W a regime

bhe direi che li fai saltare quei poveri relè.

un paio di questi dovrebbero andare bene, ma chiedi conferma, sono ignorante sulla cosa.

vedi anche http://www.plcforum.it/forums/index.php?showtopic=71688

lesto:
un paio di questi dovrebbero andare bene, ma chiedi conferma, sono ignorante sulla cosa.
http://it.rs-online.com/web/p/rele-stato-solido/5091382/

No, non vanno proprio bene. Serve uno con uscita Triac non MOSFET.
Ciao Uwe

Ciao, il crouzet non va bene se ci devi azionare carichi sulla 220 (se e' corretto il dato indicato "tensione massima 60V) ... prendi come minimo un Crydom tipo questo http://it.rs-online.com/web/p/rele-stato-solido/7204044/ da 280V, o ancora meglio uno con tensione massima di carico di 350V (ma salgono di prezzo in modo assurdo :fearful:)

scusate, mi sono affidato al filtro RS senza ricontrollare i dati, ma evidentemente ho fatto casino :blush:

.. grazie per i suggerimenti, con i riferimenti da cui partire ho trovato una FAQ sul sito crouzet (http://www.crouzet-ssr.com/english/faq.shtml), che in teoria consiglia SSR con turn on casuale, invece che zero crossing per carichi induttivi.

quindi il modello che fa per me dovrebbe essere questo: http://it.rs-online.com/web/p/rele-stato-solido/7204057/
che mi consentirebbe di controllare la bobina con 5v invece che 200v, e quindi di non dover portare la fase a 220 nella scatola dell'elettronica a 5v, che mi piace molto come idea

Quello che ti ho linkato si attiva dai 3V cc in su, non ne servono 200 ... inoltre, non capisco come possano dire che un rele con zero crossing sia peggio di uno senza, specie per carichi induttivi, dato che genera meno disturbi ... mi sa che si erano fumati qualcosa di strano quando l'hanno scritto :stuck_out_tongue: XD

...
Un problema connesso all'uso dei motori asincroni è costituito dalle elevate correnti di spunto, pari a circa 8 volte quella nominale, con problemi per la rete di alimentazione (cadute di tensione) e per gli interruttori (interventi indesiderati);
...

Usare TRIAC da 10A a 230V con correnti di spunto elevate possono determinare, a mio avviso, la rottura del componente.
Meglio usare un contattore od un SSR che sopporti una corrente da 20A

concordo con cyberhs e consiglio SSR da 25A o 40A.
Ciao Uwe

Esistono anche relè a barra din da 25A resistivi più che sufficienti per carichi induttivi fino ....mmm a spanne 12A o poco più. I relè li predi con bobina da 220Vac e con la scheda relè ecciti i relè su barra din.

Io farei così.

Ciao.

Innanzitutto grazie per le risposte, e se ne avessi avuto bisogno ho avuto conferma che non esiste un modo giusto per completare la mia installazione ma piu' modi e che ognuno in base alla sua esperienza e' orientato in un modo piuttosto che un altro.
Detto questo, preferirei evitare ssr da 40 ampere perche' temo poi avrei bisogno di dissipatori e non credo sia facile montarli a modo su un centralino din ...
Quindi rimangono contattori e rele' da 25a. I contattori da 25a su rs sono 40 euro .. Ora provo a vedere se i rele' normali sono piu' abbordabili. Sinceramente li avevo scartati perche' mi sembrava che rispetto ai contattori avessero bisogno di altro (varistori? ma potrei sparare cavolate....) per svolgere la stessa funzione in sicurezza ....
Continuero' a leggere e ad imparare .....

I telerruttori si usano nelle applicazioni in cui non si possono usare i relè a barra din.
Ad esmpio, uso frequente, cioè numero di accensioni e spegnimenti frequenti, come ad es macchine utensili.

I relè si usano per carichi resistivi che per quelli induttivi, ma è meglio che l'uso non sia frequente, cioè massimo una 20 di azionamenti giornalieri. Inoltre l'applicazione in caso di carico induttivo è motivo di scelta, ad esmpio un motore AC con avvio senza carico (cioè lavoro), es una grattugia (sepermercati) viene avviata senza carico o ridotto carico, poi l'operatore dopo l'avvio preme il cacio sulla grattugia e il motore assorbe più corrente. Quando all'avvio c'è carico meccanico alto si deve tenere conto il massimo assorbimento e tripicare la corrente sopportata dal relè, specie se i contatti sono classe A6. Se non ricordo male per carichi induttivi i contatti devono essere A3. In ogni caso ciò che ho scritto in merito al relè da 25A rimane valido, quindi non è necessario nel tuo caso un teleruttore o contattore con contatti A3, anche perchè avresti difficoltà a trovarlo in commercio di piccola taglia es 10 o 12A (A3) e se lo trovi ti costa quasi come il 25A (A3), che è quello più commercializzato al dettaglio.

Proprio oggi ho smontato un banco gelati doppio compressore asservito da un relè 25A barra din normale. I due compressori assorbono almeno 2HP ad occhio e molto di più per lo spunto fino ad un massimo di 15 volte la potenza nominale, ma in questa applicazione ci sono di solito valvole termostatiche che spesso limitano la corrente di spunto, si spesso, ma se spegni e riaccendi nell'arco di pochi secondi la corrente arriva a ~15 volte, perchè c'è il gas in pressione che corrisponde ad avviare un motore con carico meccanico elevato.

Ciao.

@mauroTec: grazie per le informazioni:-)
… sgattando ho trovato questo: http://it.farnell.com/jsp/search/productdetail.jsp?id=1889093 che e’ un contattore da 25a montabile su barra din che sopporta fino a 120a di picco e ha la bobina a 220v , costa intorno ai 20 euro e ha un circuito di protezione con varistore integrato… Non riesco invece a trovare online un rele a 25a di quelli che indichi … Probabilmente mi basta fare un giro da un rivenditore di materiale elettrico ben fornito ma dubito che il prezzo possa essere tanto diverso.
Per quanto riguarda il numero di azionamenti … magari zero per sei mesi e 10/20 durante un temporale particolarmente forte. Credo che per una pompa lo spunto iniziale richieda gia’ la massima poitenza, ma tu sicuramente hai piu’ esperienza di me…

Fra rele' normali e teleruttori (contattori), c'e' una differenza fondamentale, a parte le portate (esistono anche rele' normali da 25 e 40 A, ma costosi e difficili da trovare :P) ... ed e' la cosiddetta "apertura positiva", in gergo ... cioe', quando il rele normale si diseccita, i contatti si aprono perche' la molla richiama l'ancora, ma se il contatto si e' "incollato" per una botta di corrente, puo rimanere chiuso ... nei teleruttori esiste un meccanismo di sospensoione dei contatti mobili che quando l'ancora viene rilasciata, da una "botta" meccanicamente, ai contatti, scollandoli anche se sono incollati e forzandone l'apertura (ovvio, se non li si e' fusi completamente :stuck_out_tongue: XD)

Per i rele statici, se sono dimensionati per 40A, non necessitano di particolari dissipatori per reggere picchi di 20A e correnti nominali molto piu basse, pero' a comperarli in Italia i costi salgono parecchio ... l'unico posto dove li trovi a prezzi decenti (tempi di consegna a parte) e' la Cina ... ad esempio http://www.ebay.com/itm/Solid-State-Relay-SSR-24-480V-AC-40A-Heat-Sink-/370412367790?pt=LH_DefaultDomain_0&hash=item563e4c2fae

@Etemenanki: grazie per la spiegazione, sicuramenet ora ho idee molto più chiare di cosa usare per quale applicazione.

credo opterò per un teleruttore/contattore, ho trovato questo https://www.distrelec.it/contattore-serie-22/finder/22-32-0-230-4340/507042 che rispetto a quello della finder linkato prima ha anche uno switch off/auto/manuale di emergenza .... lo ordino, monto il tutto, e posto i risultati.

Ciao a tutti,
questo weekend sono riuscito a finire il mio piccolo progettino (installazione a parte).

Ecco alcune foto:



E questo è il codice:

#include <Wire.h>

long pump2Delay = 60000; // Time (in millis) to delay pump2 activation
long sw1Delay = 180000;   // Time after which to enable pumps even if sw2 is not active
                       // Don't want water to rest there unnecessarily

int R0 = 4;
int R1 = 5;
int LEDSW1 = 6;
int LEDSW2 = 7;

int sw1State = 0;
int sw2State = 0;
int sw3State = 0;
int previousSW1State = 0;
int previousSW2State = 0;
int previousSW3State = 0;
int pump1Active=0;
int pump2Active=0;
int anomaly = 0;

long interval = 1500;           // interval at which to blink (milliseconds)

// Variables will change:
int ledState = LOW;             // ledState used to set the LED
long previousMillis = 0;        // will store last time LED was updated
long previousPump1ActiveMillis = 0;
long previousPump2ActiveMillis = 0;
long previousSW1StateMillis = 0;
long previousSW2StateMillis = 0;
long previousSW3StateMillis = 0;
const byte SlaveDeviceId = 1;


void blink(){
  int d = 250;
  for(int i = 1; i < 7; i++){
    digitalWrite(A3, i % 2);
    delay(d);
  }

}

// aCount is the number of bytes received.
void receiveCallback(int aCount)
{
  if(aCount == 2)
  {
    int receivedValue  = Wire.read() ;
    int receivedValue2 = Wire.read();
    Serial.print("Switch 1: ");
    Serial.println(receivedValue);
    Serial.print("Switch 2: ");
    Serial.println(receivedValue2);
  }
  else
  {
    Serial.print("Unexpected number of bytes received: ");
    Serial.println(aCount);
  }
  blink();
}

void requestCallback()
{
  // Contrived example - transmit a value from an analogue pin.

  // To send multiple bytes from the slave,
  // you have to fill your own buffer and send it all at once.
  uint8_t buffer[6];
  buffer[0] = sw1State;
  buffer[1] = sw2State;
  buffer[2] = sw3State;
  buffer[3] = pump1Active;
  buffer[4] = pump2Active;
  buffer[5] = anomaly;
  Wire.write(buffer, 6);
  blink();
}

// the setup routine runs once when you press reset:
void setup() {
  // initialize the digital pin as an output.

  pinMode(R0, OUTPUT);
  pinMode(R1, OUTPUT);
  pinMode(LEDSW1, OUTPUT);   //Use Relay 2 as SW1 telltale
  pinMode(LEDSW2, OUTPUT);   //Use Relay 3 as SW2 telltale
  pinMode(A3, OUTPUT);       //Use A3 to drive status led
  pinMode(A0, INPUT);        //A0 == SW1
  digitalWrite(A0, HIGH);
  pinMode(A1, INPUT);        //A1 == SW2
  digitalWrite(A1, HIGH);
  pinMode(A2, INPUT);        //A2 == SWITCH OVERRIDE
  digitalWrite(A2, HIGH);
  //pinMode(A3, INPUT);
  //digitalWrite(A3, HIGH);

  //I2c Init
  digitalWrite(A4, HIGH);
  digitalWrite(A5, HIGH);
  Wire.begin(SlaveDeviceId);
  // Set the callback to call when data is received.
  Wire.onReceive(receiveCallback);
  Wire.onRequest(requestCallback);
}

// the loop routine runs over and over again forever:
void loop() {
  unsigned long currentMillis = millis();
  /*
   if(currentMillis - previousMillis2 > interval2) {
      previousMillis2 = currentMillis;
      blink();
   }
  */
  if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis;

    sw1State = !digitalRead(A0);
    sw2State = !digitalRead(A1);
    sw3State = !digitalRead(A2);
    digitalWrite(LEDSW1, sw1State);
    digitalWrite(LEDSW2, sw2State);
    if (sw1State != previousSW1State){
      previousSW1State = sw1State;
      previousSW1StateMillis = currentMillis;
    }
    if (sw2State != previousSW2State){
      previousSW2State = sw2State;
      previousSW2StateMillis = currentMillis;
    }
    if (sw3State != previousSW3State){
      previousSW3State = sw3State;
      previousSW3StateMillis = currentMillis;
    }

    if (!sw1State && !sw2State && !sw3State){
       pump1Active = 0;
       pump2Active = 0;
    }
    if (((sw1State && sw2State)
          ||sw3State
          ||sw2State
          ||(sw1State && (currentMillis -  previousSW1StateMillis > sw1Delay))
          ) && !pump1Active){
      pump1Active = 1;
      previousPump1ActiveMillis = currentMillis;
    }
    if (pump1Active && (currentMillis -  previousPump1ActiveMillis > pump2Delay)){
      pump2Active = 1;
      previousPump2ActiveMillis = currentMillis;

    }
    anomaly = 0;
    if ((sw2State | sw3State) && !sw1State ){
      anomaly = 1;
    }
    if (currentMillis -  previousPump1ActiveMillis > 600000){
      anomaly = 1;
    }

    digitalWrite(R0, pump1Active);
    digitalWrite(R1, pump2Active);

    // if the LED is off turn it on and vice-versa:
    ledState = !ledState;
    if (sw3State){
      ledState = HIGH;
    }
    // set the LED with the ledState of the variable:
    digitalWrite(A3, ledState);
  }
}

Hardware:
Una rboard, a cui sono collegati:

  • tre interruttori (due a galleggiante, uno manuale)
  • un led per segnalazioni di comunicazione (blink)/attivazione manuale(always on)
  • due contattori attivati tramite relè R0 e R1
  • un arduino con trasmittente wireless RFM12 per comunicazione stato interruttori e pompe

La logica di funzionamento è questa:

Due interruttori a galleggiante in un tombino (più uno per attivazione manuale), uno di livello minimo , uno di livello massimo.
Quando l’interruttore di livello massimo è on, accensione di una pompa (e eventualmente la seconda dopo pump2Delay millisecondi) fino a che l’interruttore di livello minimo non è off. Se livello massimo è on e livello minimo no ho un anomalia che viene segnalata su comunicazione I2C
Se il livello minimo è on per più di sw1Delay attiviamo le pompe per svuotare fino sotto al livello minimo
Se le pompe sono accese per più di 10 minuti, segnalo anomalia
Se l’interruttore manuale è on, accendo le pompe con la stessa logica

Componenti aggiuntivi:
Trasformatore 220v/5v per alimentare i due arduino e il lato relè della rboard (con ground separata … non sono sicuro basti a isolare da eventuali kickback ma mi evita di dover usare anche un trasformatore da 9v per alimentare la rboard)

Edit: Immagini link

Confidenzialmente:
Delinquente, la linea distribuiscila attraverso morsettiere DIN. :grin:

Cioè, usa delle morsettiere a barra DIN per ricevere la linea terra inclusa, poi la linea la distribuisci tramite ponticelli di filo ad altre morsettiere e dall'altro capo della morsettiera alimenti i vari carichi, come l'alimentatore, i relè ecc. Non è da escludere (se c'è spazio) l'uso di morsettiere anche per A1 relè A e A1 relè B. Ti servirà anche un nodo NEUTRO comune per le bobbine dei relè.

Prima in riferimento ai relè su barra DIN, ho usato una terminologia errata, in quanto si tratta sempre di relè contattore bibolare. Solitamente i telerruttori o contattori hanno un contatto ausiliare e sono specifici per applicazione. Esistono anche relè su barra DIN con contatto OCTAL, in sostanza sono degli zoccoli porta relè, i quali zoccoli sono predisposti per l'incastro su barra DIN. Inoltre esistono anche relè a basissima corrente di eccitazione adatti ad essere connessi direttamente alle porte di arduino, solitamente conosciuti come relè contattori PLC.

Ora non vorrei metterti in confusione, portandoti a pensare che potresti usare questi "relè PLC" o altro anche perchè ormai la spesa l'hai sostenuta, quindi non ti resta che testare tutto moltissime volte e poi se i test hanno dato esito positivo pensa a curare il cablaggio, crea una tabella con il pc e stampala per poi conservarla dentro il quadro. La tabella deve contenere la coppia chiave/valore 1 FASE, 2 NEUTRO, 6 A1 rele A, 7 A1 relè B, ecc. Le morsettiere sono etichettabili e quindi ti facilita il lavoro.

Ciao.

MauroTec:
Confidenzialmente:
Delinquente, la linea distribuiscila attraverso morsettiere DIN. :grin:

:cold_sweat: :cold_sweat:

Potrei dirti che era solo per un test ma in realtà a parte un paio di cappellotti (se così si chiamano) e la separazione della fase tra carico e controllo quello sarebbe stato il risultato finale.
A mia discolpa, essendo softwarista, posso solo dire di aver copiato da quello che da queste parti passa per elettricista ... credo che la morsettiera DIN non sia contemplata, io almeno li obbligo a mettere i cappellotti, alrimenti andrebbero di nastro (e ne ho già cambiati tre, quest'ultimo almeno fa quello che gli dico io e non quello che vuole lui in termini di cosa accende cosa e quanti tubi vanno dove)

Comunque, dopo un giro al negozio di materiale elettrico ho recuperato un pò di questi:

Vedrò di fare un lavoro meno da pirata e più serio ... potrei avere dei problemi di spazio ma cercherò di non incasinare troppo il tutto.

Per quanto riguarda i relè e gli zoccoli ho capito anche io (sempre dopo giro dal negozio di materiale elettrico) quello che intendevi, naturalmente il relè PLC ha suscitato uno sguardo tipo 'ma questo da dove è uscito che cerca di parlare da elettricista e non sa quello che dice' seguito subito da 'non li teniamo ma possiamo ordinarli da catalogo, comunque costeranno un sacco' quindi, come per gli SSR e/o i triac li infilo nel mio catalogo di cose da sapere e che esistono e si possono usare e vedrò la prossima volta cosa usare.

Grazie ancora, e non preoccuparti per la confusione, sono abituato ad avere a che fare con i 'softwaristi' che in quanto a parole complicate e confusione sono dei campioni ....