2 датчика барометра BMP085 на один контролер
- Войдите на сайт для отправки комментариев
Пнд, 10/02/2014 - 09:07
День добрый!
как подключить 2 датчика BMP085 на одну UNO ?
нужно стравнивать показания в 2х точках камер и от разницы показаний давать разрешение на поджиг
реально на UNO или на ProMini?
https://www.sparkfun.com/datasheets/Components/General/BST-BMP085-DS000-...
Страница 16.
Да, можно
На обоих можно, два варианта:
1. Железный i2c, у "ненужного" bmp085 на время измерения зажимаем на gnd вход reset, те выводы reset каждого датчика надо подключить на цифровые выходы ардуино
2. Датчики подключить на разные шины i2c. Одна может быть железной, вторая програмной или обе програмной
i2c разве не позволяет адресно обращяться к устройству?
адреса то совпадают.
День добрый!
подключил 2 датчика по схеме
VSS -> 3.3 V
SDA -> analog pin 4
SCL -> analog pin 5
GND -> GND
вход с датчиков XCRL подключил к земле
1. так вот если оба XCRL на GND при инициализации то данные получаем
Alt(m):0 Pressure(mm Hg):1.76 Temp:0.00 dPs:235
2. после отключения одного любого входа XCLR от GND получаем
Alt(m):0 Pressure(mm Hg):1.76 Temp:0.00 dPs:235
3. если при иницыализации оба входа XCRL отключены отключены от земли то получаем
Alt(m):11 Pressure(mm Hg):785.93 Temp:28.40 dPs:104765
4. если подключаем один из входов(любого датчика) на землю получаем
(1) Alt(m):-944 Pressure(mm Hg):879.30 Temp:62.60 dPs:117211
(2) Alt(m):-261 Pressure(mm Hg):811.75 Temp:34.50 dPs:10820
5. если проинициализировать с одним датчиком то данные получим правильные
Alt(m):11 Pressure(mm Hg):758.09 Temp:26.60 dPs:101054
Alt(m):10 Pressure(mm Hg):758.11 Temp:26.60 dPs:101056
Alt(m):11 Pressure(mm Hg):758.07 Temp:26.60 dPs:101051
Alt(m):11 Pressure(mm Hg):758.13 Temp:26.60 dPs:101059
как использовать для второго датчика другие входы контролера допустим А2 и А3?
в библиотеке нужно чтото периписать? сам не увидел.
тестовый код ниже
библиотека http://code.google.com/p/bmp085driver/downloads/detail?name=bmp085v0.4.zip&can=2&q=label:Featured
// BMP085_test1 // by Filipe Vieira // Simple test of BMP085 output using default settings. // This example requires AUTO_UPDATE_TEMPERATURE to be true in bmp085.h otherwise temperature will not update. // IMPORTANT!! To get correct values you MUST CHANGE init() parameters, in // this example I've set 250m based on GPS data for my location. #include <Wire.h> #include <BMP085.h> BMP085 dps = BMP085(); // Digital Pressure Sensor long Temperature = 0, Pressure = 0, Altitude = 0; void setup(void) { Serial.begin(9600); Wire.begin(); delay(1000); // uncomment for different initialization settings //dps.init(); // QFE (Field Elevation above ground level) is set to 0 meters. // same as init(MODE_STANDARD, 0, true); //dps.init(MODE_STANDARD, 101850, false); // 101850Pa = 1018.50hPa, false = using Pa units // this initialization is useful for normalizing pressure to specific datum. // OR setting current local hPa information from a weather station/local airport (QNH). dps.init(MODE_ULTRA_HIGHRES, 1100, true); // 11 meters, true = using meter units // this initialization is useful if current altitude is known, // pressure will be calculated based on TruePressure and known altitude. // note: use zeroCal only after initialization. // dps.zeroCal(101800, 1100); // set zero point } void loop(void) { dps.getPressure(&Pressure); dps.getAltitude(&Altitude); dps.getTemperature(&Temperature); Serial.print(" Alt(m):"); Serial.print(Altitude/100); Serial.print(" Pressure(mm Hg):"); Serial.print(Pressure/133.3); Serial.print(" Temp:"); Serial.print(Temperature*0.1); Serial.print(" dPs:"); Serial.println (Pressure); delay(500); }Может питание только на нужном включать?
шас проверю. спс
не прокатывает, после инициализации если подключаить питание с датчиков не идет информация.
вроде все!
победил. подключил XCLR. и в теле скеча инициализацию переместил в основной цикл, тоесть каждый раз инициализация при обращении
void loop(void) {
Wire.begin();
dps.init(MODE_ULTRA_HIGHRES, 1100, true); // 11 meters, true = using meter units
void loop(void) { Wire.begin(); dps.init(MODE_ULTRA_HIGHRES, 1100, true); // 11 meters, true = using meter units dps.getPressure(&Pressure); dps.getAltitude(&Altitude); dps.getTemperature(&Temperature); Serial.print(" Alt(m):"); Serial.print(Altitude/100); Serial.print(" Pressure(mm Hg):"); Serial.print(Pressure/133.3); Serial.print(" Temp:"); Serial.print(Temperature*0.1); Serial.print(" dPs:"); Serial.println (Pressure); delay(1500); }Проблема аналогичная. Подключение 2-х BMP на одну ардуину. Датчики подключены через мультиплексор и в принципе работают правильно, если проводить их инициализацию ( первая строка текста) каждый раз перед обращениием к ним в основном цикле. Вопрос: какие действия происходят при инициализации BMP, по даташиту в BMP есть EEPROM, а количество перезаписи EEPROM ограничено, может кто в курсе при инициализации BMP есть ли запись в EEPROM.
а зачем две бмпшки на одну ардуину ?
а зачем две бмпшки на одну ардуину ?
нужно стравнивать показания в 2х точках камер и от разницы показаний давать разрешение на поджиг
или сравнивать давление в дымоходе и перед топкой - есть тяга+ ? или она -
Если кто знает, прошу ответ по существу вопроса поста 9.
А если нам нужно узнать абсолютную высоту относительно уровня моря то что писать нужно ?
так как тут при включении высота отсчитывается от момента включения
1. Давление существенно зависит от погоды, поэтому оценка высоты по нему будет очень грубой (недостаточной для практических целей).
2. Как ведет себя конкретный датчик, должно быть описано в дэйташите.
Так мне и нужно высота зависящяя от погоды, в авиации это называется эшелонная высота в ней за высоту абсолютного нуля берется давление в 760 мм.рт.ст. от него и пляшет. Если я что то не то написал то подправте я могу ошибатся