TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Noelillo en 02 de Octubre de 2011, 04:02:41
-
Lee la rom del sensor Ds1820 y los datos los guarda en la memoria del pic (Eeprom).
Con estos datos, conectaremos más de 1 sensor por un mismo hilo. :shock:
'********************************************************************
Leer_Serial:
OWrite DQ,1,[$33] ' Read ROM, leer Serial
Regresa:
For Index = 0 To 7
ORead DQ,0,[SERIAL[Index]]
Next
MostrarSerial:
'1234567890123456
Print at 1,1,"1-Wire Found ",dec1 NumSensor
'Print at 2,1,"---------------"
DelayMS 1000
Leer:
X=1
For Index = 0 To 7
DelayMS 100
Print at 2,X, HEX2 SERIAL[Index]
Dato = SERIAL[Index]
Ewrite Posicion,[Dato.LOWBYTE]
x= X+2
Posicion = Posicion + 1
Next
DelayMS 1000
Cls
-
:-/ :-/
Una vez leido todos los sensores....
'****************************************************************
'**************************************************************************************
'************************* GRABACION DE SERIES EN EEPROM *****************************
''**************************************************************************
Edata $10,$12,$0E,$7F,$01,$08,$00,$83 'Número de serie del sensor 0
' Edata $10,$BE,$0F,$7F,$01,$08,$00,$6F 'Número de serie del sensor 1
' Edata $10,$C6,$58,$7F,$01,$08,$00,$92 'Número de serie del sensor 2
Edata $10,$A0,$51,$7F,$01,$08,$00,$10 'Número de serie del sensor 3
Edata $10,$74,$46,$7F,$01,$08,$00,$25 'Número de serie del sensor 4
Edata $10,$51,$4D,$7F,$01,$08,$00,$08 'Número de serie del sensor 5
' Edata $10,$F1,$49,$7F,$01,$08,$00,$4B 'Número de serie del sensor 6
' Edata $10,$66,$16,$70,$01,$08,$00,$1F 'Número de serie del sensor 7
Edata $10,$F4,$59,$F8,$00,$08,$00,$28 'Número de serie del sensor 8
'**************************************************************************
'****************************************************************
'**************************************************************************
:mrgreen: y con esto visualizaremos las temperaturas.... :D
Pass = 1
OtraVez:
fOR Sensor = 0 to 4 'Numero_de_sensores Quitar este 3 provisional
Sensor_por_8 = Sensor * 8 '....8
gosub Escribe_serie 'envía el código $55 seguido de los 8 bytes del número de serie
OWRITE DQ, 0,[$44] 'envía el código $44 de petición de conversión ADC
gosub Resete
gosub Escribe_serie
OWRITE DQ, 0,[$BE] 'Envía el código $BE para que se pueda leer el scratchpad
OREAD DQ,2,[Temp.LOWBYTE,Temp.HIGHBYTE,Cnt,Cnt,Cnt,Cnt,Cnt,Count_Per_Deg] 'Lee el scratchpad
Temp_Dec = (6.25 * Cnt)
Gosub Signo
select Pass
case 1
Print At 1,2, Sign, Dec Temp, ".", Dec DIG Temp_Dec, 1, g',"c"'**** 1 L ***
Case 2
Print At 1,10, Sign, Dec Temp, ".", Dec DIG Temp_Dec, 1, g',"c"'**** 1 - 1 L ***
Case 3
Print At 2,2, Sign, Dec Temp, ".", Dec DIG Temp_Dec, 1, g',"c"'**** 2 L ***
'Sala = Temp
case 4
Print At 2,10, Sign, Dec Temp, ".", Dec DIG Temp_Dec, 1, g',"c"'**** 2 - 2 L ***
Case 5
Print At 3,2, Sign, Dec Temp, ".", Dec DIG Temp_Dec, 1, g',"c"'**** 3 L ***
' case 6
' Print At 3,10, Sign, Dec Temp, ".", Dec DIG Temp_Dec, 1, g',"c"'**** 3 - 3L ***
' case 7
' Print At 4,2, Sign, Dec Temp, ".", Dec DIG Temp_Dec, 1, g',"c"'**** 4 L ***
' case 8
' Print At 4,11, Dec Temp, ".", Dec DIG Temp_Dec, 1, g',"c"'**** 3 - 3L ***
Pass = 1
endselect
Pass = Pass +1
Next
goto OtraVez
El numero de sensores es casi inf :( creo, no creo que nadie compre sensores con el mismo codigo... :shock:
Un saludete.... :-/ :-/
-
Coño que falta esto !!! :)
'_____________________________ temperatura ___________________________
Signo:
If Temp.8=1 Then
Temp=(Temp.LowByte ^ $FF) >> 1
If Cnt = 0 then Temp = Temp + 1
Sign = "-"
Else
Temp=(Temp >> 1)
Sign = " "
Temp_Dec = 100 - Temp_Dec
Endif
Return
Resete:
REPEAT
DELAYMS 25 ' Espera conversion
OREAD DQ,4,[Cnt] ' mantiene la lectura
UNTIL Cnt=0
Return
Escribe_serie:
OWRITE DQ, 1,[$55]
for Contador_eeprom = Sensor_por_8 to (Sensor_por_8 + 7)
OWRITE DQ, 0,[array[Contador_eeprom]]
next
return
:-/ :-/ :-/