OMC1 Fantini Cosmi
Questo è un driver per tende motorizzate. Vedi manuale istruzioni qui e scheda tecnica qui.
Il suo funzionamento molto semplice utilizza una pulsantiera per pilotare la tenda. Bisogna collegare una pulsantiera del tipo sali-scendi (tre capi) ai morsetti del modulo:
Funziona così:
La pulsantiera funziona dando un impulso breve che sia entro il mezzo secondo. E' possibile pilotarla tramite Arduino mediante invio di impulsi. Per fare questo si può utilizzare un Modulo Optoisolatore PC817 (2 Canali) questo:
Questo modulo ha solo 4 morsetti due entrate IN1-G e IN2-G e due uscite V1-G e V2-G, due jamper. I jamper vanno tolti in modo da isolare le uscite dall'entrate. Il funzionamento è "High attive" ossia quando IN1 è a 5V (High) il diodo si accende e il fotototransistor chiude le uscite. Se IN1 va a 0V (Low) il led si spenge ed il fototransistor apre le uscite. Ho verificato se High attive qui.
Logica "High attive" D6 e D7 sono impostati a LOW nel setup
Questi impulsi simulano la pressione dei corrispettivi tasti di una pulsantiera direttamente collegata all'OMC1. In pratica pigiando la pulsantiera (collegata ad Arduino) è come se pigiassimo una pulsantiera direttamente collegata all'OMC1. Cii sono alcune particolarità da tenere presente nel gestire gli impulsi simulati. Come si simula un impulso che assomigli alla prssione che esrciteremo sulla pulsantiera diretta. Il Cosmi (l'OMC1) riconosce come comando una pressione che abbia una durata entro il 1/2 sec si preme e si rilascia dopo 500ms, questa è la pressione giusta. Come visto sopra ho schelto un tempo di 400ms per rimanere meglio nel range. Probema delle sovrapposizioni di impulsi Per monitorare se il pulsante è stato premuto bisogna inserire nel loop il codice di controllo, tipicamente si inserisce nel metodo tick della classe che si occupa di gestire la pulsantiera nel mio caso pulsan.h e pulsan.cpp. Se ad es si preme il pulsante di apertura Arduino invia un impulso di apertura poi esce e fa un'altro ciclo dove va a verificare se sono trascorsi i 400ms e se si chiude l'impulso. I cicli del loop e quindi di tick possono avere durate veramente brevi qualche ms quindi in quei 400ms verranno eseguiti centinaia di cicli, se per caso o per automatismi dovesse scattare un'altro impulso questo verrebbe avviato prima che il precedente sia ancora terminato e questo provocherebbe una sovrapposizione che creerebbe problemi. E' quindi molto importante che un impulso possa essere avviato solo quando il precedente si è concluso. Questo si ottiene con la funzone "impulsiLiberi" Problemi della coincidenza fine ed inizio di due impulsi Se al Cosmi diamo un impulso al termine del quale ne segue un'altro. Primo impulso termina a 400ms a 401 e fino a 800ms segue l'altro, Cosmi non li distingue, probabilmente percepisce il rilascio dell'ultimo. Non è chiaro di quanto debbano essere separati tra loro per essere percepiti entrambe. Nei casi in cui bisogna far seguire un'impulso ad un'altro, caso tipico è quando ad esempio essendo in apertura un segnale di allarme chiede con chiusura forzata, è il caso di aggiungere una pausa tra l'uno e l'altro. Nel caso ho inserito una pausa di 1.5 sec tra lo stop dell'apertura e la chiusura forzata e l'ho chiamata pausa tecnica. Questo oltre a risolvere il riconoscimento da parte di Cosmi degli impusi tutela anche il motore perchè si evita che avvenga un brusco cambiamento di direzione che non farebbe di certo bene al motore. Problema di millis:
|