Go Down

Topic: Consiglio su come sostituire delay con millis (Read 4479 times) previous topic - next topic

Puso

quindi prima un serve una funzione dedicata al pulsante......poi una funzione per il telecomando......poi capire che tipo di motore hai...probabilmente uno normale a 12 volt.

Puso

invece dovrebbe interessarti il pulsante a muro...ha molte più variabili di quel che sembra.

ziopippo

#32
Jan 30, 2018, 11:03 pm Last Edit: Jan 31, 2018, 09:57 am by ziopippo
Scusa ma non ho capito cosa vuoi dire.
In ogni caso io ho collegato Arduino ad un relè al quale poi ho collegato i fili del pulsante.
Inizialmente pensavo di volermi allacciaciare direttamente alla centralina della tenda poi invece ho constatato che era più semplice collegarsi in parallelo ai pulsanti e simulare con Arduino ed un relè la pressione dei tasti a muro per comandarla fuori casa.

Puso

hai collegato arduino ad un relè dove????
ed i fili del pulsante dove?????
ed il motore che abbassa la tenda dovè collegato???

un relè normalmente è composto da 1 bobina e alcuni contatti che si chiudono o si aprono in base allo stato della bobina.

Come li hai collegati????
Poi  a che Voltaggio si attiva la bobina???(in corrente alternata o continua???)

Attivare relè con arduino è semplicissimo a livello di programmazione,farlo per un progetto reale cè da fare tutta una serie di considerazioni Hardware.

ziopippo

Non ho fatto nulla di complicato.
Mi sono accorto che dalla centralina uscivano 3 fili collegati ad un pulsante  (anzi 2, uno per la salita ed uno per la discesa). Mettendo a massa  (così come fa il pulsante ) il centrale con uno degli altri due poli si aziona il motore e la tenda scende o sale in base al polo usato.
Fatta questa premessa ho preso una shield a due relè ed ho collegato i rispettivi poli a ciascun relè per comandarli da Arduino, tutto qui.

Puso

#35
Jan 31, 2018, 09:18 pm Last Edit: Jan 31, 2018, 09:25 pm by Puso
li hai collegati come??? 2 fili uno per la discesa l'altro per la salita.

e cosa vorresti farci con un PLC come Arduino??? te lo chiedo solo per approfittarne a provarci anch'io.

Puso

se li colleghi in serie oppure in parallelo e dove li colleghi sul relè....cambia le carte in tavole durante i gioco.

ziopippo

Non capisco cosa non ti sia chiaro.
La mia centralina della tenda come ho già detto ha una massa e due fili. Uno per la sua discesa ed uno per la salita.
Mettendo a Massa ino dei due con la massa la tenda scende o sale se lo collego con l'altro.
Assodato ciò ho sfruttato questo simulando con Arduino e shield relay la pressione dei tasti.

Puso

se il comune è a massa con arduino dai un LOW al pin del pulsante......anzi...attivi la bobina del relè e col contatto metti a massa il pulsante.

ziopippo

Bravo finalmente hai capito ciò che tentavo di dirti con parole semplici. ;)

Etemenanki

....La mia centralina della tenda come ho già detto ha una massa e due fili. Uno per la sua discesa ed uno per la salita.
Solo un suggerimento, controllare che la centralina non vada in tilt o si bruci chiudendo entrambi i pulsanti insieme ... se il comando e' "logico", e' probabile che il caso sia gia stato previsto a livello software, ma in alcune vecchie centraline la cosa veniva evitata semplicemente usando dei pulsanti a zero centrale che non permettevano meccanicamente di chiudere entrambi i contatti ... se cosi fosse, sarebbe meglio usare rele' a due contatti, uno che chiude un filo, e l'altro che apre il filo opposto impedendone la chiusura finche' il rele' rimane attivato ... ;)
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.

ziopippo

Sinceramente non mi sono posto il problema di come sia programmata.
Inizialmente volevo collegarmi direttamente al motore poi ho scoperto che potevo farlo comandando i pulsanti con Arduino.
Devo precisare che il tasto a muro deve essere premuto per almeno tre secondi prima che la tenda si azioni. Detto questo ho provato a premere entrambi i tasti contemporaneamente e la tenda si muove in base al pulsante premuto per primo (ovviamente è difficile a mano premere nello stesso istante entrambi i contatti). Con la tenda in movimento poi per arrestarla è sufficiente pigiare su uno dei due tasti per arrestare il movimento  o farlo continuare in posizione opposta.
Quello che ho fatto io, continuo a ripetere, è appunto simulare con Arduino ed un relè la pressione del tasto a muro.
Il sistema è ormai in funzione da diversi anni e funziona bene facendo ciò che voglio. Era mia intenzione però apportare delle migliorie in modo da ridurre i tempi di latenz creati da delay utilizzando millis ma non ancora ci riesco. Mi piacerebbe anche ridurre i tempi di risposta di Json ma non so da dove partire. Forse sostituire tutti quegli IF con dei case potrebbe risolvere il problema ma non ancora ho avuto il tempo di provarci.
 

Etemenanki

... ho provato a premere entrambi i tasti contemporaneamente e la tenda si muove in base al pulsante premuto per primo ...
Allora sei a posto, hai una centralina che effettua gia la protezione di quel tipo e non ti serve usare rele' con doppio scambio ... per cui sai di poter stare tranquillo da quel punto ;)
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.

ziopippo


Puso

ti do uno spunto che secondo me potrebbe aiutarti
Code: [Select]

pulsante1//variabile
tempo//variabile
RCH1//variabile


if (digitalRead(pulsante1,HIGH))
   {
    if(millis()-tempo>1800)
      {
       digitalWrite(RCH1, HIGH);
      }
   }
if (digitalRead(pulsante1,LOW))
   {
    tempo=millis();
    digitalWrite(RCH1,LOW);
   }               

Go Up