bmp180 ds18b20

fora983
Offline
Зарегистрирован: 10.09.2016

Подключил 2 датчика. надодятся на расстоянии 1 см. 

Temp      27.25    ds18b20
Temp      26.40    bmp180
 
 
#include <OneWire.h>
#include <BMP085.h>
#include <LiquidCrystal.h>  // Лобавляем необходимую библиотеку
LiquidCrystal lcd(12, 13, 8, 9, 10 , 11);
#include <DallasTemperature.h>
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
int dig1, dig2 , dig3, GG;
  float Grad, Ph, Gr;
OneWire oneWire(ONE_WIRE_BUS);
 BMP085 dps = BMP085(); 
   


DallasTemperature sensors(&oneWire);
 
long Temperature = 0, Pressure = 0;
 
void setup(void) { 
 pinMode(3, OUTPUT);       // Подключаем светодиод на 3 порт 
  Serial.begin(115200); 
  delay(1000);
  dps.init();  
 lcd.begin(16, 2);
 sensors.begin();
}          
 
void loop(void) { 
  
//////////////////////////////////////////////////////////////////////////////////////////////BMP 180
  
  dps.getPressure(&Pressure); 
  dps.getTemperature(&Temperature);
 
  Serial.print("Pressure(mm Hg):"); 
  Serial.print(Pressure/133.3);      //Выводим давление в мм.рт ст
  Serial.print("Temp:"); 
  Serial.println(Temperature*0.1);   // Температуру в градусах Цельсия

 Ph=Pressure/133.3;
 Gr=Temperature;
 
dig1 = Ph / 100;
dig2 = Ph / 10 - dig1 * 10;
dig3 = Ph - dig2 * 10 - dig1 * 100;
lcd.setCursor(7, 0);
lcd.print(dig1);
lcd.print(dig2);
lcd.print(dig3);

dig1 = Gr / 100;
dig2 = Gr / 10 - dig1 * 10;
dig3 = Gr - dig2 * 10 - dig1 * 100;
lcd.setCursor(7, 1);
lcd.print(dig1);
lcd.print(dig2);
lcd.print(".");
lcd.print(dig3);
GG=Gr;

if (GG > 275)
                {
                    digitalWrite(3, HIGH);
                    lcd.setCursor(0, 1);
                    lcd.print("bip");
                }
                else
                {
                    digitalWrite(3, LOW);
                    lcd.setCursor(0, 1);
                    lcd.print("   ");
                }
///////////////////////////////////////////////////////////////////////////////////////// расчет для вывода в график
Gr=Gr/10;
Serial.println( Gr );
/////////////////////////////////////////////////////////////////////////////////////////////  18B20

sensors.requestTemperatures(); // Send the command to get temperatures
Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"? 
Grad = sensors.getTempCByIndex(0);
Grad=Grad*10;
dig1 = Grad / 100;
dig2 = Grad / 10 - dig1 * 10;
dig3 = Grad - dig2 * 10 - dig1 * 100;
lcd.setCursor(0, 0);
lcd.print(dig1);
lcd.print(dig2);
lcd.print(".");
lcd.print(dig3);

delay(10000); 
}

 

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Посмотрите их даташиты на предмет допустимых погрешностей и ... убедитесь, что у Вас всё в пределах нормы.

bwn
Offline
Зарегистрирован: 25.08.2014

Не знаю, как бмп-шка на температуру, но DS ловит малейший сквозняк. Для корректной сверки, кладем на нетеплопроводящую поверхность, накрываем какой либо емкостью (достаточно широкой, для снижения помех от излучения), ждем стабилизации.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

bwn пишет:

DS ловит малейший сквозняк. 

Да и точность по даташиту - 0,5 градуса

bwn
Offline
Зарегистрирован: 25.08.2014

ЕвгенийП пишет:

bwn пишет:

DS ловит малейший сквозняк. 

Да и точность по даташиту - 0,5 градуса

Это скорее на крайних значениях диапазона. Проверял при комнатной, из разных партий - 0,1-0,2 разброс между датчиками. Термометра калиброванного естественно нет, пользуемся относительными измерениями.))))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

bwn пишет:

Это скорее на крайних значениях диапазона. Проверял ...

Не, ну конкретный экземпляр может быть и лучше, а так ... по даташиту: ±0.5°C accuracy from -10°C to +85°C

bwn
Offline
Зарегистрирован: 25.08.2014

ЕвгенийП пишет:

bwn пишет:

Это скорее на крайних значениях диапазона. Проверял ...

Не, ну конкретный экземпляр может быть и лучше, а так ... по даташиту: ±0.5°C accuracy from -10°C to +85°C

Та я разве спорю, что там так написано. Чисто личный опыт. Датчики, на мой взгляд, очень достойные и подходят для подавляющего большинства бытовых задач. На ректификаторе надо держать окно в +0,2гр.С (относительное), сделал на DS-ке, думал не потянет (всего три шага). Год уже работает, все стабильно, менять передумал.