Jump to content
PLC Forum


Timer ciclico arduino


omsp38
 Share

Recommended Posts

omsp38

Buongiorno

vorrei realizzare un timer ciclico che impedisca al condizionatore di far funzionare il compressore per un tempo eccessivo.

 

premo start, indipendentemente da quanto lo tengo premuto, si attiva un timer di 20 minuti, (uscita 1 attiva) poi per 40 minuti (anche se start è ancora attivo) quindi indipendente dall’ingresso l’uscita deve essere su 0. Poi finito i ;0 minuti se l’ingresso è ancora eccitato allora si ricominci il ciclo.

 

posso usare il delay ? O ci vuole qualche comando particolare ? 

Link to comment
Share on other sites


Livio Orsini

Il delay è un'istruzione bloccante da non usarsi mai o quasi.

 

Hai un'opzione comoda: l'istruziione millis(), che ti da il tempo trascorso dall'accensione.

Oppure puoi usare l'interrupt del timer. Io solitamente uso timer1 in modo da avere un interruopt ogni 10ms, che uso anche come clok di sistema .

Presetti il timer per avere un interrupt ad esempio ogni 500ms, poi fai 2 contatori uno per il tempo di on e l'altro per il tempo di off

 

Link to comment
Share on other sites

On 5/14/2022 at 1:56 PM, omsp38 said:

posso usare il delay ? O ci vuole qualche comando particolare ? 

 

In questo specifico caso, in cui durante l'attesa niente altro deve essere fatto, delay può anche andare e semplifica la logica, ma appunto il sistema non sarebbe ad esempio in grado di gestire un eventuale altro pulsante di stop. Per cui come giustamente consigliato sarebbe meglio impostare sempre la logica sotto forma di elaborazione per cicli successivi, in modo che il sistema possa (se serve) gestire più processi contemporaneamente. Piuttosto ritengo importante leggere il comando in ingresso con un adeguato debounce, in modo da evitare che un singolo breve impulso (disturbo ecc) possa far partire il tutto. Banalmente accettare valida una lettura dell'ingresso solo se due letture successive distanziate di 50..100 ms risultano uguali. In realtà è il minimo sindacale, perché a far bene si dovrebbe controllare continuamente la stabilità dell'ingresso per un certo tempo prima di dare per buona una variazione.

Link to comment
Share on other sites

40 minuti fa, Claudio F ha scritto:

Piuttosto ritengo importante leggere il comando in ingresso con un adeguato debounce,

 

Un debouncing tipico consiste nel leggere gli ingressi ad intervalli di 10ms e considerare valido l'identico stato per 2 letture consecutive.

 

Però Omsp38 non si è più fatto sentire....

Edited by Livio Orsini
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...