Collegamento scheda relè 12v ad arduino

Ciao a tutti, vorrei collegare ad Arduino una scheda relè come questa http://www.ebay.it/itm/4-Channel-12V-Relay-Module-for-Arduino-PIC-ARM-AVR-DSP-/260752266329?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item3cb60bd459 per poter collegare una ventola a 12v comandata tramite seriale. Ho collegato le uscite del "GND", "IN1" (il pin del primo relè) e"VCC" della scheda rispettivamente al "GND", "Pin 13" e "+5V" dell'arduino, solo che ora non capisco come collegare i fili della ventola, ovvero il "+" ed il "-" alle 3 uscite del relè. Tenete conto che sempre alle 3 uscite del relè devo inserire anche i poli della batteria a 12v. Potete darmi una mano per collegare il tutto? Grazie a tutti in anticipo :)

Il codice caricato sulla scheda Arduino è il seguente:

#define ventola 13  // ventola connessa al pin n°13
byte rx = 0;    // variabile per contenere il carattere ricevuto

void setup()
    {
    Serial.begin(9600); // imposto la UART per lavorare a 9600
    pinMode(ventola, OUTPUT); // imposto il pin sul quale è collegata la ventola come uscita
    Serial.flush(); // svuoto il buffer di ricezione seriale
    }

void loop()
    {

    if (Serial.available() >0) // Controllo se il buffer di ricezione contiene qualcosa
        {
        rx = Serial.read(); // leggo il carattere ricevuto e lo memorizzo in rx
        Serial.flush(); // svuoto il buffer di ricezione seriale

        if (rx=='1' || rx=='2') // ho ricevuto o il tasto 1 oppure il tasto 2
            {

            if (digitalRead(ventola) == HIGH) // la ventola era accesa?
                {
                digitalWrite(ventola,LOW); // la spengo
                Serial.println("Ventola Disattivata");
                }
            else // la ventola era spenta
                {
                digitalWrite(ventola,HIGH); // la accendo
                Serial.println("Ventola Attivata");
                }

            }

        else // non ho ricevuto il tasto 1

            {
            Serial.print(" ");
            Serial.print(rx,BYTE);
            Serial.println();
            }
        }
    }

A me pare che ci sia un po' di confusione nello schema: il VCC sul jumper è sicuramente un 12V mentre il Vcc su R1 dovrebbero essere i 5V di Arduino. Il - della ventola lo colleghi direttamente a GND, il + della ventola al pin 2 del relè, 12V vanno anche al pin 1 del relè

Ciao, per collegare un rele 12 volt all'arduino devi per forza usare un transistor npn in configurazione open collector, se fai entrare la 12 nei pin di arduino direttamente lo bruci. In questa pagina http://www.panu.it/ardupower/ trovi un esempio realizzato con l'integrato uln2003, che contiene sette darlington npn.

Alberto

bigjohnson: Ciao, per collegare un rele 12 volt all'arduino devi per forza usare un transistor npn in configurazione open collector, se fai entrare la 12 nei pin di arduino direttamente lo bruci. In questa pagina http://www.panu.it/mrtg/ trovi un esempio realizzato con l'integrato uln2003, che contiene sette darlington npn.

Alberto

Secondo la mia interpretazione i 12V non possono entrare in Arduino, infatti ho scritto:

il Vcc su R1 dovrebbero essere i 5V di Arduino

OO, adesso ho visto bene lo schema del modulo e mi sono accorto che è fatto molto bene, per cui si può collegare direttamente ad arduino. +12 --- ingresso ventola --- contatti rele --- massa porta arduino --- ingresso in0 massa arduino --- massa modulo con questa configurazione con la porta di arduino a livello alto il rele si apre, percui bisogna usare i contatti no e nc del rele scambiandoli.

Alberto

bigjohnson:
OO,
adesso ho visto bene lo schema del modulo e mi sono accorto che è fatto molto bene, per cui si può collegare direttamente ad arduino.
+12 — ingresso ventola — contatti rele — massa
porta arduino — ingresso in0
massa arduino — massa modulo
con questa configurazione con la porta di arduino a livello alto il rele si apre, percui bisogna usare i contatti no e nc del rele scambiandoli.

Alberto

stai facendo riferimento alla scheda che ho, che poi sarebbe quel link di ebay? Perchè se è si, puoi spiegarmi meglio, ho le idee un pò confuse :~

