Электрификация

Справочник домашнего мастера

Метеостанция на ардуино

Регистратор температуры с использованием arduino

Want create site? Find Free WordPress Themes and plugins.

Этот проект представляет собой простую систему регистрации температуры USB с использованием arduino uno и функцию последовательного мониторинга в среде разработки arduino. Система контролирует температуру каждые 2 секунды и показывает ее на серийном мониторе arduino. Температура показана в градусах Цельсия и градусах Фаренгейта. Система подключается к ПК через USB-порт. LM35 используется как датчик температуры.

LM35 — это трехконтактный линейный температурный датчик от National Semiconductors. Он может измерять температуру от -55 ° C до + 150 ° C. Выходная мощность LM35 увеличивается на 10 мВ на градус по Цельсию, повышая температуру. LM35 может работать от источника питания 5 В от тока меньше 60 мкА. Выводы из LM35 показан на рисунке ниже.

Принципиальная электрическая схема.

Датчик температуры LM35 соединяется с Arduino через аналоговые входные контакты A0, A1 и A2. Аналоговый вход A0 действует как контакт питания 5V для LM35. Аналоговый входной контакт A2 служит в качестве заземляющего контакта для LM35. Аналоговый входной контакт A1 установлен как вход, а выход напряжения LM35 подключается к ардуину через этот вывод. Эта схема очень полезна, поскольку вы можете подключить LM35 непосредственно к гнезду аналогового входа, и никаких внешних соединительных проводов не требуется. Плата arduino питается от ПК через USB-кабель, и в этой цепи не требуется внешний источник питания. USB-порт также служит средством связи между arduino и ПК.

Программа.

int t = 0; int vcc = A0; // устанавливает аналоговый вход A0 как + 5V источник для LM35 int sensor = A1; // устанавливает A1 как вход датчика int gnd = A2; // устанавливает аналоговый вход A2 в качестве заземления для LM35 float temp; float tempc; float tempf; void setup () { pinMode (VCC, OUTPUT); pinMode (GND, OUTPUT); pinMode (датчик, INPUT); digitalWrite (VCC, HIGH); // устанавливает аналоговый вход A0 HIGH digitalWrite (GND, LOW); // устанавливает аналоговый вход A2 LOW Serial.begin (9600); // устанавливает скорость передачи в бодах на 9600 } void loop () {delay (2000); // вызывает задержку в 2 секунды т = Т + 2; // увеличивает время на 2 каждые две секунды Темп = analogRead (датчик); // читает вывод LM35 tempc = (температура * 5) / 10; // преобразует цифровое значение в градусы C tempf = (tempc * 1.8): +32; // преобразует степень C в степень F Serial.println ( «……………»); Serial.println («Регистратор температуры»); Serial.print («Время в секундах =»); // печатает время в окне последовательного монитора Serial.println (т); Serial.print («Температура в градусах C =»); // печатает температуру в градусахC Serial.println (tempc); Serial.print («Температура в градусах F =»); // печатает температуру в градусах F. Serial.println (tempf); }

О программе.

Выход напряжения LM35 подключается к аналоговому входу A1 ардуино. Напряжение на этом контакте будет пропорционально температуре, и это напряжение считывается с использованием функции analogRead. Функция analogRead будет считывать напряжение (в диапазоне от 0 до 5) на конкретном входном штыре и преобразует его в цифровое значение от 0 до 1023. Например, если 29 ° C является температурой, выход LM35 будет 290mV. Результатом функции analogRead будет 290mV / (5/1023) = 59. Должен быть какой-то способ конвертировать эти 59 в 29.0 для отображения в окне последовательного монитора. Это делается путем умножения 59 на 5, а затем деления результата на 10. Результатом будет температура в ° C, и она отображается с использованием функции Serial.print. Затем он преобразуется в ° F, используя следующую формулу: ° F = (° C * 1,8) +32. Отображается также температура в ° F. Последовательный монитор можно получить на вкладке «Инструменты» в среде разработки arduino IDE. Ярлык для последовательного монитора — ctrl + shift + M.

Бортовой самописец на Arduino Mega

Для работы ниже приведённого скетча скачайте и установите библиотеки:

  1. OneWire и DallasTemperature для работы с датчиком температуры DS18B20
  2. Troyka-IMU — библиотека для работы с IMU-сенсором на 10 степеней свободы.
  3. TroykaGPS — библиотека для работы с модулем GPS/GLONASS
  4. AmperkaGPRS — библиотека для работы с GPRS Shield

