adattatore-myhome-nice

adattatore-myhome-nice

Eccovi un semplice progettino che ho costruito nel 2010.

Ho un sistema domotico MyHome BTICINO ed ho avuto problemi nell'interfacciare una tenda da sole con sistema NICE.

per chi si trovasse nelle stese condizioni, questo progetto potrebbe far risparmiare parecchio tempo e denaro.

Alcune tende non montano motori classici con una centralina dotata di 2 ingressi (up e down) per il comando della tenda, 

ma utilizzano dei motori con centralina incorporata o delle centraline con un solo ingresso (passo passo).

Quindi con l'ausilio di un telecomando extra (una spesa minima) dotato di 3 pulsanti (up, stop e down) si può risolvere il problema.

 

Schema del circuito con 16f876:

 

Stampato del circuito con 16f876:


Foto del circuito con 16f876:

 
Componenti:
R1=R2=R3=10Kohm
R4=R5=R6=4,7Kohm
C1=100nF
C2=C3=22pF
T1=T2=T3=bc547
Q1=quarzo 8Mhz
U1=pic16f876
 
 
Descrizione

Come visibile dallo schema, il circuito è semplice..
Tutto è affidato al pic (ovviamente ne basta uno molto più economico e con meno pin ed utilizzando il quarzo interno.. ma visto che in casa ho diversi 16f876 inutilizzati, ho fatto il prototipo con questo).
(non ho inserito lo stadio di alimentazione, ma un 7805 lo si trova dovunque)
Oltre alla configurazione standard del pic, i pin 0-1-2 della porta B sono collegati con i pulsanti del telecomando tramite i transistor BC547. Infatti basta dare il negativo al pin del tasto per attivare la sua funzione.
Il sistema MyHome utilizza dei moduli chiamati F411/2 (/2 perchè ha 2 uscite) per interfacciarsi con i motori, il contatto rimane chiuso per tutto il tempo della discesa o salita, si apre quando si ferma la tenda (o tapparella).
Il telecomando invece vuole solo un impulso sul pulsante di apertura o chiusura, il movimento del motore è continuo fino all'arrivo a finecorsa, se si desidera fermare il movimento si deve premere il pulsante di stop.
 
Ricapitolando.. ingressi come se fosse un inerruttore e uscite come un pulsante, ma in più quando il segnale di ingresso finisce bisogna fermare il movimento del motore dando un ulteriore impulso sul pulsante di stop.

Di segiuto il programma del pic che esegue proptio queste funzioni.
1) controlla gli ingressi
2) attiva il pulsante (su o giu) per 0,3 sec. quando si chiude il contatto di salita o discesa
3) attiva il pulsante (stop) per 0,3sec quando si apre il contatto di salita o discesa
4) ricontrolla gli ingressi ...
 
nel circuito si utilizza il + come comune dei 2 ingressi (up, down)
Il telecomando è alimentato a 5v anche se prevedeva 2 pile a bottone per un totale di 6v.
I tasti del telecomando sono stati rimossi ma si possono vedere in sovraimpressione ed erano nell'ordine da sx,
giu - stop - su.
 
 
 
Listato programma in mikrobasic
program nice_myhome

'*************************************************************************
'*  ADATTATORE SEGNALE F411/2 (BTICINO) - TELECOMANDO EROGO1 (NICE)      *
'*                                                                       *
'*  PIC16F876 - 8MHZ - 2 INGRESSI - 3 USCITE                             *
'*************************************************************************
' Dichiarazioni

main:
ADCON1=6                                ' Configuro pin analiogici come digitali
TRISA =%111111                          ' Configuro la porta A come  ingressi
TRISB =%11111000                        ' porta B come 3 uscite, restanti come ingressi
TRISC =%11111111                        ' porta C come ingressi N/A
PORTB=0                                
' resetto la porta B

'Main program
while true

'Controllo ingresso up (RA0)
if (button(PORTA,0,1,1)) then
      PORTB = 1 'impulso salita (UP) per 0,3sec.
      Delay_ms(300)
      PORTB = 0
wh1:
    if (button(PORTA,0,1,1)) then
    goto wh1 'attesa fine inpulso salita
    end if
    PORTB = 2 'impulso stop
    Delay_ms(300)
    PORTB = 0
end if

'Controllo ingresso down (RA1)
if (button(PORTA,1,1,1)) then
      PORTB = 4 'impulso discesa (Down) per 0,3sec
      Delay_ms(300)
      PORTB = 0
wh2:
    if (button(PORTA,1,1,1)) then
    goto wh2 'attesa fine inpulso discesa
    end if
    PORTB = 2 'impulso stop
    Delay_ms(300)
    PORTB = 0
end if
wend

end.

 

 

 *Revisione 1

Come dicevo sopra.. il 16f876 è sprecato per questo utilizzo, ora che sono in possesso di un 12F509...

eccovi anche lo schema con questo pic con un prezzo poco superiore di 1Euro.

 

Schema del circuito con 12f509:


Stampato del circuito con 12f509:


Foto del circuito con 12f509:

 

Componenti:

 

 

/*
*******************************************************************
* ADATTATORE SEGNALE F411/2 (BTICINO) - TELECOMANDO EROGO1 (NICE) *
* --------------------------------------------------------------- *
* SCRITTO DA MIRCO GAGGIOTTINI  V.1.0                             *
*                                                                 *
* HW: PIC12C509                                                   *
* SW: 2 INGRESSI (GP0,GP1) - 3 USCITE (GP2,GP4,GP5)               *
*                                                                 *
* NOTE: TRASFORMA IL SEGNALE PROVENIENTE DA UN F411/2 IN IMPULSI  *
*       PER TELECOMANDI NICE SERIE ERGO                           *
*******************************************************************
*/

//definizioni
#define _XTAL_FREQ 4000000
#include<pic.h>
#include <htc.h>
__CONFIG(INTRC & WDTDIS & UNPROTECT & MCLRDIS);

//ritardo (valore * 10ms)
void delay (unsigned int msec)
{
 int i;
 for(i=0; i<=msec; i++) {
 __delay_ms(10);
 }
}

//impulso di stop 30ms a fine comando
void stopme (void)
{
GP4=1;
delay(35);
GP4=0;
delay(10); //attesa 100ms prima di ricontrollare
}

//************** MAIN ****************
void main (void)
{
OPTION=(0xC0);   // GP2 for i/o
TRIS = 3;
//imposto gpio0,gpio1 come ingressi, il resto come uscite (il gpio3 può fungere solo da ingresso se mclr è disabilitato)

//reset pin
GP0  = 0x00; // in up
GP1  = 0x00; // in down
GP2  = 0x00; // out up
GP3  = 0x00; // MCLR
GP4  = 0x00; // out stop
GP5  = 0x00;
// out down

 while(1)
  {
  //pulsante up > 350ms
  if (GP0==1) {
  GP2=1;
  delay(35);
  GP2=0;
  delay(5); // ritardo 50ms tra 2 pressioni
    while (GP0) //attesa fine salita
    {
    }
  stopme(); // impulso di stop
  }

  //pulsante down > 350ms
  if (GP1==1) {
  GP5=1;
  delay(35);
  GP5=0;
  delay(5); // ritardo 50ms tra 2 pressioni
    while (GP1)
    {
    }
  stopme();
  }
 } 

}

 

R2=R3=10Kohm (R1 non serve perché nel Pic è stato disabilitato il pin mclr)
R4=R5=R6=4,7Kohm
C1=100nF
T1=T2=T3=bc547
U1=pic12f509

Download:

Hex per Pic 12f509

Schema Pic 12f509

Hex per Pic 16f876

schema Eagle Pic 16f876

Date

11 April 2017

Tags

domotica, elettronica