Схема барометр на микроконтроллере самодельная. Схема барометра для измерения давления. Описание принципиальной схемы

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

Схема устройства ниже (нажмите на рисунок для увеличения), конвертер USB-UART на показан схемотически, схема в нем стандартная и уже описана здесь.

Сердцем схемы служит микроконтроллер ATMega64 фирмы Atmel, работающий от внешнего кварца на 16 МГц. Отсчитыванием времени занимается микросхема часов реального времени , я уже имел с ней дело и поэтому пошел по проверенному пути.

Для измерения температруы и влажности применен датчик DHT11, хоть и китай чистейшей воды, но показания выдает вполне удовлетворительные. У меня в заначке лежит еще SHT21, но тогда повторяемость схемы сильно упадет, потому как достaть его сложней и по стоимости он выйдет как вся схема в сборе.

Следующий датчик BMP085 - занимается измерениями атмосферного давления. Помимо этого он умеет измерять и температуру, так что можно будет с него дублировать показания.

Так как в дальнейшем планируется превратить устройство в логгер, предусмотрено место для подключения внешней EEPROM памяти 24LCxx. Для сопряжения 3х вольтового датчика давления использована зарекомендовавшая себя схема согласования на полевых тарнзисторах.

Все элементы (за исключением двух резисторов) находятся на верхнем слое, на нижнем разведены дороги которые не уместились на верху. Интересного там мало поэтому фото не привожу.

Чтобы иметь возможность напрямую подключать утсройство к компьютеру (к примеру, для того чтобы скинуть накопленные данные) на плате установлен преобразователь USB-UART на микросхеме FT232RL. Так же через этот преобразователь можно загружать в микроконтроллер прошивку, если предварительно зашить в микроконтроллер загрузчик (Bootloader). Как это сделать я писал ранее.

Для подключения внешних датчиков, навсякий случай предусмотрены выводы с портов PA0-PA3. А также выведены контакты SPI-интерфейса, на случай если захочется подключить и организовать радиоканал.

Тестовый код выводит на экран время и дату с часов DS1307, с возможностью ручной установки (см. видео). На вторую строку выводится информация с датчика влажности DHT11, на третью - с датчика давления BMP085. Как видите китаец DHT не уступает по показаниям температуры своему немецкому собрату BMP085 от Bosh. Кстати, китаец тоже умеет выдавать показания с десятыми долями градуса, позже добавлю в код эту функцию.

И напоследок видео, демонстрирующее возможность ручной установки даты и времени.

Подключение мотора постоянного тока к Ардуино (коллекторного двигателя) требуется при сборке машинки или катера на микроконтроллере Arduino. Рассмотрим различные варианты подключения двигателей постоянного тока: напрямую к плате, через биполярный транзистор, а также с использованием модуля L298N. В обзоре размещены схемы подключения и коды программ для всех перечисленных вариантов.

Управление двигателем на Ардуино

Коллекторный моторчик может быть рассчитан на разное напряжения питания. Если двигатель работает от 3-5 Вольт, то можно моторчик подключать напрямую к плате Ардуино. Моторы для машинки с блютуз управлением, которые идут в комплекте с редукторами и колесами рассчитаны уже на 6 Вольт и более, поэтому ими следует управлять через полевой (биполярный) транзистор или через драйвер L298N.


На схеме показано устройство моторчика постоянного тока и принцип его работы. Как видите, для того, чтобы ротор двигателя начал крутиться к нему необходимо подключить питание. При смене полярности питания, ротор начнет крутиться в обратную сторону. Драйвер двигателей L298N позволяет инвертировать направление вращения мотора fa 130, поэтому его удобнее использовать в своих проектах.

Как подключить моторчик к Arduino

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • мотор постоянного тока (Motor DC);
  • транзистор полевой/биполярный;
  • драйвер двигателей L298N;
  • провода «папа-папа», «папа-мама».

Перед выбором способа управления двигателем от Arduino Uno r3 , уточните на какое напряжение рассчитан ваш моторчик. Если питание требуется более 5 Вольт, то следует использовать транзистор или драйвер. Распиновка транзисторов может отличаться от приведенного примера (следует уточнить распиновку для своего типа). Драйвер L298N позволит не только включать мотор, но и изменять направление вращения.

Скетч. Подключение мотора напрямую

Подключение мотора к Ардуино напрямую — самый простой вариант включения вентилятора на Arduino или машинки. Команда для включения двигателя не отличается, от команды при подключении светодиода к микроконтроллеру. Функция digitalWrite включает/выключает подачу напряжения на цифровой порт, к которому подключен двигатель постоянного тока. Соберите схему и загрузите программу.

