Arduino e 18 Timer luci scale condominiali

Nel '99 rifacendo tutti gli impianti ex-novo in un condominio residenziale composto da scala A 9 piani e Scala B 9 piani, mi chiesero di trovare un modo per rendere indipendenti le accensioni delle luci su ciascun pianerottolo e che fosse automatico senza pulsante, uscendo quindi dall'ascensore si dovevano accendere automaticamente per un certo tempo, questo avrebbe impedito l'accensione contemporanea di 9 piani inutilmente con un lieve risparmio energetico.

Usai così dei classici sensori PIR a 170° 10 mt per allarmi, pensato anche per chi scendeva a piedi, in definitiva avevo nel locale tecnico al piano terra 18 fili da 0.75 con 12v uscente dal relè del PIR e 18 fili da 1.5 mm per i comandi fase delle lampade. Avevo costruito 2 schede da 9 relè con transistor classici come usiamo adesso, ma il problema era temporizzare ogni singolo piano, non potevo certo mettermi a costruire anche 18 temporizzatori elettronici, non avevo tempo di progettare, montare, testare, così decisi di mettere 18 timer classici luci scali modulari da quadro come si usano ancora ora in più se qualcuno passava durante il ciclo timer si resettava riiniziando da 0 (non restavano al buio mentre cercavano le chiavi).

Per chi non li avesse mai visti sono questi http://www05.abb.com/global/scot/scot209.nsf/veritydisplay/e4c00d8e7d3aa63fc12574510051b7aa/$file/2csc441013b0901.pdf

Ho ripetuto il progetto in altre scale con successo, non in tutte perchè è un po' costoso.Tutt'oggi i sistemi sono in funzione e l'elettronica non si è mai guastata, i condomini sono contenti, ma rompono le palle perchè i timer modulari hanno vita corta e negli anni sono stati sostituiti quasi tutti, costano intorno ai 35-40 euro cad. + manodopera (purtroppo è così... si rompono, le scale non hanno finestre quindi lavorano giorno e notte).

Ora è giunto il momento di modernizzarli poco alla volta, un arduino risolverebbe il problema dei timer e ridurrebbe notevolmente i costi dei componenti e manutenzione. A livello hardware (nel primo caso) dovrei avere 20 ingressi e 18 uscite, ma a livello software come gestisco nel loop 18 timer? Dovrei avere un orologio no? mica posso usare il delay, quando me passa a fare tutti i controlli? che ne dite? La regolazione dei tempi attualmente lo si fa sui singoli temporizzatori, nel nuovo sistema non sarebbe modificabile una volta programmato e chiuso, sarebbe carino usare anche un ingresso analogico con un trimmer per regolare i tempi. Non so quando inizierò le modifiche, ma prima o poi sicuro.

Condivido perchè potrebbe essere un applicazione utile per altri.

Saluti.

Lo fai con la funzione millis() http://arduino.cc/en/Reference/Millis
Quando arriva un segnale di accensione luce dal rilvatore movimento controlli in un loop se il tempo é scaduto

Definisci un array di 18 elementi boolean per sapere quale o quali segnali di start sono arrivati.
Memorizzi il tempo che Ti da il milli in un altra variabile e metti l’uscita del relé a 1.
poi a tempo scaduto spegni sia il relé che la varabile boolean.

Le entrate/ uscite ti consiglio di farle con dei shift register protegendo le entrate con resistenza (per limitare la corrente) e diodo in antiparalello (per tensioni negative) e diodo zener in paralello al entrata (per sovratensioni). Puoi usare anche dei optocopler.
Le uscite dal shift register a un ULN2803 e ai relé.

Esempio a grande spanne:

boolean Start[18];
unsigned long tempoStart[18];
unsigned long ritardo[18];
byte Uscita[18]
byte entrata[18]
byte  i;
setup{
mettere tutte le variabili a valori predefinito (o per le variabili bolean e spegnere le uscite)
}

loop{

for (i=0; i<=18;i++)
{
if (entrata[i] == H && Start[i] == 0 )  / se vuoi retriggerabile togli il Start[i]==0 
 {
 Start[i] = 1;
 long tempoStart[i] = millis();
 Uscita[i] = 1; accende relé  
 }

if (tempoStart[i] + ritardo[i] > millis();  //(devi controllare se l' overlow ogni 50 giorni viene gestito bene. 
 {
 Start[i]=0;
 Uscita[i] = 0; spegne relé  
 }
}

Ciao Uwe

Interessante non conosco la funzione millis, la devo studiare, quindi tu lo faresti con la seriale, mi risparmio un bel po' di uscite di arduino, geniale, appena posso mi tiro giù uno schemino.

Ahh leggendo dopo non ho specificato perchè gli input sono 20, 2 servono per le pulizie, un comando a chiave accende tutte le uscite della scala A e un altro ingresso accende tutte le uscite della B

grazie mille :)

Se usi 3 Shift register hai 24 Entrate, se usi 4 hai 32 Entrate, basta metterli in serie come da esempi. In piú hai anche i PIN non usati sul Arduino.

http://www.arduino.cc/en/Tutorial/ShiftOut per le uscite.

http://www.arduino.cc/en/Tutorial/ShiftIn per le entrate.

Ciao Uwe

ciao, scusate se vado contro arduino, ma esistono dei sensori radar tipo quelli che hai usato nel primo progetto creati appositamente per questo scopo da utilizzare al posto degli interruttori , addirittura hanno anche il sensore crepuscolare regolabile in modo da non accendere le luci di giorno, noi li usiamo dal 2004 e fino ad oggi non si sono mai guastati, il costo non è molto elevato.

Per l’ingresso ci sono anche i 74165, sono anch’essi convertitori parallelo/seriale.

Giobe: ciao, scusate se vado contro arduino, ma esistono dei sensori radar tipo quelli che hai usato nel primo progetto creati appositamente per questo scopo da utilizzare al posto degli interruttori , addirittura hanno anche il sensore crepuscolare regolabile in modo da non accendere le luci di giorno, noi li usiamo dal 2004 e fino ad oggi non si sono mai guastati, il costo non è molto elevato.

Questi dispositovi accendono localmente la luce (se ho capito bene). Se si vuole usare una logica diversa pilotando a gruppi serve un comando centrale.

@leo intendi il 74HC165 (la versione CMOS del integtato TTL)?

Ciao Uwe

@Uwe: sì, li ho usati per leggere i dati da una SRAM parallela.

Mi aspettavo questa osservazione, non li usai per svariati motivi

  • Nel 99-2000 ne trovavi pochissimi modelli erano molto costosi e nascendo per applicazioni esterne erano anche brutti a vedersi
  • Non avevano un ampio raggio, ho fatto fatica a trovare i sensori a 170° da parete, avevo bisogno di guardare le porte e le rampe scale, quelli a soffitto da 360° hanno un cono troppo ristretto per quella applicazione, la rampa di scale la prendeva solo alla fine.
  • ne comprai uno e in fase test notai che una volta accesa la luce, la stessa interferiva con la funzione crepuscolare essendogli proiettata contro
  • in fase di lavorazione buttare un cavo da 12 conduttori dei pir insieme ai cavi citofonici mi costava poco lo spazio era abbondante
  • avevo il problema di forzare le accensioni permanenti di tutta la scala per le pulizie o lavori vari, avrei dovuto aprirli e aggiungere un filo di comando a tutti -Questo sistema mi permetteva di avere anche i comandi manuali in caso di guasti parziali ai piani , per telefono potevo dire al consigliere cosa fare senza correre con le sirene :) .

Questo era il primo automatismo in vano scale, era un salto nel buio, non avendo fatto mettere i pulsanti manuali, se qualcosa andava storto ero rovinato .

I sensori che dici tu sono ottimi nei giardini o quando arrivi con l' automobile

ciao

leo72: @Uwe: sì, li ho usati per leggere i dati da una SRAM parallela.

@leo Ho puntualizzto la differenza tra integrato famiglia TTL: il 74165 e integrato famiglia Cmos: il 74HC165

Ci sono piccole differenze: * La tensione di alimentazione: la famiglia 74HC funziona con tensioni da 2 a 6V la famiglia TTL solo con 5V; * I livelli di riconoscimento H e L sono fissi sui TTL mentre sui 74HC sono in rapporto della tensione di alimentazione.

Per questo con Arduino é necessario usare la versione HC dei integrati della famiglia TTL.

Ciao Uwe

Sì, chiaro. Ho scritto senza codici nella sigla per praticità.