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

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

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

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

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

DIY дозиметр на esp32
DIY дозиметр на esp32

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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, важно их не перепутать. Остальное подключить согласно схеме на рисунке.

Распиновка esp32
Распиновка esp32
Схема подключения
Схема подключения

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

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

Подключение расширения для плат в Arduino IDE для платы ESP32 осуществляется следующим образом:
Arduino -> Инструменты -> Плата -> Менеджер плат -> Написать “ESP32” в поисковой строке.

После установки необходимо в пункте “Плата” указать “ESP32 Dev module”.

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

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

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

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

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

Шаг 3. Код

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

Кодик тут
// Подключаем необходимые библиотеки
#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 = "Ст:  ";
    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, активно испускающим бета-излучение.

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

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

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

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

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

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

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

Команда инженеров передает приветы и благодарности соавтору и стажеру Илье Радченко за долгие часы возни с железкой и кодом, мастерской Барсуки с МЭЛЗ за стеклышки, а также магазину Duino.ru и лично @CyberBot за любезно предоставленные компоненты.

Ну и конечно крепко обнимаем сообщество Хабра за уделенное время и интерес к электронике и DIY. Нас мало - держимся, надеваем тельняшки.

Комментарии (24)


  1. Jury_78
    22.04.2022 13:45
    +2

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

    Самый дешевый BR-6, на Ali где то 4500р, а лет 5 назад купил за 3500... Wifi там конечно нет, но работает от двух АА.


    1. yellowknife Автор
      22.04.2022 18:59

      Тут поразбираться надо. Возможно, там дешевая китайская трубка. СМБ20 тоже не сцинтиллят. Но по сравнению с китайскими - решает


      1. Jury_78
        23.04.2022 09:41

        Тут разбирали - трубка такая


  1. crawlingroof
    22.04.2022 13:52
    +1

    Ничего себе diy, выглядит как бизнес план. Молодцы.


  1. thedrnic
    22.04.2022 14:33
    +1

    Ozon "Дозиметр Мастер-1" 5215р
    компактен и работает от обычных батареек


  1. Aquahawk
    22.04.2022 14:47
    +1

    Еще год назад божественный radiacode 101 можно было взять за 8 (что я и сделал) сейчас он в три раза подорожал, что, в принципе, понятно для девайса такого уровня.


  1. yarikinez
    22.04.2022 16:38
    -8

    Я один удивился, что мы живем в мире, где так легко купить дозиметр?)
    Проект прикольный, можно к homebridge прикрутить и спрашивать у Siri: "Какая влажность в спальне? А какой уровень радиации сегодня?"


    1. Jury_78
      22.04.2022 16:54
      +5

      Я один удивился, что мы живем в мире, где так легко купить дозиметр?)

      Это ж не ядерные отходы.


    1. DrMefistO
      22.04.2022 17:08
      +4

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


    1. Aquahawk
      22.04.2022 17:26
      +3

      Что значит легко купить? Вы считаете что гражданским не нужно владеть подобными измерительными приборами? А какими ещё не стоит? Ещё и гамма спектрометры неплохие в свободном обороте есть.


      1. DrMefistO
        22.04.2022 21:31

        Главное, что не гамма-излучатели


  1. lolikandr
    22.04.2022 18:07

    DIY проект хорош. Себе пару лет назад купил Idealratio Родник-3 за 5000р, сейчас стоит уже 6950р. Всё-таки вывод на ЖКИ и экономить батарейку до 10 лет - это надо прям сильно постараться.


  1. A_Degteryov
    22.04.2022 21:38
    +1

    Спасибо за материал, очень вдохновляет на эксперименты. В своё время интересовался довольно близкой темой, но так и не нашёл никаких инструкций и поставил на паузу. Стандартные дозиметры измеряют радиоактивность, то есть количество импульсов за единицу времени, либо вообще сразу показывают дозу облучения. Мне же хотелось найти способ доступными средствами получить запись в формате "импульс - время прихода импульса". В идеале, может быть, ещё и с энергией импульса. Если не напортачить с точностью измерения времени, то это должен быть практически идеальный источник случайного сигнала, а с несколькими такими приборами можно было бы проводить интересные статистические опыты по выявлению систематической закономерности, например, при реакции на приближение радиоактивных минералов. Но готовых устройств за адекватные деньги или готовых схем, которые позволяли бы получать такой "нефильтрованный" сигнал, я не нашёл, а на полную разработку с нуля пока что не хватает технической подготовки и энтузиазма. Если предложите способ, как собрать такой - я бы наверное сделал несколько штук, потом бы опубликовал результаты опытов с ними


    1. yellowknife Автор
      22.04.2022 22:28

      Спасибо за развернутый комментарий. Стараемся)))

      Сейчас запустили в производство версию с импульсным выходом (он же - выход под пищалку), только время Вам нужно будет фиксировать самостоятельно. Скоро будет в магазинах (Дуино, Амперкот, ЧиД,, Озон, Али). А вот как измерять "энергию импульса" - пока непонятно. Поразбираемся. Но есть подозрение, что трубкой это делать невозможно.


      1. A_Degteryov
        23.04.2022 11:26
        +1

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

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

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


      1. j_aleks
        23.04.2022 13:09

        для измерения энергии только Сцинтилляционный датчик годится...

        где то на просторах был проект по такой теме...


  1. amamlin
    22.04.2022 22:18
    +3

    Спасибо за статью.

    Тоже поглядывал на модуль RadSens, но меня всегда интересовал вопрос живучести цифровых компонентов в условиях повышенного радиационного фона. Самой газоразрядной трубке то ничего не будет, схеме повышения напряжения в принципе тоже, а вот цифровые компоненты могут начать сбоить при каком-то определённом уровне ионизирующего излучения. Причем чем меньше техпроцесс, тем больше будет ошибок и сбоев. Может случиться так, что модуль будет работать, а микроконтроллер/arduino/esp/другое выйдет из строя.

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

    Кстати, можно ли подключить пищалку напрямую к модулю счётчика?


    1. yellowknife Автор
      22.04.2022 22:25

      Добрый день

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

      2. Сейчас можно подключить пищалку напрямую колхозным способом. Схема есть в комьюнити ClimateGuard (https://t.me/climateguard_community ). А вот платы со штатным выходом еще на заводе, будут в магазинах где-то через месяц.


    1. jar_ohty
      23.04.2022 12:29

      Как показывает практика, сбоить оно начнет уже при таких уровнях, когда "пока вы читаете эту надпись, повреждения организма, вызванные ионизирующим излучением, становятся смертельными". Видел работу, где измерялся порог первых сбоев для STM32F105 и какой-то атмеги. Первая начинала сбоить при поглощенной дозе около 5000 рад, а атмега - 10-12 килорад. Хуже с аналоговыми компонентами: при ~500 рад заметно ухудшаются характеристики АЦП наподобие AD7685, но отказа при таких дозах еще не происходит.


  1. voidptr0
    23.04.2022 22:24

    В европейской части нужная вещь.


  1. Alex20129
    25.04.2022 08:59

    Сравнение стоимости самоделки с продукцией завода совершенно не нужно, т.к. в нём теряется смысл и суть. Ценность DIY-проекта не в том, чтобы "сэкономить две тыщи рублей", в том опыте и знаниях, которые можно получить за время сборки. Это просто такой способ истратить время и силы с пользой для мозга, которую очень сложно измерить в деньгах.