Jump to content
PLC Forum


picluigi

Relè o SCR?

Recommended Posts

picluigi

Con materiali di recupero mi sono costruito un alimentatore lineare da laboratorio utilizzando, come regolatore di tensione, l'LM338K  che dà in uscita una tensione variabile da 1.3 a 35 Vcc con quasi 4A. Ho voluto corredarlo anche di un sistema di regolazione della corrente di corto circuito utilizzando una scheda Arduino Uno. Tramite un potenziometro posso impostare su due display a 7 segmenti (unità e decimi di Amp) il valore di tale corrente che Arduino confronta con quella assorbita dal carico che è misurata da un sensore ad effetto Hall (ACS712)  Quando si supera il valore  impostato, Arduino porta a livello HIGH uno dei sui pin in uscita che, eccitando un relè,  taglia l'alimentazione ai morsetti interrompendo il flusso di corrente.

Tutto pare funzionare molto bene. Il relè, recuperato dalla scheda madre di una lavatrice, ha i contatti che in alternata possono interrompere un carico di 15A. In continua forse la metà.

 Per la funzione di interruttore ho scelto il relè ma avrei preferito un SCR anche perchè ha un tempo di azione molto minore del suo concorrente. Ma secondo voi si può usare un SCR sempre innescato con tensioni tra Anodo e Catodo  variabili a scelta da 1.3 a 35 Vcc e  con possibilità di disinnesco (cioè apertura dell'alimentazione del carico)  in caso di corto circuito? Ho provato a pensarci, ho fatto anche qualche prova ma non sono arrivato a capo di niente. 

Vi ringrazio tutti per l'attenzione.

Share this post


Link to post
Share on other sites

dott.cicala

No non si può perché una volta innescato e raggiunta la corrente di mantenimento si spegne solo quando la corrente tra A e K va a zero.

Share this post


Link to post
Share on other sites
Livio Orsini

Puoi usare un mosfet o un IGBT come interruttore statico; questi dispositivi si controllano in tensione e si comportano (quasi) come un relè elettromeccanico

Share this post


Link to post
Share on other sites
picluigi

Vi ringrazio per le risposte. Dunque mettiamo da parte l'SCR, per i motivi esposti dal Dott.cicala e orientiamoci sui mosfet o sugli IGBT come consigliato da Livio. Non ho mai utilizzato nei miei esperimenti questi componenti. Ora è la volta buona. Quel relè da lavatrice che ho utilizzato non mi piace per niente  anche se, mi pare, svolga bene la sua funzione. Ma  se avrò soddisfazione dai mosfet o IGBT sono pronto a sostituirlo. Grazie ancora.

Share this post


Link to post
Share on other sites
dott.cicala
9 ore fa, picluigi scrisse:

Quel relè da lavatrice che ho utilizzato non mi piace per niente 

Sarà pure brutto ma è sicuro e difficilmente rimarrà incollato.

Mosfet e IGBT se non li conosci bene e non usi le precauzioni necessarie, vanno in corto e vanificano l'intervento della protezione, considerando anche che l' LM338K è ben poco affidabile e quando salta va pure lui in corto passando sull'uscita tutta la tensione che ha in ingresso, farei controllare ad Arducoso anche la tensione d'uscita e se sale oltre mezzo volt da quanto richiesto ecciterei il relè della lavatrice per scollegare il carico.

Share this post


Link to post
Share on other sites
Livio Orsini

Stefano l'idea è buona, però quel relè ha la velocità di un 90enne con problemi di deambulazione.

Share this post


Link to post
Share on other sites
picluigi

Ho provato a leggermi qualcosa circa i MOSFET consigliati da Livio e mi sono convinto che questi dispositivi non sono adatti alla mia applicazione. Trattandosi di un alimentatore, devo prima di tutto portare (a vuoto) ai sui morsetti la tensione da utilizzare e poi collegarci il carico. Ma se  tra l'uscita dell'LM338K  che è  a vuoto e il morsetto (+) dell'alimentatore ci fosse un MOSFET, (invece del contatto chiuso del relè) come fa quest'ultimo a rimanere in conduzione? E poi in funzione della corrente di carico che è la sua ID, quale VGS gli applicherei? 

Share this post


Link to post
Share on other sites
dott.cicala

Con un Pmos --> Hi side switch

 

image.png.d8cd1709ee79725c15907c9b850e37d2.png

Con un Nmos --> Low Side Switch

 

 

Share this post


Link to post
Share on other sites
ilguargua
54 minuti fa, dott.cicala scrisse:

Con un Pmos --> Hi side switch

... trovandone uno che che funzioni con una Vgs di -1.3V, non facilissimo da trovare. Altrimenti occorre una tensione negativa per il gate.

 

Ciao, Ale.

Edited by ilguargua
aggiunto segno

Share this post


Link to post
Share on other sites
picluigi

Vi ringrazio per le risposte. Dunque mettiamo da parte l'SCR, per i motivi esposti dal Dott.cicala e orientiamoci sui mosfet o sugli IGBT come consigliato da Livio. Non ho mai utilizzato nei miei esperimenti questi componenti. Ora è la volta buona. Quel relè da lavatrice che ho utilizzato non mi piace per niente  anche se, mi pare, svolga bene la sua funzione. Ma  se avrò soddisfazione dai mosfet o IGBT sono pronto a sostituirlo. Grazie ancora.

Share this post


Link to post
Share on other sites
picluigi

Bello il circuito di controllo del Dott. cicala. Le mie conoscenze (molto limitate) mai mi avrebbero portato a pensare ad una soluzione del genere. Che, quanto prima, vorrei provare.E qui per me i discorsi si complicano e chiedo: quanto varia la Rds  del Mosfet quando varia la sua Vds?  E la sua Vgs come fà ad adattarsi in automatico al nuovo valore di Vds applicato?

Share this post


Link to post
Share on other sites
Livio Orsini

I mosfet e gli IGBT si pilotano in tensione, sono degli interruttori quasi ideali, infatti vengono usati per commutare la modulazione in PWM sui chopper e sugli inverter.

La RDSon è una caratteristica tipica del dispositivo, varia entro i limiti dati dal data sheet, aumentando la corrente di drain aumenta la caduta sul mosfet, quindio aumenta la sua dissipazione.

 

A margine di tutto la domanda delle cento pistole: quanto tempo trascorre dal momento in cui avviene l'aumento della corrente sino all'istante in cui arduino genera il comando di aprire il circuito?

 

perchè io ho la sensazione che si stia facendo un bel lavoro ma la cui praticità sia pressocchè nulla.

Share this post


Link to post
Share on other sites
picluigi

Secondo le mie valutazioni, in caso di  corto circuito, Arduino potrebbe impiegare  circa 1msec per comandare l'eccitazione del relè che dopo altri 15 msec circa, commuta i suoi contatti interrompendo il flusso di corrente . Se il corto circuito avvenisse tra le piste di una scheda elettronica queste potrebbero distruggersi e così io, con il mio sistema, non avrei protetto un bel niente. Per cautelarmi invece di impostare una corrente di corto circuito  ad es. di 0.5A la potrei impostare più bassa, ad es. 0.3A Mi rendo conto che è un fissare parametri con molta approssimazione ma così facendo forse mi salvo. In alternativa, se usassi il circuito proposto dal Dott. cicala, che è molto interessante, il corto circuito si estinguerebbe quasi subito, cioè qualche usec dopo le valutazioni di Arduino. Ma se in partenza avessi fissato una corrente di corto circuito troppo alta (perchè questa la si fissa a occhio) la scheda si distruggerebbe comunque. E allora la domanda si pone di nuovo: relè o Mosfet?

Share this post


Link to post
Share on other sites
dott.cicala

Ovviamente mosfet!

 

Ammettiamo che la pista per bruciarsi debba dissipare 10W.

A parità di corrente, se il circuito viene aperto in 1ms la pista dissiperebbe 10mW....difficile che si bruci.

Ma riesci a fare intervenire Arduino così rapidamente?

Ovviamente mosfet!

 

Ammettiamo che la pista per bruciarsi debba dissipare 10W.

A parità di corrente, se il circuito viene aperto in 1ms la pista dissiperebbe 10mW....difficile che si bruci.

Ma riesci a fare intervenire Arduino così rapidamente?

Share this post


Link to post
Share on other sites
Ctec

Ma non è più semplice (e veloce) fare così?

battery-_charger-circuit-using-lm-317.JPG

E' riportato un LM317, ma è lo stesso (solo da 1,5A). Come vedi, il sensing è fatto da una banale resistenza R1 e quando la caduta ai suoi capi supera gli 0,7V (Vbe del Q1), il Q1 comincia a condurre abbassando (fino allo spegnimento o meglio a 1,2Vout) la tensione di uscita. Se non ti piace, puoi usare il Q1 per attacare/staccare il carico con un mosfet, un IGBT o anche un BJT (meglio PNP).

Share this post


Link to post
Share on other sites
dott.cicala

No per niente. In pratica in caso di corto la tensione non si annulla e la dissipazione del regolatore aumenta ad ogni intervento del limitatore.

Se il regolatore va in corto il carico brucia...e i regolatori bruciano nonostante si dica che siano protetti.

 

Sicuramente una protezione hw è molto più veloce di arducoso...

 

 

Edited by dott.cicala

Share this post


Link to post
Share on other sites
Livio Orsini
1 ora fa, Ctec scrisse:

comincia a condurre abbassando (fino allo spegnimento o meglio a 1,2Vout)

 

Sono quei 1.2V il problema in caso di corto franco sui morsetti di uscita.

 

39 minuti fa, dott.cicala scrisse:

Sicuramente una protezione hw è molto più veloce di arducoso...

 

era il senso della mia domanda precedente.

 

Però se arduino non fa niente altro che la misura di corrente dovrebbe impiegare meno di 1ms per far inervenire la protezione.

Share this post


Link to post
Share on other sites
rodolfok

@picluigi

Ho realizzato anch'io un alimentatore da laboratorio con protezione da cortocircuito mediante relé.

La corrente che fa intervenire la protezione è regolabile mediante un trimmer, per cui la puoi fissare come vuoi (entro certi limiti).

Se ti interessa vedere la soluzione, trovi tutto a questo link:

https://www.electro_you.it/rodolfok/wiki/alimentatore-variabile-1-3-36v-ibrido

 

ciao

Rodolfo

 

Share this post


Link to post
Share on other sites
Livio Orsini

Hai provato ad effettuare un corto franco sui morsetti di uscita?;)