flight-recorder.ino // библиотеки для работы с датчиком 18B20 #include <OneWire.h> #include <DallasTemperature.h> // библиотека для работы с SPI #include <SPI.h> // библиотека для работы с SD-картами #include <SD.h> // библиотека для работы I²C #include <Wire.h> // библиотека для работы с модулями IMU #include <TroykaIMU.h> // библиотека для работы с GPS устройством #include <TroykaGPS.h> // библиотека для работы с GPRS устройством #include <AmperkaGPRS.h> // serial-порт к которому подключён GPS-модуль #define GPS_SERIAL Serial1 // serial-порт к которому подключён GPRS-модуль #define GPRS_SERIAL Serial3 // пин подключения CS microSD-карты #define SD_CS_PIN 10 // пин подключения датчика 18B20 #define TEMP_18B20_PIN A1 // задаём размер массива для времени #define MAX_SIZE_MASS 16 // интервал времени записи данных на SD-карту #define INTERVAL_SD 1000 // интервал времени передачи данных через СМС #define INTERVAL_SMS 600000 // номер на который будем отправлять сообщение #define PHONE_NUMBER «+74959379992» // создадаём объект для работы с библиотекой OneWire OneWire oneWire(TEMP_18B20_PIN); // создадаём объект для работы с библиотекой DallasTemperature DallasTemperature sensor18B20(&oneWire); // создаём объект для работы с барометром Barometer barometer; // создаём объект класса GPS и передаём в него объект Serial1 GPS gps(GPS_SERIAL); // создаём объект класса GPRS и передаём в него объект Serial1 GPRS gprs(GPRS_SERIAL); // можно указать дополнительные параметры — пины PK и ST // по умолчанию: PK = 2, ST = 3 // GPRS gprs(GPRS_SERIAL, 2, 3); // массив для хранения текущего времени char strTime; // массив для хранения текущей даты char strDate; // массив для хранения широты в градусах, минутах и секундах char latitudeBase60; // массив для хранения долготы в градусах, минутах и секундах char longitudeBase60; // запоминаем текущее время long startMillisSD = millis(); // запоминаем текущее время long startMillisSMS = millis(); // данные модулей для записи на карту SD String dataStringSD = «»; // данные модулей для отправки СМС String dataStringSMS = «»; // переменные для хранения данных с датчиков и модулей float temperature18B20; float temperatureBarometer; float pressureBarometer; float altitudeBarometer; String timeGPS; String dateGPS; String altitudeGPS; String latitudeBase60GPS; String longitudeBase60GPS; void setup() { // открываем последовательный порт для мониторинга действий в программе Serial.begin(115200); // выводим сообщение в Serial-порт о поиске карты памяти Serial.println(«Initializing SD card…»); // если microSD-карта не была обнаружена if (!SD.begin(SD_CS_PIN)) { // выводим сообщение об ошибке Serial.println(«Card failed, or not present»); } else { Serial.println(«Card initialized»); } // начало работы с датчиком DS18B20 sensor18B20.begin(); // установим разрешение датчика sensor18B20.setResolution(12); // выводим сообщение об удачной инициализации Serial.println(«18B20 is OK»); // инициализация барометра barometer.begin(); // выводим сообщение об удачной инициализации Serial.println(«LPS331 is OK»); // открываем Serial-соединение с GPS-модулем GPS_SERIAL.begin(115200); // выводим сообщение об удачной инициализации Serial.println(«GPS is OK»); // открываем Serial-соединение с GPRS Shield GPRS_SERIAL.begin(115200); // включаем GPRS-шилд gprs.powerOn(); delay(1000); if (!gprs.begin()) { // если связи нет, ждём 1 секунду // и выводим сообщение об ошибке; Serial.print(«GPRS Begin error\r\n»); } // вывод об удачной инициализации GPRS Shield Serial.println(«GPRS is OK»); } void loop() { // считываем данные с модулей и датчиков getTemperature18B20(); getDataBarometer(); getDataGPS(); // собираем пакет данных для записи на SD-карту dataStringSD = dateGPS; dataStringSD += «\t»; dataStringSD += timeGPS; dataStringSD += «\t»; dataStringSD += latitudeBase60GPS; dataStringSD += «\t»; dataStringSD += longitudeBase60GPS; dataStringSD += «\t»; dataStringSD += temperature18B20; dataStringSD += «\t»; dataStringSD += temperatureBarometer; dataStringSD += «\t»; dataStringSD += pressureBarometer; dataStringSD += «\t»; dataStringSD += altitudeBarometer; dataStringSD += «\t»; dataStringSD += altitudeGPS; dataStringSD += «\t»; // собираем пакет данных для СМС dataStringSMS = dateGPS; dataStringSMS += » «; dataStringSMS += timeGPS; dataStringSMS += » «; dataStringSMS += latitudeBase60GPS; dataStringSMS += » «; dataStringSMS += longitudeBase60GPS; dataStringSMS += » «; dataStringSMS += temperature18B20; dataStringSMS += » «; dataStringSMS += temperatureBarometer; dataStringSMS += » «; dataStringSMS += pressureBarometer; dataStringSMS += » «; dataStringSMS += altitudeBarometer; dataStringSMS += » «; dataStringSMS += altitudeGPS; dataStringSMS += » «; if (millis() — startMillisSD > INTERVAL_SD) { // сохраняем данные с модулей на карту памяти saveSD(); // запоминаем текущее время startMillisSD = millis(); } if (millis() — startMillisSMS > INTERVAL_SMS) { // отправляем данные СМС сообщениям sendSMS(); // запоминаем текущее время startMillisSMS = millis(); } } // функция считывания данных с GPS-модуля в глобальные переменные void getDataGPS() { // если пришли данные с GPS-модуля if (gps.available()) { // считываем данные и парсим gps.readParsing(); // проверяем состояние GPS-модуля switch(gps.getState()) { // всё OK case GPS_OK: gps.getTime(strTime, MAX_SIZE_MASS); gps.getDate(strDate, MAX_SIZE_MASS); gps.getLatitudeBase60(latitudeBase60, MAX_SIZE_MASS); gps.getLongitudeBase60(longitudeBase60, MAX_SIZE_MASS); timeGPS = (String)strDate; dateGPS = (String)strDate; latitudeBase60GPS = (String)latitudeBase60; longitudeBase60GPS = (String)longitudeBase60; altitudeGPS = gps.getAltitude(); break; // ошибка данных case GPS_ERROR_DATA: dateGPS = «Error»; timeGPS = «Error»; latitudeBase60GPS = «Error»; longitudeBase60GPS = «Error»; altitudeGPS = «Error»; break; // нет соединение со спутниками case GPS_ERROR_SAT: dateGPS = «No Sat»; timeGPS = «No Sat»; latitudeBase60GPS = «No Sat»; longitudeBase60GPS = «No Sat»; altitudeGPS = «No Sat»; break; } } } // функция считывания данных с барометра в глобальные переменные void getDataBarometer() { temperatureBarometer = barometer.readTemperatureC(); pressureBarometer = barometer.readPressureMillibars(); altitudeBarometer = barometer.pressureToAltitudeMeters(pressureBarometer); } // функция считывания данных с датчика 18B20 в глобальную переменную void getTemperature18B20() { // считываем данные с цифрового термометра 18B20 sensor18B20.requestTemperatures(); temperature18B20 = sensor18B20.getTempCByIndex(0); } // функция записи данных с модулей на SD-карту void saveSD() { // создаём файл для записи File dataFile = SD.open(«datalog.txt», FILE_WRITE); // если файл доступен для записи if (dataFile) { // сохраняем данные dataFile.println(dataStringSD); Serial.println(dataStringSD); // закрываем файл dataFile.close(); // выводим сообщение об удачной записи Serial.println(«Save OK»); } else { // если файл не доступен // выводим сообщение об ошибке Serial.println(«Error opening file»); } } // функция отправки данные с модулей СМС сообщением void sendSMS() { char dataSMS = «»; dataStringSMS.toCharArray(dataSMS, 128); gprs.sendSMS(PHONE_NUMBER, dataSMS); Serial.println(«SMS sent OK»); }

Модуль регистрации и хранения данных (плата дата логгера для Arduino)

Модуль регистрации и хранения данных (плата дата логгера для Arduino)
Assembled Data Logging shield for Arduino
Модуль позволяет сохранять на SD карте результаты измерений дополнительно монтируемых датчиков. Модуль регистрации и хранения данных содержит микросхему часов реального времени, позволяющую фиксировать дату и время каждого измерения. На плате смонтирован держатель SD карты, контейнер для батареи питания. Батарея обеспечивает ход часов в течение нескольких лет. Макетное поле предназначено для монтажа датчиков и электрических цепей. Программное обеспечение Arduino, предоставляемое с сайта Adafruit, позволяет сохранять файлы данных на карте памяти в формате пригодном для программы Excel. Производится фирмой Adafruit.
Устройство дает возможность исследовать параметры различных процессов, развивающихся на протяжении длительного времени. Например, можно узнать какова температура в нескольких точках блока питания, работающего с максимальной гарантированной нагрузкой в течение недели и проверить эффективность средств охлаждения. Полученные данные представляются в виде файла стандартного формата, который можно на персональном компьютере преобразовать в график средствами Microsoft office.
Модуль найдет широкое применение при проведении испытаний техники и в научных экспериментах.
Характеристики
Напряжение питания 5 В
Размеры 70 x 53 x 17 мм
SD карта выступает на 10 мм
Особенности
Модуль регистрации и хранения данных работает с картами памяти отформатированными в FAT16 или FAT32. Напряжение питания для SD карты 3,3 В обеспечивает микросхема RT9193-33 интегральный стабилизатор постоянного напряжения. Интересные особенности заключаются также в наличии часов реального времени (RTC) работают при отключении основного питания благодаря батарее. Есть программные библиотеки с примерами кода для карты памяти и часов реального времени (RTC). Размещены 2 светодиода для использования на усмотрение инженера-исследователя. Последовательно со светодиодами включены резисторы 470 Ом.
Обзор

