| PinoTux
| Inviato il: 4/2/2012,23:10
|
CITAZIONE (NonSoloBolleDiAcqua @ 4/2/2012, 22:14) Ho lasciato il PPTEA da solo con il sw scritto da PinoTux, ovviemente libero di fare quello che voleva...cioè sensa sensori...quando sono tornato ho trovato questo bel disegnino...che carino...è il primo disegno che fa!
Bolle
Veramente l'ho solamente modificato, l'originale era tuo, l'ho trovato .
Questo è il file eab che manda al grafico i 5 valori, i primi tre di temperatura e gli ultimi due di tensione, modificando la riga 420 sostituire il valore "15.0" con il fondoscala voluto, all'atto pratico bisogna usare un partitore all'ingresso del CAD in modo da non superare mai i 5V.
Usa pure un LCD 16 colonne x 4 righe...
10 PRAGMA EXTERNAL_EEPROM
15 ' SETIO=&H100FF ' il 16 BIT (partendo da 0 ) identifica la modalità libera del display
20 cads=5
25 ' ----------------------------
30 lcdclear
35 lcdwrite="PPTEA - LCD 4x16"
40 lcdpos=33
45 lcdwrite="Monitor Temp."
50 lcdpos=55
55 lcdwrite="e Tensione"
60 waits 3
65 ' ----------------------------
66 CLR a,t,T1,T2,T3,T4,T5
70 PSTART=22
75 PSTOP=33
80 ' ----------------------------
85 lcdclear
90 ' ----------------------------
95 t=cads1
100 T1=t
105 gosub :TornaTemperatura
110 ' lcdclear
115 lcdpos=22
120 lcdwrite=" "&chr(223)
125 lcdpos=17
130 lcdwrite="A="&strtemp
135 ' ----------------------------
140 t=cads2
145 T2=t
150 gosub :TornaTemperatura
155 lcdpos=38
160 lcdwrite=" "&chr(223)
165 lcdpos=33
170 lcdwrite="B=" &strtemp
175 ' ----------------------------
180 t=cads3
185 T3=t
190 gosub :TornaTemperatura
195 lcdpos=54
200 lcdwrite=" "&chr(223)
205 lcdpos=49
210 lcdwrite="C="& strtemp
215 ' ----------------------------
220 t=cads4
225 T4=t
230 gosub :TornaTensione
235 lcdpos=31
240 lcdwrite=" V"
245 lcdpos=25
250 lcdwrite="V1="& strtens
255 ' ----------------------------
260 t=cads5
265 T5=t
270 gosub :TornaTensione
275 lcdpos=47
280 lcdwrite=" V"
285 lcdpos=41
290 lcdwrite="V2="& strtens
295 ' ----------------------------
300 USBOUT=PSTART
305 USBOUT=T1 'Invio il valore del convertitore 1
310 USBOUT=T2 'Invio il valore del convertitore 2
314 USBOUT=T3 'Invio il valore del convertitore 3
317 USBOUT=T4 'Invio il valore del convertitore 4
319 USBOUT=T5 'Invio il valore del convertitore 5
321 USBOUT= PSTOP
325 USBOUT= PSTART+PSTOP+T1+T2+T3+T4+T5 ' CHECKSUM
330 WAITS 1 ' Attendo un secondo tra una lettura
335 ' ----------------------------
336 a++ ' stampa i passi di misura, serve per controllare che non si blocchi
337 lcdpos=65
338 lcdwrite=""&a
340 lcdpos=80 ' stampa alternativamente un "+" ed un "-" ...come sopra
345 lcdwrite="+"
350 waitms 500
355 lcdpos=80
360 lcdwrite="-"
365 waitms 200
370 ' -----------------------------
375 goto 95
380 ' -----------------------------
385 :TornaTemperatura
390 temp=t*5.0/1023
395 temp*=100
400 strtemp=left(temp&"",4)
405 return
410 ' ------------------------------
415 :TornaTensione
420 tens=t*15.0/1023
425 ' tens*=100
430 strtens=left(tens&"",4)
435 return
--------------- "Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza" http://iv3gfn.altervista.org/ http://pptea.altervista.org/
| | | | NonSoloBolleDiAcqua
| Inviato il: 5/2/2012,11:40
|
Questo è il codice compresso, riadattato e modificato da Pino...si utilizzano vettori, dati etc...è molto compatto e fluido...ma solo se si conosce un minimo di programmazione strutturata. Non è imortante come si scrive il codice...l'importante è che funzioni!!!
Bolle
01 ' PROGRAMMA INVIO DATI AL DISPLAY E AL PC VERSIONE 2.5 o SUCCESSIVE
05 DIM VTEMP(5) AS WORD
07 PRAGMA EXTERNAL_EEPROM
10 '-------------------- DATI -------
11 DATA 17,"PPTEA - LCD 16x4", 33,"Monitor Temp.",55,"e Tensione"
13 DATA 22," ß",17,"A=",38," ß",33,"B=",54," ß",49,"C=",31," V",25,"V1="
14 DATA 47," V",41,"V2="
15 '-------------------- FINE DATI -------
19 ' SETIO=&H100FF ' Per Display Gestito dell'utente
20 '--------------- COSTANTI ------
21 CONSTANT PSTART=22
22 CONSTANT PSTOP=33
23 '-----------FINE COSTANTI ------
24 CADS=5 'SI UTILIZZANO TUTTI I CONVERTITORI A/D
25 '------- PRESENTAZIONE
30 REPEAT
31 READ POS,RIGA
35 GOSUB :VISUALIZZA_RIGA
36 PR++
40 UNTIL PR<3
58 '--- FINE PRESENTAZIONE
60 WAITS 3
85 LCDCLEAR
90 '----- INIZIO PROGRAMMA
91 REPEAT
92 CLR SENSORE
93 REPEAT
95 SENSORE++
111 READ POS,RIGA
121 GOSUB :VISUALIZZA_RIGA
122 READ POS,RIGA
124 GOSUB :TornaTemperaturaOTensione
125 GOSUB :VISUALIZZA_RIGA
130 UNTIL SENSORE<5
135 GOSUB :TEMP_SEND_USB
140 RESTORE 13
250 UNTIL 1
300 '----- FINE PROGRAMMA
380 ' -----------------------------
385 :TornaTemperaturaOTensione
387 VTEMP(SENSORE)=CADSIND(SENSORE)
390 TEMP=VTEMP(SENSORE)*5.0/1023
391 if SENSORE >3 then :NO_MOLT_100
395 TEMP*=100
400 :NO_MOLT_100 RIGA=RIGA & left(TEMP&"",4)
405 return
410 '------------------------------
430 '-----------------------------
440 :TEMP_SEND_USB
450 USBOUT=PSTART ' INVIO LO START
460 SET S
470 SOMMA=PSTOP+PSTOP
480 REPEAT
510 USBOUT=VTEMP(S)
520 SOMMA+=VTEMP(S)
530 S++
540 UNTIL S<=5
550 USBOUT=PSTOP ' INVIO LO STOP
560 USBOUT=SOMMA ' INVIO LA CHECKSUM
565 WAITS 1
570 ' incremento il contatore ed effettuo il polling +/-
636 CONTA++
637 LCDPOS=&H41
638 LCDWRITE=""&CONTA
640 LCDPOS=&H4F
645 LCDWRITE="+"
650 WAITMS 500
655 LCDPOS=&H4F
660 LCDWRITE="-"
665 WAITMS 200
670 RETURN
799 '----------------------------
800 :VISUALIZZA_RIGA
810 LCDPOS=POS
835 lcdwrite=RIGA
850 RETURN
--------------- Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux). Un risultato se non è ripetibile non esiste (by qqcreafis).
| | | | titone78
| Inviato il: 9/2/2012,21:41
|
ciao a tutti,finalmente sono riuscito a finire la prima scheda pptea con i 5 sensori temperatura e i il grafico,collegato alla stufa questo e i risultato,i cinque sensori sono:
blu=uscita scambiatore
rosso=entrata scambiatore
verde=accumulo primario
arancio=accumulo secondario
azzurro=temperatura ambiente
grazie a tutti del supporto.
Modificato da NonSoloBolleDiAcqua - 27/10/2014, 18:16:16
| | | | | | | titone78
| Inviato il: 9/2/2012,22:35
|
ciao pino,si molto utile,io adesso uso degli lm35dz ma le temperature negative non riesco o non capisco come misurarle......come dicevo a bolle il mio prossimo obbiettivo e riuscire a leggere le sonde pt100,e poi le sonde k. in casa oltre alle sonde ho anche degli ua741 ma ancora non ho avuto tempo per capire come usarli.
| | | | PinoTux
| Inviato il: 10/2/2012,13:18
|
Per la misura delle temperature negative ho usato un LM335H che ho trovato casualmente fra le mie cianfrusaglie, ha la particolarità che questo di dà in uscita 10mV x grado Kelvin... per convertire la lettura in °centigradi basta sottrarre 273.15 dal valore che ottieni per LM35
Questo è un esempio delle subroutine che ho già pubblicato da qualche parte:
385 ' :TornaTemperatura
390 temp=t*5.0/1023
395 temp*=100
400 strtemp=left(temp&"",4)
405 return
410 ' ------------------------------
500 ' :TornaKelvin ' da usare con LM335 10mV per °Kelvin
510 v=t*5.0/1023 ' è importante la precisione dei 5.0V, 100mV di differenza portano ad un errore elevato.
520 v*=100
530 temp=(v)-273.15 ' ° Centigradi
540 strtemp=left(temp&"",5)
550 return
però bisogna calibrarlo, io l'ho fatto per comparazione con LM35, il circuito consta di una resistenza da 1500-2000 ohm ed un trimmer multigiri da 10K.
Bolle ha già preparato un programma grafico per visualizzare sia la scala con lm35 che quella con lm335 che prevede la misura fino a -30°.. so che ci sta lavorando per ulteriori modifiche e vediamo quando troverà il tempo....
Se qualcuno fosse interessato penso che Bolle non abbia nulla in contrario al fatto che (io) la possa pubblicare....
Saluti
PinoImmagine Allegata: lm335
--------------- "Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza" http://iv3gfn.altervista.org/ http://pptea.altervista.org/
| | | | jumpy75
| Inviato il: 10/2/2012,13:40
|
Ciao Pino, hai trovato veramente un bel sensore di Temperatura. Sono andato a vedere le specifiche e legge temperatura da -60°C fino a 180°C!
Certo, a differenza del LM35 costa il doppio, però avere anche una temperatura negativa non ha prezzo!!!
| | | | PinoTux
| Inviato il: 10/2/2012,13:55
|
Si, ma quei valori dipendono dal tipo di polarizzazione, variando la resisternza serie cambi la corrente e sposti il range verso il basso o verso l'alto...così mi sembra di aver capito, comunque sto facendo delle prove... in questo momento mi segna 0.0°C, aspetto questa sera che dovrebbe scendere bene, poi lo comparo con la stazione Oregon che però sta un piano più in basso...ora sono in soffitta, ma a scanso di equivoci..la sonda è all'esterno...
P.S. Sarebbe interessante provare LM50...chi si offre volontario?
Comunque posto il programma grafico di Bolle, è la versione 1.6
--------------- "Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza" http://iv3gfn.altervista.org/ http://pptea.altervista.org/
| | | | MarKoZaKKa
| Inviato il: 17/2/2012,10:10
|
@bolle, un consiglio: io sviluppo le mie applicazioni, usando il VBA di Office... per la comunicazione RS232, uso il controllo MSComm, che però è affetto da un baco di sicurezza e quindi l'aggiornamento KillBits di windows me lo tarpa ogni volta, costringendomi a ri-settare la chiave del registro. Sai di qualche altro controllo per la comunicazione seriale, free e funzionante utilizzabile con VBA?
--------------- Tecnico qualificato in clownerie Windsurfer a tempo perso Slalomaro senza speranze
| | | | NonSoloBolleDiAcqua
| Inviato il: 17/2/2012,10:19
|
Hahahahha...io uso la seriale senza liberie di sistema...con la CreateFile...me la canto e me la suono...questo è un esempio...vedi se riesci a farlo con VBA...sicuremente qualcuno avrà già fatto un lavoro del genere...ma ora non ho tempo per seguirti...tra qualche giorno...devo chiudere il PPTEA!!!
Se hai fatto già un'applicazione...perchè non la posti?
CODICE hCom = CreateFile(TCOM.Text, GENERIC_READ Or GENERIC_WRITE, _ 0, 0&, OPEN_EXISTING, 0, 0) If hCom = INVALID_HANDLE_VALUE Then ERRORE_APERTURA = True Command13.Enabled = False Exit Sub End If fSuccess = GetCommState(hCom, dcbVar) If fSuccess = False Then ERRORE_APERTURA = True Command13.Enabled = False Exit Sub End If
dcbVar.BaudRate = 19200 'tVelocita.Text dcbVar.ByteSize = 8 'Tsize.Text dcbVar.Parity = 0 'Tparita.Text dcbVar.StopBits = 0 'Tstop.Text
--------------- Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux). Un risultato se non è ripetibile non esiste (by qqcreafis).
| | | | MarKoZaKKa
| Inviato il: 17/2/2012,10:37
|
... troppo difficile per me, nn sono un programmatore... le applicazioni le ho fatte... per scaricare la memoria di uno strumento che uso sul lavoro, non per il PPTEA, ma (come avrai intuito) adesso voglio connettermi col PPTEA... appena realizzo, posto (visto il weekend...) Sviluppa il PPTEA... non ho (mai) fretta... ho ancora la visione dei forum, della mail e di internet degli albori, non mi aspetto risposte immediate (se le voglio, telefono, non mando messaggi!) Bye!
--------------- Tecnico qualificato in clownerie Windsurfer a tempo perso Slalomaro senza speranze
| | | | NonSoloBolleDiAcqua
| Inviato il: 17/2/2012,11:15
|
CITAZIONE (MarKoZaKKa @ 17/2/2012, 10:37) ... troppo difficile per me, nn sono un programmatore... lo dici a me...io sono un elettricista
--------------- Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux). Un risultato se non è ripetibile non esiste (by qqcreafis).
| | | | MarKoZaKKa
| Inviato il: 17/2/2012,13:45
|
...nocomment...
--------------- Tecnico qualificato in clownerie Windsurfer a tempo perso Slalomaro senza speranze
| | | | manuuu
milliWatt Gruppo:Utente Messaggi:24
Stato:
| Inviato il: 8/6/2012,10:38
|
Ho un problema con lo scambio dati con pc!
sul pptea ho il seguente codice
10 gg=usbinp 20 usbout=gg&"" 25 waitms 50 30 goto 10
sul pc con vb 2008 EE ho questo codice:
Private Sub btnUSBIO_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUSBIO.Click Dim usbout() As Byte = {10} serialPort.Write(usbout, 0, usbout.Length) txtUSBIO.Clear() txtUSBIO.Text = inputData End Sub
Ma visualizzo sempre 63
Ho provato anche cosi: pptea
10 gg=usbinpstr 20 usbout=gg&"" 25 waitms 50 30 goto 10
vb Private Sub btnUSBIO_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUSBIO.Click serialPort.Write("Hello Word" txtUSBIO.Clear() txtUSBIO.Text = inputData End Sub
ma il risultato è sempre 63
AIUTOOOOOO!!
| | | | NonSoloBolleDiAcqua
| Inviato il: 8/6/2012,10:51
|
Il codice nel PPTEA...fa quello che penso tu voglia fare, cioè invia la stringa ricevuta dal PC...anche se è meglio che non la invii se non riceve nulla cioè len(gg) = 0 non deve inviare nulla.
CODICE 10 gg=usbinpstr 15 if ! len(gg) then 25 20 usbout=gg&"" 25 waitms 50 30 goto 10
Invece ho qualche perplessità sul codice vb2008 che hai scritto...utilizzi una inputData che non dovrebbe andar bene ....perchè se ottieni 63 'rimbalza' un byte. Devi utilizzare una funzione che invii una stringa. Inoltre hai tutti i mezzi per capire se il PPTEA riceve la stringa...visualizza ( mediate il debbugger) la lunghezza della stringa in arrivo...e poi reinviala: il debug del PPTEA non mente...oppure utilizza un display nel PPTEA...anche lui non mente. Spero di essere stato chiaro. Ciao Bolle
--------------- Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux). Un risultato se non è ripetibile non esiste (by qqcreafis).
| |
| | |
|
Versione Mobile!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|