Se sei già registrato           oppure    

Orario: 01/05/2024 11:11:59  

 

Energia Alternativa ed Energia Fai Da Te > PPTEA

VISUALIZZA L'ALBUM


PPTEA : CRONO-TERMOSTATO
FinePagina

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 21/12/2011,08:17

Questa è la realizzazione del CronoTermostato...l'applicazione più complessa realizzata ( da me) fino a questo momento. Consente di programmare 9 fasce orarie e applicarle all'interno della giornata. La modalità di programmazione, che utilizza 4 pulsanti, dovrebbe essere intuitiva mentre l'orario può essere messo mediante la porta USB (manca un comando di set dell'orario nel linguaggio...nella prox versione lo implementeremo).


Tutto si poggia sul PPTEA che utilizza :
1. l'orologio (DS1307)
2. eeprom esterna (24c16)
3. display (2x16)
4. sensore temperatura (lm35)
5. quattro pulsanti per la programmazione delle fasce orarie (programmazione, modifica, incrementa, decrementa)
6. un contatto che da il consenso alla caldaia ( pin 28)

Il codice va messo nella eeprom esterna perchè occupa 1530 Token (ricordarsi di mettere il flag su EXTERNAL EEPROM) ...mentre gli orari, la configurazione e la temperatura viene memorizzata nella eeprom del processore.

Il passo per portare questa applicazione a controllare una caldaia è breve.
faccine/biggrin.gif

CODICE
10 '----------------------------------------------------------------------------
20 'CRONO-TERMOSTATO FUNZIONANTE DALLA VERSIONE 2.1 PPTEA
30 '----------------------------------------------------------------------------
50 CONSTANT PULS_PROGR = 2
60 CONSTANT PULS_INCRE = 4
70 CONSTANT PULS_DECRE = 8
80 CONSTANT PULS_MODIF = 1
90 DIM MEM(20) as WORD ' UTILIZZO IL VETTORE PER LA MEDIA DELLA TEMPERATURA
100 CELL=254
110 TEMP_RIF=REEPROM*256.0
120 CELL=255
130 TEMP_RIF+=REEPROM
140 TEMP_RIF/=10
150 if TEMP_RIF <=99.0 then 170
160 TEMP_RIF=99.0
170 A=200
180 CLR PAG_PROG
190 LCDCLEAR
200 LCDWRITE="PPTEA"
210 IF A MOD 200 THEN 460
220 LCDPOS=&H23
230 A=DATE
240 LCDWRITE=A
250 '------ CALCOLO LA TEMPERATURA MEDIA DEGLI ULTIMI 20 VALORI
260 MEM(INDICE MOD 20 +1)=CADS1*4.9
270 INDICE++
280 CLR G
290 T=0.0
300 G++
310 T+=MEM(G)
320 if G<20 AND G<INDICE THEN 300
330 T/=G
340 T/=10
350 '--- FINE CALCOLO TEMPERATURA MEDIA
360 GOSUB  2420
370 IF TEMP_RIF >T AND ORA THEN 410
380 OUT=0
390 STATO=" "
400 GOTO  430
410 OUT=&H8000
420 STATO="*"
430 LCDPOS=&H19
440 LCDWRITE=STATO &" "& LEFT(T,4) &"ßC"
450 'GOSUB 2000 ' VERIFICO SE SONO IN UNA FASCIA ATTIVA
460 A++
470 GOSUB  1840
480 IF PULSANTE_PREMUTO=PULS_PROGR THEN 500 ELSE 210
490 '---SCELTA MENU'-----------
500 MENU++
510 CLR MODIFICA_ELEMENTO
520 IF MENU=1 then 570
530 IF MENU>=2 AND MENU<11 then 1880
540 IF MENU =11 then 2220
560 IF MENU = 12 THEN 900
570 LCDCLEAR
580 LCDWRITE="PROGRAMMAZIONE"
590 WAITS 1
600 LCDPOS=&H11
610 LCDWRITE="PROGR. TEMPER."
620 'WAITMS 100
630 CELL=254
640 WEEPROM=int(TEMP_RIF*10/256)
650 CELL=255
660 WEEPROM=int(TEMP_RIF*10) mod 256
670 LCDPOS=&H21
680 '
690 LCDWRITE="P="& left(TEMP_RIF&" ",4)
700 WAITMS 250
710 IF !MODIFICA_ELEMENTO THEN 780
720 '
730 IF BL MOD 10 THEN 780
740 BLINK=!BLINK
750 IF BLINK THEN 850
760 LCDPOS=&H20 + PSTART
770 LCDWRITE=BLCHAR
780 BL++
790 GOSUB  1840
800 IF PULSANTE_PREMUTO=PULS_INCRE  THEN 1340
810 IF PULSANTE_PREMUTO=PULS_MODIF  THEN 990
820 IF PULSANTE_PREMUTO=PULS_DECRE  THEN 1640
830 IF PULSANTE_PREMUTO=PULS_PROGR  THEN 500 ELSE 710
840 '
850 ' ------ BLINK
860 IF MENU>=2 AND MENU<=10 then 1910
870 IF MENU = 1  THEN 670
880 IF MENU = 11 THEN 2260
885 '

890 GOTO  790
900 '------ USCITA PROGRAMMAZIONE----
910 CLR MENU
920 LCDCLEAR
930 LCDWRITE="USCITA"
940 LCDPOS=&H23
950 LCDWRITE="PROGRAMMAZIONE"
960 WAITMS 512
970 GOTO  170
980 '---FINE USCITA PROGRAMMAZIONE----

990 '------ PRESSIONE PULSANTE MODIFICA
1000 CLR BL
1010 CLR BLINK
1020 MODIFICA_ELEMENTO++
1030 WAITMS 250
1040 IF MENU>=2 AND MENU<=10 THEN 1200
1050 IF MENU=1 THEN 1080
1060 IF MENU=11 then 1130
1065 IF MENU>=12 AND MENU<19 THEN 1191

1070 GOTO  1910
1080 '------- BLINK TEMP TERMOSTATO
1090 MODIFICA_ELEMENTO = 1
1100 PSTART=3
1110 BLCHAR="    "
1120 GOTO  710

1130 '-----MODIFICA PROG. GIORNALIERO
1140 'MODIFICA_ELEMENTO++
1150 if MODIFICA_ELEMENTO<=9 THEN 1170
1160 MODIFICA_ELEMENTO=1
1170 PSTART=7+MODIFICA_ELEMENTO
1180 BLCHAR=" "
1190 GOTO  710

1191 '-----MODIFICA PROG. SETTIMANALE
1192 'MODIFICA_ELEMENTO++
1193 if MODIFICA_ELEMENTO<=9 THEN 1195
1194 MODIFICA_ELEMENTO=1
1195 PSTART=7+MODIFICA_ELEMENTO
1196 BLCHAR=" "
1197 GOTO  710

1200 BLCHAR="  "
1210 if MODIFICA_ELEMENTO<5 THEN 1230
1220 MODIFICA_ELEMENTO = 1 ' RICOMINCIO DAL PRIMO ELEMENTO
1230 IF MODIFICA_ELEMENTO=1 THEN 1280
1240 IF MODIFICA_ELEMENTO=2 THEN 1300
1250 IF MODIFICA_ELEMENTO=3 THEN 1320
1260 PSTART=15
1270 GOTO  710
1280 PSTART=6
1290 GOTO  710
1300 PSTART=9
1310 GOTO  710
1320 PSTART=12
1330 GOTO  710

1340 '------INCREMENTO I VALORI SOTTO BLICK
1350 IF !MODIFICA_ELEMENTO THEN 780
1360 IF MENU = 1   THEN 1380
1370 IF MENU = 11  THEN 1540 ELSE 1420
1375 '

1380 TEMP_RIF+=0.1 '------- INCREMENTO TEMP. TERM.
1390 IF TEMP_RIF < 99 THEN 1410
1400 TEMP_RIF=99.0
1410 GOTO  630
1420 'DEVO INCREMENTARE IL PARAMETRO DELLE FASCIE
1430 SF=99+(MENU-2)*4+MODIFICA_ELEMENTO
1440 CELL=SF
1450 ORA=REEPROM
1460 IF !(MODIFICA_ELEMENTO MOD 2) THEN 1490
1470 IF ORA < 23 THEN 1510
1480 GOTO  1500
1490 IF ORA < 59 THEN 1510
1500 ORA=-1
1510 ORA++
1520 WEEPROM=ORA
1530 GOTO  1910
1540 'DEVO MODIFICARE LA PROGRAMMAZIONE GIORNALIERA
1550 SF=149+MODIFICA_ELEMENTO
1560 CELL=SF
1570 ORA=REEPROM
1580 IF ORA <> MODIFICA_ELEMENTO then 1610
1590 ORA=0
1600 GOTO  1620
1610 ORA=MODIFICA_ELEMENTO
1620 WEEPROM=ORA
1630 GOTO  2260

1640 '------DECREMENTO I VALORI SOTTO BLINK
1650 IF !MODIFICA_ELEMENTO THEN 780
1660 if MENU = 1 THEN 1680
1670 if MENU = 11 THEN 1540 ELSE 1720

1680 TEMP_RIF-=0.1 '------- DECREMENTO TEMP. TERM.
1690 IF TEMP_RIF > 0 THEN 1710
1700 TEMP_RIF=0.0
1710 GOTO  630
1720 'DEVO DECREMENTARE IL PARAMETRO DELLE FASCIE
1730 SF=99+(MENU-2)*4+MODIFICA_ELEMENTO
1740 CELL=SF
1750 ORA=REEPROM
1760 IF ORA > 0 THEN 1810
1770 IF !(MODIFICA_ELEMENTO MOD 2) THEN 1800
1780 ORA=24
1790 goto  1810
1800 ORA=60
1810 ORA--
1820 WEEPROM=ORA
1830 GOTO  1910
1840 '------ TORNO PRESSIONE PULSANTI
1850 PULSANTE_PREMUTO=(INP AND &H78)/8
1860 RETURN

1870 '--- FINE PRESSIONE PULSANTI
1880 '------ MENU FASCE ORARIE
1885 if MENU<>2 then 1910
1890 LCDCLEAR
1900 LCDWRITE="PROG. ON    OFF"
1910 LCDPOS=&H22
1920 SF=100+(MENU-2)*4
1930 CELL=SF
1940 ORA=REEPROM
1950 SF++
1960 CELL=SF
1970 MIN=REEPROM
1980 GOSUB  2120
1990 LCDWRITE="F"&int(MENU-1)&"  " & ORA &":" & MIN &" "
2000 SF++
2010 CELL=SF
2020 ORA=REEPROM
2030 SF++
2040 CELL=SF
2050 MIN=REEPROM
2060 GOSUB  2120
2070 LCDWRITE=ORA &":" & MIN
2080 'WAITMS 512
2090 GOSUB  1840
2100 GOTO  780
2110 '---FINE MENU FASCE ORARIE
2120 '------CHECK CONGRUITA' ORE MINUTI E ZERO INIZIALE
2130 ZERO="0"
2140 IF ORA< 24 then 2160
2150 ORA=0
2160 if MIN<60 THEN 2180
2170 MIN=0
2180 ORA=RIGHT(ZERO&ORA,2)
2190 MIN=RIGHT(ZERO&MIN,2)
2200 RETURN
2210 '--FINE CONGRUITA'
2220 '------ MENU PROGRAMMA GIORNALIERO
2230 LCDCLEAR
2240 LCDWRITE="PROG.GIORNALIERA"
2250 WAITMS 512
2260 LCDPOS=&H11
2270 LCDWRITE="FASCE  123456789"
2280 LCDPOS=&H21
2290 LCDWRITE="STATO  "
2300 SF=150
2310 CELL=SF
2320 ORA=REEPROM
2330 IF ORA <> SF-149 then 2360
2340 CAR="*"
2350 GOTO  2370
2360 CAR="_"
2370 LCDWRITE=CAR
2380 SF++
2390 IF SF< 159 then 2310
2400 WAITMS 200
2410 GOTO  780
2420 '------ CHECK ORARIO NELLE FASCE GIORNALIERE
2430 FDATE=4
2440 MIN=DATE
2450 'USBOUT="S="&MIN
2460 SF=150
2470 CELL=SF
2480 ORA=REEPROM
2490 IF ORA <> SF-149 then 2640
2500 SF2=99+(SF-150)*4+1 'E' SETTATA LA FASCIA E' COMPRESO NELL'INTERVALLO
2510 CELL=SF2
2520 SEC=REEPROM*3600
2530 SF2++
2540 CELL=SF2
2550 SEC+=REEPROM*60
2560 'USBOUT="F="& int(SF-149) &"->"&SEC & " "
2570 SF2++
2580 CELL=SF2
2590 ORA=REEPROM*3600
2600 SF2++
2610 CELL=SF2
2620 ORA+=REEPROM*60
2630 IF MIN>=SEC AND MIN<ORA THEN 2690
2640 SF++
2650 IF SF< 159 then 2470
2660 ' FINE TEST
2670 CLR ORA
2680 GOTO  2700
2690 SET ORA
2700 FDATE=0
2710 USBOUT="RF="& ORA
2720 RETURN


Quanto prima lo schema e un video dimostrativo.
Bolle




Modificato da NonSoloBolleDiAcqua - 21/12/2011, 08:34


---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

PinoTux

Avatar
GigaWatt


Gruppo:AMMINISTRATORE
Messaggi:3509

Stato:



Inviato il: 21/12/2011,09:44

Ciao Bolle!
Spero di riuscire a starti dietro!
Almeno per le Feste rallenta un po' o dovrò fare gli straordinari festivi. faccine/laugh.gif faccine/laugh.gif



---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"
http://iv3gfn.altervista.org/
http://pptea.altervista.org/

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 21/12/2011,13:48

A dire il vero volevo fare anche la possibilità di impostare il cronotermostato in tutti i giorni della settimana...cioè il lunedì fa una cosa, il martedì un'altra....etc...utile per i fine settimana...forse la faccio.
Insomma sto facendo qualche esempio pratico...per far capire sia il linguaggio che le potenziaklità...tanto per divertirmi...tanto le cose
serie devono ancora arrivare....ma occhio che i tempi sono maturi!!!
Bolle



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

titone78

Avatar
MegaWatt


Gruppo:Utente
Messaggi:502

Stato:



Inviato il: 21/12/2011,21:51

ciao bolle sei un grande
in settimana nuova appena ho tempo mi reco in citta e vado a recuperare i componenti necessari,ti chiedo una cortesia,sempre se hai tempo,mi puoi dare una lista dei componenti necessari?
ma pptea funziona anche su linux?

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 21/12/2011,22:07

No, niente linux...solo Bill Gates.
La lista dipende da cosa vuoi farci...spero non ti accontenterai di un semplice termostato o cronotermostato...vero?Cmq fai tu.
Bolle



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

titone78

Avatar
MegaWatt


Gruppo:Utente
Messaggi:502

Stato:



Inviato il: 21/12/2011,22:12

quindi mi tocca usare il pc con bill,conosci nessuno che lo ha fatto girare su wine?
la lista te lo scritta sul mio thread,quando puoi dai un'occhiata

 

PinoTux

Avatar
GigaWatt


Gruppo:AMMINISTRATORE
Messaggi:3509

Stato:



Inviato il: 21/12/2011,22:53

CITAZIONE
......
......
Quanto prima lo schema e un video dimostrativo.
Bolle

Sto preparando la pagina...
Appena posti lo schema completo il tutto, wattmetro compreso.
Ciao
Pino



---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"
http://iv3gfn.altervista.org/
http://pptea.altervista.org/

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 23/12/2011,09:58

Schema del crono-termostato.
ForumEA/us/img845/651/cronotermostato.jpg


Bolle






---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

PinoTux

Avatar
GigaWatt


Gruppo:AMMINISTRATORE
Messaggi:3509

Stato:



Inviato il: 23/12/2011,17:30

faccine/clap.gif
Serve sempre la resistenza di pull-down sul pin di uscita del LM35?
Penso di si, se puoi confermare così completo il tutto.
Ciao
Pino



---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"
http://iv3gfn.altervista.org/
http://pptea.altervista.org/

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 23/12/2011,17:31

No, non è detto...se oscillano i valori...allora si mette....altrimenti non serve.


Ciao
Bolle




Modificato da NonSoloBolleDiAcqua - 23/12/2011, 18:09


---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 
 InizioPagina
 

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum