Problema relè shield

Salve,
sto realizzando una serra con Arduino Uno ma ho un problema con la relè shield.
La scheda in questione è questa:
Ha 8 canali e funziona a 12V.

Ho collegato il pin VCC della scheda relè al pin VIN di Arduino(che è alimentato a 12V) e il GND della scheda relè al pin GND di Arduino.
Il problema è che i relè non vengono aperti da Arduino.
Praticamente quando alimento la relè shield, si accendono i led della scheda stessa e si sente il tic dei relè, ma poi questi non eseguono i comandi da Arduino.

Volevo capire con il vostro aiuto se sono io che sbaglio in qualche cosa nel software o nell'hardware o è la scheda relè che non funziona.

Questa è una parte di sketch del setup:

void lampada(int onoff) {
    if(onoff) {
        digitalWrite(3, HIGH);
        //lcd.setCursor(0, 0);
        // lcd.print("LOFF");
        
    }
    else {
        digitalWrite(3,LOW);
        // lcd.setCursor(0, 0);
         //lcd.print("LON");
        
    }
}

void resistenza(int onoff) {
    if(onoff) {
        digitalWrite(4, HIGH);
        //lcd.setCursor(0, 0);
        //lcd.print("ROFF");
        
    }
    else {
        digitalWrite(4, LOW);
         //lcd.setCursor(0, 0);
         //lcd.print("RON");
        
    }
}

void ventolaesterna(int onoff) {
    if(onoff) {
        digitalWrite(5, HIGH);
          //lcd.setCursor(0, 0);
          //lcd.print("VEOFF");
        
    }
    else {
        digitalWrite(5, LOW);
          //lcd.setCursor(0, 0);
          //lcd.print("VEON");
        
    }
}

void ventolainterna(int onoff) {
    if(onoff) {
        digitalWrite(6, HIGH);
         //lcd.setCursor(0, 0);
         //lcd.print("VIOFF");
        
    }
    else {
        digitalWrite(6, LOW);
         //lcd.setCursor(0, 0);
         //lcd.print("VION");
        
    }
}

void pompa(int onoff) {
    if(onoff) {
        digitalWrite(7, HIGH);
         //lcd.setCursor(0, 0);
         //lcd.print("POFF");
        
    }
    else {
        digitalWrite(7, LOW);
         //lcd.setCursor(0, 0);
         //lcd.print("PON");
        
    }
}

Mentre questa è una parte di sketch del loop:

   if((rtc.getHours()>7)&&(rtc.getHours()<19)) {
            lampada(0); 
            ventolainterna(0);
          }
         else { lampada(1);
                ventolainterna(1);
        } 
         
         if(temp_confr_magg>newtemp) {
           
                   resistenza(1);
                   ventolaesterna(0);
              }
              else { ventolaesterna(1);
         }
         if(temp_confr_min<newtemp)  {    
              resistenza(0);
            }
            else { resistenza(1);
         }
            
         if(ur>85){
                   ventolaesterna(0);
                   delay(3000);
                   ventolaesterna(1);
              }
              
           }
           if(ur<60){
             
                   pompa(0);
                   delay(2000);
                   pompa(1);
              
           }

Grazie mille in anticipo per chi mi vuole aiutare!

non ho guardato lo sketch perche' purtroppo al momento il mio cane non è presente, intendo dire, lui ne sa piu' di me. :smiley:
magari, non è che funzionano con logica inversa?
con 1 si diseccitano e con 0 si eccitano?.
potrebbe essere?
ciao.

Ti invitiamo a presentarti qui: Re: Presentazioni nuovi iscritti, fatevi conoscere da tutti! (Part 1) - Generale - Arduino Forum
e a leggere il regolamento: [REGOLAMENTO] Come usare questa sezione del forum - Italiano - Arduino Forum

Il codice per essere leggibile correttamente deve essere racchiuso nei tag code (e non nei tag quote).
Vedi regolamento sezione 7, spiega bene come fare.

La foto è piccola, mi pare di vedere come sigla sui relay SRD-12VDC.
Quindi devono essere alimentati a 12V ma ANCHE essere pilotati a 12V.
I pin Arduino sono a 5V perciò non riesce a farli scattare. Il problema è HW.

Siccuramente un link al venditore della scheda relé aiuterebbe molto.

Visto che i relé sono pilotati da un transistore e un optokoppler é possibile che possano essere pilotati a 5V.

Ciao Uwe

Mah ... a me sembra la solita scheda 8 relé a logica LOW di cui si è già parlato in decine di discussioni ultimamente (si vede che ne stanno vendendo un bel po').

@ teo94 : Fatti una bella ricerca sul forum e vedrai che trovi tutte le spiegazioni che servono ...

Guglielmo

Guardandola, somiglia molto a quella di QUESTA discussione (salvo che questa tu dici che ha i relè a 12V) ... ovvero QUESTA ma ... in versione 12V ...

... in cui, capito che era una scheda optoisolata, è stato facile poi capire come alimentarla ... i relè con il loro alimentatore, la parte di comando (connettore centrale) con l'alimentazione di Arduino ... come scritto QUI ... :roll_eyes:

Attenzione solo a togliere il Jumper a destra e a non far entrare in contatto i 12V (visto che dici che la tua funziona a 12V) con i 5V di Arduino ... XD

Guglielmo

P.S. : Se invece della foto metteste il link al prodotto, sarebbe tutto più facile ... ]:smiley:

Il link al prodotto è questo: http://www.miniinthebox.com/it/modulo-rele-8-channel-12v-per-arduino-opere-con-ufficiali-arduino-boards_p903437.html

Adesso mi leggo con calma le discussioni che mi avete postato e provo a vedere se trovo la soluzione. :wink:

Ho provato a fare quello che c'era scritto in una discussione ovvero questo:

  1. Alimenti Arduino con il suo alimentatore
  2. Alimenti la scheda, con il connettore di destra con il suo alimentatore
  3. Alimenti gli opto con il GND e +Vcc di Arduino sui pin predisposti sul connettore degli ingressi
  4. comandi gli ingressi con Arduino (attivi LOW)

ma il problema rimane sempre lo stesso.
Sembra come se non gli arrivasse il segnale da Arduino e i relè rimangono sempre in low cioè sempre attivi...

disegna esattamente come hai fatto i collegamenti e come è messo il jumper sulla destra ... così vediamo di capire ...

Guglielmo

Ecco quà

Quel cosino blu sui pin di destra non l'ho messo... e ad essere sincero non so neanche a cosa serve. Scusa per la mia ignoranza :slight_smile:

Scusa, ma quello che tu hai messo su Vin va sul pin +5V (... quello vicino a 3.3V) !!!

Guglielmo

l'alimentazione non va' sul Vcc, ma sul Jd-Vcc
e non devi collegare il gnd ad Arduino se vuoi che funzionino i fotoaccoppiatori

Brunello:
e non devi collegare il gnd ad Arduino se vuoi che funzionino i fotoaccoppiatori

... mmm ... dalle prove che abbiamo fatto nell'altro thread, essendo due alimentazioni completamente separate e dovrebbe collegare sia il GND che il +5V per la parte ingressi opto (... anche se, essendo pilotati LOW, probabilmente basta solo il +5) e l'altra alimentazione, galvanicamente separata da quella di Arduino sul connettore di destra ... togliendo il ponticello e usando Jd-Vcc :wink:

Guglielmo

anche se, essendo pilotati LOW, probabilmente basta solo il +5)

esatto.

Comunque se lo ha collegato come da sua foto, entrando con i 12V dell'alimentatore sul Vcc. meno male che l'altro Vcc lo ha collegato al Vin, altrimenti si sentiva schioccare anche da qui

Ho modificato i collegamenti come indicato nel disegno di Brunello e ora funziona perfettamente!

Grazie mille a tutti! :slight_smile: