Модуль лічильника імпульсів з розрахунком еквівалентної потужності іонізуючого випромінювання для трубки Гейгера-Мюллера СБМ-20.

249299

Модуль лічильника імпульсів реалізує розрахунок рівня еквівалентної потужності фонового gamma-випромінювання за імпульсами, що надходять на вхід GPIO з реєстратора з встановленою трубкою Гейгера-Мюллера типу СБМ-20, або аналогічною.

Після запуску у середовищі Lua продукт radCounter «фоново» працює як повноцінний модуль зі своїми публічними методами, що зареєстровано у системному оточенні і котрі можливо викликати з рівня мови Lua. У модулі реалізовано методи:

  • ініціалізації radCounter.init()
  • зчитування накопичених і розрахованих даних radCounter.read().

 

Продукт застосовує ковзне середнє (від Moving Average) на масиві з п’яти елементів для розрахунку середнього поточного значення рівня випромінення, а також розраховує отриману дозу звичайним накопиченням.

У модулі реалізовано накопичувальну вилку мінімального та максимального значень випромінення.

Гнучка система трирівневої фільтрації реалізовано як на рівні властивостей трубки СБМ-20 (dead time = 190 usec), так і на рівні GPIO контролера (active-low / active high; анти-брязкіт для боротьби з хибними-позитивними спрацьовуваннями лічильника переривань на порту вводу-виводу).

Очистити

Опис

Програмний модуль для трубки Гейгера-Мюллера СБМ-20 розроблявся і тестувався для роботи з

  • Прошивкою NodeMCU 3.0.0.0 built on nodemcu-build.com provided by frightanic.com;
  • branch: master;
  • release: 3.0-master_20200610;
  • build created on 2020-06-11;
  • powered by Lua 5.1.4 on SDK 3.0.1-dev(fce080e);
  • Прошивка NodeMCU має містити обов’язкові модулі TMR та GPIO;
  • Тестовий стенд має включати до свого складу трубку СБМ-20, але за її відсутності,  користувач плати NodeMCU, може використати вбудовану кнопку D3 (Flash, gpio0) для тестування програмного модуля;
  • Модуль розроблявся для трубки СБМ-20, але користувач може застосовувати код для іншої трубки з аналогічним принципом дії та внести незначні зміни у початкові налаштування:
    1. тривалість циклу вимірювання,
    2. коефіцієнт перерахунку імпульсів у мкЗв/хв,
    3. активний рівень/фронт опрацювання події.

Модуль лічильника імпульсів реалізує розрахунок рівня еквівалентної потужності фонового gamma-випромінювання за імпульсами, що надходять на вхід GPIO з реєстратора з встановленою трубкою Гейгера-Мюллера типу СБМ-20, або аналогічною.

Після запуску у середовищі Lua продукт radCounter «фоново» працює як повноцінний модуль зі своїми публічними методами, що зареєстровано у системному оточенні і котрі можливо викликати з рівня мови Lua.

У модулі реалізовано методи:

  1. ініціалізації  radCounter.init();
  2. зчитування накопичених і розрахованих даних  radCounter.read().

Продукт застосовує ковзне середнє (від Moving Average) на масиві з п’яти елементів для розрахунку середнього поточного значення рівня випромінення, а також розраховує отриману дозу звичайним накопиченням.

У модулі реалізовано накопичувальну вилку мінімального та максимального значень випромінення.

У radCounter доступна гнучка система трирівневої фільтрації. Фільтри реалізовано як на рівні властивостей трубки СБМ-20 (dead time = 190 usec), так і на рівні GPIO контролера (active-low / active high; анти-брязкіт для боротьби з хибними-позитивними спрацьовуваннями лічильника переривань на порту вводу-виводу).

Фільтрація хибних спрацювань лічильника імпульсів

У програмному забезпеченні модуля реалізовано декілька різних фільтрів, що дозволяють Розробнику самостійно вмикати чи вимикати їх шляхом зміни параметрів у методі виконання початкової ініціалізації

По-перше, можливо у якості фільтрації обирати фронт опрацювання обробника переривань. Цей метод з’явився під час практичних випробовувань різноманітних апаратних схем підключення модуля реєстрації імпульсів з трубкою СБМ-20.

По-друге, у коді продукту реалізовано фільтр низького рівня, що працює з API Lua, котрий у свою чергу транслює можливості апаратного рівня NO OS SDK ESP8266. Фільтр відкидає брязкіт, що встигає зафіксувати низькорівневий високошвидкісний драйвер порту GPIO у вигляді ‘Event Count’.

По-третє, є можливим увімкнути фільтр високо рівня, що націлений на відкидання перехідних процесів всередині трубки, котрі є за щільністю виникнення по часу меншому, ніж час нечутливості трубки заявлений виробником, тобто якщо між суміжними імпульсами трубки менше ніж 190 мікросекунд.

Реєстрація модуля у системному оточенні:

radCounter = require('radCounter')

Примітка 1. Так викликати можливо як вихідний *.lua код, так і компільований *.lc.

Примітка 2. Рекомендуємо виконувати виклик модуля з файлу початкового завантаження init.lua.

Публічні методи модуля:

