Autor Tema: BMP 085 , Dudas Comunicacion Con Microcontrolador  (Leído 2011 veces)

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

Desconectado andyros

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 70
BMP 085 , Dudas Comunicacion Con Microcontrolador
« en: 12 de Junio de 2015, 06:02:27 »
Hola a todos .
Estoy realizando una pequeña estación metereologica , mide la temperatura y humedad con el sensor Dht 22 ( Amr 2302 ) este código ya lo tengo en funcionamiento , ahora quiero añadirle un sensor de presión atmosférica que tengo , un bmp 085 y aquí tengo dudas sobre como proceder a comunicarme con el mediante el microcontrolador.

Utilizo el lenguaje ensamblador y no encuentro información en la red , ( toda ella esta inundada de proyectos de arduino ) , todo esto lo hago por hobby y se que si utlizo otros lenguajes de programación seria mas fácil , pero y lo bien que me lo paso probando que te prueba , cabreo tras cabreo y hasta que lo consigo ...:D :D

Bien la comunicación mediante el bus I2c lo tengo claro , la dirección del bmp se que es 1110111 y el bit 0 seria 1 o 0 según si es para leer o escribir . ( Me gustaría saber como tener 2 bmp con un solo microcontrolador y comunicarme con ellos usando la entrada XCLR  ) .

Ahora lo bueno , según el datasheet tengo que leer los datos de calibración que van desde el registro 0xAA hasta 0xBF y luego pido los datos de presión en el registro 0xF4 espero 4,5 ms y luego lo tendre en los registros 0xF6 y 0xF7.....

Ahora me pone como calcular la presión verdadera mediante unas formulas ,  ¿ esto quiere decir que he de hacer todas las operaciones para obtener la presión ...? ...no lo hace el propio bmp 085 ...?

Datasheet

UN SALUDO.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: BMP 085 , Dudas Comunicacion Con Microcontrolador
« Respuesta #1 en: 12 de Junio de 2015, 16:18:24 »
Los datos de calibracion los lees una sola ves o directamente una ves que lo calibras podes guardarlo en la EEPROM de tu PIC para no estar leyendolos del otro dispositivo una ves que los fijaste.

Con respecto al calculo..
Esta BASTANTE complicado...
Encima para poder obtener los valores de presion, tenes que calcular antes la temperatura, ya que esos valores tambien influyen...


Asi que o usas C, o te pones de cabeza a hacer funciones de desplazamiento de 16/24 bits (para los dezplazamientos y divisiones/multiplicaciones por 2^x ), + division o multiplicacion , + sumas/restas. En una parte hasta 32bits...

Tambien espero que tengas un PIC18 y puedas usar mucho el direccionamiento indirecto, hasta tal ves habilitando el set extendido de instrucciones para manejarte mucho mejor con eso. Si tenes un PIC16 vas a tener que llorar un poco mas.
Si aun estas interesado en hacerlo por ahi puedo ayudarte a hacer algunas de esas funciones.Lo cual llevaria a implementar un buen algoritmo de division. y no la clasica division por resta que hacemos. Lo cual no te aseguro que me salga xD
O tal ves reemplazar estas divisiones por multiplicaciones lo cual lo hace mas facil, el programa y calculo.

PD: lo de XCLR es para resetear el micro por lo que veo.
« Última modificación: 12 de Junio de 2015, 16:43:51 por KILLERJC »

Desconectado AG1

  • PIC16
  • ***
  • Mensajes: 105
Re: BMP 085 , Dudas Comunicacion Con Microcontrolador
« Respuesta #2 en: 12 de Junio de 2015, 21:16:03 »
    En esta página www.f6fbb.org encontré hace tiempo un ejemplo con un PIC 12F683 y estaba todo hecho en ASM, incluso toda la serie de cálculos necesarios. El problema es que parece que la página ya no está disponible.

    Puedes realizar las rutinas en C, y una vez compiladas obtener el código ASM de cada una, para poderlas utilizar en ASM.

Salu2.
 

Desconectado andyros

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 70
Re: BMP 085 , Dudas Comunicacion Con Microcontrolador
« Respuesta #3 en: 13 de Junio de 2015, 08:46:05 »
KILLERJC , entonces entiendo que con leer una sola vez los parámetros del bmp  y memorizarlos en la eeprom ya no hace falta volver a hacerlo ,  y tienes toda la razón hay que sacar también los datos de temperatura por que necesitare esos datos .

AG1  , que pena que la pagina ya no funcione , también es buena idea sacar el código desde un programa en C ,

Gracias a los dos , voy a intenter sacarlo por mi mismo a ver que sale , lo que no he encontrado es el sensor para testearlo en el proteus , sabeis si esta ? ....

UN SALUDO.
« Última modificación: 13 de Junio de 2015, 09:02:29 por andyros »