View Full Version : realizzare segnalatori luminosi sincronizzati azionati da pulsanti
Ciao a tutti,
avrei la necessità di eseguire questo impiantino elettrico in economia:
2 “semafori” (luce verde, gialla e rossa) con due pulsanti.
Entrambi i “semafori" devono mostrare sempre la stessa luce (verde verde, giallo giallo…) e devono essere commutati di posizione da uno dei due pulsanti indifferentemente.
Quindi: colore di partenza indifferente, premo pulsante, passa al successivo, premo pulsante, passa al successivo e così via.
Finché non premo ancora la luce deve restare sempre accesa.
Potete aiutarmi nella realizzazione? Se possibile 220V per evitare l’aggiunta di trasformatori, o almeno con trasformatore facile da trovare e economico (24V 0 12V).
Grazie
Un paio di domande.
I semafori devono avere lampade da vedersi a distanza o basta accendere anche un singolo led?
Riesci a costruirti un circuito elettronico (integrato, transistor, relè), inteso come preparazione e attrezzatura?
Perchè con pochi euro potresti prendere un integrato che funge da contatore (un CD4017) ed usare i pulsanti per passare da un'uscita all'altra. Poi puoi pilotare direttamente i led oppure inserire transistor e relè per accendere qualsiasi tipo di lampada.
In alternativa, con due righe di codice ed una scheda Arduino, te lo programmi in 5 minuti e ci piloti i tre led. Oppure ci puoi aggiungere una scheda relè per pilotare le lampade. Il costo è comunque irrisorio...
Ciao, intanto grazie.
Di elettronica so davvero poco o nulla(seguire le istruzioni e stagnare qualche componente).
Solo un po' di "elettricità" per necessità di riparazione al volo su macchinari industriali se il problema è semplice.
Un led sarebbe un po' troppo poco luminoso: diciamo che una classica luce da macchinario va bene e se non sbaglio quelle che usiamo noi sono proprio 24V, e quindi pensavo a qualcosa tramite relè.
Arduino qualcosina avevo fatto qualche anno fa e quindi potrebbe essere un sistema.
Avendo un po' fretta speravo in un qualcosa di tipo compro qualcosa e faccio i cablaggi necessari, però in alternativa avevo già messo in conto un arduino.
Lo scopo è proprio quello di permettere a 2 persone relativamente distanti di comunicare in mezzo al gran rumore 3 tipi di situazione.
Purtroppo il mio budget è tendente allo zero e per questo motivo non ho mai fatto nulla finora.
Un Arduino e il relativo modulo a 4 relè ti costa una decina di euro dalla Cina.
Hai solo da aggiungere l'alimentatore, un contenitore e lampade con portalampada.
Altrimenti se hai in zona un negozio che vende componenti elettronici, ti posso passare uno schema. Ma ti serve poi di saldarli e collegare i vari pin su una basetta millefori.
Direi che la soluzione con modulo a 4 relé forse è la cosa più semplice,
però se avessi voglia, quando avrei tempo, di passarmi lo schema per la basetta millefori forse mi farebbe anche più piacere
Ho trovato uno schema al volo che fa proprio al caso tuo:
https://i.ibb.co/N93VppC/4017.jpg (https://imgbb.com/)
Se servono più pulsanti, basta che li aggiungi in parallelo a quello che già c'è.
Nello schema vengono fatti accendere dei led.
Se vuoi usare delle lampadine, sulle uscite 3-2-4 devi montare (per ognuna) questi componenti qua sotto, ed utilizzare il contatto del relè per accenderle:
https://i.ibb.co/HDdznGc/Senza-titolo1.jpg (https://imgbb.com/)
Grazie mille.
Mi è venuto solo un dubbio con Arduino:
I pulsanti di comando li devo collegare all'Arduino e quindi viaggiano a 5V.
Essendo un pulsante vicino alla scheda, ma l'altro a distanza di circa 30 - 40 metri:
ho problemi di segnale a causa della lunghezza del cavo? Parlo da totale ignorante in materia
Non sono pochi... Sarebbe da provare.
Le soluzioni che mi vengono in mente al volo potrebbero essere varie .
Potresti usare un cavo bipolare schermato, in modo da ridurre il più possibile le interferenze esterne.
Oppure, se userai le lampadine a bassa tensione, portare sul pulsante un 24Vdc. Poi, una volta tornato nella scheda, lo riporti a 5V con un partitore di tensione.
O ancora col 24V (anche ac in questo caso}, lo usi per eccitare un relè il cui contatto porta il 5V in ingresso a Arduino.
UtenteSospeso
23-06-2022, 18:08
Un interruttore wireless ( non wifi) a 4 canali, ne utilizzi 3 uno per lampada.
Non credo che costi troppo e sia difficile da realizzare, sui 25€ e funzionano a 24Vdc .
Oppure, se la verde è sempre accesa, puoi usare un 2 canali. La verde la colleghi al NC e la rossa al NO quindi quando premi il ch1 si spegne la verde e si accende la rossa. Col secondo canale ci piloti la gialla.
I telecomandi li puoi duplicare, dai cinesi li trovi sui 3-5 euro a seconda dei modelli.
Quendo è necessario, il telecomando puoi tenerlo in tasca prenderlo e usarlo, l'interruttore devi raggiungerlo per usarlo.
.
Non sono scomparso:
mi sto riguardando un corso su arduino perchè mi sono reso conto di aver praticamente dimenticato tutto.
La parte difficile secondo me (e per me) è l'usare un unico pulsante:
- deve mantenere il relè attivo anche se il pulsante non è premuto
- deve verificare quale relè è attivo per passare a quello successivo nel momento in cui il pulsante viene premuto
La prima soluzione che mi viene in mente (dalla mia scarsa preparazione in programmazione) sarebbe quella di usare un contatore da associare ad ogni relè, ed usare il pulsante per incrementare il contatore.
Del tipo:
Inizio col contatore ad 1 di default.
Verifico lo stato del pulsante e, se risulta premuto, incremento di 1 il contatore ed attivo il relativo relè.
E siccome non ho nulla da fare, ci provo al posto tuo.... :sofico:
int CONT = 1; // imposto il valore iniziale del contatore ad 1
int StatoPulsante = 0; // variabile lettura del pulsante
void setup() {
pinMode(1, OUTPUT); // pin 1 relè rosso
pinMode(2, OUTPUT); // pin 2 relè giallo
pinMode(3, OUTPUT); // pin 3 relè verde
pinMode(4, INPUT); // pin 4 pulsante
digitalWrite (CONT, HIGH); // accendo subito il rosso
}
void loop() {
StatoPulsante = digitalRead(4); // leggo lo stato del pulsante
if (StatoPulsante == HIGH)
{
if (CONT == 3) CONT == 0; // controllo il valore del contatore e faccio il reset se all'ultimo valore possibile (3)
CONT = CONT+1;
// spengo tutte le uscite per riaccenderne una nel successivo loop
digitalWrite (1, LOW);
digitalWrite (2, LOW);
digitalWrite (3, LOW);
digitalWrite (CONT, HIGH); //attivo il relè relativo al contatore
delay (500); // 1/2 secondo di antirimbalzo per il pulsante
}
}
Chiedo in anticipo scusa per errori di sintassi e/o codice...
Senza fare cose troppo complicate puoi usare un commutatore sequenziale ad impulsi. Per intenderci sono quei relè che si usano quando devi accendere in sequenza le luci di una stanza.
Metti in parallelo i pulsanti di comando, idem per ogni coppia di lampade che deve essere accesa in contemporanea.
Il tutto direttamente a 220V.
Grazie a tutti.
Sapresti indicarmi un commutatore a impulsi per gestire le 3 lampade? Ho guardato sul sito Finder ma onestamente ho avuto l'impressione che fossero tutti per gestire 2 lampade.
Per quanto riguarda Arduino, ho cablato il tutto sulla basetta, ma ci deve essere qualcosa che non va nel codice.
Purtroppo mi sono messo poco fa a preparare il tutto e devo dire che ora vado a nanna perchè non ho la lucidità di capire dove stà l'errore.
Comunque parte con il led acceso ma non accade nulla alla pressione dell'interruttore collegato al pin 4 (per prova ho messo 4 led anziché la basetta con i 4 relé)
La prima soluzione che mi viene in mente (dalla mia scarsa preparazione in programmazione) sarebbe quella di usare un contatore da associare ad ogni relè, ed usare il pulsante per incrementare il contatore.
Del tipo:
Inizio col contatore ad 1 di default.
Verifico lo stato del pulsante e, se risulta premuto, incremento di 1 il contatore ed attivo il relativo relè.
E siccome non ho nulla da fare, ci provo al posto tuo.... :sofico:
int CONT = 1; // imposto il valore iniziale del contatore ad 1
int StatoPulsante = 0; // variabile lettura del pulsante
void setup() {
pinMode(1, OUTPUT); // pin 1 relè rosso
pinMode(2, OUTPUT); // pin 2 relè giallo
pinMode(3, OUTPUT); // pin 3 relè verde
pinMode(4, INPUT); // pin 4 pulsante
digitalWrite (CONT, HIGH); // accendo subito il rosso
}
void loop() {
StatoPulsante = digitalRead(4); // leggo lo stato del pulsante
if (StatoPulsante == HIGH)
{
if (CONT == 3) CONT == 0; // controllo il valore del contatore e faccio il reset se all'ultimo valore possibile (3)
CONT = CONT+1;
// spengo tutte le uscite per riaccenderne una nel successivo loop
digitalWrite (1, LOW);
digitalWrite (2, LOW);
digitalWrite (3, LOW);
digitalWrite (CONT, HIGH); //attivo il relè relativo al contatore
delay (500); // 1/2 secondo di antirimbalzo per il pulsante
}
}
Chiedo in anticipo scusa per errori di sintassi e/o codice...
Torno all'attacco dopo parecchio tempo... purtroppo questo programma non cicla, cioè non ricomincia da capo e quindi esaurite le 3 pressioni sul tasto si blocca tutto.
Secondo me hai scritto un fw proprio un pò incasinato, meglio che separi la gestione dell'input dalla logica del sistema utilizzando una macchina a stati finiti
inoltre per non essere dipente dal tempo di ciclo del sistema fai avanzare la macchina solamente sul fronte di salita del pulsante così ti avanza di 1 ad ogni pressione del tasto e nel mentre puoi lasciare girare il loop ad una frequenza maggiore di 2 Hz.
ora non uso arduino da parecchi anni ma una cosa così potrebbe andare per ciclare su 3 stati ma puoi modificarla come ti pare
void loop() {
StatoPulsante = digitalRead(4); // leggo lo stato del pulsante
//GESTIONE INPUT
if((StatoPulsantePrec!=StatoPulsante)&&(StatoPulsante==HIGH))
{
//RILEVATO FRONTE DI SALITA
FSM++;
FSM=FSM%3;
}
StatoPulsantePrec=StatoPulsante;
//GESTIONE LOGICA
switch (FSM)
{
case 0:{
digitalWrite (1, LOW);
digitalWrite (2, LOW);
digitalWrite (3, LOW);
}break;
case 1:{
digitalWrite (1, LOW);
digitalWrite (2, HIGH);
digitalWrite (3, LOW);
}break;
case 2:{
digitalWrite (1, LOW);
digitalWrite (2, LOW);
digitalWrite (3, HIGH);
}break;
default:
{
digitalWrite (1, HIGH);
digitalWrite (2, HIGH);
digitalWrite (3, HIGH);
}
break;
}
delay(50);
}
Grazie,
ma mi da una serie di errori tra cui:
'StatoPulsantePrec' was not declared in this scope
Grazie,
ma mi da una serie di errori tra cui:
'StatoPulsantePrec' was not declared in this scope
devi dichiarare le variabili globali, ti avevo messo una bozza del loop non il codice completo
int CONT = 1; // imposto il valore iniziale del contatore ad 1
int StatoPulsante = 0; // variabile lettura del pulsante
int StatoPulsantePrec = 0; // stato precedente
int FSM=0;
void setup() {
pinMode(1, OUTPUT); // pin 1 relè rosso
pinMode(2, OUTPUT); // pin 2 relè giallo
pinMode(3, OUTPUT); // pin 3 relè verde
pinMode(4, INPUT); // pin 4 pulsante
digitalWrite (CONT, HIGH); // accendo subito il rosso
}
Vado controcorrente, ma mi è venuto subito da pensare a un semplice CMOS 4017 senza microprocessori e cose varie
Ad esempio il primo schema che ho trovato :
http://web.tiscali.it/i2viu/electronic/commuta.htm
togliendo il CD4051 sulla destra che non serve, al posto dei led si potrebbero comandare dei relè o triac
UtenteSospeso
26-01-2023, 16:58
Ma che tipo di luci devi pilotare ?
Led o lampadine?
Si può fare con 3 relè e 3 diodi per ogni semaforo, la parte luci però in DC, e pulsanti ( contatti relè) in parallelo per entrambi.
.
devi dichiarare le variabili globali, ti avevo messo una bozza del loop non il codice completo
int CONT = 1; // imposto il valore iniziale del contatore ad 1
int StatoPulsante = 0; // variabile lettura del pulsante
int StatoPulsantePrec = 0; // stato precedente
int FSM=0;
void setup() {
pinMode(1, OUTPUT); // pin 1 relè rosso
pinMode(2, OUTPUT); // pin 2 relè giallo
pinMode(3, OUTPUT); // pin 3 relè verde
pinMode(4, INPUT); // pin 4 pulsante
digitalWrite (CONT, HIGH); // accendo subito il rosso
}
Grazie. Si, avevo visto che mancavano le variabili, ma non capendo bene il tuo codice, mi sono perso.
Testato e funzionante!
Grazie!
Ma che tipo di luci devi pilotare ?
Led o lampadine?
Si può fare con 3 relè e 3 diodi per ogni semaforo, la parte luci però in DC, e pulsanti ( contatti relè) in parallelo per entrambi.
.
Lampadine: 24V ma in realtà devo ancora realizzarlo.
L'ho testato su Tinkercad e poi su Arduino Uno collegata a 3 relé (quelle schedine che si trovano sui 10€ con 4 relè integrati).
Vado controcorrente, ma mi è venuto subito da pensare a un semplice CMOS 4017 senza microprocessori e cose varie
Ad esempio il primo schema che ho trovato :
http://web.tiscali.it/i2viu/electronic/commuta.htm
togliendo il CD4051 sulla destra che non serve, al posto dei led si potrebbero comandare dei relè o triac
Qui andiamo sul complicato forte per me!
UtenteSospeso
26-01-2023, 23:31
Vedi questo schema, fa quello che chiedi .
Sono 2 blocchi identici comandati da rls1 un relè ad impulsi 24V AC , finder 26.06.8.024.0000 , pilotato da 1, 2 o più pulsanti in parallelo, non considerarne il simbolo, nel software online che ho usato manca quello adeguato.
Volendo puoi anche aggiungere altri semafori e pilotarli con gli stessi fili.
Nella posizione 0 è accesa la luce rossa perchè va a massa tramite il relè connesso su nc , gli altri spenti perchè il rls1 ha tutto aperto.
Nella posizione 1 si accende la luce verde tramite il rele che porta a massa sul nc e tramite anche il rlsa A1-A2, nello stesso tempo viene eccitato il relè del rosso che si apre e spegne il rosso .
Nella posizione 2 A1-A2 + B1-B2 chiusi ( il relè non consente le chiusure indipendenti : OPEN, A1-A2 chiusi, A1-A2 + B1-B2 chiusi come evidenziato nella tabella in giallo), si accende il led giallo e viene eccitato anche il relè del led verde .
Verso il semaforo remoto bisogna portare 4 fili, 2 per il pilotaggio ( quelli che entrano nel rettangolo ) e 2 per il pulsante, le Vcc le puoi riferire a massa e risparmiare un filo usando una terra, dipende da dove usi questo semaforo se non c'è dovrai portare anche la massa.
Oppure usi un solo semaforo ma porti nella posizione remota i 6 file per le lampade in parallelo alle altre.
Per i componenti, a parte il relè ad impulsi che non so se si può trovare un alternativa, i diodi sono dei 1n4002 ma qualunque 1n400x o simili va bene, come i due relè che devono avere un contatto normalmente chiuso su cui connettere la luce e la massa.
Ogni pressione cambierà la luce, se non ti interessa che siano accese le luci precedenti puoi anche eliminare i 2 relè e diodi posizionando al posto del rosso la luce che ti interessa avere accesa da sola e poi in sequenza le altre.
Il vincolo è che devi usare la cc nei 2 semafori e la ca per pilotare il relè ad impulsi, ma se lo trovi in cc puoi ovviamente cambiarlo.
Finder 26.06 (https://cdn.findernet.com/app/uploads/S26IT.pdf)
https://i.ibb.co/92YG57Y/Semaforo.jpg (https://ibb.co/92YG57Y)
.
Grazie a tutti.
Sapresti indicarmi un commutatore a impulsi per gestire le 3 lampade? Ho guardato sul sito Finder ma onestamente ho avuto l'impressione che fossero tutti per gestire 2 lampade.
Per quanto riguarda Arduino, ho cablato il tutto sulla basetta, ma ci deve essere qualcosa che non va nel codice.
Purtroppo mi sono messo poco fa a preparare il tutto e devo dire che ora vado a nanna perchè non ho la lucidità di capire dove stà l'errore.
Comunque parte con il led acceso ma non accade nulla alla pressione dell'interruttore collegato al pin 4 (per prova ho messo 4 led anziché la basetta con i 4 relé)
Continuo a pensare che gestire tutto direttamente a 220V sia la cosa migliore.
Onestamente non ho guardato in maniera approfondita se esistono commutatori sequenziali per gestire direttamente tre lampade.
Dovessero mancare allora puoi gestire tutto con il classico commutatore per due lampade (per intenderci quelli che fanno la sequenza OFF -> 1 -> 2 -> 1+2 -> OFF) più tre normali relè.
Segui questo schema:
https://i.ibb.co/C9czgQS/IMG-20230127-114156-low.jpg
L1, L2 e L3 sono i segnaposti per le lampade. Mettine in parallelo quante ne vuoi purché rimani dentro i limiti di corrente dei relè.
Qui andiamo sul complicato forte per me!
Se riesci a usare e a cablare il circuito con arduino non mi sembrava molto diverso... comunque fai bene è anche utile per imparare un pò di programmazione
Mi state aiutando in tanti e vi ringrazio.
per Lor1981: da quel che ho capito, no, non ci sono commutatori con 3 uscite.
Esiste infatti un video di un tizio che si è costruito un circuito proprio per sopperire a questa mancanza.
Il tuo schema l'ho capito al volo: molto interessante.
Grazie anche a UtenteSospeso: una domanda, trovando la componentistica, non potrei applicare il circuito di Lor1981 alla 24V?
Più per curiosità che altro.
Sono molto indeciso: la versione Arduino è molto più sbrigativa e "compatta". La versione a relè invece garantisce una più facile riparabilità da parte di chiunque e infine non ci sarebbe il problema della distanza per il segnale a 5V dell'arduino (però risolvibile con un altro relè).
Forse devo lotttare più contro il mio desiderio di realizzarlo con Arduino.
Grazie anche a Giuss
UtenteSospeso
28-01-2023, 07:56
Il problema è il relè ad impulsi, per quel che ho cercato, non l'ho trovato a bassa tensione di quel tipo .
Come ho scritto, il mio puoi ridurlo ad uno solo e portare in remoto solo i 6 fili per le luci da mettere in parallelo e i 2 fili del pulsante come per l'alto schema di Lor1981 .
Inoltre, il mio ha 3 posizioni con partenza da una luce accesa quello di lor1981 ne ha 4 con una posizione di tutto spento quindi valuta anche questo.
Comunque, come per il mio, anche quello di lor1981 puoi usarlo con 2 tensioni, la 220Vac per pilotare il relè ad impulsi e la 24Vac, o cc, per il resto, del relè ad impulsi devi usare solo i contatti che sono senza tensione.
Inoltre, volendo, puoi usare un relè a 24V con cui pilotare quello ad impulsi e così avere la 220Vac localizzata al relè ad impulsi e su tutti i fili di luci e pulsanti la bassa tensione a 24V che per la sicurezza non è da scartare.
Un'alternativa la si trova.
.
UtenteSospeso
28-01-2023, 08:20
Rileggendo, ho letto di macchinario e distanza di comunicazione tra 2 persone.
Se così, credo sia più opportuno avere 2 segnalazioni separate in modo che ognuno veda lo stato dell'altro.
Se io da questo lato sono pronto metto il verde, dall'altro lato come fa a dire a te che è pronto se è già verde? Con due separati ognuno indica il proprio stato che l'altro può vedere.
Trattandosi di macchinari, probabilmente di produzione, si rischia di compromettere la sicurezza e la prontezza.
.
Confermo, in un modo o nell'altro una soluzione si trova.
A questo punto direi che è più una questione di costi, manutenibilità e, perché no, filosofica (elettronica vs elettromeccanica).
Facci sapere :)
Rileggendo, ho letto di macchinario e distanza di comunicazione tra 2 persone.
Se così, credo sia più opportuno avere 2 segnalazioni separate in modo che ognuno veda lo stato dell'altro.
Se io da questo lato sono pronto metto il verde, dall'altro lato come fa a dire a te che è pronto se è già verde? Con due separati ognuno indica il proprio stato che l'altro può vedere.
Trattandosi di macchinari, probabilmente di produzione, si rischia di compromettere la sicurezza e la prontezza.
.
In questo caso non è questione di sicurezza (tanto che finora semplicemente qualcuno andava a piedi a avvisare l'altro), ma di comodità.
In sostanza il verde è tutto ok, il giallo chiede di rallentare, il rosso avvisa di fermare, ma in base a chi ha premuto il tasto sappiamo già cosa significa (ad esempio... devo correre in bagno, ferma un attimo o se premuto dall'altra parte...ci fermiamo: puoi andare in bagno). Poi le comunicazioni avvengono sempre verbalmente, quindi non si riparte con il verde, ma avvisando la persona.
In conclusione: se anche venisse ignorato il semaforo, non succede nulla di particolare se non qualche esclamazione presa dal vocabolario veneto.
UtenteSospeso
29-01-2023, 09:41
Per la sicurezza mi riferivo ai fili portati in giro per lampade e pulsanti, un conto che ci sono 220V un altro 24V.
Sulla prontezza, intendevo il tempo di ripartenza, finché non ti vengono a contare per esempio 60 secondi x 10 volte al giorno x 5 volte a settimana x 52 settimane x i soldi persi sei a posto.
Comunque, mi sembra che già l'ho scritto, la soluzione con scheda wireless con radiocomandi a 4 canali mi sembra la migliore. Lampade su 3 canali e al 4° ci metti un qualcosa che suona per attirare l'attenzione.
.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.