На фотографии модуля вверху слева виден контейнер батареи. Под ним микросхема DS1307 часов реального времени (RTC), рядом с ней более крупный компонент – кварцевый резонатор. Ниже слева стабилизатор напряжения 3,3 В, еще ниже зеленый светодиод PWR, который светится при подаче питания. Вверху справа светодиоды для различного применения. Вверху в центре большой держатель для SD карты SD/MMC до 32 Гбайт. Если у вас micro-SD карта, то для ее установки применяется адаптер.

Кнопка Reset сбрасывает всю систему на базе центрального модуля Arduino, в которую включен модуль регистрации и хранения данных.
Под контейнером карты памяти расположены контакты, на которые выведены следующие сигналы.
3В – это выход стабилизатора напряжения 3,3 В, позволяет подключать нагрузку с потреблением тока до 50 мА.
SQ – прямоугольные импульсы с выхода часов. В программе должна быть специальная команда, чтобы включить этот сигнал. Используется в основном для тестирования.
WP – Write Protect сигнал логического уровня, сообщающий о наличии запрета записи карте памяти.
CD – низкий уровень сигнала сообщает о том, что модуль регистрации и хранения содержит карту памяти в держателе. Для этого сигнала рекомендуется использовать внутренние резисторы подтягивания к питанию внутри микроконтроллера.
В нижней части группа из трех контактов.
CS – сигнал интерфейса SD карты выбор устройства.
L2 и L1 – управление светодиодами, расположенными вверху. L1 для подключения LED1 и L2 для подключения LED2. Светодиоды работают при подаче высокого логического уровня.

Схема модуля и подключение к Arduino UNO R3.
Использование часов реального времени
При сохранении данных события полезно знать дату и время произошедшего события. Arduino имеет встроенный хронометр, называемый Millis() и таймеры, встроенные в микроконтроллер, которые могут отслеживать длительные периоды времени. Зачем нужна отдельная микросхема RTC? Главная причина в том, что Millis() только отсчитывает временной интервал, а когда питание исчезает и появляется, таймер устанавливается на 0. Как у дешевых будильников: каждый раз, когда пропадает питание, они мигают и показывают 12:00.

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

Обмен данными с RTC
RTC имеет интерфейс I2C, который использует две информационные линии. Главный модуль Arduino имеет сигналы I2C выведенные на контакты 4 и 5, имеющие второе назначение – прием аналоговых сигналов. Пока начнем с этого, а позже разберемся, как изменить ситуацию. Для библиотеки RTC будем использовать библиотеку JeeLab в RTC. Ее скачать можно Затем установите ее в Arduino каталог, в папку под названием RTClib.
Проверка часов реального времени
Посмотрите скетч, который будет читать время от RTC раз в секунду. Чтобы начать, выньте батарею из контейнера. Подождите 3 секунды, а затем установите батарею. Это сбрасывает RTC.

  • Авторы
  • Научный руководитель
  • Файлы
  • Литература

Исаева П.М. 1 1 г. Верхний Уфалей, МБОУ «СОШ № 1», 6 класс Красавин Э.М. (Верхний Уфалей, МБОУ «СОШ № 1») 5585 KB 1. https://www.optris.ru/zhurnalnaja-statja-infrakrasnaja-kamera – Как работает тепловизор. 2. http://www.platan.ru/news/MLX90614.shtml – MLX90614 – инфракрасный термометр. 3. http://robotclass.ru/projects/thermal-flashlight/ – Светодиодный тепловизор. 4. https://habr.com/post/394083/ – Термоскан. 5. http://blog.rchip.ru/podklyuchenie-tft-displeya-1-8-k-arduino/ – Подключение TFT-дисплея 1.8 к Arduino. 6. http://arduino-diy.com/arduino-modul-videokamery – Модуль видеокамеры и Arduino. 7. https://lifehacker.ru/obzor-raspberry-pi-3/ – Обзор Raspberry Pi 3. 8. http://dmitrysnotes.ru/raspberry-pi-3-podklyuchenie-tft-displeya – RaspberryPi 3. Подключение TFT-дисплея.

Ещё совсем недавно тепловизоры воспринимались как специализированный, необычный и дорогой прибор.Эти приборы были доступны только военным и специалистам, но прогресс не стоит на месте, и совершенствование технологии производства сделало этот класс устройств весьма распространённым явлением в самых различных сферах, не исключая и бытовое применение.Например, в последние годы набирает популярность обследование тепловизором помещения при покупке жилья. Обследование тепловизором может выявить нарушения теплового режима и нарушение технологии утепления жилых помещений. Впрочем, использование тепловизоров в быту не ограничивается недвижимостью. Многие автолюбители заказывают обследование тепловизором своего транспортного средства. С помощью устройства осуществляется поиск нарушения тепло- и гидроизоляции, контроль работы узлов автомобиля.Тепловизор можно назвать своеобразным сканером, который излучает инфракрасный свет и определяет тепловые аномалии какого либо объекта.Приемник инфракрасного излучения является основной деталью тепловизора. Волны инфракрасного излучения, любые тепловые (инфракрасные) изменения в процессе аналитической работы помогают прибору составить график температурных перепадов. Так, как работает тепловизор, не способен работать ни один другой тип прибора.Возможномногие из нас хоть раз, но мечтали получить в свои руки настоящий тепловизор. С огромным удовольствием, бывая в научных лабораториях, мы рассматривали действие этого прибора при проведении простейших обследований. Это уникальный шанс взглянуть на мир вокруг совершенно по новому, увидеть скрытое и возможно даже глубже познать суть некоторых явлений. И единственной преградой к этой мечте служит цена подобных устройств. Несмотря на весь прогресс, она остается очень высокой для простого человека. Однако, просматривая информацию в интернете, мы обнаружили некоторые возможные направления конструирования тепловизионных систем, и опытные разработки этих системна базе микроконтроллера Arduino. В связи с этим, возникла гипотеза о возможности создания собственной разработки тепловизионной установки на базе микропроцессора Ардуино.

Цель и задачи работы

Целью данной работы является – разработка конструкции и создание модели тепловизионной установки на платформе Ардуинои Raspberry Pi. Цель работы предполагала решение следующих задач:

Изучение литературных и интернет – источников по принципам устройства и работы тепловизионных систем, принципам работы инфракрасных датчиков и обработки их сигналов;

Знакомство с устройством и принципами работы микропроцессорной платформы Ардуинои Raspberry Pi;

Знакомство с основами программирования и работы с программным кодом;

Разработка базовой платформы прибора и создание экспериментальной модели тепловизора на базе этой платформы;

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

Принцип работы профессиональных тепловизорных систем

