bmp180 ds18b20
- Войдите на сайт для отправки комментариев
Вс, 12/03/2017 - 19:04
Подключил 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); }
Посмотрите их даташиты на предмет допустимых погрешностей и ... убедитесь, что у Вас всё в пределах нормы.
Не знаю, как бмп-шка на температуру, но DS ловит малейший сквозняк. Для корректной сверки, кладем на нетеплопроводящую поверхность, накрываем какой либо емкостью (достаточно широкой, для снижения помех от излучения), ждем стабилизации.
DS ловит малейший сквозняк.
Да и точность по даташиту - 0,5 градуса
DS ловит малейший сквозняк.
Да и точность по даташиту - 0,5 градуса
Это скорее на крайних значениях диапазона. Проверял при комнатной, из разных партий - 0,1-0,2 разброс между датчиками. Термометра калиброванного естественно нет, пользуемся относительными измерениями.))))
Это скорее на крайних значениях диапазона. Проверял ...
Не, ну конкретный экземпляр может быть и лучше, а так ... по даташиту: ±0.5°C accuracy from -10°C to +85°C
Это скорее на крайних значениях диапазона. Проверял ...
Не, ну конкретный экземпляр может быть и лучше, а так ... по даташиту: ±0.5°C accuracy from -10°C to +85°C
Та я разве спорю, что там так написано. Чисто личный опыт. Датчики, на мой взгляд, очень достойные и подходят для подавляющего большинства бытовых задач. На ректификаторе надо держать окно в +0,2гр.С (относительное), сделал на DS-ке, думал не потянет (всего три шага). Год уже работает, все стабильно, менять передумал.