Схема барометр на микроконтроллере самодельная. Электросхемы в помощниках

Схема барометр на микроконтроллере самодельная. Электросхемы в помощниках

Схема барометра для измерения атмосферного давления построена с использованием датчика давления MPXHG6115. Сам датчик обеспечивает на его выходе напряжение, пропорциональное давлению воздуха. Рабочий диапазон перекрывает атмосферное давление (90 - 110 кПа) на уровне моря. Минимальное рабочее давление воздуха датчика 15 кПа, что позволяет использовать его даже в горной области. Для этого, правда, нужно пересчитать резисторы на его плате. Для атмосферного давления в районе недалеко от уровня моря диапазон выходных напряжений датчика составляет 3.625 - 4.55 вольт. В аналоговой части схемы (затененная на схеме) на выходе формируется линейное напряжение диапазона 0 - 5 В, которое находится в нормальном диапазоне микроконтроллерного АЦП. Сопоставление выполняется с помощью двух ОУ. Левая (на схеме) обеспечивает оптимальное сопротивление нагрузки для датчика (51 кОм) и инвертирует опорноео напряжение около 2.5 В. Опорное напряжение получается с помощью делителя напряжения, состоящего из двух резисторов 11.5 к (точность 1%). Правая ОУ обеспечивает необходимое масштабирование напряжения и начальную установку в 0. Рекомендуем использовать сдвоенный OPA2374.

Технические характеристики

  • Диапазон измерений: 700 - 800 мм Рт.ст
  • Напряжение питания: 5 вольт
  • Ток потребления: 40 мА

Датчик масштабирования и аналоговый усилитель собран на небольшой печатной плате. Он подключается к основной плате с помощью 3-х проводов. Тест схема состоит из микроконтроллера и ЖК-модуль с интерфейсом, смонтированный на ее задней стороне. Интерфейсная карта устанавливает все связи с PIC, используя только два провода и его программное обеспечение реализует упрощенную версию стандартного интерфейса I2C. Программа контроллера PIC16F84 присваивает ее ввод пин-RC3 на вход АЦП. Он просто вычисляет давление в зависимости от входного напряжения в соответствии с формулой, преобразует его в двоично-десятичный код и выдает на экран.

Описание часов.

Возникла необходимость обновить будильник в спальне. Для переделки использовались китайские часы VST-716. Из недостатков, присущих им: мерцание индикатора; цвет индикатора в моей модели был раздражающий красный; для ночи яркость индикатора слишком, для дня недостаточная; и самое главное, хотя и предусмотрена работа от батареек, но это только работа часов, чтобы не сбились, индикатор и будильник не работают. Ну и еще - скучные.

При вскрытии выяснил, что динамическая индикация идет с частотой сети (отсюда мерцания). Индикатор "урезанный", то есть в неиспользуемых сегментах светодиоды отсутствуют. Коммутация для динамики мягко говоря странная и заложена конструкцией индикатора. Пришел к выводу, что кроме корпуса и кнопок (после переделки) и использовать ничего не получится. Поэтому решил кардинально все переделать.

1. Функции.

1.1. Часы, формат отображения времени 24-х часовый, часы:минуты.

1.2. Цифровая коррекция точности. Возможна ежесуточная коррекция ±25 сек. Установленное значение в 1 час 0 минут 30 сек будет прибавлено/вычтено из текущего времени.

1.3. Будильник. В заданное время (установка п. 2.2.1) в течении одной минуты раздаются короткие двойные сигналы. Отключить звук досрочно можно нажатием на кнопку ALARM . Когда работа будильника разрешена (переключатель сзади часов в положении On ), при отображении времени в младшем разряде индицируется точка. Если индикатор был отключен, то при срабатывании будильника включается автоматическая регулировка яркости.

1.4. Термометр. Диапазон измеряемой температуры -55,0 ÷ 125,0 о С. Если температура выше +99,9 или ниже -9,9 о С десятые доли градуса не отображаются. В случае ошибки в работе датчика на индикатор выводятся прочерки.