La massa di Arduino non è necessario collegarla a quella del circuito relé, sta usando un optoisolatore, non un transistor.

Hai ragione, scambiando i pin in ingresso l'uscita del relè segue i livelli 1 e 0 della porta di arduino. L'unico accorgimento è aprire il jumper sul power supply.

Alberto

OK riepiloghiamo per Atlantic che mi ssembra un po’ sconcertato :slight_smile:
In0 va su un pin di Arduino, che dovrai mettere in LOW per far eccitare il relè
Vcc (quello collegato a R1 ) lo devi collegare ai +5V di Arduino
Il Jumper lo devi togliere
A JD-VCC devi collegare 12V il negativo a GND
GND di Arduino e GND della scheda NON devi collegarli tra loro.
al + della ventola metti direttamente i 12V con cui alimenti la scheda
il - della ventola lo colleghi al pin 2 del relè
il pin 1 del relè lo colleghi al GND della scheda
così quando il pin di Arduino va in LOW la ventola parte, se invece il pin di Arduino va in HIGH la ventola si ferma.

Allora ragazzi, ricapitoliamo un pò :) Dunque, ho una scheda composta da 4 relay a 12v cadauno come mostrata in figura , il suo schema elettrico ò il seguente: Ho intenzione, alle 3 uscite del primo relè, collegare una ventola alimentata a sua volta da una batteria a 12v. La mia domanda è: come collego tutti e quattro i cavi (ovvero, i due fili della batteria, polo "+" e polo "-" ed i restanti due fili "+" e "-" della ventola) alle 3 uscite del relè?

Lo schema di collegamento tra la scheda relè ed arduino è il seguente:

GND IN1 IN2 IN3 IN4 VCC (scheda relè) | | | | | | | | | | | | | | | GND Pin +5V (Arduino UNO) digitale 13

menniti: OK riepiloghiamo per Atlantic che mi ssembra un po' sconcertato :) In0 va su un pin di Arduino, che dovrai mettere in LOW per far eccitare il relè Vcc (quello collegato a R1 ) lo devi collegare ai +5V di Arduino Il Jumper lo devi togliere A JD-VCC devi collegare 12V il negativo a GND GND di Arduino e GND della scheda NON devi collegarli tra loro. al + della ventola metti direttamente i 12V con cui alimenti la scheda il - della ventola lo colleghi al pin 2 del relè il pin 1 del relè lo colleghi al GND della scheda così quando il pin di Arduino va in LOW la ventola parte, se invece il pin di Arduino va in HIGH la ventola si ferma.

ok grazie, ora provo :D

menniti: OK riepiloghiamo per Atlantic che mi ssembra un po' sconcertato :) In0 va su un pin di Arduino, che dovrai mettere in LOW per far eccitare il relè Vcc (quello collegato a R1 ) lo devi collegare ai +5V di Arduino Il Jumper lo devi togliere A JD-VCC devi collegare 12V il negativo a GND GND di Arduino e GND della scheda NON devi collegarli tra loro. al + della ventola metti direttamente i 12V con cui alimenti la scheda il - della ventola lo colleghi al pin 2 del relè il pin 1 del relè lo colleghi al GND della scheda così quando il pin di Arduino va in LOW la ventola parte, se invece il pin di Arduino va in HIGH la ventola si ferma.

Grazie mille, è andato tutto perfetto!!! ;)

Atlantic:

menniti: OK riepiloghiamo per Atlantic che mi ssembra un po' sconcertato :) In0 va su un pin di Arduino, che dovrai mettere in LOW per far eccitare il relè Vcc (quello collegato a R1 ) lo devi collegare ai +5V di Arduino Il Jumper lo devi togliere A JD-VCC devi collegare 12V il negativo a GND GND di Arduino e GND della scheda NON devi collegarli tra loro. al + della ventola metti direttamente i 12V con cui alimenti la scheda il - della ventola lo colleghi al pin 2 del relè il pin 1 del relè lo colleghi al GND della scheda così quando il pin di Arduino va in LOW la ventola parte, se invece il pin di Arduino va in HIGH la ventola si ferma.

Grazie mille, è andato tutto perfetto!!! ;)

Ottimo, complimenti! XD

