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:
Come visibile dallo schema, il circuito è semplice..
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();
}
}
}
Download: