Arduino Forum

International => Italiano => Hardware => Topic started by: pajehali on Apr 08, 2013, 01:12 pm

Title: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 01:12 pm
Ciao ragazzi,
tempo addietro mi ero documentato per la realizzazione di una scheda per pilotare dei carichi 220V mediante relè tramite uln e shift register ma è passato troppo tempo e soprattutto ho perso tutta la documentazione che avevo archiviato.
In pratica ora mi ritrovo con dei relè 12V da 10A, un uln2803, dei condensatori elettrolitici da 1uF e altri in plastica del tipo 104J100 di cui non so cosa farmene e vorrei riciclare questo materiale per fare un piccolo termostato per pilotare un carico a 12V 20W.
La parte sensori è già funzionante.
Ho già perso tutta la mattinata a cercare inutilmente qualche schema...
Gentilmente, avreste uno schemino o qualche link utile??
grazie

n.b.
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 01:33 pm
attualmente, il circuito che ho in mente, relativo a n.2 relè, è il seguente:

GND ULN - GND aurduino
ingresso 1 ULN - uscita 2 arduino
ingresso 2 ULN - uscita 3 arduino

uscita 18 ULN - uno dei due ingressi Relè
alimentazione 12V - uno dei due ingressi Relè

che ne pensate?
Title: Re: pilotare relè mediante uln2803
Post by: leo72 on Apr 08, 2013, 02:01 pm
L'ULN2803 è un array di Darlinghton che serve a mettere a terra il dispositivo da pilotare, funzionando quindi come un interruttore per aprire/chiudere la linea Gnd.
Quindi colleghi l'alimentazione di pilotaggio della bobina al relé poi l'uscita la colleghi al pin 18 dell'ULN.
Il pin Gnd dell'ULN lo mandi a massa, il pin Com dell'ULN lo colleghi alla stessa alimentazione di pilotaggio della bobina del relé.
Cambiando lo stato del pin 1 dell'ULN, questo mette a massa il pin 18, permettendo quindi il passaggio di corrente attraverso la bobina del relé, che aziona il carico, oppure apre il collegamento facendo perciò aprire la bobina.
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 02:16 pm
quindi, se ho capito bene:

uno dei due ingressi Relè: alimentazione +12V // pin COM uln
uno dei due ingressi Relè: pin 18 ULN

GND ULN - GND aurduino
pin 1 uln - uscita 2 arduino



mi sfugge il motivo del collegamento COM uln/+12V...
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 02:22 pm
inoltre due piccoli quesiti da nubbio:
- bisogna rispettare la polarità nell'alimentazione della bobina del relè?
- il GND di arduino funge già da terra, e quindi è lecito collegarvi il GND dell'uln ed il negativo dell'alimentazione della bobina del relè, oppure devo essere io a creare la messa a terra e quindi collegarvi tutti i GND?
Title: Re: pilotare relè mediante uln2803
Post by: erpomata on Apr 08, 2013, 02:28 pm
X iscrizione e per domanda un pò OT:
ma esiste qualcosa di più piccolo per soli 3 relè?
Title: Re: pilotare relè mediante uln2803
Post by: PaoloP on Apr 08, 2013, 02:37 pm
L'utente RiciWeb ha realizzato un pcb che pilota 8 relè tramite un ULN2803
--> http://arduino.cc/forum/index.php/topic,128951.0.html
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 02:47 pm
ho già letto quel post ma l'unico schema elettrico comprensibile da un nubbio come me è relativo al circuito ancora in fase di setup.
del circuito definitivo ci sono i disegni delle piste ma non riesco a capire i collegamenti.
ad ogni modo, i collegamenti, sono quelli suggeriti da leo72.
mi resta solo da far luce ai quesiti posti dopo l'intervento di leo72 così sono operativo e preparo il prototipo.
riassumendo, vorrei sapere se il negativo dell'alimentazione della bobina va con il GND di arduino e d il GND dell'uln e se la bobina ha polarità.
grazie
Title: Re: pilotare relè mediante uln2803
Post by: menniti on Apr 08, 2013, 02:52 pm

L'utente RiciWeb ha realizzato un pcb che pilota 8 relè tramite un ULN2803
--> http://arduino.cc/forum/index.php/topic,128951.0.html


non vorrei sbagliarmi ma credo abbia usato un 74hc540, a meno che in quella che chiama "scheda relé" non abbia aggiunto ANCHE l'ULN2803, invisibile nello schema, ma a che pro?
Title: Re: pilotare relè mediante uln2803
Post by: PaoloP on Apr 08, 2013, 03:02 pm
Michele, nella scheda c'è un ULN2803 che poi lui ha comandato, nel progetto dell'acquario, con un 74hc540 interposto tra l'ULN e l'expander I2C (forse un PCF8575), che non sono sulla scheda.