Любой природный или искусственный объект излучает собственные или отражённые электромагнитные волны в очень широком диапазоне частот, в том числе и волны в инфракрасном спектре, так называемое «тепловое излучение». При этом интенсивность теплового излучения напрямую будет зависеть от температуры объекта, и лишь в очень малой степени зависеть от условий освещенности в видимом диапазоне. Таким образом, при помощи тепловизионного прибора о любом наблюдаемом объекте может быть собрана и визуализирована дополнительная информация, недоступная человеческому глазу и приборам, Тепловизор – устройство, позволяющее визуализировать картину теплового излучения наблюдаемого объекта. Это открывает ряд уникальных возможностей для разных сфер деятельности: точных измерений, контроля технологических процессов, и конечно – обеспечения безопасности. Принцип действия промышленных тепловизоров основан на способности определённых материалов фиксировать наличие излучения в инфракрасном диапазоне. Посредством оптического прибора, в состав которого входят специальные линзы, изготовленные с применением редких материалов, прозрачных для инфракрасного излучения (например – германий), тепловое излучение объектов проецируется на матрицу датчиков, чувствительных к инфракрасному излучению. Затем,электроника обработки сигнала считывает информацию с этих датчиков, и генерирует видеосигнал, в котором разной температуре наблюдаемого объекта соответствует разный цвет изображения. Шкала соответствия цвета точки на изображении к абсолютной температуре наблюдаемого объекта может быть выведена поверх кадра. Также возможно указание температур наиболее горячей и наиболее холодной точки на изображении. В зависимости от конструкции модели, тепловизоры различаются по величине шага измеряемой температуры. Современные технологии позволяют различать температуру объектов с точностью до 0,05-0,1 0К.Тепловизоры работают как обычные цифровые камеры: Они обладают полем зрения, так называемым «FieldofView (FOV)», которое может составлять в качестве телеобъектива 6 °, стандартной оптики 23 °, а в качестве широкоугольного объектива 48 ° (Приложение лист I, рис. 1 – 2). Чем дальше находишься от объекта измерения, тем больше охватываемая область изображения,и следовательно размер кадра, который регистрирует отдельный пиксель экрана. Плюсом в этом является то, что яркость свечения при достаточно большой площади не зависит от удаления до объекта. Благодаря этому расстояние до объекта измерения, в значительной степени, не влияет на процессы измерения температуры.Тепловое излучение в среднем инфракрасном диапазоне может фокусироваться только за счёт оптики из германия, сплавов германия, цинковых солей или с помощью зеркал с поверхностным покрытием. Такая специальная оптика, по сравнению с обычными, изготавливаемыми большими партиями объективами в видимой спектральной области является основным фактором расходов, при изготовлении тепловизоров. Основным элементом любого тепловизора, как правило, является матрица в фокальной области (FPA). Она представляет собой встроенный датчик изображения размером от 20 000 до 1 миллиона пикселей. Каждый пиксель является микроболометром (Болометр – тепловой приёмник излучения, чаще всего оптического, а именно – ИК – диапазона, изобретённыйСамуэлемПирпонтом Лэнгли в 1878 году) размером от 17 x 17 до 35 x 35 мкм². Подобные тепловые приёмники, толщиной всего 150 нанометров, нагреваются посредством теплового излучения в течение 10 мс примерно на одну пятую разности между температурой объекта и собственной температурой. Подобного рода высокая чувствительность достигается за счёт очень низкой теплоёмкости в сочетании с превосходной изоляцией инфракрасной камеры относительно свободного окружения. Коэффициент поглощения частично прозрачной площади приёмника увеличивается посредством взаимодействия пропущенной и затем отражённой на поверхности кремниевого кристалла световой волны с последующей световой волной.Для использования данного эффекта самоинтерференции, поверхность болометра, состоящая из оксида ванадия или аморфного кремния, должна посредством специальных технологий травления располагаться на удалении 2 мкм от схемы считывания. Этим самым она на порядок превосходит другие тепловые датчики. За счёт собственной температуры болометра и температуры приходящего излучения, изменяется его сопротивление, которое преобразуется в электрический сигнал напряжения. Аналого-цифровые преобразователи оцифровывают предварительно усиленный видеосигнал. Система цифровой обработки сигнала рассчитывает для каждого отдельного пикселя значение температуры и генерирует в реальном времени цветные изображения или тепловые диаграммы. Для повышения точности измерения матрицы в фокальной области болометра калибруются при определённых температурах с очень высокой точностью (Приложение лист II – III, рис. 3 – 4).

Инфракрасный датчик – основа любой тепловизорной системы

Как уже описывалось выше, в профессиональных тепловизорных системах используются специальные инфракрасные матрицы, которые и являются инфракрасным датчиком. Принципиально, любая видеоматрица, может использоваться с определённым успехом в качестве ИК – датчика. В этом случае, её надо аккуратно разобрать и удалить инфракрасный фильтр. В результате переделки, матрица будет воспринимать инфракрасное излучение и скорректировав работу видеопроцессора, можно добиться изображения похожего на тепловизорную картинку. Более дешёвый и простой вариант использование инфракрасных дистанционных термометровсигналы с которых, обрабатываются определённой компьютерной программой. В качестве такого инфракрасного датчика, используют микропроцессорные инфракрасные термометры, например -MLX90614 (Приложение лист III, рис. 5). Датчик измеряет две температуры: температуру объекта и температуру окружающей среды. Измерение температуры объекта происходит бесконтактным способом, а температура среды измеряется на кристалле датчика.Температура объекта измеряется в диапазоне от -70 °С до 380°С градусов с 17-битным разрешением посредством считывания инфракрасного излучения, исходящего от него. Такая точность позволяет датчику различать разность температур в 0,2°С. В корпусе объединены ИК детектор (MLX81101) и микросхема обработки сигнала (MLX90302). Благодаря применению малошумящего усилителя, 17-битного АЦП и мощного DSP процессора датчики имеют высокую точность и разрешение.Помимо датчика и микросхемы обработки сигнала в корпусе расположен оптический фильтр, который отрезает видимый и близкий к инфракрасному излучению поток. Такой фильтр обеспечивает нечувствительность датчика к солнечному свету и внешней засветке.

Аппаратная платформа Ардуино

Arduino – это электронный конструктор и удобная платформа быстрой разработки электронных устройств. Устройство программируется через USB, без использования программаторов Устройства на базе Arduino могут получать информацию об окружающей среде посредством различных датчиков, а также могут управлять различными исполнительными устройствами. Микроконтроллер на плате программируется при помощи языка Arduino (основан на языке Wiring) и среды разработки Arduino (на среде Processing).В процессор Arduino можно загрузить программу, которая будет управлять определёнными устройствами по заданному алгоритму. Таким образом, можно создать бесконечное количество уникальных аппаратных платформ, сделанных своими руками и по собственной задумке (Приложение лист IV, рис. 6). Программы для Arduino пишутся на обычном языке C++, дополненным простыми и понятными функциями для управления вводом/выводом на контактах. Для удобства работы с Arduino существует бесплатная официальная среда программирования «Arduino IDE», работающая под Windows, Mac OS и Linux. С помощью неё, загрузка новой программы в Arduino, очень простая. Ещё одной отличительной особенностью Arduino является наличие плат расширения, так называемых «shields» или просто «шилдов». Это дополнительные платы, которые ставятся подобно слоям бутерброда поверх Arduino, чтобы дать ему новые возможности.

Прототипы тепловизорной системы на платформе Ардуино

Тепловизор на основе датчика MLX90614 со светодиодным индикатором температурных зон

Простое устройство, по своей сути имитирующее тепловизор, поскольку оно не создаёт тепловой картины, а только указывает цветом светодиода температурный интервал какой либо точки поверхности. Тем не менее, это визуализирующий, определённый температурный интервал, прибор. В основе конструкции использован температурный датчикMLX90614 и микроконтроллер Arduino ProMini (Приложение лист IV, рис. 7). В качестве регистрирующего табло применена матрица из 16 адресных светодиодов (Приложение лист IV, рис. 8). МодульArduino ProMini может быть запрограммирован с помощью среды разработки IDE Arduino (Приложение лист IV, рис. 9). Схема подключения температурного датчика и светодиодной матрицы, приведена в приложении (лист V, рис. 10). Принцип работы очень простой. При направлении температурного датчика, на какой либо предмет, происходит регистрация его температуры. Светодиодный индикатор, согласно заданной программе и данных датчика, высветит температурную зону предмета определённым цветом. Например, горячие предметы – красным цветом, холодные – синим.

Сканирующий тепловизор на основе датчика MLX90614 с передачей данных на компьютер

В основе конструкции использован температурный датчик MLX90614 и микроконтроллер Arduino Uno. Принцип работы устройства основан на температурном сканировании объекта с последующей обработкой информации в компьютерной программе. Исходя из этого, необходимым условием является наличие системы управления для сканирования. Эта система организована с помощью двух рулевых машинок от авиационных моделей и осуществляет перемещение температурного датчика, как в вертикальной, так и в горизонтальной плоскости.В качестве подтягивающих резисторов R1 и R2 используются резисторы номиналом 4.7 кОм. В качестве ИК- датчика был выбран MLX90614 BCI, поскольку у него узкое поле зрения, а также из-за его легкости в эксплуатации. Лазерная указка, в связке с датчиком температуры используется как целеуказатель. Инфракрасный датчик был соединен с лазером и закреплен на сервокронштейне из рулевых машинок. Самым простым способом управлять устройством является управление с компьютера. Питание также осуществляется от компьютера. Датчик посылает данные измерений в COM-порт. Программа для подачи команд устройству и считывания данных с датчика, устанавливается на компьютере (Термоскан). Алгоритм работы тепловизора довольно прост:

ОткрываемCOM -порт Аrduino;

Осуществляем позиционирование датчика. Для задания области сканирования устанавливаются 2 точки: bot – нижняя левая точка изображения, mid – центр изображения;

Запускаем сканирование (сканирование ведётся примерно 2 минуты при использовании режима «64х48 пикселей»);

Собираем полученные от датчика данные в массив;

Формируем изображение.

Интерфейс программы очень простой – только всё самое необходимое для работы. Названия кнопок говорят сами за себя. При нажатии на определённый пиксель тепловой карты будет выведена соответствующая ему температура. Цвета для температуры выбираются относительно текущих результатов сканирования. Самая высокая температура будет обозначена красным, а самая низкая – синим, пусть даже эти значения будут отличаться на 2-3 градуса. На расстоянии более чем в 50 см результаты имеют довольно большую погрешность. Но на близком расстоянии показатели температуры определяются очень точно. Сканировать можно только небольшие статические предметы. Устройство непригодно для больших и движущихся предметов.Определённым минусом, является и продолжительное время сканирования, а также обязательная привязка к компьютеру.

Автономный тепловизор с использованием платформы Arduino и Raspberry Pi

Все вышеперечисленные примеры имеют существенные недостатки и не позволяют создать мобильную версию полноценного прибора – тепловизора. Прежде всего, MLX90614 не является температурным видеодатчиком и позволяет имитировать тепловую картину только программно, что требует привязки к компьютеру. Для создания реальной тепловой картины необходимо использовать инфракрасную видеоматрицу. Подобие такой матрицы можно изготовить из простой WEB – камеры. Для этого можно удалить из неё инфракрасный фильтр. В этом случае камера будет воспринимать инфракрасное излучение. Более приемлемый вариант, приобретение специализированной инфракрасной матрицы. Они, в настоящее время, относительно недорогие и имеются на сайтах магазинов, торгующих электронными компонентами. Примеры, подобных устройств, приведены в приложении (лист VII, рис. 13). Питание матриц, осуществляется напряжением 3 -5 В, что удобно для связки с платформой.Panasonic AMG8833 является 8×8 мм инфракрасным тепловым датчиком.Точность измерения температуры плюс – минус 2,5 °C. Расстояние определения температуры до 7 метров. Максимальная кадровая частота 10 Гц. Датчик совместим с платформами Arduino и Raspberry Pi. Для создания автономного тепловизора используем подключение к плате Ардуино TFT-дисплея.TFT дисплей цветной с диагональю 1.8 дюйма и расширением 128 на 160 точек. За обработку данных отвечает контроллер ST7735R, который может отобразить до 18-бит цвета (262144 оттенков), работает данный контроллер (дисплей) от 3.3В и для работы от плат Arduino предусмотрен стабилизатор напряжения на 3.3В. Подключение осуществляется по ISP интерфейсу (4-х проводному), все выводы выведены на боковую группу контактов.Как говорилось выше, дисплей работает по интерфейсу SPI, поэтому необходимо включить в проект библиотеку SPI, а так же библиотеку TFT, все они входят в стандартные библиотеки среды разработки IDE Arduino (Приложение лист VII, рис. 14). Инфракрасная видеоматрица подключается согласно основным принципам подключения к Ардуино видеомодуля.Как правило, модуль продается без коннекторов, так что придется запаять проводники к предусмотренным выводам:

Красный подключен к +5В;

Черный подключен к GND;

Зеленый – RX;

Белый – TX.

При подключении камеры к Arduino используется резистор на 10 кОм. Питание логики камеры 3.3 В. В обычном режиме на выходе с цифрового выхода 0 формируется сигнал HIGH, который соответствует 5 В. При нашем подключении, с учетом сопротивления резистора, подключенного к входному сигналу (белый проводник), напряжение не превысит 3.3 В (Приложениелист VIII, рис. 15). Слабый процессор Arduino, передаёт изображение на экран в качестве стационарной картинки. При перемене объекта, необходимо вновь включать прибор и проводить измерение, поскольку потоковое видео, процессор воспроизвести не может. От этих недостатков можно избавится, если использовать для обработки информации с инфракрасного датчика, более мощную платформуRaspberry Pi (Приложение лист VIII, рис. 16). Платформа представляет собой, полноценный одноплатный компьютер, работающий с несколькими операционными системами, в том числе и с Android TV (удобство работы с медиаприложениями, в том числе видеоприложениями).Микрокомпьютер можно заставить работать практически с любой периферией, в том числе выводить изображение на встроенный экран.Большинство дисплеев с маленькой диагональю (до 4 дюймов) подключаются кRaspberry Piчерез GPIO и представляют собой печатную плату, на которой зафиксирован сам TFT-модуль, распаян адаптер и GPIO-разъем для подключения. Подобные платы в среде Raspberry Pi принято называть HAT: HardwareAttachedonTop, что в переводе означает «аппаратура, подсоединенная сверху» (Приложение листVIII, рис. 17). Для работы дисплея, необходимо установить драйвер (LCD-show-161112.tar.gz).
Инфракрасная матрица подключается к системе, как стандартный USB- разъём.

Возможности изготовленного прибора

Прибор является автономным, с батарейным питанием, поэтому обладает широким спектром возможного использования.

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

Точность измерения температуры плюс – минус 2,5 °C.

Расстояние до исследуемых объектов не более семи метров.

Несмотря на небольшое разрешение экрана, картинка получается чёткой и информативной (Приложение лист IX, рис. 18).

Выводы

В результате проделанной работы, можно сделать следующие выводы:

Изучены доступные литературных и интернет – источники по устройству и принципам работы тепловизионных систем, принципам работы инфракрасных датчиков и обработки их сигналов;

Освоены первоначальные приёмы работы с микропроцессорной платформой Ардуино иRaspberry Pi, а так же основы программирования и работы с программным кодом;

Разработана и изготовлена экспериментальная модель тепловизора, позволяющая осуществлять динамичные измерения температурного режима любых объектов, на расстоянии не более 6-7 метров;

Возможности изготовленного прибора, соответствуют недорогим образцам промышленных тепловизоров.

Приложение

Рис. 1. Фокусировка теплового излучения тепловизионной камерой

Рис. 2. Специальнаятепловизионная камера

Рис. 3. Формирование тепловизионного изображения

Рис. 4. Основные компоненты профессиональной тепловизионной системы

Рис. 5. MLX90614 – инфракрасный термометр в корпусе TO-39 для бесконтактного измерения температуры

Рис. 6. Многофункциональность аппаратной платформы Arduino

Рис. 7. Arduino Pro Mini

Рис. 8. Матрица из 16 адресных светодиодов

Рис. 9. Программный код для Ардуино.

Рис. 10. Схема имитации тепловизора, на основе датчика MLX90614 со светодиодным индикатором температурных зон

Рис. 11. Принципиальная схема тепловизора «Термоскан»

Рис. 12. Интерфейс программы

Рис. 13. Инфракрасные видеоматрицы

Рис. 14.Подключение TFT-дисплея 1.8 к Arduino

Рис. 15. Подключение инфракрасной видеоматрицы к Arduino

Рис. 16. ПлатформаRaspberry Pi и TFT-дисплей для неё

Рис. 17. Подключение дисплея к Raspberry Pi

Рис. 18. Тепловые изображения предметов

Библиографическая ссылка

Исаева П.М. ТЕПЛОВИЗОР НА ПЛАТФОРМЕ ARDUINO И RASPBERRY PI // Старт в науке. – 2019. – № 1-4. – С. 574-584;

Однажды на одном из зарубежных сайтов (adafruit.com) мне попался на глаза интересный аппарат. Это было устройство по форме напоминающее пистолет. В основе его был дистанционный датчик температуры из серии MLX, а также модуль адресных светодиодов и контроллер. Наводим аппарат, к примеру, на горячий чайник и он его тут же подсвечивает ярким красным цветом. Наводим на стакан с холодной водой — всё становится синим. Получился этакий пистолет-тепловизор. Вещь не предназначалась для какой-то серьезной работы, однако, представляла собой хороший образец полноценного законченного прибора, при создании которого можно получить полезные навыки и знания. Да и просто веселая штука, достойная того, чтобы её создать. В этой статье я опишу создание подобного устройства, но немного в другом форм-факторе. Это будет уже не пистолет, а фонарик-тепловизор!

1. Компоненты

Для изготовления фонарика нам понадобятся такие компоненты:

  • инфракрасный датчик температуры mlx90614;
  • модуль из 16 адресных светодиодов WS2812;
  • контроллер Arduino Pro Mini;
  • аккумулятор Li-Ion;
  • выключатель;
  • повышающий стабилизатор напряжения MT3608;
  • немного проводов.

2. Схема устройства

3. Программа

Программа должна считывать показания датчика температуры и выводить на светодиодное кольцо соответствующий цвет. #include <Adafruit_MLX90614.h> #include <Adafruit_NeoPixel.h> #define PIN 12 #define NUMPIXELS 16 // количество адресных светодиодов Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800); Adafruit_MLX90614 mlx = Adafruit_MLX90614(); uint32_t temp_to_color(int); void setup() { Serial.begin(9600); mlx.begin(); // инициализация датчика температуры pixels.begin(); // инициализация адресных светодиодов } void loop() { float to = mlx.readObjectTempC(); // считывание температуры uint32_t c = temp_to_color(int(to*10)); for(int i=0; i<NUMPIXELS; i++){ pixels.setPixelColor(i, c); pixels.show(); } } // карта диапазона цветов uint8_t cmap = { 0xff, 0xff, 0xff, // 0C — белый 0x00, 0x00, 0xff, // 12C — синий 0xff, 0x00, 0x00, // 24C — зеленый 0xc0, 0xff, 0x00, // 36C — оранжевый 0x00, 0xff, 0x00, // 48C — красный }; uint32_t temp_to_color(int degree_tenths){ uint32_t c; uint8_t i; int floor_t; float scale; if (degree_tenths <= 0) // если температура меньше 0, то цвет белый c = pixels.Color(cmap, cmap, cmap); else if (degree_tenths >= 480) // если температура больше 48, то цвет красный c = pixels.Color(cmap, cmap, cmap); else { // если температура между 0 и 48, то вычисляем промежуточный цвет по таблице i = (degree_tenths / 120) * 3; floor_t = i * 40; scale = (degree_tenths — floor_t)/ 120.0; // calc how far along this range c = pixels.Color(cmap + (cmap-cmap)*scale, cmap + (cmap-cmap)*scale, cmap + (cmap-cmap)*scale ); } return(c); } Загружаем программу на Ардуино и проверяем работу. Для теста наводим датчик на разные предметы: на холодное окно, на руку, на стакан с горячей водой. Исходя из настроек в начале программы, при наведении фонарика на что-то, теплее 48 градусов Цельсия (например, стакан с кипятком), он будет светить красным цветом. Если же посветим на стакан со льдом, то получим или белый, или голубой цвет.

4. Корпус

Теперь, когда схема работает как надо, можно заняться корпусом. Для проектирования фонарика я использовал редактор SketchUp. Детали были изготовлены на 3D-принтере. Всего получилось 4 детали:Самый сложный узел в фонарике — это крепление аккумулятора. Я ориентировался на стандартные решения: с плюсовой стороны аккумулятора (справа) — пластина с небольшим наплывом припоя. С минусовой стороны (слева) — контакт с прижимающей пружиной.Чертежи деталей в формате SKP и STL можно скачать здесь: https://www.thingiverse.com/thing:2689467

5. Сборка

Рекомендую следующую последовательность сборки. 1) Вырезаем из куска фольгированного стеклотекстолита кружок и сверлим в нем отверстие.2) Продеваем сквозь кружок провод и припаиваем его с одной стороны. Делаем жирную горку припоя. Затем с обратной стороны наклеиваем двухсторонний скотч и запихиваем кружок в трубку до упора. При этом, плюсовой провод от кружка должен пройти сквозь отверстие и вылезти с передней стороны фонарика. 3) Припаиваем в выключателю два длинных провода, затем вставляем его в соответствующее отверстие в корпусе фонарика. Провод от плюса аккумулятора припаиваем к одному контакту выключателя, а провод от второго контакта соединяем с плюсом повышающего стабилизатора. Провод от минуса аккумулятора припаиваем к VIN- стабилизатора. Внимание! Стабилизатор сначала нужно настроить на 5 Вольт на выходе, и только затем впаивать в цепь фонарика. 4) К передней крышке фонарика прикручиваем держатель датчика. Подпаиваем к датчику провода. 5) Подпаиваем провода к светодиодному кольцу и приклеиваем его к крышке фонарика на двухсторонний скотч. 6) Припаиваем стабилизатор, датчик и светодиодное кольцо к Ардуино Про Мини. 6) Наконец, вставляем аккумулятор и фиксируем его пробкой. 7) Закрываем крышку фонарика — готово! 6. Фонарик в действии Вконтакте Facebook Twitter 1+

Цифровая комнатная метеостанция.

Владимир Макаров.

(хроно-термо-гигро-барометр)

Как поется в известной песне «Главней всего погода в доме…». Конечно автор под погодой имел ввиду душевное состояние супругов живущих под одной крышей. Но если подходить к этой фразе буквально, то она о том, что под крышей кроме душевного должен быть и климатический комфорт. Предлагаемое устройство обеспечивает измерение и отображение на светодиодном индикаторе температуры и относительной влажности воздуха в помещении, значения атмосферного давления и текущего времени.

Станция снабжена датчиком движения, который включает ее при появлении человека в зоне действия датчика. Этот режим позволяет экономить потребляемую энергию и использовать в качестве источника питания гальванические батареи. Кроме того, этот режим удобно использовать в спальне — выключенный дисплей станции не будет раздражать своим свечением. В этом случае для включения станции будет достаточно выполнить движение рукой или ногой.

Внешний вид станции показан на рисунках (Рисунок 1 и Рисунок 2).

Рисунок 1.
Внешний вид станции

Рисунок 2.
Внешний вид станции (обратная сторона)

Видео с демонстрацией работы станции представлено ниже:

Электрическая схема.

Схема электрическая принципиальная представлена на рисунке 3.

Рисунок 3.
Схема электрическая принципиальная.

Станция собрана на микроконтроллере ATmega8. Цепочка R1С1 обеспечивает начальный сброс (Reset) микроконтроллера при включении. Предусмотрено внутрисхемное программирование МК через разъем XP3 «SPI программатор».
Фьюзы МК ATmega8: HIGH=0xD9, LOW=0xE4.

В качестве дисплея используется четырех-разрядный 7-сегментный индикатор типа CL5642BN c общим анодом и двухточечным («:») разделителем часов и минут. Катоды сегментов индикатора подключены к МК через ограничительные резисторы. МК обеспечивает динамическую индикацию поочередно включая транзисторные ключи VT3…VT6.

Хронометр собран на микросхеме DS1307 по штатной схеме включения. Точность хода часов обеспечивается кварцевым резонатором Y1 с частотой 32768Гц. При отсутствии основного питания (5 Вольт) непрерывность хода часов обеспечивается резервным источником питания на гальваническом элементе CR2032 (3 Вольта). Взаимодействие МК с микросхемой DS1307 осуществляется по шине TWI (I2C). Линии шины TWI «подтянуты» к питанию VCC2 резисторами R20, R21. Установка часов и минут обеспечивается кнопками SA1 («Часы+»), SA2 («Минуты+»), SA3 («Установка»). При этом необходимо в момент начала цикла отображения данных на дисплее нажать и удерживать кнопку «Установка». Нажатием или нажатием с удержанием кнопок «Часы+» или «Минуты+» устанавливается время хронометра. При отпускании кнопки «Установка» в микросхему DS1307 в соответствующие ячейки запишутся значения часов и минут, отображенные на дисплее, а в ячейку секунд запишется значение 0. Таким образом можно точно синхронизировать время с внешними эталонными источниками точного времени (например, от вещательных радиостанций или телевидения).

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

Измерение температуры осуществляется датчиком DHT11. МК управляет датчиком по последовательному однопроводному двунаправленному интерфейсу. Линия интерфейса «подтянута» к питанию VCC2 резистором R19.

Для экономного расходования энергии батарей микроконтроллер большую часть своего времени пребывает в состоянии глубокого сна («power-down»). При этом МК перед засыпанием обесточивает все измерительные датчики, подключенные к VCC2 (хронометр, датчик атмосферного давления, датчик влажности и температуры). Обесточивание датчиков обеспечивается ключами на транзисторах VT1 и VT2.

Для пробуждения МК в схему станции включен датчик движения HC-SR501. Его задача – вывести МК из состояния сна. При срабатывании датчик посылает сигнал МК, который пробуждается сам и подает питание VCC2 на периферийные датчики (хронометр, датчик атмосферного давления, датчик влажности и температуры). Ключ на транзисторе VT7 обеспечивает инверсию сигнала датчика движения для согласования с МК. Переключатель «Движение» позволяет отключить датчик движения, для еще большей экономии энергии батарей. В этом случае альтернативную команду на пробуждение МК можно подать нажатием кнопки «Установка».

Питание станции осуществляется от двух альтернативных типов источников: от трех батарей типа АА или от сетевого источника питания 5 Вольт по шине USB. Для переключения между источниками питания необходимо установить переключатель «Питание» в одно из положений: «USB» или «Батарея». При питании от батарей ток потребления станции в режиме сна составляет не более 200мкА, что при емкости батареи 2000мАч соответствует 10000 часам (более одного года) непрерывной работы.

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

При питании от шины USB иногда целесообразно обеспечить постоянное измерение значений датчиками и отображение данных на дисплее. Для этого необходимо установить переключатель «Дисплей» в положение «Вкл». В этом случае МК не будет переводится в состояние сна.

Печатные платы.

Печатные платы разработаны в программе Dip Trace. Они выполнены на одностороннем фольгированном стеклотекстолите. Расположение деталей на основной печатной плате показано на рисунке (Рисунок 4). На рисунке перемычки со стороны монтажа выделены цветными ломаными линиями. Печатная плата со стороны дорожек показана на рисунке (Рисунок 5).

Рисунок 4.
Печатная плата (вид со стороны радиодеталей).

Рисунок 5.
Печатная плата (вид снизу, зеркальное отображение).

Кнопки и переключатели пульта управления станцией установлены на отдельной печатной плате (Рисунок 6 и Рисунок 7).

Рисунок 6.
Печатная плата Пульта управления (вид сверху).

Рисунок 7.
Печатная плата Пульта управления (вид со стороны дорожек).

Гнездо для подключения USB кабеля установлено на отдельной плате, купленной на AliExpress (Рисунок 8).

Рисунок 8.
Плата с гнездом USB.

Монтаж.

Станция смонтирована в корпусе универсальной коробки для кабельных каналов «Промрукав» — IP42; 400V; полистирол ГОСТ Р 50827.1-2009 ТУ 3464-001-97341529-2012 Артикул 40-0460.

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

Батарея питания – три элемента AA 1.5 Вольт каждый размещены в специализированном держателе – «кроватке» .

Размещение радиодеталей на печатной плате показан на рисунке (Рисунок 9).

Рисунок 9.
Внешний вид размещения деталей на плате.

Архив к статье «CTBH.rar» содержит:

1. Папку CTBH – файлы проекта на Си в среде Atmel Studio 7.
2. CTBH.dch – схема электрическая принципиальная в формате Dip Trace.
3. CTBH.dip – печатная плата устройства в формате Dip Trace.
4. CTBH_Buttons.dip – печатная плата Пульта управления в формате Dip Trace.
5. CTBH.hex – загрузочный файл для МК.
Удачи Вам в творчестве и всего наилучшего!
Скачать архив.

Народная метеостанция

Сегодня будет подробный рассказ о внутреннем устройстве метеостанции, которую недавно включил в работу. От идеи до её технической реализации прошло более года, за это время пришлось решить массу ожидаемых и неожиданных проблем. Теперь обо всём по порядку…
Начнем с грабель.
Грабли №1. Наверное кто-нить помнит что в начале прошлого года я испытывал радиомодули на базе чипа nRF24L01+ c усилителем RFX2401C и в дальнейшем собирал радиодатчик
Увы, данная конструкция работать не захотела. Не смотря на все попытки, мне так и не удалось обеспечить надёжную двухстороннюю связь радиомодулей на значительных расстояниях. Конструкция отняла довольно много сил и времени, но, в силу объективных причин, пришлось отказаться от этого варианта.
И тогда решил достать из закромов опытно-экспериментальный маршрутизатор TP Link MR3220 c системой OpenWRT на борту.
Принципиальная схема метеостанции несколько отличается от той, которую разрабатывал ранее. Первое отличие — применение вместо Arduino Pro Mini платы Arduino Nano. Это позволило выполнять удалённую перепрошивку микроконтроллера, что очень удобно когда физический доступ на объект затруднён
Грабли №2 Я применил китайский клон Arduino Nano v.3.0, о котором подробнее рассказывал . Но возникла неожиданная проблема — при открытии маршрутизатором USB-порта, ардуинка стала перезагружаться. Все возможные варианты конфигурирования USB порта командой stty результата не принесли. С FT232RL такой проблемы не наблюдалось. Пришлось подключить RC-цепочку R1C1 на свободный порт GPIO7 маршрутизатора, это схемное решение позволило блокировать перезагрузку в нормальном режиме работы микроконтроллера. При необходимости перепрошивки нужно вручную включать GPIO7.

Конфигурирование порта
echo «7» > /sys/class/gpio/export
Конфигурируем GPIO7 как выход
echo out > /sys/class/gpio/gpio7/direction
Включить GPIO7
echo 1 > /sys/class/gpio/gpio7/value
Выключить GPIO7:
echo 0 > /sys/class/gpio/gpio7/value
Проверить состояние порта:
cat /sys/class/gpio/gpio7/value
Так как точность термодатчиков семейства DS1820 при отрицательных температурах оставалась под вопросом, для точного измерения температуры решил дополнительно использовать медный термометр сопротивления ТСМ-50М совместно с измерительным преобразователем Ш79. Разумеется, предварительно откалибровал систему с использованием поверенных образцовых приборов и добился погрешности измерения не более 0.2 градуса в диапазоне температур -50…+50 градусов Цельсия.
Ш79 это уже достаточно древний, весьма надёжный советский преобразователь, построенный по классической МДМ-схеме с унифицированным токовым выходом 0…5 мА или напряжением 0…10 В. В данном случае использовал токовый сигнал.
Несмотря на простую принципиальную схему, столкнулся с огромным объемом механической работы. Одно дело когда схема собрана за полчаса на макетной плате и совсем другое — когда устройству нужно придать законченный вид.
Печатная плата метеоконтроллера
Контроллер поместил в гермобокс
Маршрутизатор и метеоконтроллер закрепил на боковой стенке Ш79.
Вид сбоку
И вся эта система помещается в металлический ящик
Внутренности ящика
Так как ещё не знал в каком помещении будет установлен данный шкаф, решил сделать ему обогрев. Температура внутри ящика поддерживается обыкновенным биметаллическим термостатом, на фото выше виден его круглый корпус.
Резисторы обогрева закрыл металлическим кожухом. Круглые отверстия используются для подведения кабелей внутрь шкафа.
Конструкция в собранном виде
Выносные датчики температуры и влажности расположены на отдельной печатной плате
Для защиты от атмосферных воздействий плата покрыта лаком ХСЛ
Далее изготовил пластмассовый кожух, который обернул пищевой фольгой и хорошенько замотал скотчем.
Сверху кожух закрывает крышка
Внутрь кожуха поместил плату с датчиками и растянул её при помощи толстой рыболовной лески. Это сделано для того чтобы снизить теплопередачу между кожухом и платой датчиков. Данную конструкцию почему-то решил назвать измерительной ячейкой.
UPD: Не смотря на все предпринимаемые меры, как показала практика, солнечные лучи все-таки влияют на показания термометра — нагревается кожух и от него греется сам датчик. Поэтому в настоящее время используется уличный термокожух заводского исполнения, он показал значительно лучшие результаты. Подробнее о данном термокожухе можно почитать .
О конструкции анемометра более подробно рассказывал .
UPD: В настоящее время используется новая конструкция анемометра, подробнее можно почитать . Программа для работы с данным анемометром приведена в конце статьи.
Все выносные датчики соединяются с контроллером посредством 5 парного магистрального телефонного кабеля ТППэп длиной 100 метров. На конце кабеля распаял слегка модернизированную соединительную коробку КРТН-10.
Грабли №3 Для защиты контроллера от атмосферной статики и возможных грозовых перенапряжений хотел поставить защитные диоды 1.5КЕ7.5 на порты D2, D3, D4. Увы, собственная ёмкость данных диодов не позволила пропускать цифровые данные. Поэтому пришлось ограничиться установкой диода D1 по питанию +5V и заземлением экранной оболочки магистрального кабеля.
К данной коробочке подключаются сами датчики
Измерительная ячейка установлена на относительно открытом участке местности на высоте 3-х метров от поверхности земли, это на метр выше положенного по правилам, но сделал это намеренно, т.к. в нашей местности есть вероятность появления высоких сугробов.
Анемометр укреплён на высоте 5 метров, по хорошему нужно ставить выше, но с этим есть конструктивные сложности. Пусть пока поработает так.
Программная часть особо не изменилась: на маршрутизаторе работает php-скрипт отсылки данных на сервер narodmon
который каждые 5 минут запускается планировщиком cron
Программа ардуинки ждёт приема команды от скрипта и формирует пакет данных. Предусмотрел возможность ручной коррекции атмосферного давления для его приведения к уровню моря, метеостанции или аэродрома.
P.S. А вообще использование Wi-Fi для передачи метеоданных не оптимально, было бы лучше использовать УКВ-диапазон, собственно, так и сделано на автоматических метеостанциях. Это повысит дальность связи и снизит требования к месту установки, точнее к наличию прямой радиовидимости.
Принципиальную схему и печатные платы можно скачать .
Программное обеспечение
История версий:
V1. Реализована поддержка базового функционала
V2. Увеличено разрешение датчика атмосферного давления. Изменен алгоритм расчёта значений скорости ветра.
V3. Переход на новый тип анемометра. Изменение алгоритма подсчета количества импульсов с анемометра.
V4. Увеличено разрешение датчика скорости ветра.

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх