❯ С чего всё началось
В начале 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 порта.
Устройство прошло несколько итераций развития, как программного, так и аппаратного. На данный момент это проверенное временем и отлаженное устройство, которое не стыдно показать.
На этом можно завершать. Всем большое спасибо за внимание!
Исходники проекта
Автор: Valeriy