@pajehali
Chiedi a Riciweb lo schema dei collegamenti, credo non abbia nessuna difficoltà a fornirtelo.
Title: Re: pilotare relè mediante uln2803
Post by: riciweb on Apr 08, 2013, 03:14 pm
Ciao, scusate ma rispondo da Cell..
sulla scheda relè c'è un ULN2803, nel progetto dell'acquario, invece la pilotò attraverso un pcf8574 che però in uscita poca corrente per i darlington dell'ULN, così su suggerimento di Brunello ho interposto l'IC inverter 74HC540.

Riccardo
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 04:04 pm
non funziona...
alla condizione logica imposta (temperatura maggiore di 20°C) si accende il led ma il relè non commuta.
escludo problemi software vista la semplicità dello sketch e considerando che il comando high del led si trova esattamente negli stessi if/else.
i collegamenti eseguiti sono i seguenti:

- +12V: COM uln // Vin arduino // bobina relè
- negativo (12V): GND uln // GND arduino
- pin 7 arduino: pin 1 uln
- pin 18 uln: bobina relè

n.b.: il relè è già testato e perfettamente funzionante. Il datasheet è il seguente:
http://www.farnell.com/datasheets/40308.pdf

qualcuno può aiutarmi?
Title: Re: pilotare relè mediante uln2803
Post by: bigjohnson on Apr 08, 2013, 04:18 pm
Guarda qui, è per uln2003, ma ha solo una porta in meno:
(http://www.panu.it/ardupower/schema.png)

Alberto
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 04:28 pm
a parte i vari led di stato la sostanziale differenza tra lo schema di bigjohnson e quello realizzato da me è la mancanza del condesatore da 1000uF tra +12V e GND, visto che leo72 non mi ha parlato di alcun condensatore non so cosa pensare.
al volo posso fare un tentativo ma ho sottomano ho solo un condensatore da 1uF, uno siglato 104J100 ed uno siglato 472...

inoltre non capisco cosè JP1 - tra GND e pin 9 arduino...
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 04:29 pm
inoltre io il GND di arduino e quello dell'ULN l'ho collegato al polo negativo dell'alimentazione a 12 V con cui alimento arduino e la bobina
Title: Re: pilotare relè mediante uln2803
Post by: leo72 on Apr 08, 2013, 04:46 pm
Scusa, potresti postare un piccolo schema elettrico del circuito che non ti funziona?
Title: Re: pilotare relè mediante uln2803
Post by: bigjohnson on Apr 08, 2013, 04:49 pm
Il jp1 è un jumper che è ininfluente per l'utilizzo dell'uln, ed effettivamente mi sono dimenticato la massa dell'alimentazione a 12 volt, che comunque va collegata a quella di arduino e uln.
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 04:53 pm
è come quello postato da bigjohnson alla risposta #12 ma con queste modifiche:
- nessun led per lo stato dei relè e dell'alimentazione
- negativo alimentazione arduino/bobina collegato con GND uln e GND arduino
- manca condensatore da 1000uF tra +12V e GND


Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 05:03 pm
con il multimetro ho già ribattuto tutti i collegamenti.
l'errore può essere o nello schema elettrico o nell'uln stesso.
che verifiche posso fare sull'uln per vedere se lavora?
da come è fatto lo schema dovrei avere continuità tra la massa ed il pin 18 dell'uln quando questo "commuta"...
Title: Re: pilotare relè mediante uln2803
Post by: bigjohnson on Apr 08, 2013, 05:23 pm
Prova a cambiare la porta di arduino e il pin dell'uln, magari si è guastato qualcosa, poi si deve passare al prova a usare un altro arduino e un altro uln.
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 05:30 pm
anche l'uln funziona perchè effettivamente quando commuta ai capi della bobina del relè vedo i 12V....
che non ce la faccia a commutare il relè??
ha una R interna di 263Ohm quindi gli servono circa 45mA....
possibile che non va??

il relè è questo: http://www.farnell.com/datasheets/40308.pdf
Title: Re: pilotare relè mediante uln2803
Post by: PaoloP on Apr 08, 2013, 05:36 pm
Qual'è la sigla dei tuoi relè? JW2aSN-DC12V, JW2SN-DC12V o JW1FSN-DC12V?
L'ULN lo comandi con 2mA.
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 05:49 pm
JW1FSN-DC12V
Title: Re: pilotare relè mediante uln2803
Post by: bigjohnson on Apr 08, 2013, 05:53 pm
Non è che hai collegato il carico tra i pin normalmente aperto e normalmente chiuso del relè?
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 05:58 pm
no, per evitare problemi con le connessioni ho staccato tutto dalla breadboard ed ho verificato i contatti a mano, senza carico.

il relè funziona perchè se lo collego direttamente all'alimentazione 12V commuta, ed anche l'uln funziona perchè al verificarsi della condizione dà 12V ai capi della bobina.
Il problema è che i 12V "erogati" dall'uln non riescono a commutare la bobina.
evidentemente deve esserci qualche problema di ampere da qualche parte ed io sinceramente non so che pesci pigliare...

sempre per scongiurare qualsiasi problema, dall'altra parte del circuito ho un sensore di temperatura digitale collegato all'uscita 5V di arduino ed un led, ma questa parte funziona perfettamente.

il circuito dell'uln è il seguente:
- +12V: COM uln // Vin arduino // bobina relè
- negativo (12V): GND uln // GND arduino
- pin 7 arduino: pin 1 uln
- pin 18 uln: bobina relè
Title: Re: pilotare relè mediante uln2803
Post by: Etemenanki on Apr 08, 2013, 06:01 pm
Allora, PRIMA DI TUTTO, controlla che i tuoi rele non siano di quelli che hanno gia il diodo di protezione all'interno ... se e' si, allora devi rispettarne la polarita', se no non funzionano, se e'  no, li puoi collegare come vuoi ... per provare prendi una batteria o alimentatore ed un paio di pezzi di filo e colleghi velocemente il rele', con entrambe le polarita' (test veloce, perche' se il diodo c'e' gia, quando lo colleghi nel senso opposto ti cortocircuita la batteria o alimentatore) ... se scatta in un senso solo, il diodo c'e' gia, segnati la polarita' giusta e rispettala ... se scatta in entrambi i sensi non c'e' il diodo e lo puoi montare come vuoi, tanto il diodo lo metti tu, se non scatta in nessuna delle due condizioni, o la batteria e' scarica, o l'alimentatore e' morto, oppure e' morto il rele ...

Poi se ne trovi uno che va, connettilo correttamente all'ULN e prova ... positivo 12V ad un capo del rele' ed al pin COM dell'ULN (serve solo se non metti il diodo di protezione, il COM e' la linea comune dei diodi che gia sono presenti all'interno dell'ULN, per carichi piccoli vanno piu che bene) - l'altro capo del rele al pin di uscita (diciamo 18) - GND dell'arduino, dell'alimentazione dei rele e dell'ULN tutte insieme - pin di ingresso dell'ULN (diciamo 1) all'uscita dell'arduino (puoi metterci in serie una resistenza da 100 ohm, giusto per protezione, ma non e' indispensabile dato che l'ULN2803 richiede solo 1mA per commutare) ... per vedere se il circuito dal lato ULN funziona, e' sufficente che mandi un positivo, basta anche il +12 attraverso una resistenza da 10K , sull'ingresso (pin 1) per sentire se il rele sul 18 scatta ...
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 06:14 pm
staccando il collegamento negativo alimentazione 12V e GND arduino il relè commuta ma arduino non fa il classico blink di avvio ed inoltre non risponde ai cambi della temperatura misurata, temendo di bruciare tutto l'ho scollegato ma allora deve esserci per forza qualcosa che non va con lo schema.

sotto un paio di foto del mio circuito, se ci si capisce qualcosa...
la parte a dx è relativa al sensore di temperatura.
(http://imageshack.us/a/img585/2396/img20130408182046.jpg)

(http://imageshack.us/a/img254/2787/img20130408182034.jpg)

Title: Re: pilotare relè mediante uln2803
Post by: PaoloP on Apr 08, 2013, 06:50 pm
Nell'ULN il cavetto rosso che viene dai 12V va sul comune, insieme al cavetto arancione che torna dal relè.
Dalla foto sembra che l'arancione sia giustamente sul comune, ma il rosso sul pin a fianco.

Dove c'è il led e il sensore di temperatura non si capisce un @@  :smiley-mr-green:
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 07:11 pm

Nell'ULN il cavetto rosso che viene dai 12V va sul comune, insieme al cavetto arancione che torna dal relè.
Dalla foto sembra che l'arancione sia giustamente sul comune, ma il rosso sul pin a fianco.

Dove c'è il led e il sensore di temperatura non si capisce un @@  :smiley-mr-green:


ho verificato, il cavo rosso si trova sul com, insieme a quello arancione.
mi sta venendo voglia di buttare via tutto ed ordinare un termostato digitale on line!!!!!

ragazzi mi fareste un disegnino dello schema elettrico così smonto tutto e faccio l'ultimo tentativo prima di buttare tutto nella spazzatura??

dove c'è il sensore di temperatura c'è un classico ds18b20, collegato con alimentazione attiva sul 5V ed un led di stato; le resistenze che si vedono sono in serie e limitano la corrente sul led, quell'accrocchio di cavetti arancione serve per poter usare l'altro lato della breadboard e sono solo dei ponticelli. Il sensore di temperatura è collegato nella morsettiera perchè successivamente sarebbe (ormai parlo al passato) dovuto essere montato su un cavo schermato apposito a circa un mt di distanza.
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 07:38 pm
questo lo schema disegnato a partire dagli effettivi collegamenti realizzati sulla breadboard.

(http://imageshack.us/a/img707/2874/img20130408193253.jpg)

(http://imageshack.us/a/img18/8758/img20130408193245.jpg)
Title: Re: pilotare relè mediante uln2803
Post by: PaoloP on Apr 08, 2013, 07:43 pm
Sono giusti.
Pubblica lo sketch. L'errore potrebbe essere lì.
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 08:08 pm

Code: [Select]
#include <OneWire.h>
#include <DallasTemperature.h>

int LED=13;                //Pin7 = LED
int setPoint=20;                 //setpoint
int rele_1 = 7;              //uscita relè 1 sul pin 7 di arduino

// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

void setup(void)
{
 // start serial port
 Serial.begin(9600);
 Serial.println("Dallas Temperature IC Control Library Demo");

 // Start up the library
 sensors.begin();
}


void loop(void)
{
 if (sensors.getTempCByIndex(0) >= setPoint)                        //temperatura maggiore o uguale a 20 led acceso
 {
   digitalWrite (LED, LOW);        //led spento
   digitalWrite(rele_1, LOW);       // relè spento
 }
 else                                                              //temperatura minore o uguale a 20 led spento
 {
   digitalWrite (LED, HIGH);      //led acceso
   digitalWrite(rele_1, HIGH);       // relè acceso
 }
 

 // call sensors.requestTemperatures() to issue a global temperature
 // request to all devices on the bus
 Serial.print(" Requesting temperatures...");
 sensors.requestTemperatures(); // Send the command to get temperatures
 Serial.println("DONE");

 Serial.print("Temperature for Device 1 is: ");
 Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"?
   // You can have more than one IC on the same bus.
   // 0 refers to the first IC on the wire
  delay (3000);            //aspetta 3secondi
 
}
Title: Re: pilotare relè mediante uln2803
Post by: erpomata on Apr 08, 2013, 08:46 pm

ma esiste qualcosa di più piccolo per soli 3 relè?


up!
Title: Re: pilotare relè mediante uln2803
Post by: PaoloP on Apr 08, 2013, 10:16 pm
Il primo sensors.getTempCByIndex(0) non credo funzioni senza il request che fai dopo.
Poi l'IF fa un confronto tra un float e un int. Forse fa il cast in automatico, forse no.
Title: Re: pilotare relè mediante uln2803
Post by: pajehali on Apr 08, 2013, 10:45 pm

Il primo sensors.getTempCByIndex(0) non credo funzioni senza il request che fai dopo.
Poi l'IF fa un confronto tra un float e un int. Forse fa il cast in automatico, forse no.


paolo come correggeresti lo sketch?
ho rismontato e rimontato tutto il circuito escludendo quindi problemi di natura hardware.
tieni presente che la logica "gira" nel senso che monitorando il tutto con il serialmonitor, quando la temperatura è inferiore a quella di soglia il led si accende e l'uln mi eroga i 12V ai capi della bobina viceversa quando la temperatura è superiore il led si spegne ed ai capi della bobina ho 0V.
Ho fatto caso al fatto che la lucina del led è molto flebile nonostante la resistenza sottodimensionata e questo potrebbe significare in qualche modo che non ho un uscita "vera" cioè tale da alimentare correttamente il led e quindi anche darmi i circa 45mA necessari all'eccitazione della bobina.
ma queste sono solo considerazioni di un nubbio che ormai le ha già provate tutte ed inizia a dubitare di tutto...
Title: Re: pilotare relè mediante uln2803
Post by: PaoloP on Apr 08, 2013, 11:35 pm
Azz!  :smiley-eek:
Hai dimenticato il pinmode.  :smiley-mr-green:

Nel setup()
pinmode(LED, OUTPUT);
pinmode(rele_1, OUTPUT);