Схема барометра на мікроконтролері саморобна. Електросхеми у помічниках

Схема барометра на мікроконтролері саморобна. Електросхеми у помічниках

Схема барометра для вимірювання атмосферного тиску побудована за допомогою датчика тиску 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 b3, p;uint32_t b4, b7;BMP180_get_temper();ut+=temperature_1;BMP180_get_pressure();up=pressure_1; (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 біт address) ( uint16_t msb=0; uint16_t lsb=0; uint16_t data; i2c_start_cond(); // запуск i2c i2c_send_byte(BMP180_W); // передача адреси пристрою, режим запису i2c_send_byte(ad // зупинка i2c i2c_start_cond(); // запуск i2c i2c_send_byte(BMP180_R); // передача адреси пристрою, режим читання msb = i2c_get_byte(0); lsb = i2c_get_byte(1); i2c_stop_ (msb<< 8) + lsb; return data; }

Для отримання значення альтитуди або висоти над рівнем моря використовуємо формулу, наведену в датасіті і отримуємо таку функцію:

// функція розрахунку висоти над рівнем моря (альтитуда) (функція бере дуже багато пам'яті через математичні функції!!!) void bmp180CalcAltitude(int32_t pressure)( float temp; (temp, 0.19029); // altitude = round (44330 * temp * 10); altitude = 44330 * temp * 100;

Залежно від потреби цю функцію можна викинути з вихідника, тому що для розрахунку потрібно використовувати бібліотеку - реалізовані в ній методи розрахунку необхідних дій відбирають дуже багато пам'яті як флеш, так і оперативної, проте нічого краще поки що не вигадав.

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

// прочитати значення атмосферного тиску void BMP180_get_pressure(void)( i2c_start_cond(); // запуск i2c i2c_send_byte(BMP180_W); // передача адреси пристрою, режим запису i2c_send_byte(0xF4); // передача адреси пам'яті i2c<<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 Датчик атмосферного тискуBMP1801 До блокноту
VR1 Лінійний регулятор

L7805AB

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

AMS1117-3.3

1 До блокноту
VD1-VD4 Випрямний діод

1N4007

4 До блокноту
HG1 LCD-дисплейSC16021 На базі 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 мм 9.0.5. Ще більшу точність виміру можна забезпечити, скоротивши діапазон вимірюваних значень атмосферного тиску.

Принципова схема

На цій схемі не показаний роз'єм. Повна схема дана.

Опис принципової схеми

Датчик тиску 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 по зовнішньому джерелу напруги.

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



© 2023 globusks.ru - Ремонт та обслуговування автомобілів для новачків