void setup () { pinMode (12, OUTPUT ); // объявляем пин 12 как выход } void loop () { digitalWrite (12, HIGH ); // включаем мотор delay (1000); // ждем 1 секунду digitalWrite (12, LOW ); // выключаем мотор

Пояснения к коду:

  1. для подключения мотора без драйвера можно использовать любой порт;
  2. если двигатель не включается, то, возможно, не хватает силы тока на цифровом выходе, подключите двигатель через транзистор к порту 3,3V или 5V.

Скетч. Подключение мотора через транзистор

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

Подключение FA-130 мотора постоянного тока — Motor DC Arduino void setup () { pinMode (13, OUTPUT ); // объявляем пин 13 как выход } void loop () { digitalWrite (13, HIGH ); // включаем мотор delay (1000); // ждем 1 секунду digitalWrite (13, LOW ); // выключаем мотор delay (1000); // ждем 1 секунду }

Пояснения к коду:

  1. при необходимости можно подключить два мотора FA-130 к Ардуино;
  2. в зависимости от характеристик, двигатель подключается к 3,3 или 5 Вольтам.

Скетч. Подключение мотора через драйвер

Подключение мотора к Ардуино через драйвер L298N или Motor Shield L293D позволит менять направление вращения ротора. Но для использования данных модулей потребуется установить соответствующие библиотеки для Ардуино . В примере мы использовали схему подключения двигателя с помощью модуля L298N. Соберите схему, как на картинке ниже и загрузите следующий скетч с использованием.

// задаем имена для портов #define IN1 3; #define IN2 4; #define IN3 5; #define IN4 6; void setup () { pinMode (IN1, OUTPUT ); pinMode (IN2, OUTPUT ); pinMode (IN3, OUTPUT ); pinMode (IN4, OUTPUT ); } void loop () { // вращаем моторчики в одну сторону digitalWrite (IN3, HIGH ); digitalWrite (IN4, LOW ); digitalWrite (IN5, HIGH ); digitalWrite (IN6, LOW ); delay (2000); // ждем 2 секунды digitalWrite (IN3, LOW ); digitalWrite (IN4, LOW ); digitalWrite (IN5, LOW ); digitalWrite (IN6, LOW ); delay (1000); // выключаем на 1 секунду // вращаем моторчики в обратную сторону digitalWrite (IN3, LOW ); digitalWrite (IN4, HIGH ); digitalWrite (IN5, LOW ); digitalWrite (IN6, HIGH ); delay (2000); // ждем 2 секунды digitalWrite (IN3, LOW ); digitalWrite (IN4, LOW ); digitalWrite (IN5, LOW ); digitalWrite (IN6, LOW ); delay (1000); // выключаем на 1 секунду }

Пояснения к коду:

  1. драйвер двигателей позволяет управлять скоростью и направлением вращения мотора, подробнее читайте в обзоре — Подключение драйвера L298N к Arduino;
  2. если моторчики не крутятся, подключите к драйверу источник питания 6-12В.

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

Возникла необходимость обновить будильник в спальне. Для переделки использовались китайские часы 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, по которым строились печатки, описание, фото внешнего вида. Печатные платы в статью не выкладываю, так как при разработке допустил ряд ошибок и пришлось вносить некоторые изменения уже на плате. Кроме того, плата сделана именно под этот корпус. Если кому надо - пишите, выложу в форме. По случаю сфотографирую и внутреннее устройство часов.

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

Схема барометра для измерения атмосферного давления построена с использованием датчика давления 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 на вход АЦП. Он просто вычисляет давление в зависимости от входного напряжения в соответствии с формулой, преобразует его в двоично-десятичный код и выдает на экран.

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

Сердцем схемы служит микроконтроллер ATMega64 фирмы Atmel, работающий от внешнего кварца на 16 МГц. Отсчитыванием времени занимается микросхема часов реального времени DS1307 , я уже имел с ней дело и поэтому пошел по проверенному пути.

Для измерения температруы и влажности применен датчик DHT11 , хоть и китай чистейшей воды, но показания выдает вполне удовлетворительные. У меня в заначке лежит еще SHT21 , но тогда повторяемость схемы сильно упадет, потому как достaть его сложней и по стоимости он выйдет как вся схема в сборе.

Все элементы (за исключением двух резисторов) находятся на верхнем слое, на нижнем разведены дороги которые не уместились на верху. Интересного там мало поэтому фото не привожу.

Чтобы иметь возможность напрямую подключать утсройство к компьютеру (к примеру, для того чтобы скинуть накопленные данные) на плате установлен преобразователь USB-UART на микросхеме FT232RL . Так же через этот преобразователь можно загружать в микроконтроллер прошивку, если предварительно зашить в микроконтроллер загрузчик (Bootloader). Как это сделать я писал ранее .

Для подключения внешних датчиков, навсякий случай предусмотрены выводы с портов PA0-PA3. А также выведены контакты SPI-интерфейса, на случай если захочется подключить