Autor Tema: Termometro Android  (Leído 1974 veces)

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

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Termometro Android
« en: 25 de Diciembre de 2013, 18:04:45 »
hola.estoy desarroyando un proyecto basado en el sensor de temperatura DS18B20.lo tengo bastante adelantado pero se presentan algunos problemas
que poco a poco voy solucionando.

mi intencion es crear un termostato que se comunique via bluetooth.teniendo la opcion de controlarlo con una aplicacion de android y tambien poder
visualizar la temperatura en una LCD.

he tenido que crear la libreria para usarlo en un 18f2550.todo esta en asm.
a parte de todos los problemas que se me han presentado hay uno que no comprendo.antes de cualquier acceso al sensor,hay que mandarle un reset
y recibir un present segun el datasheet.

pues el reset es facil de mandarlo y no hay problema.la cosa esta en el present.el pic tiene que esperar a que el sensor mande un pulso bajo y luego
alto.

pues no lo envia nunca y tengo que desconectar el sensor y volver a conectarlo.entonces sale el dato de 85º que es el que tiene por defecto el sensor
y vuelve a funcionar de nuevo hasta que se vuelve a bloquear.

habia pensado usar un watchdog pero esto haria que el sensor se reiniciara y saliera el dato de 85º.y no creo que esto sea lo correcto.
asi que le he puesto un contador para que cuando no se reciba el present antes de 255 instrucciones,retorne de la rutina.

esta es la rutina modificada de la original que pone en el datasheet.

Código: [Seleccionar]
;*********************************************** DS18b20_RESET ***************************************************
;reset del sensor
DS18B20_RESET
movlw 0xff ;valor para 255 ciclos
movwf CONT_RESET ;introducelo en el contador regresivo
call LINE_IN ;pin del pic como entrada
call LINE_OUT ;pin del pic como salida
call DEMORA_500uS ;retardo de 500uS (solicitud de escucha al 18B20)
call LINE_IN ;pin del pic como entrada(espera de respuesta del 18B20)
call DEMORA_20uS ;retardo para recibir la respusta
espera_lo dcfsnz CONT_RESET ;si no se ha recibido el present del DS18B20 antes de 255 ciclos,
return ;retorna
btfsc PortInOut ;espera a que el 18B20 mande estado bajo
goto espera_lo ;repite hasta que sea estado bajo

espera_hi btfss PortInOut ;espera a que el 18B20 mande estado alto
goto espera_hi ;repite hasta que sea estado alto
return ;retorna

si retornamos es como si le digeramos al sensor de que se ha recivido el present.creo que lo peor que pueda pasar es que no se actualice
la temperatura en ese ciclo de lectura.


aqui un video con el fallo:



y otro funcionando:

Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: Termometro Android
« Respuesta #1 en: 25 de Diciembre de 2013, 21:17:09 »
interesante, tengo una librería bluetooth para android en Java que te podría interesar, si quieres la puedo compartir.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Termometro Android
« Respuesta #2 en: 25 de Diciembre de 2013, 21:44:02 »
a mi me interesa la libreria!

saludos!
-
Leonardo Garberoglio

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Termometro Android
« Respuesta #3 en: 26 de Diciembre de 2013, 10:52:00 »
interesante, tengo una librería bluetooth para android en Java que te podría interesar, si quieres la puedo compartir.

siempre es bueno tener herramientas a mano.en mi caso la libreria bluetooth la tube que hacer yo.porque no encontraba ninguna que funcionase a mi gusto.
y tambien tube que desarrollar la libreria para el protocolo modbus.que es la que utilizare para la comunicacion con el circuito.

Citar
a mi me interesa la libreria!

si te refieres a la libreria para el manejo del DS18B20.ya me funcionan muchos comandos.pero me faltan los de busqueda de alarma.
cuando la tenga terminada la posteare aqui.
Montando mi primera impresora 3D (Raprep Prusa i3)


 

anything