M10 e Tandy 102 - Misura e trasmissione in CW della Temperatura
Eseguire delle misure di varie grandezze fisiche è senz'altro abbastanza facile per chi
utilizza i microcomputer, in questo progetto descrivo un'altro sistema valido per leggere
la temperatura della sonda LM135/235/335 che utilizza alcune caratteristiche del famoso 555.
A differenza del circuito del volmetro elettronico, dove occorre un bit di comando e uno di
lettura di un comparatore, in questo caso è sufficiente usare solo un bit di lettura (D6).
Più alta è la tensione presente sul pin 5 del 555 e più dura l'impulso positivo presente in
uscita sul pin 3. Il programma in linguaggio macchina si sincronizza sulla pausa del segnale
e poi conta la durata dell'impulso mentre il Basic esegue le necessarie conversioni per
poter leggere sul display in gradi centigradi, (con un decimale) la temperatura misurata
dalla sonda.
La riga 20 la si attiva solo per lo sviluppo dei corretti parametri per il calcolo della
riga 21 o 22 nel caso che si utilizzi quarzi diversi per il clock dell'M10.
I valori sono abbastanza precisi per le due frequenze menzionate, comunque dipendono anche
dalla tensione di lavoro del circuito con il 555.
Ora aggiungo un'altro semplice circuito per comandare un trasmettitore in CW.
Anche lo schema del trasmettitore è pronto.
Come si vede dal listato del programma, la trasmissione avviene in modo continuo dei gradi con
un decimale. Per semplificare il programma il punto decimale e lo zero vengono trasmessi con la
lettera (T). Se ad esempio la temperatura è di 9,3 gradi/C la trasmissione sarà: 9T3T.
Se invece fosse ad esempio di 13,5 gradi/C, la trasmissione sarà: 13T5.
Conoscere il decimale della temperatura permette di capire presto, quale sia la tendenza di
variazione durante la giornata.
La riga (24) fa iniziare la trasmissione ogni giorno alle 8 e la ferma alle 24.
1 CLEAR200,61997
2 U=186:X=103:P=231'X-TX, P-PAUSA
3 DIM D$(10):RESTORE100
5 FORF=62000TO62034:READA:POKEF,A:NEXT
8 RESTORE10:FORF=0TO9:READD$(F):NEXT
10 DATA "-----",".----","..---","...--","....-",".....","-....","--...","---..","----."
14 CLS
15 CALL62000
19 V=256*PEEK(62150)+PEEK(62151)
20'PRINT@54,V;" ";:GOTO15'RIGA DI PROVA
21 N=INT(V/10)-4100:N=INT(N/2)/10'QUARZO DA 6 MHZ
22'N=INT(V/10)-4870:N=INT(N/2.24)/10'QUARZO DA 7,2 MHZ
23 PRINT@54,"T=";N;" ";
24 T$=TIME$:B=VAL(MID$(T$,1,2)):IF B<8 THEN 15
25 V$=STR$(N)
27 FOR C=1TO4:K=VAL(MID$(V$,C+1,1))
28 IF K=0 THEN FOR G=1TO55:NEXT:GOSUB 60:FOR G=1TO56:NEXT:GOTO38
30 N$=D$(K)
32 FOR M=1TO5
33 IF MID$(N$,M,1)="-" THEN GOSUB 60
35 IF MID$(N$,M,1)="." THEN GOSUB 70
37 NEXT M: FOR G=1TO50:NEXT G
38 REM
40 NEXT C:FOR G=1 TO 1000:NEXT:GOTO 15
60 FOR F=0TO31:OUTU,X:NEXT:FOR F=0TO11:OUTU,P:NEXT:RETURN
70 FOR F=0TO10:OUTU,X:NEXT:FOR F=0TO11:OUTU,P:NEXT:RETURN
100 DATA 243,33,198,242,1,0,0,30,64,219,208,163,194,57,242,
219,208,163,202,63,242,219,208,163,3,0,0,194,69,242,112,35,
113,251,201
Listato Assembler 8085/Z80 per lettura sonda Temperatura con frequenza a ciclo variabile
ORIGINE = 62000
DI ;DISABILITA INT.
LD HL,62150 ;HL = MEMORIA REG. BC
LD BC,0 ;CONTATORE A ZERO
LD E,64 ;E = RIFERIMENTO PER D6
ALTO: IN A,208 ;LEGGE DATO
AND E ;CONTROLLO D6
JPNZ ALTO ;ASPETTA SE D6 = 1
BASSO: IN A,208
AND E
JPZ BASSO ;ASPETTA SE D6 = 0
SEG: IN A ,208 ;LETTURA SEGNALE
AND E
BC+1 ;CON D6 = 1 BC = BC + 1
NOP ;RITARDO AGGIUNTO SOLO PER
NOP ;QUARZO DA 6 - 7 MHZ
JPNZ SEG ;FINE SE D6 = 0
LD (HL),B ;SALVA BC IN 62150 E 51
HL+1
LD (HL),C
EI ;ATTIVA INT
RET ;TORNA AL BASIC
Nota: Il piccolo circuito con il 555 in oscillazione si può alimentare con la tensione
prelevata dal pin (9+) e (5,7-) della porta BCR, in tal caso conviene scollegare
il led dal circuito per ridurre il consumo di corrente.
Per attivare D6 e D5 della porta 208 in lettura e portarli sul connettore BCR, vedi
l'articolo sul Bus I2C.
Buoni esperimenti con i vecchi Pc, Emilio - ik1wjq
Vai a pagina1