Menu:

Sensore di Temperatura

Questa è la discussione originale.

Questo progettino è la prima applicazione del PPTEA.
Viene utilizzato il pic 18F2550 e un sensore di temperatura LM35 ( sembra un transistor dal costo di circa 2 Euro).
Il circuito si alimenta mediante la porta USB e quindi non ha bisogno di trasformatore o altro e sfruttando uno dei quattro convertotori disponibili sul EABASIC (una decina di istruzioni) invia i dati al pc ogni secondo.
Sul Pc viene fatto girare un programma che si interfaccia al PIC (PCUSBTempSensor.exe) V1.1 che visualizza la temperatura.
Nell'allegato sono disponibili il file .hex per il PIC, il sorgente in VB6 e l'eseguibile per il sensore di temperatura.
L'hex nella eeprom contiene già il programma .eab del sensore di temperatura.
Lo scambio dati PIC/PC è fatto in modalità pacchetto...cioè ad ogni pacchetto (8 byte) è contenuto lo start il valore della temperatura lo stop e la checksum, tutto questo per evitare eventuali errori sullo scambio dei dati.

ATTENZIONE: Se il valore della temperatura letta non è stabile, l'uscita dell'LM35 potrebbe richiedere una resistenza di pull-down (range 40-400k)

Scarica Allegato - Contiene la V1.1 PCUsbTempSensor.exe, il .hex per il PIC e il sorgente VB6.
Scarica Driver USB - DriverBootloader_Xp.zip


Riporto il codice scritto in EABASIC, il codice vero e proprio parte dalla linea 91 fino alla 120:

5 '-----------------AUTORE NonSoloBolleDiAcqua-------------
10 REM ------ SENSORE TEMPERATURA PER PC ----
12 REM -------( http://energiaalternativa.forumcommunity.net/?t=39561923 )
15 'PROGETTO REALIZZATO MEDIANTE IL PPTEA
16 '( http://energiaalternativa.forumcommunity.net/?t=39326016 )
17 ' Processore utilizzato PIC 18F2550
20 'SENSORE DI TEMPERATURA UTILIZZATO: LM35
80 '-------------------------------------------------------------------------
90 '-------------------------CODICE EABASIC---------------------------
91 PSTART=22
92 PSTOP=33
93 TEMP=CADS2
94 USBOUT=PSTART
95 USBOUT=TEMP 'Invio la temperatura
96 USBOUT= PSTOP
97 USBOUT= PSTART+PSTOP+TEMP ' CHECKSUM
110 WAITS 1 ' Attendo un secondo tra una lettura
120 goto 93

SPIEGAZIONI:

Sia Pic che Sensore vengono alimentati dalla porta USB del PC.
Il Pic18F2550 dovrà aver precaricato il Firmware PPTEASensoreTemperatura.hex che trovi dopo aver scompattato il file PCUsbTempSensor.zip.
Il sensore di temperatura LM35 ha 3 piedini:
1. Alimentazione (+5 presa dalla usb)
2. Massa (sempre della usb)
3. Uscita (pin tensione che indica la temperatura.
La tensione del sensore è proporzionale alla temperatura con una variazione di 10 mv per grado centigrado
Ad esempio, se la temperatura del sensore è a 26.7°, la sua uscita avrà un valore di 0,267V
Il sensore è collegato al secondo convertitore Analogico Digitale (pin 3 del pic)
Il convertitore del pic effettua una conversione a 10 bit ( 0-> 0 V , 1023-> 5v)
quindi il valore letto dal convertitore è CADS2=V/5*1023 mentre la v (funzione inversa) è V=CADS2*1023/5
Il valore della temperatura viene inviato mediante un paccchetto composto da START-STOP e CHECKSUM,
questo per evitare errori di lettura dovuti alla trasmissione dati.
Il valore del pacchetto viene ricevuto da un programma che gira su PC e visualizza il valore.



Sensore Temperatura Stand-Alone con LCD

Richiede il Firmware Versione 2.0 o superiore.



Dopo aver implementato nel PPTEA il display la prima applicazione era d'obbligo il sensore di temperatura in grado di fungere da solo.
L'out del sensore LM35 viene collegato al pin 2 del pic (bit 0 del PPTEA) con una resistenza di pulldown di 40 k, il display deve essere collegato come da schema presente nella documentazione ed è cosa fatta.
Il programma non visualizza la temperatura istantanea ma fa la media degli ultimi 20 valori memorizzati utilizzando il vettore MEM.
Il display parte con la scritta "SENSORE TEMPERATURA" e dopo un attesa di un secondo visualizza nella prima riga "VIVA IL PPTEA" e nella seconda riga la temperatura che si aggiorna.

Questa è la discussione.

Questo è il file ".eab" del Sensore Temperatura Stand-Alone.
Scarica il file (ZIP)

Questo è il filmato:


Questo è il codice:

10 DIM MEM(20) as WORD
12 GOSUB 300 ' SALTO ALLA PRESENTAZIONE
15 VAL=CADS1
16 'USBOUT=VAL &"*"
20 TEMP=VAL*5.0/1023
21 TEMP*=100
22 'USBOUT="I="&TEMP & "/"
23 IND=(INDICE mod 20) +1
24 MEM(IND)=TEMP *10
25 INDICE++
26 GOSUB 100 'FACCIO LA MEDIA
27 'h++
28 STRTEMP=left(T&"",4)
30 'USBOUT="T="&STRTEMP & chr(223)&"C"
33 LCDPOS=&H26
34 LCDWRITE=STRTEMP
35 WAITS 1
40 goto 15

100 '----CALCOLA LA MEDIA DEGLI ULTIMI VALORI
110 G=0
120 T=0.0
125 G++
130 T+=MEM(G)
150 if G<20 then 250
200 T/=G
220 T/=10
240 return
250 if G<INDICE then 125 else 200
300 '----PRESENTAZIONE
305 LCDCLEAR
310 LCDPOS=&H11
315 LCDWRITE="SENSORE"
317 LCDPOS=&H23
318 LCDWRITE="TEMPERATURA"
320 WAITS 1
325 LCDCLEAR
330 LCDPOS=&H11
350 LCDWRITE="-VIVA IL PPTEA-"
360 LCDPOS=&H21
365 LCDWRITE="TEMP:XX.X"&chr(223)&"C"
366 WAITMS 250
367 SETIO=&H7F
370 RETURN



Ovviamente il display funge anche senza PC...come è ovvio che sia!



Valid XHTML 1.0 Strict



[ Back to top ] [ Home ]