I am creating a weather station using solar and battery power.
I have all of the MCU electronics in a waterproof NEMA box that I would like to sit at ground level.
My air sensing instruments (adafruit BMP180 barometer, and DHT22 temp/humidity sensor), will be mounted in a radiation shield enclosure, and suspended roughly 5 feet above the MCU enclosure.
My first question revolves around the BMP180, is it nesscessary for it to be placed in the radiation shield to be accurate. It has a temperature sensor onboard that it uses to compensate for temperature related air density. If it is in the enclosure with the MCU, although it will not be airtight, it will likely be warmer in the box then out in the air.
Will this affect the accuracy?
Second:
If the bmp180 module has to be in the radiation shield, I'm going to have to connect it with about a 5 foot length of cat 5. I've already tried this connection, and I was unable to get it to work.
I am pretty sure it is an issue of bus capacitance, and although I could change the pullup resistors, I think that the board itself has it's own pullups. These are not disabled with a jumper like the sparkfun version.
Provide links to the hardware used (the board, no the sensor chips).
If it is in the enclosure with the MCU, although it will not be airtight, it will likely be warmer in the box then out in the air.
As the measurement is temperature compensated in the MCU the pressure value should be accurate but, of course, the temperature value might be falsified.
I'm going to have to connect it with about a 5 foot length of cat 5. I've already tried this connection, and I was unable to get it to work.
How did you connect the cable to the Arduino/sensor? What values did you try for the pull-ups? Usually you should get that to run over cat5 cables if you use the correct wires. If you don't you can use I2C extenders such as this one.
As you can see, it comes with 10K pullups already on the board, and I'd rather not alter them, irreparably.
I think these pullups are too high to allow for longer range communication.
I have a DHT22 that is place in the radiation shield, so that should be able to provide me with accurate ambient temperature. I was doing some thinking, and I think having the bmp180 up in the radiation shield might do more hard than good, because it will be more susceptible to wind interference. The Bosch datasheet seems to warn against rapid temperature fluctuations, but doesn't mention that the temperature has to be the same as outdoor ambient.
How did you connect the cable to the Arduino/sensor? What values did you try for the pull-ups? Usually you should get that to run over cat5 cables if you use the correct wires. If you don't you can use I2C extenders such as this one.
I just soldered the cat5 ends right to female header connectors. The sensor itself works at 6 inch leads, but not 5 feet. I am guessing it's the onboard 10K resistors causing the problem.
I have a DHT22 that is place in the radiation shield, so that should be able to provide me with accurate ambient temperature. I was doing some thinking, and I think having the bmp180 up in the radiation shield might do more hard than good, because it will be more susceptible to wind interference. The Bosch datasheet seems to warn against rapid temperature fluctuations, but doesn't mention that the temperature has to be the same as outdoor ambient.
The temperature value influences the measured pressure value but that's just because of the used measuring method. The pressure itself is identical inside and outside of the casing (given you don't have a gastight case) and the actual pressure also don't depend on the temperature. You'll get a slightly different measurement because of the different height the measurement is taken but for a weather station the actual value is less imiportant than the changes over time.
As you can see, it comes with 10K pullups already on the board, and I'd rather not alter them, irreparably.
If the value is to high it's easy to change: just install a lower valued resistor in parallel and and you get an even lower total value. So in your case I would try to install 4.7kΩ resistors in parallel.
I just soldered the cat5 ends right to female header connectors.
I wanted to know which color of the cat5 you used for which signal. Depending on which color you used you get higher or smaller capacitances.
Each color is twisted with it's striped neighbor of the same color. If you use the striped wire for GND and the none-striped for the signal you create a huge capacitor which is only limited by the thickness of the isolation. I would try to transfer GND over the shield only and put the signal to both the striped and the non-striped wire of a color. 5V and 3V3 over the same pair should be OK. That way you should get the best out of the cable for the I2C case.
Then I'd probably put GND to the striped wire of 5V and put 3V3 to the striped wire of the DHT22 pair (the DHT22 protocol has lower frequencies and the signals are not pulled up/down by resistors).
I would change the cable to non-twisted one that is shielded. Cat5 is good for differential signals but not ideal for local buses like I2C.
I will try your suggestions. Although I will likely try to keep the bmp180 closer to the arduino to avoid all of these issues, it's good to know what may have caused my issue.