Ragazzi, nuovo problema, pensavo avessi risolto ed invece no. Vi spiego meglio.
Allora, i collegamenti dati da menniti sono ottimi ed è andato tutto bene, ovvero i relè risponde ai comandi tramite arduino, solo un problema sorge: sia che imposti il digitalwrite a “LOW” che a “HIGH” del pin digitale 13, il relè si accende automaticamente quando poi dovrei io, attraverso il codice, eccitarlo ad accendersi. Cioè, quando collego arduino alla porta USB, dovrei fare in modo che il pin n.13 risulti acceso in modo tale che il relè risulti spento, se poi volessi accendere il relè, schiacciando per esempio, il tasto 2 della tastiera del computer, esso si azioni, dove è che ho sbagliato nel scrivere il codice? Mi sono perso :frowning: Vi posto nuovamente il codice, sperando che sia stato chiaro nell’esporvi il problema :frowning: :frowning: :frowning: :frowning: :frowning:

#define ventola 13  // ventola connessa al pin n°13
byte rx = 0;    // variabile per contenere il carattere ricevuto
 
void setup()
	{
	Serial.begin(9600); // imposto la UART per lavorare a 9600
	pinMode(ventola, OUTPUT); // imposto il pin sul quale è collegata la ventola come uscita
	Serial.flush(); // svuoto il buffer di ricezione seriale
	}
 
void loop()
	{
 
	if (Serial.available() >0) // Controllo se il buffer di ricezione contiene qualcosa
		{
		rx = Serial.read(); // leggo il carattere ricevuto e lo memorizzo in rx
		Serial.flush(); // svuoto il buffer di ricezione seriale
 
		if (rx=='1' || rx=='2') // ho ricevuto o il tasto 1 oppure il tasto 2
			{
 
			if (digitalRead(ventola) == HIGH) // la ventola era accesa?
				{
				digitalWrite(ventola,LOW); // la spengo
				Serial.println("Ventola Disattivata");
				}
			else // la ventola era spenta
				{
				digitalWrite(ventola,HIGH); // la accendo
				Serial.println("Ventola Attivata");
				}
 
			}
 
		else // non ho ricevuto il tasto 1
 
			{
			Serial.print(" ");
			Serial.print(rx,BYTE);
			Serial.println();
			}
		}
	}

Io non vedo da nessuna parte il pin impostato su HIGH o LOW inizialmente, aggiungi in setup, sotto l'istruzione di OUTPUT, la riga: digitalWrite(ventola, HIGH); così al primo avviamento il relè è diseccitato.

Un'altra cosa: se hai messo il led tra il pin 13 e il pin 2 del fotoaccoppiatore ti conviene mettere anche una pull-up, cioè una R da 10K tra il pin 2 e +5V, così elimini la possibilità di situazioni fluttuanti che potrebbero far eccitare il relè in momenti indesiderati.

menniti: Io non vedo da nessuna parte il pin impostato su HIGH o LOW inizialmente, aggiungi in setup, sotto l'istruzione di OUTPUT, la riga: digitalWrite(ventola, HIGH); così al primo avviamento il relè è diseccitato.

Un'altra cosa: se hai messo il led tra il pin 13 e il pin 2 del fotoaccoppiatore ti conviene mettere anche una pull-up, cioè una R da 10K tra il pin 2 e +5V, così elimini la possibilità di situazioni fluttuanti che potrebbero far eccitare il relè in momenti indesiderati.

Grazie infinite, è andato tutto bene :) seguirò anche il tuo consiglio riguardo la resistenza da aggiungere ;) ;) ;)

Atlantic:

menniti: Io non vedo da nessuna parte il pin impostato su HIGH o LOW inizialmente, aggiungi in setup, sotto l'istruzione di OUTPUT, la riga: digitalWrite(ventola, HIGH); così al primo avviamento il relè è diseccitato.

Un'altra cosa: se hai messo il led tra il pin 13 e il pin 2 del fotoaccoppiatore ti conviene mettere anche una pull-up, cioè una R da 10K tra il pin 2 e +5V, così elimini la possibilità di situazioni fluttuanti che potrebbero far eccitare il relè in momenti indesiderati.

Grazie infinite, è andato tutto bene :) seguirò anche il tuo consiglio riguardo la resistenza da aggiungere ;) ;) ;)

Ottimo, ciao :)