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