Autor Tema: Mini Estacion Meteorologica ( presion + temp )  (Leído 4934 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado sanpic

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 430
Mini Estacion Meteorologica ( presion + temp )
« en: 01 de Septiembre de 2005, 09:50:00 »
Hola amigotes.
Aca les dejo el codigo , de mi modestisimo proyectito , funciona bien.   Esta hecho en Proton+ .
Si  a alguien le interesa  practicar y le sirve , me alegraria mucho. Un abrazo a todos y muchisimas gracias a todos.  Son de lo mejor.  Giño

********************************************************************

" Lectura del sensor de Presion MPX4115A de la casa Motorola ( samples en
" www.freescale.com )
"
" Pic = 18f452 a 4MZ // Presion = MPX4115A // RTC = DS1337  // Temp. = DS1821
"
" Conexion del MPX4115A ( Pin1 a Pin2 de 18f452 ; Pin2 a GND ; Pin 3 a +5V ;
"                           Pin4 NC, Pin5 NC, Pin6 NC )
"
" Conexion del DS1337 ( Pin1 a Pin2 mediante XT ; Pin3 NC � +5V mediante res pullup
" (Alarma1) ; Pin4 a GND ; Pin5 a +5V mediante res pullup ; Pin6 a +5V
" mediante res pullup ; Pin7 NC � +5V mediante res pullup (Alarma2); Pin8 a VCC )
"
"
" Conexion del DS1821  ( Pin1 a GND, Pin2 a Pin16 del 18F452 mediante res pullup ,
" Pin3 a VCC
"
" Espero les sirva de algo.    Sanpic  Angelito


          
      @CONFIG_REQ
      @__CONFIG CONFIG1H, OSCS_OFF_1 & XT_OSC_1
      @__CONFIG CONFIG2L, BOR_ON_2 & BORV_20_2 & PWRT_ON_2
      @__CONFIG CONFIG2H, WDT_OFF_2 & WDTPS_128_2
      @__CONFIG CONFIG3H, CCP2MX_ON_3
      @__CONFIG CONFIG4L, STVR_ON_4 & LVP_OFF_4 & DEBUG_OFF_4


   
          Include "PROTON18_4.INC"
      
      
          ADIN_RES   10               " Establecer resolucion de 10 bits
        ADIN_TAD   FRC               " Uso RC osc para tomar muestras del ADC
          ADIN_STIME   100                 
      
        Dim ADC_Valor    as Word         
      Dim Valor       as Word
          Dim Volts       as Byte
          Dim Milivolts    as Word   
      Dim Presion as Float  
          
      " variables para lectura del DS1821
      Dim temperatura as byte
      Symbol DQ = portc.1
      
      " variables para lectura del DS1337
      Dim cfg as byte
   "   Symbol RTC = $D0 " direccion del dispositivo DS1337
   "   Symbol SDA = PORTC.5 " al DS1337 SDA pin #5  conectar mediante res pull_up de 10K
   "   Symbol SCL = PORTC.6 " al DS1337 SCL pin #6  conectar mediante res pull_up de 10K

      Dim sec           as BYTE " segundos
      Dim mins       as BYTE " minutos
      Dim hr          as BYTE " horas
      Dim day       as BYTE " dia
      Dim date       as BYTE " fecha
      Dim mon       as BYTE " mes
      Dim yr          as BYTE " anio
      Dim f_alarma    as byte " estado de la bandera de disparo de alarma
      Dim a_sec         as BYTE " segundos de alarma
      Dim a_mins       as BYTE " minutos de alarma
      Dim a_hr       as BYTE " horas de alarma
      Dim a_day       as BYTE " dia de alarma
      Dim a_date       as BYTE " fecha de alarma
      
      
      
        Delayms 500            " Pausa para estabilizar el Micro
      TRISA.0 = 1            " Establezco bit0 del PuertoA como entrada
         ADCON1 = %10000010      " PuertoA como analogo y justifico a la derecha


Main:   gosub Write_1337

   
Loop:    

Leer_1337:
      Busin  $D0,$00,[sec,mins,hr,day,date,mon,yr]
      Busin  $D0,$07,[a_sec,a_mins,a_hr,a_date]
      Busin  $D0,$0F,[f_alarma]
      delayms 10
       hserout ["Fecha/Hora  : ",hex2 date,"/",hex2 mon,"/", hex2 yr,"  -  ",HEX2 hr, ":", HEX2 mins, ":", HEX2 sec,13,10]
"      if f_alarma.0 = 1 then goto Alarma_ON

Leo_presion:
      ADC_Valor = ADIN 0               " Leo el ADC
      delayms 10
        Valor = 489 * (ADC_Valor / 10)   
      Volts = Valor / 10000
      Milivolts = (Valor // 10000) / 100
      Presion = ADC_Valor * 0.0048875
      Presion = Presion / 5
      Presion = Presion + 0.095
      Presion = Presion / 0.009 " presion expresada en KiloPascales
      Presion = Presion * 10  " * por 10 para transformarlo en milibares o hectopascales
"      hserout ["Valor ADC   : ",Dec ADC_Valor,13,10]
"      hserout ["Voltaje     : ",Dec1 Volts,".",Dec2 Milivolts,"V",13,10]
      hserout ["Presion     : ",Dec4 Presion, " HectoPascal",13,10 ]      
      
Leo_temp:       "Rutina para la lectura de la temperatura
      OWRITE DQ, 1 , [ $EE ]
      delayms 100
      OWRITE DQ, 1 , [ $AA ]
      delayms 100
      OREAD DQ, 0 , [temperatura]
      hserout ["Temperatura : ",Dec temperatura, " celsius",13,10]
      hserout ["=======================================",13,10,13,10]
      delayms 500
       goto Loop

"Alarma_ON:
"        Hserout [13,10,"ALARMA DISPARADA",13,10]
"        delayus 100
"        Busout $D0,$0F,[%00000000]    "Reseteo la bandera de disparo de la alarma
"        goto Leo_presion
        
Seteo_1337:
             " seteo DIA/HORA  13/08/2005  16:30:40
      delayms 100
      Hserout [13,10,"Seteando calendario ...",13,10]
                  
       yr=$05
       mon=$8                                    
       date=$13
       day=$6
       hr=$16
       mins=$30
      sec=$40
       
       Busout $D0,$00,[sec,mins,hr,day,date,mon,yr]  
      delayms 100

"Alarma_1337:
             " seteo Alarma1 DIA/HORA  13/08/2005  16:33:40 (para probar nada mas)

"       a_date = $13 ^ %10000000
"      a_hr   = $16 ^ %10000000
"      a_mins = $33
"      a_sec  = $40
"      a_date = $23
"      a_hr   = $16
"      a_sec  = $40
"      a_mins = $32
      
"      Busout $D0,$0E,[$20]   " control
"      delayms 10
"      Busout $D0,$0F,[$00]   " estado
"      delayms 10
"      Busout $D0,$07,[a_sec,a_mins,a_hr,a_date] " seteo alarma  
"      delayms 10
      
"      a_hr = a_hr ^ %10000000
"      a_date = a_date ^ %10000000
      
"      Hserout ["Alarma fijada : " , hex2 a_hr,":", hex2 a_mins,":",hex2 a_sec,13,10]
"      return
      

"FIN DEL PROGRAMA       



"Tabla de conversion de unidades de Presi�n
"
"      0.01    MegaPascal
"      0.1      Bar
"      0.102   Kg/cm2
"      10      KiloPascal
"      100      HectoPascal
"      100      Milibar
"      1019.7  Kg/m2
"      10000   Pascal
      


IF you_know = true THEN                                 
     share_it
ENDIF

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Mini Estacion Meteorologica ( presion + temp )
« Respuesta #1 en: 29 de Noviembre de 2006, 18:25:55 »
Hola Sanpic mira me acaban de llegar unos samples del sensor de Presion y quisiera saber si necesito algunas precauciones para su manejo. Ya me baje el Data y no dice nada.

Lo que si es que se me hace muy caro aca cuesta unos 25USD por un sensor que solo mide 115KPa osea nos 1.15Kg/cm2 o me equivoque en la conversion???

Saludos
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado lavelapuerka

  • PIC10
  • *
  • Mensajes: 1
Re: Mini Estacion Meteorologica ( presion + temp )
« Respuesta #2 en: 14 de Octubre de 2010, 19:01:25 »
Hola, alguien sabe donde puedo conseguir el DS1337 en Buenos Aires?

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: Mini Estacion Meteorologica ( presion + temp )
« Respuesta #3 en: 10 de Mayo de 2011, 18:33:58 »
Hola amigotes.
Aca les dejo el codigo , de mi modestisimo proyectito , funciona bien.   Esta hecho en Proton+ .
Si  a alguien le interesa  practicar y le sirve , me alegraria mucho. Un abrazo a todos y muchisimas gracias a todos.  Son de lo mejor.  
Hola yo pedi una muestra del rtc DS1337 pero no se como se hace para fijar la hora ni para leerla, me podes dar una idea?

Desconectado enzo84

  • PIC10
  • *
  • Mensajes: 13
Re: Mini Estacion Meteorologica ( presion + temp )
« Respuesta #4 en: 05 de Octubre de 2011, 09:01:30 »
Hola, yo ando buscando un sensor MPX4115A, o cualquiera similar para medir la presión atmosférica, compensado en temperatura y con salida de 0 a 5v, o en su defecto con salida digital por i2c o lo que sea, pero no ese que tira unos pocos mv.
Intenté pedir muestras a freescale pero no envía a Argentina. Si alguno tiene para vender o conoce a alguien o a alguna empresa, se lo compro. Aunque prefiero sea a particular.
Saludos amigos foreros!

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7881
Re: Mini Estacion Meteorologica ( presion + temp )
« Respuesta #5 en: 05 de Octubre de 2011, 11:24:19 »
Freescale si envía a Argentina, si estas registrado como una empresa o universidad.
No tengo ese modelo, sino te lo haría llegar.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything