❯ С чего всё началось
В начале 2023 года, во многих СМИ появилась информация, что стрелки часов Судного дня перевели на десять секунд. Сейчас они замерли на отметке 90 секунд до полуночи, и теперь часы показывают самый высокий уровень риска ядерной катастрофы за всю историю проекта. Эта информация побудила меня создать устройство для мониторинга фоновой радиации — мог бы написать я, но на самом деле, всё началось гораздо раньше и об этом расскажу далее.
Однажды вечером, в 2015 году, мне захотелось посмотреть статистику фоновой радиации в регионе где я проживаю, зашел на мой любимый проект под названием «Народный мониторинг» и начал искать близлежащие датчики, которые могли бы измерять фоновую радиацию. На моё удивление, я не обнаружил подобных датчиков. Ладно, не беда, сказал я себе, ведь я живу в регионе, где есть государственные предприятия атомной энергетики, на их сайте должна же быть публичная информация об уровне фонового излучения. Зашел на сайт, да, действительно, есть статистика по уровню фонового излучения, где на графике показана прямая линия без намека на динамику, естественно, данный результат меня не устроил и я решил собирать статистику самостоятельно, разработав свое устройство.
Немного информации о том, что собой представляет ионизирующее излучение (радиация)
На рисунке схематично изображена проникающая способность трех видов излучения
Альфа-излучение представляет собой поток альфа-частиц (ядер гелия-4). Альфа-частицы излучаются при радиоактивном распаде и могут быть легко остановлены листом бумаги. Бета-излучение — это поток электронов, возникающих при бета-распаде, для защиты от бета-частиц энергией до 1 МэВ достаточно алюминиевой пластины толщиной в несколько миллиметров. Гамма-излучение обладает гораздо большей проникающей способностью, поскольку состоит из фотонов с высокой энергией, не обладающих зарядом, для защиты эффективны тяжёлые элементы (свинец и т. д.), поглощающие фотоны Гамма-излучения в слое толщиной несколько см.
Как можно видеть, наиболее опасные типы радиационного излучения это Бетта и Гамма, если речь идет о внешнем воздействии. При попадании излучающих частиц во внутрь человека, все виды излучения представляют опасность.
Так, немного разобрались что такое радиация, надеюсь, эта информация не утомила вас. Предлагаю перейти к конструкции устройства.
❯ Аппаратная часть устройства
Так как основным эффектом радиационного излучения является ионизация, то для детектирования излучения используется простое решение — трубка (счетчик) Гейгера-Мюллера.
Краткое описание работы трубки(счетчика) Гейгера-Мюллера:
При пролете частицы с высокой энергией сквозь трубку, образуется ионный канал, который замыкает цепь электродов, создавая импульс на загрузочном резисторе. Эти импульсы и будут сигналом регистрации фонового излучения, остается только передать эти импульсы в микроконтроллер для вычисления накопленной дозы излучения.
Чтобы работать с трубкой, необходим источник высокого напряжения на 400В. В качестве источника высокого напряжения я решил применить повышающий Step-UP преобразователь на базе ШИМ контроллера MAX1771, который хорошо себя показал в проекте часов на ламповых индикаторах. За интеллектуальную часть устройства отвечает микроконтроллер ESP8266.
Итак, ниже размещена принципиальная схема разработанного устройства.
- Рендер печатной платы:
- Печатная плата в собранном виде:
- Один из вариантов корпуса устройства:
❯ Разработка корпуса устройства
Корпус спроектирован во FreeCAD, данный вариант корпуса изготовлен с учетом применения трубки СИ180Г.
Еще немного картинок готового устройства:
На фото вариант устройства с применением массива трубок СИ1-Г/
❯ Разработка программной части устройства
Программная часть не подразумевает каких-то сложных решений, наша задача подсчитать импульсы, приходящие с трубки Гейгера-Мюллера за определенный промежуток времени и применить расчетный коэффициент трубки. В прошивке устройства будет использоваться несколько временных интервалов подсчета импульсов, 10 сек, 1 мин, 5 мин, 60 мин. Подсчет импульсов будет выполняться с помощью аппаратного прерывания.
attachInterrupt(digitalPinToInterrupt(4), count_tube, FALLING);
Так как у нас для усиления сигнала импульса трубки используется транзистор с обратной проводимостью, то нам необходимо использовать параметр FALLING в аппаратном прерывании.
- Ниже представлена функция счетчиков импульса:
ICACHE_RAM_ATTR void count_tube(){
bCP10s++;
bCP1m++;
bCP5m++;
bCP60m++;
}
- Функция вычисления накопленной дозы для разных временных интервалов:
void timers(){
unsigned long currentMillis = millis();
if((currentMillis - t10s) > 10000 ){
val10s = bCP10s*0.06*settings.tubecof;
t10s = currentMillis;
CP10s = bCP10s;
bCP10s = 0;
}
if((currentMillis - t60s) > 60000 ){
val1m = bCP1m*0.01*settings.tubecof;
t60s = currentMillis;
CP1m = bCP1m;
bCP1m = 0;
}
if((currentMillis - t5min) > 300000){
val5m = bCP5m*0.002*settings.tubecof;
t5min = currentMillis;
CP5m = bCP5m;
bCP5m = 0;
}
if((currentMillis - t60min) > 3600000){
val60m = bCP60m*0.00017*settings.tubecof;
t60min = currentMillis;
CP60m = bCP60m;
bCP60m = 0;
}
}
Ссылка на исходный код будет добавлена конце статьи.
❯ Конфигурация устройства / интерфейс
В данной версии программного обеспечения для конфигурации устройства используется веб-интерфейс. Для первичной настройки при отсутствии подключения к сети устройство создает Wi-Fi точку доступа, при подключение к которой выполняется автоматическая переадресация на веб-страницу устройства (реализована с применением технологии Captive portal).
- Интерфейс главной страницы:
Доступ к конфигурации устройства выполняется только после авторизации.
- Интерфейс настройки подключения по MQTT протоколу:
❯ Интеграция в Home Assistant
Для передачи данных в Home Assistant, как вы уже могли догадаться, используется протокол MQTT. Ниже приведен пример интеграции, в примере использован формат данных JSON и имя топика «r_sensor/jsondata».
Формат данных JSON для данного устройства:
{
"CP10s":"6",
"CP1m":"34",
"CP5m":"158",
"CP60m":"1977",
"val10s":"11.16","
val1m":"10.54","
val5m":"9.80",
"val60m":"10.42",
"WORKTIME":"3900" }
Ключи, которые начинаются на «CP» — это «сырые» данные, полученные от трубки, Ключи начинающиеся на «val» — это итоговое значение уровня излучения.
Для интеграции в Home Assistant в конфигурационном файле configuration.yaml, добавьте следующий код (пример):
mqtt:
sensor:
- name: "Сенсор фонового излучения (10 сек)"
unique_id: 5bc54f8b-7767871-47fg74-e98e92456
state_topic: "r_sensor/jsondata"
unit_of_measurement: "uRh"
value_template: "{{ value_json.val10s }}"
- name: "Сенсор фонового излучения (1 мин)"
unique_id: 5bc54f8b-7767871-47fg74-e98e926456
state_topic: "r_sensor/jsondata"
unit_of_measurement: "uRh"
value_template: "{{ value_json.val1m }}"
- name: "Сенсор фонового излучения (5 мин)"
unique_id: 5bc54f8b-7767871-47fg74-ee92456
state_topic: "r_sensor/jsondata"
unit_of_measurement: "uRh"
value_template: "{{ value_json.val5m }}"
- name: "Сенсор фонового излучения (60 мин)"
unique_id: 5bc54f8b-7767871-47fg4-e6e92456
state_topic: "r_sensor/jsondata"
unit_of_measurement: "uRh"
value_template: "{{ value_json.val60m }}"
Чтобы добавить в dashboard Home Assistant карточку с отображением данных, создайте карточку «Объекты» и в текстовом редакторе необходимо вставить следующий код:
type: entities
entities:
- entity: sensor.sensor_fonovogo_izlucheniia_10_sek
- entity: sensor.sensor_fonovogo_izlucheniia_1_min
- entity: sensor.sensor_fonovogo_izlucheniia_5_min
- entity: sensor.sensor_fonovogo_izlucheniia_60_min_2
state_color: true
title: Мониторинг излучения
В итоге должна получиться подобная карточка с отображением данных:
На этом мы закончили базовую интеграцию датчика в Home Assistant.
Немного информации о дополнительных функциях
В устройстве предусмотрена функция звуковой индикации. Да-да, это тот самый звук потрескивания при регистрации частицы. Думаю, радиофилы и радиофобы будут довольны).
Так же в устройстве предусмотрена звуковая сигнализация о превышении допустимого уровня излучения, она срабатывает при достижении уровня радиации более 100 мкР/ч.
Демонстрацию можно увидеть здесь
❯ Итог
В итоге у нас получилось интересное и компактное решение для мониторинга уровня фоновой радиации, которое запитывается от обычного USB порта.
Устройство прошло несколько итераций развития, как программного, так и аппаратного. На данный момент это проверенное временем и отлаженное устройство, которое не стыдно показать.
На этом можно завершать. Всем большое спасибо за внимание!
Исходники проекта
Возможно, захочется почитать и это:
- ➤ Как я делал бюджетное устройство мониторинга качества среды и что из этого вышло
- ➤ Снижение потребления LoRa ноды (TPL5010/TPL5110)
- ➤ Блок управления водяным охлаждением NZXT Z63. Ремонт с элементами обратной разработки
- ➤ ИОЛА (IOLANET2): уникальная ретро-сеть отечественного производителя и безуспешный эксперимент
- ➤ Геймдев по-фински. Рождение студии Remedy
Комментарии (30)
mmMike
16.10.2023 08:24+6Для счетчика "судного дня" слишком большой потребление. Датчики с толстым стеклом осадки скорее всего особо и не заметят (не гамма же в основном будет).
А потребление? У датчика мизерный ток потребления и не критичен к разбросу напряжения. Чего все собирают на step-up ШИМ?! (блокинг генератор на 1 транзисторе это же скучно жже)
Впрочем, чего я..
С учетом использование ESP и встроенного сайта слова "судный день" воспринимаются как шутка.Для судного дня практичнее карманный счетчик с ЖК индикатором на AAA батарейках/аккумуляторах со сроком непрерывной работы несколько недель от одного комплекта.
SergeyMax
16.10.2023 08:24+6Для счетчика "судного дня" слишком большой потребление.
Для датчика Судного дня у него слишком неподходящий диапазон измерений: сигнализатор настроен на 100 микрорентген, а должен быть настроен на 100 рентген.
gorbln
16.10.2023 08:24+3На 100Р нужна другая лампа. СБМ-20 захлебнётся при 144мР/ч.
Надо СИ-3БГ:
ovn83
16.10.2023 08:24-1Сбм 20 не производят, производят сбм-20-1, смотреть сроки. При 1 Р/ч сбм-20 начнёт регестрировать непрерывно и дозиметр будет показывать нормальный уровень, а на самом деле уровень высокий.
При мощном излучении полупроводники деградируют за минуты. На лампах надо собирать. Си-3 показывает, что через час на кладбище ползти.
hw_store
16.10.2023 08:24серийный на двух часовых батарейках LR-44 работает примерно полгода.... выключателя питания в нём нет
mmMike
16.10.2023 08:24У меня самоделка, собранная в школе (1984-86 год где то) на 176 КМОП с индикацией на ЖК от дохлых часов "Электроника" и питанием от "кроны", работала непрерывно где то недели 3.
Скорее всего это был предел именно батарейки. Да и конденсаторы дерьмо с неизвестным током утечки.Так что, собранное на нормальных компонентах вполне может существенно дольше.
Nick0las
16.10.2023 08:24Удивляет не только ШИМ step-up, но и использование дроселя вместо трансформатора.
Давным давно я делал блокинг-генератор, ток потребления был небольшой (что-то около 100мка с гарантией работы счетичка при 10000мкр/ч). Только мотать сотни витков на кольцо ферритовое было долго и нудно. Потом делал прямоходовик с управлением ключом непосредственно от МК. Трансформатор с учетом предыдущего опыта был на броневой чашке. У такой схемы достоинство в том что частоту импульсов можно подстравиать согласно числу срабаоываний счетчика, чтобы не гонять трансформатор вхолостую. Один недостаток таких экономичных преобразователей - ты не знаешь что на выходе, и даже вольтметром с 10МОм входным сопротивлением не померять. Я заряжал от преобразователя конденсатор большой емкости (около 1 мкФ) в течение нескольких минут) и мерял напряжение на нем.
Iv38
16.10.2023 08:24+2Если планировалось сразу интегрировать счётчик в Home Assistant, то прошивку можно было вообще не писать, а взять ESPHome и сконфигурировать Pulse Counter Sensor.
nomhoi
16.10.2023 08:24У нас в деревне зимой дровами топят утром и вечером, иногда ветер дует в мою сторону, посоветуете какой-нибудь датчик, который бы распознавал дым, и подавал сообщение, чтобы закрыть заслонку бризера?
ForestDog
16.10.2023 08:24Конкретный датчик не подскажу, но очевидно это должен быть датчик PM 2.5. У меня такой встроен в фильтр Xiaomi Air Purifier - любой дым моментально отлавливает.
Dr_Faksov
16.10.2023 08:24Рискну предложить стандартный пожарный оповещать задымления. Правда не уверен, подойдёт ли вам его чувствительность.
Javian
16.10.2023 08:24На хабре есть ряд публикаций про конструкции на SDS011 как эта - https://habr.com/ru/articles/525140/
Чувствует дым, аэрозоль, пыль.
Koduc
16.10.2023 08:24В помещении использую такой: Qingping Air Monitor Lite. Цепляется по wifi, в HomeAssistant интегрируется без проблем. Дым хорошо показывает датчик PM 2.5 в нем
REPISOT
16.10.2023 08:24Вы почему-то проигнорировали рекомендации по разводке.
CyberexTech Автор
16.10.2023 08:24В большинстве реализаций данного устройства, используется модуль ESP-07S с внешней антенной, на корпусе можно заметить отверстие для крепления внешней антенны. В статье показан отладочный образец, на котором тестирую изменения в прошивке.
ovn83
16.10.2023 08:24+1Когда случиться, эта игрушка сгорит первой. Имею ДП5, там крайняя шкала 200 Р/ч и её в Чернобыле не хватало, зашкаливало. В быту вся эта радиофобская мура точно не нужна. Детекторы деградируют, смотрите дату изготовления и срок хранения.
vvbob
16.10.2023 08:24+1Автор, кстати, сам и упомянул основной минус таких устройств. Когда оно поднимает тревогу - то первая мысль, которая приходит в голову - что-то там в нем поломалось, а не то что на улицу просто опасно выходить из-за повышенной радиации. Поэтому, думаю, обязательно нужно дублирование, желательно совершенно разными устройствами, например одно мониторит обстановку постоянно, второе в виде хорошего переносного устройства лежит где-то в легкой доступности. Если первое поднимает тревогу, то можно с помощью второго проверить - ложная это тревога, или стоит.. предпринимать меры, в зависимости от уровня радиации, ну или если уровень слишком большой, то расслабиться и не суетиться перед смертью.
gorbln
Ну, в общем-то, так оно и есть на большом отрезке времени.
Какая-то внятная "колбаса" есть только на отрезке 5 минут, даже на часовом графике уже все значения близки к среднему.
CyberexTech Автор
Да, я понимаю, но не ровная линия на протяжении месяца). Сейчас они давно исправили, но доверия их данные у меня давно не вызывают, особенно после случая с Рутением-103)
SergeyMax
Непонятно, почему бы линии не быть ровной на протяжении месяца, это же фоновое излучение, оно вообще не меняется.
KbRadar
Фон меняется со временем, в особенности от погоды. Но лучше иметь сцинтилляционный прибор чтобы наблюдать такие изменения.
Radisto
Так это же вроде бета-излучатель? Чтобы датчик фонового излучения показал хоть что-то выше этого фона от бета-изотопа, этот рутений должен был вокруг облаками летать. Ваш прибор его тоже не покажет
jar_ohty
Счетчики Гейгера намного эффективнее "ловят" бета-лучи, чем гамму. Почти на два порядка. А учитывая, что рутений присутствовал в виде газовой фазы и мог проникнуть внутрь корпуса и сорбироваться на стенках счетчика, вероятность регистрации еще больше возрастает. Но скорее всего это был обычный свинцово-висмутовый дождик, смывший из толщи атмосферы ДПР радона прямо под нос вашему детектору.
VT100
Такое мнение о рутении.
Название, кстати, - тоже классное. Говорящее само за себя.
olartamonov
И это попросту дробовой шум.
gorbln
Согласен. Никакого периодического характера этот график не имеет, он всегда разный. Соответственно, и никакой толковой информации извлечь из него тоже не получится, кроме случаев, когда циферки колбасились в районе 5-25 мкр/ч, потом вдруг начали колбаситься в районе 150-300, а потом снова в районе 15. Но обычно ты и сам знаешь причину.
olartamonov
Вопрос не в периодичности. Вопрос в том, что у вас там частота событий какая — один импульс в единицы-десятки секунд? В результате на минутных отрезках регистрация единичного события значительно меняет результат.
А единичное событие — по определению случайно.