radCounter.init() – ініціалізація модуля із заданими параметрами;

radCounter.read() – отримання поточних даних як-от еквівалентного випромінювання та інших.

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

Розробник може за допомогою API модуля реалізувати власний алгоритм обробки чи візуалізації базових даних засобами мови Lua та бібліотек мікроконтролера NodeMCU.

Метод початкової ініціалізації radCounter.init() модуля вимагає наступних параметрів

  • pin – порт контролера, що реєструє імпульси, D3 за замовчуванням;
  • dir — 1/0, якщо 0 то встановлюється active-low, якщо 1 то active-high, 1 за замовчуванням;
  • time_out — час одного накопичувального циклу вимірювання;
  • lo_flt — ‘ON‘ вмикання чи ‘OFF’ вимикання низькорівневого фільтру антибрязкіту;
  • hi_flt – ‘ON‘ вмикання чи ‘OFF’ вимикання високорівневого фільтру антибрязкіту;
  • dbg — 1 вмикання чи 0 вимикання виводу додаткових даних налагодження у консоль.

 

Вихідний код модуля radCounter реалізує і дозволяє Розробнику:

  • обрати логіку реєстрації імпульсів (на вибір: active low чи active high) на GPIO;
  • встановити час нечутливості трубки Гейгера-Мюллера – за замовчуванням застосовується 190 мікросекунд, відповідно до документації на СБМ-20;
  • налаштувати коефіцієнт перетворення одиничного імпульса/хвилину в еквівалентну потужність мкЗв/год – за замовчуванням рекомендовано 0,0057. Цей коефіцієнт перевірено шляхом порівняльних випробувань із застосуванням професійного сертифікованого дозиметра;
  • встановити час одного накопичувального циклу вимірювання імпульсів – за замовчуванням рекомендовано 60 секунд;
  • обрати порт GPIO (тобто D-індекс), до котрого підключено реєстратор імпульсів з трубкою Гейгера-Мюллера.

 

Для кого цей продукт

Кожен наш програмний продукт розроблено із застосуванням безмежного розмаїття можливостей простих і доступних контролерів, сенсорів та інших електронних компонентів, які можна знайти у будь-якому магазині. Головна наша мета – надати прості і недорогі інструменти швидкого вирішення задуманих проектів.

Наприклад, для розробки даного продукту ми використовували пристрій українського виробника, котрий ми придбали через інтернет.

  1. Реєстратор імпульсів: Ggreg20_V1 з трубкою СБМ-20

  1. Контролер ESP8266 з дисплеєм: ESP12.OLED

Ми залишилися цілком задоволеними роботою пристрою і тепер він працює в нашій лабораторії на постійній основі.

Але для використання програмного модуля radCounter підійде будь-який модуль чи плата на базі ESP8266-12e/f з прошивкою NodeMCU та головне — реєстратор імпульсів з трубкою Гейгера.

Ми будемо раді, якщо нашими продуктами скористаються:

  • Діти та їх батьки;
  • Учні та їх вчителі;
  • Студенти та їх лабораторні роботи;
  • Новачки у технологіях Інтернету речей;
  • Лаборанти та їх експерименти;
  • Аматори-електронщики-не-програмісти;
  • Аматори-програмісти-не-електронщики;
  • Професійні інженери та їх поважні замовники.

 

Можливості сучасних обчислювальних систем настільки потужні і всеосяжні, що дані програмні компоненти однаково добре згодяться як для домашньої автоматизації і факультативного навчання, так і комерційного впровадження, або швидкого розгортання окремих сегментів комерційних систем та виконання їх пілотних випробувань.

Необхідні навички та інструменти

Всі програмні продукти на нашому сайті розраховано на користувачів, які вже вміють самостійно підключати, прошивати та програмувати контролер ESP8266 з прошивкою NodeMCU і мовою програмування Lua.

Таким чином, застосування даного комерційного-придбаного програмного модуля Клієнтом полягає у тому, щоб:

  • завантажити (download) lua-код у середовище розробника на комп’ютер,
  • ознайомитися з кодом і супутніми матеріалами пакету постачання,
  • адаптувати код за необхідності під свої задачі,
  • вивантажити (upload) програмний код у контролер та запустити на виконання;
  • після тестування придбаного коду, користувач може інтегрувати його до своїх власних програмних розробок.

 

Проте, Ви можете ознайомитися з інструкцією на нашому сайті: Як швидко почати працювати з контролером NodeMCU/ESP8266 з використанням мови Lua для користувачів ОС Windows.

Додаткова інформація

Рівень складності

Складний

Передача даних назовні

Немає

Тип виконання

Модуль з повним API

Локальний Web-сервер

Немає

Журналювання

Немає

Енергоспоживання

Звичайне

Композиція скриптів

Один скрипт

Статистична обробка даних

Спеціальна обробка

Перевірена версія прошивки

3.0-master_20200610

Отримання точного часу

Немає

Інтерфейс користувача

Немає

Виробники апаратного забезпечення

Немає

Необхідні модулі прошивки

gpio модуль, tmr модуль

Мінімальна сумісна версія прошивки

1.5.4.1-master_20161201