1.5. Барометр. Измерение атмосферного давления в мм рт. ст.

1.6. Индикация. Поочередная, смена индикации анимированная. Время индикации устанавливается в настройках п.2.2.3. Нажатием на кнопку MINUS производится ручной выбор выводимой информации. Нажатие на кнопку SET переводит часы в режим автоматической смены информации.

1.7. Использование энергонезависимой памяти микроконтроллера для сохранения настроек при отключении питания.

1.8. Ручная или автоматическая регулировка яркости индикатора в зависимости от освещенности.

Выбор режима яркости производится в основном режиме кнопкой PLUS по кругу: индикатор отключен - автоматическая регулировка яркости - ручной режим регулировки яркости.

Пределы регулировки яркости в автоматическом режиме и уровень яркости в ручном режиме задаются в настройках п. 2.2.4.

1.9. Работа от автономного источника питания (две батарейки “AAA”).

2. Настройка.

2.1. При включении питания часы в основном режиме.

2.2. Нажатием на кнопку MENU производится вход в режим настроек и выбор группы параметров для установки. В пределах группы выбор параметра для установки производится кнопкой SET . По-очереди доступны для установки:

2.2.1. Группа ALAr :

Минуты срабатывания будильника;

Часы срабатывания будильника.

2.2.2. Группа CLOC :

Секунды (обнуляются при нажатии на кнопки PLUS или MINUS );

Величина коррекции. В старшем разряде символ "с ".

2.2.3. Группа diSP :

Время индикации текущего времени. В старших разрядах символы "tc ". Диапазон установки 0÷99 сек. Если установлен 0, то время отображаться не будет;

Время индикации температуры. В старших разрядах символы "tt ". Диапазон установки 0÷99 сек. Если установлен 0, то температура отображаться не будет;

Время индикации давления. В старших разрядах символы "tP ". Диапазон установки 0÷99 сек. Если установлен 0, то давление отображаться не будет;

Выбор скорости анимации. В старшем разряде символ "P ". Диапазон установки 0÷99. Одна единица соответствует примерно 2 мсек, чем выше величина, тем медленнее идет анимация.

2.2.4. Группа LiGH :

Минимальный порог яркости для автоматического режима. В старших разрядах символы "L_ ".

Максимальный порог яркости для автоматического режима. В старших разрядах символы "".

Уровень яркости в ручном режиме. В старших разрядах символы "L- ".

2.3. Устанавливаемый параметр мигает.

2.4. Удержанием кнопок PLUS /MINUS производится ускоренная установка параметра.

2.5. Через ~10 сек от последнего нажатия на кнопки часы перейдут в основной режим работы, а новые параметры запишутся в энергонезависимую память.

3. Работа от автономного источника питания.

3.1 При отсутствии основного питания часы продолжают свою работу, если установлены батарейки.

3.2 При питании от батареек индикация отключается, будильник остается в работе.

3.3 При срабатывании будильника в течении минуты раздаются двойные звуковые сигналы, мигает индикатор с отображением времени. Отключение звука производится нажатием на кнопку ALARM или переключателем сзади часов в положение Off .

3.4 Кратковременно (~4 сек) включить индикацию можно нажав на кнопку ALARM . В этом режиме доступны просмотр и установка параметров.

3.5 При работе от батареек измерение температуры и давления не производится.

3.6 Яркость индикатора устанавливается в ручной режим.

4. Примечания.

1. Для минимального и максимального порогов яркости диапазон установки 0 ÷ 99, но программой вводятся ограничения: минимальный не может быть больше либо равным максимальному и наоборот.

2. При установке параметров яркости информация на индикаторе отображается с выбранной величиной яркости, кроме случая, когда часы работают от батареек.

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

5. Особенности схемы.

1. Если предполагается использовать функцию автоматической регулировки яркости индикатора, то вместо RV1 устанавливается фоторезистор. А значение резистора R17 следует подобрать для получения нужной чувствительности системы.

2. Датчик температуры может работать и по 2-х проводной схеме подключения. Если планируется измерять температуру в помещении, где установлены часы, то датчик все равно следует выносить за корпус часов.

3. Пищалка BUZ1 должна быть со встроенным генератором. В зависимости от тока потребления, возможно, придется установить усилитель (транзисторный ключ).

4. Индикатор - 4 одноразрядных 0.8" SM610806B/8, общий анод, синий. Яркости более, чем достаточно.

5. При прошивке МК следует установить FUSE для работы от внутреннего тактового генератора частотой 8 МГц. Пример установки FUSE для программы CVAVR на скриншоте.

6. Датчик давления GY-65.

7. В проекте (это по сути уже схема) не показаны выводы питания микросхем.

8. Питаются часы от внешнего источника стабилизированного напряжения +5V, ток потребления около 30 мА. В моем случае используется зарядное устройство от мобильного телефона. Резервное питание - два элемента "AAA".

В архиве набор файлов: прошивка, проект в Proteus для симуляции, два файла Proteus, по которым строились печатки, описание, фото внешнего вида. Печатные платы в статью не выкладываю, так как при разработке допустил ряд ошибок и пришлось вносить некоторые изменения уже на плате. Кроме того, плата сделана именно под этот корпус. Если кому надо - пишите, выложу в форме. По случаю сфотографирую и внутреннее устройство часов.

Для обсуждения создана в форуме.

Температура
и давление окружающего воздуха оказывают большое влияние на самочувствие
человека. Их важно знать и в походе, и на даче, и дома. Предлагаемый компактный
прибор как нельзя лучше подходит для этого. Его можно использовать также для
приблизительной оценки высоты, например, при подъеме в горы. Уменьшение
давления на 1 мм ртутного столба соответствует увеличению высоты над уровнем
моря приблизи­тельно на 10 м.

Пределы
измерения и погрешность прибора
определяются в основном примененными в нем датчиками тем­пература -55…+125
°С, атмосферное давление 225. 825 мм ртутного столба Прибор питается
напряжением 9 В от гальванической батареи типа “Крона” или сетевого
адаптера Потребляемый ток - 30 мА (при выключенной под­светке ЖКИ). Размеры
корпуса - 118×72 28 мм. Работа прибора была проверена при температуре от -5 до
+25 С Погрешность измерения давле­ния не превысила 4 мм ртутного столба Схема
прибора изображена на рис. 1 причем собранный на отдель­ной плате модуль
измерения давления выделен штрихпунктирной линией.

Необходимые
для работы датчика так­товые импульсы частотой 32768 Гц выра­батывает кварцевый
генератор на эле­ментах микросхемы DD1 В принципе, эти импульсы мог бы
формировать и микро­контроллер DD2 с помощью одного из имеющихся в нем таймеров
Но это по­требовало бы усложнения программы.

Напряжение
3,6 В для питания датчи­ка В1 и микросхемы DD1 получено с помощью стабилитрона VD1
Резисторы R1 -R3 - нагрузочные для линий свя­зывающего датчик с микроконтролле­ром
интерфейса 1С и сигнала XCLR Печатная плата модуля измерения дав­ления показана
на рис. 2

Хотя
датчик HP03SB содержит и встроенный измеритель температуры, его показания
используются програм­мой микроконтроллера DD2 только для уточнения результатов
измерения дав­ления. На ЖКИ HG1 вместе со значени­ем давления выводятся
показания дру­гого датчика температуры - DS1624 (В2) Причина этого проста - он
точнее При необходимости датчик В2 можно сделать выносным и расположить там где
температура представляет наиболь­ший интерес. При установке в корпусе прибора
этот датчик следует вынести на боковую стенку, сделав в ней окно по его
размерам Иначе неизбежна ошибка на 1,5 ..1,8 ‘С, в чем я убедился на практике
Напряжение питания +5 В стабилизи­ровано микросхемой DA1 Подстроеч ным
резистором R8 устанавливают наи­лучшую контрастность изображения на ЖКИ Кнопкой
SB1 включают подсветку его табло. Остальные элементы необхо­димы для работы
микроконтроллера Элементы R7 R9 СЮ VD2 - цепь уста­новки микроконтроллера в
исходное состояние Кварцевый резонатор ZQ2 с конденсаторами С11.С12 - частотозадающая
цепь тактового генератора мик роконтроллера.

На
рис. 3 представлен чертеж ос­новной печатной платы прибора а на рис. 4 -
расположения деталей на ней В переходное отверстие показанное залитыми (плата
на рис. 2), необходимо вставить и пропаять с двух сторон прово­лочную
перемычку. Для микроконтрол­лера DD1 должна быть предусмотрена панель, так как
в процессе налаживания прибора эту микросхему придется из­влекать и вновь
устанавливать.

Остановимся
на некоторых особен­ностях датчика HP03SB. общий вид и га­баритные размеры
показаны на рис. 5 Для определения давления необходимо предварительно прочитать
из памя­ти установленного в приборе экземпля­ра этого датчика двухбайтные
значения коэффициентов С,-С- и однобайтные значения параметров A-D. Все они ин­дивидуальны
для данного экземпляра.

Результаты
измерения представляют собой два двухбайтных числа- D1 - дав­ление D2 -
температура. Прочитав их из памяти
датчика программа должна вычислить вспомогательные значения

Более
подробные сведения о датчике HP03SB имеются в . Однако необ­ходимо отметить
что там указаны невер­но адреса внутренней памяти датчика, по которым хранятся
его индивидуаль­ные константы. Следует пользоваться теми адресами что приведены
в В приборе можно применить и другие дат­чики серии НРОЗ Некоторые из них
име­ют меньшую точность, другие отлича­ются конструктивным оформлением.

Работа
программы начинается с ини­циализации портов микроконтроллера и ЖКИ Успешную
инициализацию под­тверждает вывод на табло надписи “TER- MOBAR” (буква
Н пропущена). Затем инициализируется датчик давления, счи состояние регистра
статуса модуля TW1 микроконтроллера не проверяется.

Для
чтения коэффициентов и пара­метров датчика предназначена специ­альная программа
ReadCC, которую необходимо загрузить в программную память микроконтроллера полностью собранного
прибора (с подключенным модулем измерения давления), вклю­чить его и через
несколько секунд выключить. После этого нужно извлечь микроконтроллер и с
помощью про­грамматора прочитать содержимое его EEPROM. В нем по адресам,
указанным в табл. 1, находятся значения индиви­дуальных коэффициентов и парамет­ров
датчика. Далее необходимо открыть файл рабочей про­граммы баро­метра-термо­метра
BARO-2 asm, найти в нем фрагмент, приведенный в табл. 2, и ис­править значе­ния
объявлен­ных там конс­тант в соответ­ствии с прочи­танными из EEPROM Пара­метр D
в про­грамме не ис­пользуется

Теперь
про­грамма готова к работе с уста­новленным в прибор экзем­пляром датчика
Остается от­транслировать ее с помощью AVR Studio и загрузить полу­ченный НЕХ- файл
в микро­контроллер Уч­тите, что анало­гичный файл, приложенный к статье, рассчи­тан
на работу с датчиком, имев­шимся у автора Если загрузить его в микрокон­троллер
при­бор с другим эк­земпляром дат­чика давления будет работать но давать неточ­ные
показания

В
разработке использованы фрагменты программ из и . Подпро­граммы преоб­разования
чи­сел из шестнадцатеричного формата в дво­ично-десяти­чный перерабо­таны с
учетом разрядности чисел. Подпро­граммы пере­множения и де­ления двух­байтных
чисел, предназначен­ные для микро­контроллеров семейства MCS-51, пере­ведены на
язык ассемблера AVRASM Мень­ше всего под­верглась изме­нениям подпрограмма
управления ЖКИ, учтены лишь особенности индикатора MT-10S1 а для ввода и вывода
сигналов использо­ваны другие порты микроконтроллера.

