octopoly

На Пикабу
Дата рождения: 29 апреля
461 рейтинг 10 подписчиков 8 подписок 3 поста 3 в горячем
Награды:
За отменную реакцию С Днем рождения Пикабу!
142

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов

Дозиметр не для Серёжи

В постоянно изменяющемся мире дозиметр является не только способом утолить любопытство и поймать на мушку хоть немного веселых Зивертов, но и способом обнаружения вполне реальных угроз. От проверки “любопытной старинной штуковины” из дедовского гаража, до отслеживания радиоактивного фона в зонах расположения АЭС, от обеспечения безопасности при вылазке в заброшки до мониторинга глобальных и локальных техногенных катастроф.

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

Нетленной классикой Хабра является цикл статей “Дозиметр для Серёжи”. В этом материале много истории, теории и хардовой (если не сказать “крафтовой”) сборки. Мы респектуем автору, и Сереже тоже. Но ставим перед собой другую, более практическую задачу - собрать дешёвый, функциональный и удобный дозиметр из готовых компонентов. В качестве основных элементов будут использованы Wemos D1 и модуль RadSens (ардуино-дозиметр на базе трубки Гейгера СБМ-20).


RadSensor (таково гордое имя нашего детектора) берет лучшее от прошлых проектов, а также учитывает их ошибки и расширяет функционал счетчика, в частности:

увеличено время автономной работы;

- реализован функционал аудиоотклика;

- повышена эргономичность и универсальность корпуса;

- проект в целом упрощен и избавлен от “крафта”

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

Перед тем как листать дальше настоятельно рекомендуем ознакомиться с легендарным материалом (https://habr.com/ru/post/471236/). Краткая история и матчасть сами себя не прочитают ;)

Ознакомились? Отлично, тогда приступим!

Персональный дозиметр своими руками

Шутейки иссякли. Далее вас ждет сухая пошаговая инструкция по сборке устройства от закупки компонентов до кода и тестирования..

План покупок (BOM)

1) Плата разработки Wemos D1, от 117 руб. на Али ()

2) Модуль дозиметра RadSens, от4550 руб. на Али/Озоне ()

3) OLED-экран 1.3” с I2C, от 161 руб на Али ()

<!--[endif]-->4) Пассивный пьезоизлучатель, от 48.5 руб. на Али (https://aliexpress.ru/item/4000785325910.html?sku_id=1000000...)

<!--[endif]-->5) Плата заряда TP4056, от 25 руб. на Али ()

<!--[endif]-->6) Аккумулятор 18650, от 210 руб. на Али (https://aliexpress.ru/item/1005004392079183.html?sku_id=1200...)

<!--[endif]-->7) Бокс одинарный для 18650 аккумулятора, от 19 руб. на Али ()

<!--[endif]-->8) Макетная плата 7*3 см, от 17 руб. на Али ()

<!--[endif]-->9) Выключатель KCD-01, от 64 руб. за 10 шт на Али ()

<!--[endif]-->10) Разъём XH-2.54 с обжатыми проводами, от 66 руб. за две пары на Али ()

<!--[endif]-->11) Резисторы номиналами 220 и 100 кОм
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->12) Винты/саморезы с диаметром резьбы 3 и 2.5 мм
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

Общая стоимость компонентов ~5500 рублей.


Цена сравнима с древними дозиметрами советской или китайской разработки. Аналогичное, но современное решение на Озоне обходится уже в 7-9 тысяч рублей.

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

Соединения показаны ниже на схеме. Особенности сборки:


- В верхней части макетной платы располагается Wemos (2 пина от края) и OLED (2 пина от края).


- Внизу макетки установлены: зарядкаTP4056 (Type-C сдвинут максимально близко к краю платы, но не вылезает за её пределы) и пьезоизлучатель (любая удобная позиция).


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


Для расчёта и вывода остатка заряда батареи используется АЦП (пин А0). Для его правильной работы необходимо понизить напряжение с помощью делителя нпряжения. Подробнее о нем вы можете прочитать в статье о сборке анемометра (https://habr.com/ru/post/676348/).

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

В результате должно получиться подобное устройство. Рекомендуем заизолировать контакты на лицевой стороне платы. Это одна из возможных способов собрать её, поэтому мы приветствуем критику и предложения :)

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

Корпус

Мы постарались создать максимально удобный для печати, сборки и эксплуатации корпус.


На углу предусмотрена проушина диаметром 3 мм под шнурок или брелок.

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

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

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

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

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост
Кнопка включения утоплена и защищена от случайных нажатий
RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

На крышке предусмотрены посадочное место для OLED-экрана для предотвращения западания, добавлены боковые стенки для увеличения жёсткости корпуса

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

Модель адаптирована под 3d-печать, подобрана нормальная толщина стенки, минимизировано число поддержек

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

Найти модели корпуса (stl и step-файлы) вы можете в нашем GitHub.

Код

Для проекта использован слегка доработанный код из нашей предыдущей статьи (...). В частности:

- добавлен звук приветствия при включении устройства

- добавлена индикация заряда

- реализовано предупреждение при превышении порога интенсивности излучения.

Для работы с OLED-экраном используется библиотека Алекса Гавера GyverOled.

Вы также можете найти код в примерах библиотеки RadSens на GitHub.


// Инициализируем библиотеки
#include <Wire.h>
#include <CG_RadSens.h>
#include <GyverOLED.h>
#define ADC_pin A0 // задаём значение пина АЦП
#define buz_pin 14 // Задаём значения пина для пищалки
GyverOLED<SSH1106_128x64> oled; // Инициализируем 1.3" OLED-экран
CG_RadSens radSens(RS_DEFAULT_I2C_ADDRESS); // Инициализируем RadSens
uint16_t ADC; // Переменная для значений АЦП
uint32_t timer_cnt; // Таймер для измерений дозиметра
uint32_t timer_bat; // Таймер для измерения заряда батареи
uint32_t timer_imp; // Таймер опроса импульсов для пьезоизлучателя
uint32_t pulsesPrev; // Число импульсов за предыдущую итерацию
//Функция аудиоприветствия
void hello() {
for (int i = 1; i < 5; i++) {
tone(buz_pin, i * 1000);
delay(100);
}
tone(buz_pin, 0);
delay(100);
oled.setScale(2);
oled.setCursor(10, 3);
oled.print("Radsensor");
oled.update();
delay(3000);
oled.clear();
}
//Функция, которая создаёт "трески" пьезоизлучателя при появлении импульсов
void beep() { // Функция, описывающая время и частоту пищания пьезоизлучателя
tone(buz_pin, 3500);
delay(13);
tone(buz_pin, 0);
delay(40);
}
//Функция предупреждения при превышении порога излучения
void warning() {
for (int i = 0; i < 3; i++) {
tone(buz_pin, 1500);
delay(250);
tone(buz_pin, 0);
delay(250);
}
}
void setup() {
Wire.begin();
oled.init(); // Инициализируем OLED в коде
oled.clear();
oled.update();
pinMode(ADC_pin, OUTPUT); // Инициализируем АЦП как получатель данных
hello(); // Приветствуем пищанием
oled.update(); // Обновляем экран
pulsesPrev = radSens.getNumberOfPulses(); // Записываем значение для предотвращения серии тресков на старте
}
void loop() {
// Раз в 250 мс происходит опрос счётчика импульсов для создания тресков, если число импульсов за 250 мс превысит 5, раздастся предупреждение
if (millis() - timer_imp > 250) {
timer_imp = millis();
int pulses = radSens.getNumberOfPulses();
if (pulses - pulsesPrev > 5 ) {
pulsesPrev = pulses;
warning();
}
if (pulses > pulsesPrev) {
for (int i = 0; i < (pulses - pulsesPrev); i++) {
beep();
}
pulsesPrev = pulses;
}
}
// Снимаем показания с дозиметра и выводим их на экран
if (millis() - timer_cnt > 1000) {
timer_cnt = millis();
char buf1[50];
char buf2[50];
char buf3[50];
sprintf(buf1, "%.1f мкр/ч", radSens.getRadIntensyDynamic()); // Собираем строку с показаниями динамической интенсивности
sprintf(buf2, "Стат: %.1f мкр/ч ", radSens.getRadIntensyStatic()); // Собираем строку с показаниями средней интенсивности за период работы
oled.setCursor(0, 2);
oled.setScale(2);
oled.print(buf1);
oled.setCursor(0, 6);
oled.setScale(1);
oled.print(buf2);
}
// Считываем показание с АЦП, рисуем батарею и создаём индикацию заряда, показания АЦП вы можете подстроить под своё удобство
if (millis() - timer_bat > 5000) {
timer_bat = millis();
ADC = analogRead(ADC_pin);
oled.rect(110, 0, 124, 8, OLED_STROKE);
oled.rect(125, 3, 126, 5, OLED_FILL);
if (ADC >= 350) {
oled.rect(112, 2, 114, 6, OLED_FILL);
oled.rect(116, 2, 118, 6, OLED_FILL);
oled.rect(120, 2, 122, 6, OLED_FILL);
}
if (ADC < 350 && ADC >= 335) {
oled.rect(112, 2, 114, 6, OLED_FILL);
oled.rect(116, 2, 118, 6, OLED_FILL);
}
if (ADC < 335 && ADC >= 320) {
oled.rect(112, 2, 114, 6, OLED_FILL);
}
if (ADC < 320){
oled.rect(110, 0, 124, 8, OLED_STROKE);
oled.rect(125, 3, 126, 5, OLED_FILL);
}
}
oled.update(); // Обновляем экран в конце цикла
}

Сборка

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

1) Устанавливаем бокс для 18650 с помощью винта диаметром 3х7 мм и вставляем выключатель в отверстие с торца, подпаиваем к нему провода для разрыва линии +OUT контроллера заряда.

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

2) Припаиваем провода от бокса к соответствующим выходам контроллера заряда, провода от выключателя – в разрыв между +OUT и плюсовыми контактами потребителей. Затем подключаем два шлейфа для дозиметра и экрана, выводим их и закрепляем корпус на три винта 2.5х7 мм. После вставляем батарею в бокс.

<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

3) Подключаем модуль RadSens через коннектор и закрепляем его винтам 2.5х7 мм.

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

4) Закрепляем экран винтами 2.5х5 мм и подключаем его.

<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

5) Закрепляем крышку винтами 3х5 мм.

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

Тестирование

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

Дозиметр для DIY-щиков

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


Наш же новый челендж - автономный дозиметр, работающий от солнечной батареи и передающий данные по модему на Нармон. Ждите, скоро на просторах хабра...


Также мы планируем провести в Москве несколько мастер-классов по сборке дозиметров и прочих проектов. Если DIY-электроника для Вас в новинку, но очень хочется попробовать - присоединяйтесь к сообществу ClimateGuard, ловите объявления и приходите к нам в гости на Электрозавод (МЭЛЗ).

RadSensor v1.0. Собираем портативный персональный дозиметр из готовых компонентов Программирование, Своими руками, Дозиметр, Ядерная война, Самоделки, Электроника, Arduino, Esp8266, Техника, 3D печать, Электрика, Длиннопост

Пользуясь случаем команда инженеров ClimateGuard передает благодарности и респекты:

бессменному автору Илье Радченко (@octopoly) за подготовку материала;

Алексу Гаверу (@AlexGyver) за прекрасную библиотеку GyverOLED;

магазину Амперкот за предоставленные компоненты и желание создавать крутые и полезные образовательные наборы;

сообществу, поддерживающему проекты и участвующему в нашей жизни;

...и конечно же вам, дорогие читатели, за уделенные время и интерес к статье!

Давайте сплачиваться и нести DIY в массы!

Показать полностью 15
68

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками

Введение

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

Был у нас на работе один адок из рубрики “админам жарко, а бухгалтерам дует”…

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


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


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

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


Приблизительно в таких нечеловеческих муках родилась мечта о сборке собственного arduino-анемометра. Можно, конечно, купить готовое устройство, но для айтишника это “беспонтово”. Кроме того, на умную железку можно (в теории) повесить логирование, сбор данных по расписанию, управление умным домом и запуск кота в космос. “Ардуино, и ни в чем себе не отказывай”.


С тех пор прошло 6 лет. Работодатель остался в прошлом. Бизнес-центр скорее всего также перестал высушивать и отмораживать арендаторов. Но мечта жила.

Мы продолжаем рубрику “сенсорика для самых маленьких инженеров”. И в настоящей статье представим подробную инструкцию по сборке собственного термоанемометра. Грейте паяльники, открывайте Arduino IDE, поехали!

Экскурс в матчасть


Как гласит Вики, впервые описание анемометра появилось в виде чертежа в 1540-м в трудах Леона Батиста Альберти “Математические забавы”. Позднее подобную конструкцию описал Леонардо Да Винчи.

Через три века, в 1846-м году ирландский исследователь Джон Томас Ромни Робинсон изобрёл чашечный анемометр, ставший в то время революционным. В 1994-м году геологом Андреасом Пфличем был изобретён ультразвуковой анемометр.


Если не вдаваться в оттенки, все анемометры делятся на 3 основных типа:


1) Механические (чашечные или крыльчатые). Самый старый тип анемометров. устройства подобной конструкции используются в качестве портативных устройств для локальных замеров. На метеостанциях применяют анеморумбометры. Это те же чашечные анемометры, но с “хвостом” для определения направления потока.

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост
2) Термоанемометры - скорость потока воздуха на них рассчитывается исходя из зависимости теплоотдачи нагреваемого элемента, помещенного в поток, от скорости течения потока. Эти типы измерителей нашел широкое применение в автомобильной индустрии в качестве датчика массового расхода воздуха. Также они используются в портативных устройствах для оценки потока в вентканалах. На низких скоростях термоанемометры демонстрируют большую точность, чем механические собратья.
DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

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

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

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

Собираем DIY термоанемометр


Скучная лекция закончилась, возвращаемся к нашему DIY.

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


• проводить замеры скорости потока в ручном режиме;


•рассчитывать расход воздуха в вентиляционных системах;


•обладать компактным размером для проведения замеров в вентканалах.

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

План покупок (BOM)

1) Плата WEMOS D1 mini (от 100 руб. на Али)

Дешёвая и компактная плата на базе ESP8266, основа проекта.


2) Термоанемометр ClimateGuard (1720 руб. на Али)

Компактный и высокоточный модуль, работающий от 3.3 В по I2C.


3) OLED-дисплей 0.96” с I2C (от 100 руб. на Али)

Сравнительно дешёвый, но комфортный для работы дисплей с неплохой яркостью.


4) Регулятор напряжения ADP3338 на 3.3 В (от 14 руб. на Али)

Необходим для стабилизации напряжения, подаваемого на анемометр. В Китае их часто продают набором за приятные деньги.


5) Аккумулятор 18650 (от 200 руб. на Али)

Любой аккумулятор типа 18650 для автономной работы анемометра.


6) Плата для аккумулятора на базе TP4056 (от 10 руб. на Али)


7) Макетная плата 7х3 см (от 50 руб. на Али)

Плата для распайки и соединения всех компонентов.


8) Разъём XH 2.54 4pin “мама” с выводом на 90 градусов и два разъёма XH 2.54 4pin “папа” с проводами (от 90 руб. на Али)

На просторах Али нашёл готовый комплект из обжатых проводов с ответной частью. За 90 рублей получаем 10 таких комплектов.


9) Выключатель KCD-1 ( от 80 руб. на Али)

Компактный и дешёвый клавишный выключатель, под него рассчитана 3D-модель.


10) Селфи-палка (от 330 руб. на Али)


Итоговая стоимость: от 2730 руб.

Для сравнения: бюджетные версии термоанемометров Testo начинаются от 14500 руб., а популярное устройства (с сомнительной репутацией) от CEM - от 25000 руб.

Алгоритм сборки анемометра


1) Ознакомление со схемами платы, компонентов и с общей схемой

2) Соединение всех компонентов на макетной плате

3) Печать корпуса на 3D-принтере, либо создание его из подручных материалов

4) Программирование и прошивка платы

5) Тестирование устройства

Схема сборки


WEMOS D1 мало чем отличается от своих собратьев, построенных на базе ESP8266. Для подключения всех компонентов нам будут необходимы пины D2, D1 (SDA, SCL) и A0 (пин АЦП для считывания остатка заряда батареи) - см. схему ниже.
DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

Анемометру требуется чистое и стабильное напряжение в 3.3 В. Для его обеспечения мы будем использовать стабилизатор напряжения ADP3338.

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

Популярные преобразователи LM3940 или AMS117 не подходят, так как обладают низкой точностью регулирования (около 3%). При этом отклонениz напряжения напрямую влияет на качество показаний анемометра. Поэтому выбор делается в пользу ADP3338 с точностью преобразования 0,8%. Выше приведена схема подключения LDO. Также производитель рекомендует ставить на вход и выход и выход конденсаторы номиналом 1 мкФ.


Мы собираем автономное устройство, поэтому необходим аккумулятор. Для текущего кейса была выбрана банка 18650 (под него создана 3D-модель корпуса), но в принципе можно использовать и li-ion / li-pol аккумуляторы другого форм-фактора.


Плата WEMOS имеет на борту встроенный АЦП (ADC0) для измерения выходного напряжения аккумулятора. Но так как АЦП способен измерять только до 3.3 В, а полностью заряженный аккумулятор выдаёт 4.2 В, необходим делитель напряжения. Делитель напряжения представляет собой последовательно соединенные резисторы. При подключении к средней точке мы обнаружим, что напряжение там равно напряжению, рассчитанному по формуле 2 на картинке.

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

WEMOS имеет делитель напряжения с номиналом резисторов 220 кОм и 100 кОм соответственно.

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

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

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

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

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

Печатаем корпус самодельного анемометра


В процессе работы создано несколько типов корпусов для разных задач:


• “Голый” корпус. Самый простой корпус, который можно доработать под свои задачи или использовать как есть. Сверху есть отверстия для винтов М2 для крепления корпуса анемометра.
DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

• Корпус с возможностью крепления на трубки. В тыльной части имеет крепление под трубку диаметром 15 мм и пазами для стяжек.

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

3D-модели корпусов как обычно доступны на GitHub.


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

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

Подключаем плату и библиотеки


Для дальнейшей работы нам необходимо подключить библиотеки

Сначала заходим в настройки Arduino IDE и добавляем дополнительные ссылки Менеджера плат следующее:

http://arduino.esp8266.com/stable/package_esp8266com_index.j...
DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

Затем мы должны выбрать необходимую нам плату. Для этого переходим во вкладку “Инструменты”, выбираем раздел “Плата”, далее выбираем “Менеджер плат” и вводим в поисковую строку “esp8266”.

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост
DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

После установки расширения снова заходим в “Платы” и выбираем “Generic ESP8266 Module” в подразделе с ESP8266

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

Далее необходимо подключить библиотеки для анемометра и экрана. Для этого:

Arduino -> Скетч -> Подключить библиотеку -> Управлять библиотеками -> Написать “anem” в поисковой строке.

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

После установки библиотеки для анемометра проделаем такую же операцию для библиотек дисплея. В поисковой строке необходимо написать “Adafruit GFX” и “Adafruit SSD1306”.

Переходим к коду.

Код


Программа реализует базовый функционал. Следуя путями DIY можете переработать её под свои хотелки. Кодик также можно найти в GitHub или в примерах библиотеки датчика CG_Anem. Для OLED используется нетленная классика - библиотека Алекса Гавера. Она одна из самых простых, интуитивно понятна и полностью закрывает поставленные задачи.

// Инициализируем библиотеки

#include <cgAnem.h>

#include <Wire.h>

#include <GyverOLED.h>

#define ADC_pin A0 // задаём значение пина АЦП

GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled; // Инициализируем OLED-экран

ClimateGuard_Anem cgAnem(ANEM_I2C_ADDR); // Инициализируем CG_Anem

uint16_t ADC; // Переменная для значений АЦП

uint32_t timer_cnt; // Таймер для измерений анемометра

uint32_t timer_bat; // Таймер для измерения заряда батареи

void setup() {

pinMode(ADC_pin, OUTPUT); // Инициализируем АЦП как получатель данных

oled.init(); // Инициализируем OLED в коде

oled.flipV(1); // Я перевернул экран для удобства

oled.flipH(1); // Для нормального отображения после переворота нужно инвертировать текст по горизонтали

oled.clear();

oled.setScale(2); // Устанавливаем размер шрифта

oled.setCursor(20, 3);

oled.print("CG_Anem");

delay(1500);

cgAnem.init();

oled.clear();

cgAnem.set_duct_area(100); // Задаём площадь поперечного сечения для расчёта расхода. Меняется программно, измеряется в см^2

for(int i = 10; i >= 0; i--){ // Функция таймера служит для предварительного нагрева анемометра перед использованием

oled.setCursor(55, 3);

oled.print(i);

delay(1000);

oled.clear();

}

delay(1000);

oled.clear();

oled.setScale(1);

}

void loop() {

if (millis() - timer_cnt > 1000) { // Снимаем показания с анемометра и выводим их на экран

timer_cnt = millis();

// Проверяем, обновляются ли данные с анемометра. Если да - выводим их, если нет - предупреждаем об ошибке

if (cgAnem.data_update()){

char buf1[50];

char buf2[50];

char buf3[50];

sprintf(buf1, "V: %.1f m/s ", cgAnem.getAirflowRate()); // Собираем строку с показаниями скорости потока

sprintf(buf2, "T: %.1f C ", cgAnem.getTemperature()); // Собираем строку с показаниями температуры

sprintf(buf3, "Cons: %.1f m^3/h ", cgAnem.calculateAirConsumption()); // Собираем строку с показаниями расхода воздуха, исходя из заданного сечения. Расход воздуха измеряется в м^3/час

oled.setCursor(0, 1);

oled.print(buf1);

oled.setCursor(0, 3);

oled.print(buf2);

oled.setCursor(0, 5);

oled.print(buf3);

}

else {

oled.setCursor(45, 3);

oled.print("ERROR");

}

}

if (millis() - timer_bat > 10000) { //

timer_bat = millis();

ADC = analogRead(ADC_pin); // Считываем показание с АЦП

oled.rect(104, 3, 124, 10, OLED_STROKE); // Рисуем иконку батарейки

oled.rect(125, 5, 127, 8, OLED_FILL);

if (ADC >= 970){

oled.rect(104, 3, 124, 10, OLED_FILL);

oled.setCursor(6, 1);

oled.setCursor(104, 2);

oled.print("100%");

}

if (ADC < 970 && ADC >= 870){

oled.rect(106, 3, 119, 10, OLED_FILL);

oled.setCursor(104, 2);

oled.print("75%");

}

if (ADC < 870 && ADC >= 770){

oled.rect(106, 3, 114, 10, OLED_FILL);

oled.setCursor(104, 2);

oled.print("50%");

}

if (ADC < 770){

oled.setCursor(104, 2);

oled.print("LOW");

}

}

}

Проверка


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


Навскидку нашлись следующие жертвы:


• окно в доме;


• вытяжка над плитой;


• кондиционеры в офисах на заводе;


• кулер 3д-принтера;


• пылесос;


• ноутбук;


• торнадо.

Домашнее окно


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

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

Вытяжка над плитой


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

Замер очень наглядно продемонстрировал, что от долгого использования фильтр забился жиром и перестал нормально пропускать воздух. Разница между секцией с фильтром и без составляет 1,3 м/с. При испытаниях ни одна вытяжка не пострадала :)

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

Кондиционеры в офисах на заводе


Прошли по родному Электрозаводу (он же МЭЛЗ), где базируется офис компании.

Наш офисный 10-летний кондиционер пытается справляться с жарой.

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

На остальных объектах по работе кондея очень хорошо видно - в каких помещениях сидят фотографы и ИТ-шники (кондей забирает воздух комнатной температуры), а в каких - трудятся работяги за станками (кондей выдувает горячий воздух в коридор).

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

Кулер 3д-принтера


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

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

Пылесос


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

Внимания достоин только тот факт, что выдуваемый воздух имеет меньшее рассеивание.

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

Ноутбук


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

DIY термоанемометр: собираем датчик скорости и температуры потока воздуха своими руками Программирование, Техника, Электроника, Самоделки, Технологии, Своими руками, Arduino, Esp8266, Измерения, Конструктор, Длиннопост

Торнадо


К сожалению, за неделю поиска нам так и не удалось найти торнадо в Москве. Но мы уже раскрыли карты и ищем ближайшую дорогу до штата Канзаса. Обещаем дополнить статью по возвращении.

Послесловие


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

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


Благодарности


Команда инженеров благодарит стажера Илью Радченко за подготовку материала, упорство и доскональное изучение возможностей анемометра, Алекса Гавера за библиотеку "GyverOLED", а также магазину Duino.ru за любезно предоставленные компоненты.

Ну и конечно крепко обнимаем сообщество Пикабу за уделенное время и интерес к электронике и DIY.

Показать полностью 25
187

Народная дозиметрия. Бюджетный дозиметр своими руками

Введение в проект DIY-дозиметра


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


Сегодня мы соберем простой бюджетный дозиметр на базе WIFI-контроллера ESP32 и платы RadSens. RadSens - готовый I2C-модуль для газоразрядного счетчика Гейгера-Мюллера. В качестве сенсора будет использована надежная и распространенная трубка СБМ20-1. Впрочем, вместо нее к модулю можно подключить любую другую трубку - J305, M4011, СТС-5 и др.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

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

Но сначала, как принято, немного истории и теории…

Матчасть по газоразрядным трубкам

История счётчика Гейгера-Мюллера

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

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Ганс Гейгер (слева) работал вместе с Эрнестом Резерфордом (справа) с 1907 по 1913 г. (рис. 1)

В 1925 году под началом Ганса Гейгера Вальтер Мюллер создаёт ещё несколько типов счётчиков с чувствительностью к каждому открытому на тот момент виду излучения, а именно для α-, β- и γ-излучения (нейтроны были открыты только в 1932 году).

Как показало время, надёжный, дешёвый и простой счетчик Гейгера-Мюллера остаётся одним из самых распространённых способов измерения уровня радиации как в быту, так и в промышленности.

Принцип работы трубки Гейгера-Мюллера

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

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

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Участок схемы со счётчиком Гейгера-Мюллера (рис. 2)

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

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

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

Важнейшим критерием при выборе платы и комплектующих выступала стоимость используемых компонентов. Мы ставили задачу сделать дозиметр максимально бюджетным.

Для создания дозиметра-радиометра были выбраны следующие компоненты:


1) Модуль дозиметра - RadSens (от 3900 руб.)


RadSens - готовый модуль в сборе с популярной трубкой СБМ-20. Не требует ничего кроме установки библиотеки в менеджере библиотек Arduino. Дозиметр готов к работе “из коробки”.


2) Плата ESP8266 / ESP32 (от 700 руб.)


Модуль RadSens имеет интерфейс I2C, совместим с Arduino, esp, Raspberry. Но цены на ардуинки в последнее время совсем не радуют…


3) OLED-экран диагональю 0.96” (от 300 руб.)


Можно взять любой экран с I2C. Но OLED-экран позволяет добавлять простую анимацию и цветовую маркировку текущего уровня радиации.


4) Модуль бузера (пищалки) для звуковой индикации импульсов (от 80 руб.)


Бузер предназначен для звукового информирования пользователя, когда нет доступа к информации на экране.


5) Кнопка-выключатель (от 60 руб.)


6) Макетная плата 120*80 мм (от 130 руб.)


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


Итоговая стоимость сборки - 5170 рублей.


Самый дешёвый дозиметр на маркетплейсе Ozon - 8700 рублей.

Процесс сборки самодельного дозиметра

Необходимо произвести следующие шаги:


1) Припаять к макетной плате элементы в желаемом положении


2) Соединить все элементы по предложенной схеме


3) Проверить правильность подключения сначала визуально, затем подключив ESP к USB


4) Подключить библиотеку RadSens и плату ESP32 в Arduino IDE


5)Добавить код в IDE и загрузить его

Шаг 1. Подключение


Для подключения нам потребуется припаять все элементы и соединить их. Пины SDA и SCL на RadSens и OLED-экране требуется подключить к портам D22 (SCL) и D21 (SDA), они обмениваются данными по интерфейсу I2C, важно их не перепутать.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Остальное подключить согласно схеме на рис. 4.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Схема подключения модулей к ESP32 (рис. 4)

На фото один из вариантов компоновки дозиметра.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Шаг 2. Подключение библиотек RadSens, ESP32, GyverOLED


Подключение расширения для плат в Arduino IDE для платы ESP32 осуществляется следующим образом:

Arduino -> Инструменты -> Плата -> Менеджер плат -> Написать “ESP32” в поисковой строке.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Шаг первый — переход в менеджер плат

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Шаг второй — пишем в поисковике «ESP32» и устанавливаем единственный дистрибутив

Далее необходимо выбрать необходимую нам плату. Для этого переходим во вкладку “Инструменты”, выбираем раздел “Плата”, далее выбираем “ESP32 Dev Module” в подразделе “ESP32 Arduino”.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Шаг третий — необходимо выбрать «ESP32 Dev Module»

Готово! Перейдем к установке библиотеки.


Для установки библиотеки RadSens необходимо проделать почти такую же операцию:


Arduino -> Скетч -> Подключить библиотеку -> Управлять библиотеками -> Написать “RadSens” в поисковой строке.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Шаг первый — заходим в менеджер библиотек

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Шаг второй — пишем в поиске «RadSens» и устанавливаем нашу официальную библиотеку

Далее необходимо установить библиотеку GyverOLED в менеджере библиотек тем же путём.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Необходимо написать «GyverOLED» в поисковике и установить библиотеку

Теперь мы готовы переходить к программированию.

Шаг 3. Код

Код был написан с использованием библиотеки для OLED от Алекса Гавера. Она проста в изучении и поддерживает вывод русского языка без дополнительных манипуляций. Допустимо использовать U8G2, Adafruit или любой удобную вам библиотеку.


Код вы можете найти в примерах библиотеки RadSens в Arduino IDE или скопировать отсюда:


// Подключаем необходимые библиотеки
#include <radSens1v2.h> // Библиотека RadSens
#include <Wire.h> // I2C-библиотека
#include <GyverOLED.h> // Библиотека для OLED Gyver'а идеально подойдёт для понимания методики работы с OLED-экраном, к тому же тут сразу есть русский шрифт
#define buz 18 // Устанавливаем управляющий пин пьезоизлучателя. Если вы выбрали другой управляющий пин - замените значение
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled; // Инициализируем OLED-экран
ClimateGuard_RadSens1v2 radSens(RS_DEFAULT_I2C_ADDRESS); // Инициализируем RadSens
uint32_t timer_cnt; // Таймер опроса интенсивности излучения и импульсов для OLED-экрана
uint32_t timer_imp; // Таймер опроса импульсов для пьезоизлучателя
uint32_t timer_oled; // таймер обновления дисплея
float dynval; // Переменная для динамического значения интенсивности
float statval; // Переменная для статического значения интенсивности
uint32_t impval; // Переменная для кол-ва импульсов
uint32_t pulsesPrev; // Переменная, содержащая кол-во импульсов за прошлый цикл
void setup() {
pinMode(buz, OUTPUT); // Инициализируем пьезоизлучатель как получатель данных
ledcSetup(1, 500, 8); // Инициализируем ШИМ (только для ESP, для Arduino это необходимо стереть)
ledcAttachPin(buz, 1); // Задаём пин вывода пьезоизлучателя для ШИМа (только для ESP, для Arduino это необходимо стереть)
oled.init(); // Инициализируем OLED в коде
oled.flipV(1); // Я перевернул экран для удобства
oled.flipH(1); // Для нормального отображения после переворота нужно инвертировать текст по горизонтали
oled.clear();
oled.setScale(2); // Устанавливаем размер шрифта
radSens.radSens_init();
oled.clear();
radSens.setSensitivity(105); // Задаем чувствительность трубки (если вы заменили СБМ-20 на другую - проверьте чувствительность в документации и измените значение в скобках)
int16_t sensval = radSens.getSensitivity();
oled.setCursor(10, 2);
oled.print("Чувствит:");
oled.setCursor(42, 4);
oled.print(sensval);
delay(4000);
oled.clear();
pulsesPrev = radSens.getNumberOfPulses(); //Обнуляем значение перед началом работы пьезоизлучателя для предотвращения длинных тресков
}
void beep(int deltime) { // Функция, описывающая время и частоту пищания пьезоизлучателя
ledcWriteTone(1, 500); // Включаем на частоте 500 Гц
delay(3);
ledcWriteTone(1, 0); // Выключаем
delay(deltime);
}
/*
void beep(int deltime){
tone(buz, 500, deltime)
} та же функция для Arduino */
void loop() {
if (millis() - timer_imp > 250) { // Функция, создающая "треск" пьезоизлучателя
timer_imp = millis();
int pulses = radSens.getNumberOfPulses();
if (pulses > pulsesPrev) {
for (int i = 0; i < (pulses - pulsesPrev); i++) {
beep(30); // Вы можете изменить параметр, если хотите, чтобы интервал между тресками был больше или меньше
}
pulsesPrev = pulses;
}
}
if (millis() - timer_cnt > 1000) { // Записываем в объявленные глобальные переменные необходимые значения
timer_cnt = millis();
dynval = radSens.getRadIntensyDynamic();
statval = radSens.getRadIntensyStatic();
impval = radSens.getNumberOfPulses();
}
if (millis() - timer_oled > 1000) { // Записываем переменные в строки и выводим их на OLED-экран
timer_oled = millis();
String dynint = "Дин: ";  // Динамическое значение в мкР/ч
dynint += dynval;
String statint = "Ст: ";  // Усреднённое за 500 секунд значение в мкР/ч
statint += statval;
String nimp = "Имп: "; // Количество имульсов с момента включения
nimp += impval;
oled.setCursor(0, 1);
oled.print(dynint);
oled.setCursor(0, 3);
oled.print(statint);
oled.setCursor(0, 5);
oled.print(nimp);
}
}

Тестирование самодельного дозиметра


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

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Показатели естественного фона и при поднесении сульфата калия

Стандартный уровень радиации в помещении - 15-20 мкР/ч. При прямом контакте сульфат калия получаем 32-39 мкР/ч, что вдвое выше нормы.
При контакте с сульфатом натрия через оргстекло толщиной 4 мм уровень радиации практически не менялся, что указывает на мягкое бета-излучение

В качестве заключения

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

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


А какие возможности в следующей версии DIY-дозиметра хотели бы видеть вы? Оставляйте свои предложения в комментариях!



Отдельная благодарность магазину «Duino» и мастерской «HelloBarsuki» за предоставленные материалы для статьи!

Показать полностью 13
Отличная работа, все прочитано!