Share this post


Link to post
Share on other sites
Elettroplc

La conosciuta Mitsubischi realizza anche dei breaker in cc da, pannello. Con e senza guida din. 

O dei disgiuntori. 

Share this post


Link to post
Share on other sites
Elettroplc

Ci sono dei prodotti americani molto validi ma molto costiri. Con icc regolabile e nucleo a gas sullo sgancio in magnetica. 

Share this post


Link to post
Share on other sites
rodolfok
1 ora fa, Livio Orsini scrisse:

Hai provato ad effettuare un corto franco sui morsetti di uscita?;)

Sì, ho provato, il relé scatta e rimane in posizione aperta.

Forse non durerà in eterno, ma per i miei scopi va bene, posso comunque sostituirlo in caso di guasto.

Non è sicuramente una soluzione a prova di bomba, ma al tempo non mi fidavo della soluzione originale, che è quella dello schema di Ctec più sopra.

Share this post


Link to post
Share on other sites
picluigi

Ho visto l'alimentatore di rodolfok. E' una realizzazione  simile alla mia tranne  il sistema di protezione per il quale  ho usato Arduino . Il quale gestisce sia il sistema di protezione che l'attività dei due digit a 7 segmenti necessari per visualizzare il valore di corrente di corto circuito che di volta in volta viene impostato. Per questa attività Arduino pilota due CD4511BC. Quando avviene un corto i  digit presentano  uno ZERO oscillante, che si accende e spegne ogni 200 msec fino a quando non si piga il pulsante di reset..

Per valutare i tempi di intervento della protezione ho fatto delle prove utilizzando l'oscilloscopio i cui tracciati sono riportati nell'allegato file. La traccia gialla mostra la transizione (Off-On) del segnale di uscita di Arduino verso il relè. La traccia azzurra mostra la transizione (On-Off) della tensione ai morsetti dell'alimentatore in corto circuito.  Con mia grande meraviglia ho constatato che la distanza temporale tra le due transizioni è di 1.33msec.

Avendo a che fare con un relè mi aspettavo molto di più. Probabilmente quel relè , un po' sbeffeggiato come relè da lavatrice, in realtà è un buon relè. 

Da quanto detto credo che il punto debole della mia realizzazione non sia il relè ma il codice implementato in Arduino. Per far fronte ad un improvviso corto circuito avrei dovuto utilizzare un apposito INTERRUPT. Ma non l'ho fatto perchè, per me, gestire un Interrupt è cosa un po' difficoltosa. Così Arduino si muove ciclicamente su tutto il codice e quando incappa in un corto lo gestisce.

 

IMG_20190612_190659[1].jpg

Share this post


Link to post
Share on other sites
dott.cicala

Non a caso dicevo che anche se brutto fa il suo lavoro.

Pubblica il codice usando la funzione <code> e specifica che aurducoso stai usando. Con l'1 e il nano hai solo 2 pin che possono generare l'interrupt (pin 2-3)

Share this post


Link to post
Share on other sites
picluigi

Questo è il codice (molto grezzo) che con fatica ho realizzato per  Arduino UNO 3R. La variabile "pin_SCR=2" non si riferisce a nessun SCR ma al famoso relè.

La variabile "rip=3" si può assegnare a un altro pin (es.4) se il 3 lo si volesse dedicare alla gestione dell'Interrupt.

 

 

 

 

 

 

int a;
int val;
int unita;
int decimi;
int resto;
int resto1;
byte pin_SCR=2;
byte rip=3;
byte stato_rip;
byte A_unita=13;
byte B_unita=12;
byte C_unita=11;
byte D_unita=10;
byte A_decimi=9;
byte B_decimi=8;
byte C_decimi=7;
byte D_decimi=6;
float t;

void setup() {
pinMode(pin_SCR, OUTPUT);  
pinMode(rip, INPUT); 
pinMode(A_unita, OUTPUT);  
pinMode(B_unita, OUTPUT); 
pinMode(C_unita, OUTPUT);  
pinMode(D_unita, OUTPUT);
pinMode(A_decimi, OUTPUT);  
pinMode(B_decimi, OUTPUT); 
pinMode(C_decimi, OUTPUT);  
pinMode(D_decimi, OUTPUT); 
digitalWrite(2,HIGH);
Serial.begin(9600);   
}

void loop()
{ 
  
digitalWrite(pin_SCR,LOW
);  
/*****CALCOLO CORRENTE C.C. RICAVATA DAL SENS ACS712*****/  
        float average = 0;          // average è la corrente del carico
        for(int i = 0; i < 10; i++) {
        average = average + (.0264 * analogRead(A1) -13.51) / 10;     // 10 campioni di corrente
        }
         
/*****CALCOLO TENSIONE (CON UNA CIFRA DECIMALE) DA VISUALIZZARE SUI DISPLAY 7 SEGMENTI - CORRENTE IMPOSTATA- *****/
a=analogRead(A0);
val=a/2;          // a/2 determina il max valore di c.c. cioè 5/2=2.5 Amp attraverso analogRead(A0).
unita=5*val/1023;
resto=5*val%1023;
resto1=resto*10;
decimi=resto1/1023;

t=0.00488*val;    // t=5*val/1023 Essendo t un float per poterlo usare si deve scrivere 5/1023=0.00488
                  // t è la corrente che si imposta sul display 7 segmenti
Serial.print (t);
Serial.print(" - ");
Serial.println(average);

stato_rip=digitalRead(rip);
while(average>=t && stato_rip==HIGH ){                   //Corrente del sensore >= a quella impostata
    digitalWrite(pin_SCR,HIGH);
    stato_rip=digitalRead(rip);
  digitalWrite(A_unita,0);                               //Esce 0
  digitalWrite(B_unita,0);
  digitalWrite(C_unita,0);
  digitalWrite(D_unita,0);
  
  digitalWrite(A_decimi,0);                              //Esce 0
  digitalWrite(B_decimi,0);
  digitalWrite(C_decimi,0);
  digitalWrite(D_decimi,0);
  delay(200);
  digitalWrite(A_unita,0);                               //Esce buio
  digitalWrite(B_unita,1);
  digitalWrite(C_unita,0);
  digitalWrite(D_unita,1);
  
  digitalWrite(A_decimi,0);                              //Esce buio
  digitalWrite(B_decimi,1);
  digitalWrite(C_decimi,0);
  digitalWrite(D_decimi,1);
  delay(200);
    }

/*Serial.print(unita);
Serial.print(  ".");
Serial.println(    decimi);
*/
/*****USCITA SUI DISPLAY 7 SEGMENTI*****/
switch(unita){
  case 0:
  digitalWrite(A_unita,0);
  digitalWrite(B_unita,0);
  digitalWrite(C_unita,0);
  digitalWrite(D_unita,0);
  break;
  case 1:
  digitalWrite(A_unita,1);
  digitalWrite(B_unita,0);
  digitalWrite(C_unita,0);
  digitalWrite(D_unita,0);
  break;
  case 2:
  digitalWrite(A_unita,0);
  digitalWrite(B_unita,1);
  digitalWrite(C_unita,0);
  digitalWrite(D_unita,0);
  break;
  case 3:
  digitalWrite(A_unita,1);
  digitalWrite(B_unita,1);
  digitalWrite(C_unita,0);
  digitalWrite(D_unita,0);
  break;
  case 4:
  digitalWrite(A_unita,0);
  digitalWrite(B_unita,0);
  digitalWrite(C_unita,1);
  digitalWrite(D_unita,0);
  break;
   case 5:
  digitalWrite(A_unita,1);
  digitalWrite(B_unita,0);
  digitalWrite(C_unita,1);
  digitalWrite(D_unita,0);
  break;
   case 6:
  digitalWrite(A_unita,0);
  digitalWrite(B_unita,1);
  digitalWrite(C_unita,1);
  digitalWrite(D_unita,0);
  break;
   case 7:
  digitalWrite(A_unita,1);
  digitalWrite(B_unita,1);
  digitalWrite(C_unita,1);
  digitalWrite(D_unita,0);
  break;
   case 8:
  digitalWrite(A_unita,0);
  digitalWrite(B_unita,0);
  digitalWrite(C_unita,0);
  digitalWrite(D_unita,1);
  break;
    case 9:
  digitalWrite(A_unita,1);
  digitalWrite(B_unita,0);
  digitalWrite(C_unita,0);
  digitalWrite(D_unita,1);
  break;
 }

switch(decimi){
  case 0:
  digitalWrite(A_decimi,0);
  digitalWrite(B_decimi,0);
  digitalWrite(C_decimi,0);
  digitalWrite(D_decimi,0);
  break;
  case 1:
  digitalWrite(A_decimi,1);
  digitalWrite(B_decimi,0);
  digitalWrite(C_decimi,0);
  digitalWrite(D_decimi,0);
  break;
  case 2:
  digitalWrite(A_decimi,0);
  digitalWrite(B_decimi,1);
  digitalWrite(C_decimi,0);
  digitalWrite(D_decimi,0);
  break;
  case 3:
  digitalWrite(A_decimi,1);
  digitalWrite(B_decimi,1);
  digitalWrite(C_decimi,0);
  digitalWrite(D_decimi,0);
  break;
  case 4:
  digitalWrite(A_decimi,0);
  digitalWrite(B_decimi,0);
  digitalWrite(C_decimi,1);
  digitalWrite(D_decimi,0);
  break;
   case 5:
  digitalWrite(A_decimi,1);
  digitalWrite(B_decimi,0);
  digitalWrite(C_decimi,1);
  digitalWrite(D_decimi,0);
  break;
   case 6:
  digitalWrite(A_decimi,0);
  digitalWrite(B_decimi,1);
  digitalWrite(C_decimi,1);
  digitalWrite(D_decimi,0);
  break;
   case 7:
  digitalWrite(A_decimi,1);
  digitalWrite(B_decimi,1);
  digitalWrite(C_decimi,1);
  digitalWrite(D_decimi,0);
  break;
   case 8:
  digitalWrite(A_decimi,0);
  digitalWrite(B_decimi,0);
  digitalWrite(C_decimi,0);
  digitalWrite(D_decimi,1);
  break;
   case 9:
  digitalWrite(A_decimi,1);
  digitalWrite(B_decimi,0);
  digitalWrite(C_decimi,0);
  digitalWrite(D_decimi,1);
  break;

  
}
}

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...