Сегодня хотелось бы рассмотреть устройство, представляющее собой барометр - измеритель атмосферного давления. Применения такого устройства необходимо для мониторинга текущего атмосферного давления выраженного на индикаторе устройства в двух единицах измерения - в международной системе единиц Паскали (Па или Pa) и во внесистемных единицах измерения - миллиметры ртутного столбца. Последнее скорее всего больше привычно для наших стран, так как применяется в прогнозах погоды. Однако функционал данного устройства не ограничивается измерением только атмосферного давления, также реализовано измерение температуры и определение высоты над уровнем моря (альтитуды).

Схема устройства на AVR микроконтроллере ATmega8 представлена ниже:

В качестве датчика атмосферного давления в схеме использован BMP180 производства компании Bosch. По правде говоря, эта компания делает хорошие и качественные вещи, но даташит на этот датчик составлен в сравнении с даташитами других компаний не очень развернуто, без опыта чтения подобной документации разобраться будет трудно. Инженеры Bosch посчитали необходимым дать информацию только по самым основным параметрам, но все что нам нужно все есть, хоть местами и кратко. Датчик атмосферного давления BMP180 может работать как по I2C интерфейсу, так и по SPI интерфейсу (выбирается подключением необходимых выводов датчика). В данной схеме используется I2C интерфейс. Так как датчик требует питания до 3,3 вольт, а микроконтроллер питается от 5 вольт постоянного напряжения, необходимо применить согласование уровней I2C для корректной работы. Для этой цели выбрана микросхема производства компании NXP PCA9517. Сам датчик берет питания от стабилизатора напряжения на 3,3 вольта, это же питание подается на подтягивающие резисторы R6 и R7. Уровни сигналов преобразовываются микросхемой PCA9517 и сигналы от датчика атмосферного давления передаются микроконтроллеру с уровнями до 5 вольт. 5 вольт подключается к подтягивающим резисторам R4 и R5. Эти подтягивающие резисторы (pull-up) необходимы для работы протокола I2C - с их помощью формируются высокие уровни сигнала, а когда микросхема проваливает это напряжение с подтягивающих резисторов в нулевой потенциал, формируется низкий логический сигнал. В данной конфигурации напряжений логических уровней 3,3 и 5 вольт можно обойтись на крайний случай и без согласования уровней, так как согласно стандартам при таких питающих напряжения потенциалы низких уровней у них одинаковые, а высокий уровень совпадает как у 5 вольт, так и у 3,3 вольт, разница заключается только в максимальных значениях. Однако было решено не рисковать и все же применить согласование уровней - сделать все по правилам. Номиналы подтягивающих резисторов можно взять от 4,7 кОм до 10 кОм. Конденсаторы C3 и C4 необходимы для стабильной работы датчика атмосферного давления.

Важной функцией в данном датчике атмосферного давления является калибровка полученных измерений. В памяти датчика есть 11 коэффициентов, предназначенных для улучшения точности измерения параметров. Однако не все так просто - домножить на эти коэффициенты так просто нельзя. для получения конечных результатов в даташите приведен целый пример расчета на странице 15, документация на датчик ниже. В соответствии с этой информацией составляем программу для микроконтроллера на языке Си.

// получить значения температуры и атмосферного давления с учетом калибровочных коэффициентов void BMP180_calculation (int32_t* temperature, int32_t* pressure) { //int8_t i; int32_t ut=0; int32_t up=0; int32_t x1, x2, b5, b6, x3, b3, p; uint32_t b4, b7; BMP180_get_temper(); ut+=temperature_1; BMP180_get_pressure(); up=pressure_1; x1 = ((int32_t)ut - (int32_t)ac6) * (int32_t)ac5 >> 15; x2 = ((int32_t)mc << 11) / (x1 + md); b5 = x1 + x2; *temperature = (b5 + 8) >> 4; b6 = b5 - 4000; x1 = (b2 * ((b6 * b6) >> 12)) >> 11; x2 = (ac2 * b6) >> 11; x3 = x1 + x2; b3 = (((((int32_t) ac1) * 4 + x3)<> 2; x1 = (ac3 * b6) >> 13; x2 = (b1 * ((b6 * b6) >> 12)) >> 16; x3 = ((x1 + x2) + 2) >> 2; b4 = (ac4 * (uint32_t) (x3 + 32768)) >> 15; b7 = ((uint32_t) (up - b3) * (50000 >> OSS)); //p = b7 < 0x80000000 ? (b7 * 2) / b4: (b7 / b4) * 2; if (b7 < 0x80000000) { p = (b7 << 1) / b4; } else { p = (b7 / b4) << 1; } x1 = (p >> 8) * (p >> 8); x1 = (x1 * 3038) >> 16; x2 = (-7357 * p) >> 16; *pressure = p + ((x1 + x2 + 3791) >> 4); }

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

// получить данные для калибровки void BMP180_Calibration (void) { ac1 = Read(0xAA); ac2 = Read(0xAC); ac3 = Read(0xAE); ac4 = Read(0xB0); ac5 = Read(0xB2); ac6 = Read(0xB4); b1 = Read(0xB6); b2 = Read(0xB8); mb = Read(0xBA); mc = Read(0xBC); md = Read(0xBE); } // чтение регистра 16 бит uint16_t Read(uint8_t address) { uint16_t msb=0; uint16_t lsb=0; uint16_t data; i2c_start_cond(); // запуск i2c i2c_send_byte(BMP180_W); // передача адреса устройства, режим записи i2c_send_byte(address); // передача адреса памяти i2c_stop_cond(); // остановка i2c i2c_start_cond(); // запуск i2c i2c_send_byte(BMP180_R); // передача адреса устройства, режим чтения msb = i2c_get_byte(0); lsb = i2c_get_byte(1); i2c_stop_cond(); // остановка i2c data = (msb << 8) + lsb; return data; }

Для получения значения альтитуды или высоты над уровнем моря используем также формулу, приведенную в даташите и получаем такую функцию:

// функция расчета высоты над уровнем моря (альтитуда) (функция берет очень много памяти из-за математических функций!!!) void bmp180CalcAltitude(int32_t pressure){ float temp; temp = (float) pressure/101325; temp = 1-pow(temp, 0.19029); //altitude = round(44330*temp*10); altitude = 44330*temp*100; //get altitude in dm }

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

Также данный датчик может измерять атмосферное давление с разной точностью. Для задания точности необходимо передать это значение датчику по I2C и правильно задать задержку перед чтением регистров с полученными данными (в зависимости от точности, датчику нужно больше или меньше времени на измерение). программный код выглядит так:

// прочитать значение атмосферного давления void BMP180_get_pressure(void){ i2c_start_cond(); // запуск i2c i2c_send_byte(BMP180_W); // передача адреса устройства, режим записи i2c_send_byte(0xF4); // передача адреса памяти i2c_send_byte(0x34+(OSS<<6)); // передача разрешения (oss) адреса памяти температуры i2c_stop_cond(); // остановка i2c _delay_ms(26); // время на замер (от 5 до 26 мс в зависимости от разрешения (oss)) i2c_start_cond(); // запуск i2c i2c_send_byte(BMP180_W); // передача адреса устройства, режим записи i2c_send_byte(0xF6); // передача адреса памяти i2c_stop_cond(); // остановка i2c i2c_start_cond(); // запуск i2c i2c_send_byte(BMP180_R); // передача адреса устройства, режим чтения D1=i2c_get_byte(0); // MSB D2=i2c_get_byte(0); // LSB D3=i2c_get_byte(1); // XLSB i2c_stop_cond(); // остановка i2c pressure_1 = ((D1 << 16) + (D2 << 8) + D3) >> (8-OSS); // вычислить давление (в Па) }

При сборке схемы датчик атмосферного давления BMP180 был применен на заводской печатной плате китайской сборки (модуль включает в себя стабилизатор питания на 3,3 вольта с конденсаторами, подтягивающие резисторы для интерфейса I2C и конденсаторы в обвязке самого датчика по питанию, микросхема или просто схема согласования уровней на данной плате отсутствует, поэтому необходимо применять в другом исполнении):

Питается вся схема от простого модуля питания на силовом трансформаторе. Переменное напряжение выпрямляется четырьмя диодами VD1 - VD4 марки 1N4007, пульсации сглаживаются конденсаторами C1 и C2. Номинал конденсатора C2 можно увеличить до 1000 - 4700 мкФ. Четыре выпрямительных диода можно заменить одним диодным мостом. Трансформатор применен марки BV EI 382 1189 - преобразует 220 вольт переменного тока в 9 вольт переменного тока. Мощность трансформатора составляет 4,5 Вт, этого вполне достаточно и еще с запасом. Такой трансформатор можно заменить любым другим силовым трансформатором, подходящим для Вас. Либо данный питающий модуль схемы заменить на импульсный источник напряжения, можно собрать схему обратноходового преобразователя либо применить иже готовый блок питания от телефона, например - все это дело вкусов и потребностей. Выпрямленное напряжение с трансформатора стабилизируется на микросхеме линейного стабилизатора L7805 , ее можно заменить на отечественный аналог пяти вольтового линейного стабилизатора КР142ЕН5А, либо применить другу микросхему стабилизатора напряжения в соответствии с подключением ее в схеме (например LM317 или импульсные стабилизаторы LM2576, LM2596, MC34063 и так далее). Далее 5 вольт стабилизируются другой микросхемой - AMS1117 в исполнении, дающей на выходе 3,3 вольта. Это напряжение используется для питания датчика атмосферного давления BMP180 в соответствии с документацией. Номиналы конденсаторов в обвязках микросхем стабилизаторов напряжения можно варьировать в широких пределах в области взятого порядка.

Ну и сердцем схемы является микроконтроллер Atmega8. данный микроконтроллер можно использовать как в корпусе DIP-28, так и в СМД исполнении в корпусе TQFP-32. Резистор R3 необходим для предотвращения самопроизвольного перезапускания микроконтроллера в случае появления случайных помех на выводе PC6. Резистор R3 подтягивает плюс питания к этому выводу, надежно создавая потенциал на нем. Для индикации измеряемых параметров используется жидко кристаллический (ЖК или LCD) дисплей SC1602. Он имеет 2 строки символов по шестнадцать штук в каждой из них. ЖК дисплей подключается к микроконтроллеру по четырех битной системе. Переменный резистор R2 необходим для регулировки контраста символов на дисплее. Вращением движка этого резистора добиваемся наиболее четких для нас показаний на экране. Подсветка ЖК дисплея организована через вывод "А" и "К" на плате дисплея. Подсветка включается через резистор, ограничивающий ток - R1. Чем больше номинал, тем более тускло будет подсвечиваться дисплей. Однако пренебрегать этим резистором не стоит во избежание порчи подсветки. Мощность всех резисторов постоянного сопротивления составляет 0,25 Вт.

Схема была собрана и отлажена на макетной плате для микроконтроллеров Atmega8:

В итоге данная схема имеет следующий функционал:

  • измерение и отображение атмосферного давления в двух единицах измерения (Паскали и миллиметры ртутного столбца)
  • измерение и отображение температуры окружающей среды
  • подсчет и отображение положения датчика относительно уровня моря (подсчет альтитуды)
  • данные на дисплее обновляются раз в две секунды

В данном устройстве показание положения относительно уровня моря именно высчитывается, а не измеряется. Расчет происходит по рекомендованной формуле из даташита упрощенного расчета положения относительно уровня моря в зависимости от атмосферного давления. Как известно, чем выше мы находимся, тем давление атмосферы меньше. Именно эта зависимость и используется при расчете. Однако, в связи с тем что для любой отдельной территории погода может меняться, а вместе с ней и атмосферное давление будет колебаться. Исходя из этих размышлений, а также опытных наблюдений, положение над уровнем моря будет постоянно плавать в зависимости от колебаний атмосферного давления (по идеи то высота не должна изменяться с такой скоростью). Эта функция рассматривается как дополнительная и не совсем достоверная (уровень над морем в течении дня может плавать плюс минус процентов 5 - а это много, я считаю). Но именно атмосферное давление измеряется данным датчиком вполне точно - совпадение с текущим прогнозом погоды от полного до расхождения не более одного процента. Температура в данном датчике измеряется также весьма точно.

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

Для программирования микроконтроллера Atmega8 необходимо знать конфигурацию фьюз битов (скриншот сделан в программе AVR Studio):

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

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 МК AVR 8-бит

ATmega8

1 В блокнот
IC2 ИС I2C интерфейса

PCA9517

1 В блокнот
IC3 Датчик атмосферного давления BMP180 1 В блокнот
VR1 Линейный регулятор

L7805AB

1 В блокнот
VR2 Линейный регулятор

AMS1117-3.3

1 В блокнот
VD1-VD4 Выпрямительный диод

1N4007

4 В блокнот
HG1 LCD-дисплей SC1602 1 На базе HD44780

David W. Bray

Дано описание конструкции версии 2.0 электронного барометра с интерфейсом 1-Wire, отличающегося от популярной версии 1.1а удвоенной точностью измерений.

Как и в схеме версии 1.1а, в этой разработке используется интегральный датчик давления MPX4115 фирмы Motorola. Аналого-цифровое преобразование выполняется микросхемой DS2438 с интерфейсом 1-Wire. Помимо этих схем использован один операционный усилитель, два стабилизатора напряжения, два диода, светодиод и несколько резисторов и конденсаторов. Заметим, что изначальное предназначение микросхемы DS2438 - монитор заряда аккумуляторов.

Предысторию разработки версии 2.0 можно найти в статье http://davidbray.org/onewire/barometer.html .

Печатная плата

Как и для предыдущей версии 1.1а, одностороннюю печатную плату для барометра версии 2.0 разработал Jim Jennings. Печатная плата для версии 2.0 более универсальна, на ней можно собрать и схему барометра версии 1.1а.

Некоторые тонкости

В этой схеме требуется еще один дополнительный источник питания, который отсутствовал в версии 1.1а, поскольку для питания датчика давления MPX4115 требуется ток порядка 7 мА, а это больше того, что можно взять с линии интерфейса 1-Wire.

Схема обеспечивает разрешение (точность измерения давления) около 0.00417 inHg (0.1059 мм рт. столба или 0.0139 кПа) в диапазоне измерений атмосферного давления от 31.0 до 28.0 inHg (от 787.4 до 711.2 мм рт. ст. или от 105.0 до 95.0 кПа). Еще большую точность измерения можно обеспечить, сократив диапазон измеряемых значений атмосферного давления.

Принципиальная схема

На этой схеме не показан разъем. Полная схема дана .

Описание принципиальной схемы

Датчик давления MPX4115 выдает напряжение в пределах от 4.25 до 3.79 В при измерении давления на уровне моря и, примерно, от 2.77 В до 2.45 В на высоте 10000 футов (3048 м). Это превышает рабочий диапазон входных напряжений операционного усилителя LM358N, при питании его от источника 5 В. Дело в том, что выходной сигнал датчика давления отсчитывается, фактически, относительно его шины питания, а не относительно «земли», как было бы намного удобнее.

К счастью, АЦП микросхемы DS2438 может обрабатывать сигналы до 10 В, поэтому, при питании ОУ напряжением 10 В, сигналы датчика MPX4115 будут хорошо согласованы с диапазоном входных сигналов DS2438.

Сигнал с выхода датчика давления MPX4115 через RC-фильтр поступает на вход операционного усилителя U1B с коэффициентом усиления около 4. На второй вход усилителя подается регулируемое напряжение, которое суммируясь с выходным напряжением датчика давления, обеспечивает смещение уровня для согласования со входом АЦП.

Усиление и смещение регулируются 10-оборотными подстроечными резисторами. R3 устанавливает усиление U1A, а R4 управляет смещением.

Обратите внимание, что выход датчика давления соединен с резистором R1 через съемную перемычку. Это сделано для того, чтобы можно было откалибровать сигнал MPX4115 по внешнему источнику напряжения.

Продолжение читайте



© 2024 globusks.ru - Ремонт и обслуживание автомобилей для новичков