1 (2017-03-11 10:18:48 отредактировано siwnik)

Тема: Датчик давления BMP180 и микроконтроллер Atmega16

Давно не хватало мне фактического давления в мм.рт.ст для калибровки своих датчиков температуры.
Решил восполнить данный пробел.

Купил датчик давления и температуры BMP180 - 140 рублей.
Микроконтроллер atmega16 уже давно валялся в полке - 75 рублей.
Вырвал семисегментный индикатор со старой микросхемы и принялся за работу. (Можно и даже лучше, наверное, будет передавать значения через uart прям на компьютер через terminal- это не проблема, но у меня в наличие пока нет второго отладчика, он подключен к колонне)

Сперва я сделал mapping индикатора и разрядность по видеоурокам на youtube.
Затем скачал библиотеку на си к датчику давления.
В данной библиотеке есть три уровня точности замера давления. Влияет на энергопотребление, ну и конечно на точность. Датчик цифровой и отдает значения по протоколу i2c (TWI).
Все это соединил и вывел на семисегментный индикатор значение давление в мм.рт.ст. Сама библиотека отдает значения в паскалях. Пришлось делить на //13.33224. В результате - первые три разряда это целое число, а четвертый - десятые.
Получилось следующее:
https://youtu.be/3KWoQslgWhs


Проект делал в AtmelStudio 6. Программа распространяется бесплатно.
Выкладываю проект:
https://drive.google.com/open?id=0B2mnV … ko0RGZGcW8
Прошивать программу лучше программой AVRDUDEPROG33, выбрав из папки проекта файл *.hex
В будущем могу добавить кнопки, чтобы показывать температуру или давление.

Подключение к МК:

2 (2017-03-10 16:49:13 отредактировано SLOG)

Re: Датчик давления BMP180 и микроконтроллер Atmega16

Прикольно конечно, но при наличии дешёвых юзер френдли ардуино, резоны для обычных юзеров под вопросом... Разве что всё это есть в наличии.

3 (2017-03-10 17:40:13 отредактировано siwnik)

Re: Датчик давления BMP180 и микроконтроллер Atmega16

Замучился я с этими ардуинами. Столько микроконтроллеров полегло. Они пытаются фьзы шить. А тут я начал понимать, что делаю. Хотя полностью с вами согласен.  Тогда еще знаний не хватало)
А вообще это мой маленький шаг к автоматике. Начну прикручивать управление нагрузками и сервоприводами

4

Re: Датчик давления BMP180 и микроконтроллер Atmega16

siwnik ©:

Столько микроконтроллеров полегло.

Все познается в опыте.. я тоже мегу 328P спалил, но я шел на этот шаг с гордо поднятой головой, надо было довести эксперимент до конца  :) Да и не жалко, железки сейчас копеечные у китайцев.

У вас в жизни всегда будет все, что вы хотите, если вы будете помогать другим людям получать то, чего хотят они.
Регистрация на форуме отключает почти всю рекламу.

5

Re: Датчик давления BMP180 и микроконтроллер Atmega16

siwnik ©:

Пришлось делить на //13.33224.

А не на 133.3?
Ты калибровал сам датчик или оставил абсолютные значения?   Так-то он калибруется на заводе....
Сейчас покрутил его в атмеге, он еще и температуру и высоту над уровнем моря показывать умеет.

У вас в жизни всегда будет все, что вы хотите, если вы будете помогать другим людям получать то, чего хотят они.
Регистрация на форуме отключает почти всю рекламу.

6 (2017-03-11 08:51:09 отредактировано siwnik)

Re: Датчик давления BMP180 и микроконтроллер Atmega16

Иван ©:
siwnik ©:

Пришлось делить на //13.33224.

А не на 133.3?
Ты калибровал сам датчик или оставил абсолютные значения?   Так-то он калибруется на заводе....
Сейчас покрутил его в атмеге, он еще и температуру и высоту над уровнем моря показывать умеет.

Я оставил все как есть, но по хорошему, если ему подсказать высоту над уровнем моря, то будет точнее.

Да температуру я выводил(в первом сообщение еще писал что он умеет температуру показывать и предлагал кнопочки для смены показаний), все ок. С высотой пока не разбирался. А вот делю на 13,3.... потому что мне нужно получить целое число на семисегментном индикаторе без точек. Вот если по юарту передавать с точкой, то нужно как раз на 133.3.... делить. Там в проекте это число как раз закоментировано

Иван, я буду все это в будущем выводить на LCD. И под себя стряпать. Так что буду проект развивать. Выложил, потому что подумал многим будет полезно знать фактическое давления на первом этапе.

7 (2017-03-12 21:10:31 отредактировано )

Re: Датчик давления BMP180 и микроконтроллер Atmega16

siwnik ©:

я буду все это в будущем выводить на LCD.

Да, это наверное удобней.
Под 328 атмегу на стандартной библиотеке bmp085, она работает с bmp180

#include <Wire.h> 
#include <BMP085.h>

BMP085 dps = BMP085();  

long Temperature = 0, Pressure = 0;

void setup(void) { 
 Serial.begin(9600); 
 Wire.begin(); 
 delay(1000);
 dps.init(); 
}     

void loop(void) { 
 dps.getPressure(&Pressure); 
 dps.getTemperature(&Temperature);

 Serial.print("Pressure(mm Hg):"); 
 Serial.print(Pressure/133.3);   //Вывод давления в мм.рт ст
 Serial.print("Temp:"); 
 Serial.println(Temperature*0.1);  // Температура в градусах Цельсия
 delay(2000); 
}

Обнаружил, что встроенный в BMP180 термодатчик привирает (занижает) на 0.6С по отношению к ds18b20

У вас в жизни всегда будет все, что вы хотите, если вы будете помогать другим людям получать то, чего хотят они.
Регистрация на форуме отключает почти всю рекламу.

8

Re: Датчик давления BMP180 и микроконтроллер Atmega16

siwnik ©:

Сама библиотека отдает значения в паскалях. Пришлось делить на //13.33224. В результате - первые три разряда это целое число, а четвертый - десятые.

Можно паскали умножить на 3 и разделить на 4.
Так проще. (если на asm-е)
Получим миллиметры, умноженные на 100.
Тогда три первых - целое, два последних - дробное.

РК 35х1600