Alguien ha utilizado el HP03 Sensor de Presion

Resulta que los datos de compensacion que trae de fabrica si que los puedo leer pero los datos que son la temperatura y la presion (D2 y D1 ) me dice que tengo que seguir esta secuencia

S 11101110
A Un
11111111 11111111
A Un
11110000 11110000
A Un
PDS 11101110 PDS 11101110
A Un
11111101 11111101
A Un
S 11101111 S 11101111
A Un
MSB MSB
A Un
LSB LSB
NP NP
Temperature Measure: Medir la temperatura:
S 11101110 S 11101110
A Un
11111111 11111111
A Un
11101000 11101000
A Un
PDS 11101110 PDS 11101110
A Un
11111101 11111101
A Un
S 11101111 S 11101111
A Un
MSB MSB
A Un
LSB LSB
NP N
pero no lo enntiendo muy bien.
Eso esta sacado del DAtasheet !! de la pagina 6
8-)Gracias de antemano :sunglasses:

Eso es el protocolo de los mensajes. En la mayoría de salidas y entradas "más inteligentes" existe algo similar.

A grandes razgos si te dice enviar 00000000 es que se refiere a 8 bits en cero, lo que es equivalente a un print por serial de un byte 0x00, un 11111111 es un 0xFF, así, con tu calculadora puedes sacar equivalencias y crear tu mecanismo para comunicarte.

ya pero no me referia a eso me referia pero gracias voy a probar

A ver si alguien me puede ayudar. Tengo que mandar esta secuencia

S: condición de arranque
P: condición de parada
A: reconoce de esclavos
R: reconocer de maestro
N: no se reconoce de maestro (enviar un poco en su lugar)
D: retraso para un mínimo de 40 ms
MSB: resultado de la conversión de MSB
LSB: resultado de la conversión de LSB.

La direccion del dispositivo es 0x50

Medir la presion

S 11101110 A 11111111 A 11110000 A P D S 11101110 A 11111101 A S 11101111 A MSB R LSB N P
0xEE 0xFF 0xF0 0xEE 0xFD 0xEF |------> apartir de aqui el me da ya la presion. el problema que estoy teniendo es que no se como mandar eso exactamente para que me mande la presion.

Gracias de antemano :sunglasses:

Serial.print(0xEE, BYTE);
y así ...

no lo quiero mandar por el puerto serie sino al dispositivo I2C, es decir , tengo que seguir esa secuencia para que asi me mande mi MSB y LSB
Gracias:P

Pero si realmente tienes tan claro lo que necesitas porqué no lo colocas en google?

http://www.google.com/search?q=i2c+arduino

el primer link ya lo explica todo con detalle

ya lo mire pero no dice nada de nada de como hacerlo solo habla a la hora de mandar informacion a una eeprom no de como conseguir k responda un dispositivo i2c a una secuencia de codigo desde el arduino pero muhcas gracias

Hola,

Que no parezca "brusco":

1- Abro Google.
2- Escribo "hp03 arduino i2c pressure sensor"
3- Tachán!!!!!

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1223819446

Ahi tienes código para responder a tus preguntas (librería con las funciones para manejar el sensor).... O al menos un post con gente que ha usado dicho sensor.....

:wink:

Puedes encontrar un ejemplo en C aunque sea de otro micro en la "Programming Guide" del propio sensor:

http://www.hoperf.com/upfile/hp03_code.pdf

Muchas Gracias IGor he estado mirando el primero pero me da los siguientes errores y he hecho lo que pone en la web que me has pasado y nada .
Estos son los errores

In file included from /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/WProgram.h:6,
from sketch_dec02c.cpp:10:
/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/include/math.h:439: error: expected unqualified-id before 'double'
/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/include/math.h:439: error: expected )' before 'double' /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/include/math.h:439: error: expected )' before 'double'

eso es un error de la libreria WProgram.h ,no?

creo k es un problema de la libreria math

solucione algunos pero ahora me sale este error sobre el timer

HP03/HP03.cpp.o: In function HP03class::begin()': /Applications/Arduino.app/Contents/Resources/Java/libraries/HP03/HP03.cpp:136: undefined reference to FrequencyTimer2::setPeriod(unsigned long)'
/Applications/Arduino.app/Contents/Resources/Java/libraries/HP03/HP03.cpp:137: undefined reference to `FrequencyTimer2::enable()'

Viste en ese mismo link que te pasó Igor los errores que le salen a esas personas?

Gracias lo tengo solucionado
el problema lo tenia con el Frequencytimer2 lo que quitado del cpp y a funcionar.
Ahora cuando termine todo mi codigo lo pondre porque quiero hacer una mas facil y corto para mi proyecto
GRACIAS!!!!!!
:smiley: ::slight_smile: ::slight_smile: ::slight_smile: ::slight_smile:

Una cosita, estoy haciendo mi proyecto final de carrera con el arduino y con unos 5 sensores el problema que tengo ahora es que por separado todo funciona bien, es decir, los datos son correctos(temperatura, lueminosidad, co2, co, presion , altura , posicion, humedad...) pero cuando junto todo ello algunos valores son iguales y otros no. Por ejemplo la temperatura me da 21ºC con su programa y cuanod lo junto con el proyecto que tiene mucho codigo me da por ejemplo unos 24 despues 22 luego 21....etc. Entonces me preguntaba si eso tiene que ver porque el arduino necesita un tiempo para procesar toda la informacion???????Cabe decir que todos los sensores son por I2C.
Gracias de antemano. :smiley:

Te ocurre siempre? Si ocurre sólo al principio durante un corto periodo de tiempo, tampoco creo que influya mucho.
Puede ser que al montarlo en el proyecto, si lo has tenido que mover igual lo has cogido del sensor de temperatura y lo has calentado.
También puede ser que algo de capacitancia sobre todo si usas placas de prototipo, pero me extraña si te va bajando luego la temperatura hasta que se establece.

Si se pudiera saber que titulación estás cursando y un poco sobre el alcance del proyecto no estaría mal, jejeje.

Soy ingeniero de Teleco. pero ya lo tengo solucionado. Es lo que tu dices, resulta que tenia una protoboard y demasiados cables que hacian de bobinas y bastante capacidades por ahi jejejej
Gracias