Писать для специалистов в области гамма спектрометрии я немогу, поскольку сам таковым не являюсь. Покажу итоговый результат и как он был достигнут.
Целью ставилось собрать небольшой носимый прибор с низким потреблением. В основе SiPM Sensl microFC60035 и кристалл NaI(Tl). Остановился на таком решении.
Для передачи данных на смартфон используется BT модуль купленый на Ali. В первых версиях прибора я использовал OLED дисплей, но в дальнейшем от него отказался.
Потребление прибора при отсутствии подключения по BT, выключеном светодиоде и звуке составляет 650uA. Аккумулятора емкостью 190mAh хватает на 12 - 14 дней непрерывной работы.
На текущий момент в приложении реализовано: Сохранение спектра в форматах BqMON XML и SPE, визуальное сглаживание спектра, энергокомпенсация для спектра, вычитание и наложение фонового спектра. Сделаны маркеры изменений с отображением на спетре. При привышении порогов, спектр параллельно накапливается в отдельном массиве. Приложение написано только для Android, для устройств Apple писать не планирую.
Крайняя версия прибора выглядит так:
Проект открытый (GPL-3.0), исходники для МК, androidStudio и 3D модели коробочек можно взять здесь: https://github.com/Maniak003/DoZer
Там же в Wiki можно посмотреть подробное описание, инструкции для сборки и android приложения.
Небольшой кейс использования прибора. Предположим, что мы увидели превышение уровня радиации. Это видно по гистограмме поиска или в логе.
Нажимаем кнопку "History" и можем рассмотреть то, что было накоплено во время превышения уровней.
Все еще не очень понятно, попробуем включить сглаживание.
В режиме "History", все функции работы со спектром так же доступны.
Так прибор выглядит в собраном состоянии.
Комментарии (46)
Javian
13.10.2022 11:32+2Наверное было бы неплохо если примерная цена кристалла и фотоумножителя были бы статье чтобы долго не искать.
Maniak003 Автор
13.10.2022 17:14+3С ценой беда... Когда последний раз покупал sipm и кристаллы, стоимость прибора укладывалась в 8 - 10 тыр. Сейчас даже примерно не знаю во сколько обойдется. Думаю, на текущий момент, не меньше 20 тыр., если кристалл брать в Усолье.
holyx
13.10.2022 14:50+1А зачем это нужно в носимом варианте? Превышение радиационного фона регистрируются дозиметрами, ими же выявляется заражённая область и материал, он собирается и отправляется на исследование на спектрофотометр, чтобы понять какой изотоп фонит. Да и стационарные спектрофотометры находятся в свинцовом корпусе, чтобы отсечь внешний фон. Есть ли какой-то смысл в носимом варианте? Ползать с ним по полу или подносить к продуктам или стройматериалам, чтобы детектировать повышение фона? Так это адский должен быть фон, чтобы прибор сработал. Не совсем понимаю предназначение данного прибора. Для дозиметра-детектора повышенного рад фона слишком сложно, для нормального спектрофотометра недостаточно.
Maniak003 Автор
13.10.2022 17:10+3Гамма спектрометр позволяет выявить незначительные превышения уровня в любом канале энергий. Дозиметр "увидит" когда ПДК будет превышено в несколько раз, а спектрометр позволит обнаружить даже незначительное превышение над фоном. С кристаллом NaI:Tl такого объема, достаточно 5 минут, чтобы в грибах или чернике на рынке, обнаружить превышение уровня. Реально были прецеденты, но правда не на рынке, а уже дома...
Serpiph
13.10.2022 19:25+1На самом деле такие приборы в мире уже есть, только за оооочень большие деньги. Например, RadEye SPRD. Прибор и дозиметр, и спектрометр, и сразу определит изотоп. Очень удобно, если проверять продукты с большим ПДК типа черники, за те самые 5 минут скажет. Можно настроить чувствительность так, что будет сигналить на каждый чих. И автоматически при этом соберёт спектр, сообщит результаты и запомнит. Аналогичный этому прибор, но гораздо дешевле, многим придётся по вкусу.
APLe
14.10.2022 11:08+1Собственно, на последней картинке автора Radiacode 101, готовый прибор за похожие, насколько я понял, деньги. Правда, кристалл у него заметно меньше.
Maniak003 Автор
14.10.2022 11:32+1Да, популярный прибор. Давайте сравним:
Время набора одинаковое, источник один и тот же.
APLe
14.10.2022 11:37Ваш, безусловно, лучше – кристалл больше почти на порядок. Но отличие количественное, а не качественное.
Впрочем, если бы я не купил Radiocode год назад, то, думаю, попытался бы повторить ваш проект, а не покупал бы готовое изделие.
Maniak003 Автор
14.10.2022 11:47+1Проблема rc101 не только в кристалле... Изменив схемотехнику и sipm, можно получить разрешение около 8%. Что вполне успешно проделывает kbradar. Присмотритесь к гистограммам, у rc101 все пики слились. Так, что отличие именно качественное, если говорить в спектре.
У меня обратная ситуация: rc101 купил исключительно в познавательных целях, посмотреть, что там внутри, когда DoZer уже принял близкий к текущему вид.
APLe
14.10.2022 11:51Хм, интересно. Если его можно заметно улучшить просто схемотехнически, то почему производитель этого не сделал?
Я думал, пики сливаются именно из-за проблем дешёвого кристалла.
Maniak003 Автор
14.10.2022 12:10Сложно обсуждать чужую разработку, видимо были причины. Вот сравнение sipm в rc101 и DoZer:
APLe
14.10.2022 12:14+1Я так понимаю, DoZer справа? Тогда понятно, увеличение размера кристалла – это всегда хорошо, но дорого.
Maniak003 Автор
14.10.2022 12:32+1Это sipm. Да правый -- это fc60035, а левый fc30035. Количество ячеек: 18980 и 4774 соответственно. Микроячейка (лавинный диод) может дать только два уровня, амплитуда импульса определяется количеством открывшихся ячеек. Дальше понятно...
Стоимость fc30035 и fc60035, можно сказать -- почти одинаковая. По крайней мере в рознице я видел такую картину.
Serpiph
14.10.2022 14:35Насколько я знаю, Radiacode-101 не пишет автоматически спектры, как это сделал автор проекта. Ну и разница в спектрах очень существенная. Тем более, что в коте 256 каналов, а в авторской работе до 4096. При этом кристаллы отличаются по объёму лишь в 3 раза (3 против 1).
Maniak003 Автор
14.10.2022 15:06+1Как написал выше KbRadar, кристалл в RC101 обладает разрешением в 6% -- это крайне трудно достижимое разрешение для используемого мной кристалла. У rc101 проблема не в кристалле.
Am6er
13.10.2022 18:23+1А сколько каналов в спектре, 4096?
Maniak003 Автор
13.10.2022 19:00+1Настраивается: 1024, 2048, 4096. Исходно всегда снимается 4096, далее в зависимости от настройки суммируется по 4, 2 или одному каналу. Эта часть не до конца реализована, на экране при увеличении разрядности растягивается спектр и набор нужно начинать сначала. Не стал доделывать, поскольку даже с SrI2:Eu, 2048 -- достаточно.
Am6er
13.10.2022 19:43Понятно. А экспорт в формат BecqMoni у вас 1024 каналов, насколько я понял?
Maniak003 Автор
14.10.2022 10:50В приложение сейчас передается 1024 канала при любом разрешении.
Am6er
14.10.2022 11:55+1Ясно, вот тут поправьте на 1:
"<ChannelPitch>0.0221</ChannelPitch>\n" +
Оно в данном случае не влияет на общую картину, но у digital MCA шаг канала должен быть равен 1.
Maniak003 Автор
14.10.2022 13:03Спасибо, поправлю. Не разбирался со всеми тегами, просто выгрузил из BQMonitor и использовал как есть.
KbRadar
13.10.2022 20:04Какое в итоге получилось разрешение со стронциййодом? Без формирователя ему тяжеловато...
Maniak003 Автор
14.10.2022 10:52+1С тем кристаллом который ты мне прислал, на приведенной схемотехнике, лучше 3.6-3.8% не получилось. Пришлось немного переделать схему, в итоге 3.3%. Но потребление возросло с 500uA до 650uA.
KbRadar
14.10.2022 11:46А что было добавлено?
Maniak003 Автор
14.10.2022 11:59+2Увеличил частоту adc до 8MHz, Снизил нагрузочное сопротивление для sipm до 100 ом, снизил напряжение vref до 1.8v, написал медианный фильтр для компенсации переходных процессов в старших разрядах adc (всего 8 участков по 3 канала каждый) - это что бы можно было нормально использовать 4096 разрядов, подключил и задействовал встроенный датчик температуры кристалла для термокомпенсации, уменьшил выходное сопротивление высоковольтного источника, перешел с внутреннего RC на внешний кварц. Как оказалось последнее дало самый значительный вклад. В общем половил блох и в итоге выиграл 0.3 - 0.4%.
KbRadar
14.10.2022 13:47Как он себя чувствует на больших загрузках? По моему опыту без канонического усилителя-формирователя как правило не обойтись - чтобы входное сопротивление ноль (классический трнсимпедансный), и дальше время формирования делать настолько коротким чтобы только чуть-чуть начало падать разрешение. У меня для стронциййода получается 1 мкс, при этом нормально себя чувствует до примерно 30 тыс цпс, но конечно потребление выше.
Maniak003 Автор
14.10.2022 14:57+2Время измерения в этой поделке ~ 300nS. Помнишь я рисовал тебе тайминги ? Основная проблема этого решения -- это особенности adc с уравновешиванием заряда. Но как показала практика, значительные искажения наблюдаются только в восьми точках диапазона. Если точнее, то точек 16, первое измерение просаживается к нулю, следующий разряд увеличен на тоже значение. Картинка ниже. Сигнал с генератора в 200 кгц перевариваются без проблем. Можно и больше, но тогда нужно повышать частоту МК, а это приведет к повышенному потреблению.
P.S. Посмотрел сейчас исходник и вспомнил, что уменьшил частоту МК до 500khz. Так, что насчет 200khz -- это я сильно преувеличил. Забыл уже все, больше года назад -- это было... Последнее время боролся за потребление. Ну, впрочем если кому то нужно, могут запустить МК на 64mhz и сходить покопаться в каком нибудь реакторе, время работы в этом случае будет не актуально.
Krasnoarmeec
13.10.2022 18:42+1Было бы неплохо добавить статью в хаб "DIY или Сделай сам".
Отличная статья, там ей и место ????
Serpiph
13.10.2022 19:36+1Вывод спектра двумя видами сразу напомнил Nuclear Pioneer MCA. Интересная идея, нравится. Получился SpectrumFast.)
Am6er
13.10.2022 19:44Да, интересная реализация. Только вот как оно будет смотреться совместно с фоном? Получится 4 графика на экране же.
Serpiph
13.10.2022 19:50+1Наверно, стоит сделать выбор: или двойной вид, или один вид с фоном. Уж больно легко увидеть сразу все пики.
Maniak003 Автор
14.10.2022 10:37+1Вывожу три графика, получается вот так:
Спектр снят в самолете, а потом наложен фон.
Или вот так:
Сравнение фона с другим фоном.
Am6er
13.10.2022 19:56+1Ещё один вопрос - на какой baudrate тягаются данные по Bluetooth?
Maniak003 Автор
14.10.2022 10:38+2115200
Am6er
14.10.2022 11:57А никаких проблем с передачей спектра не замечали? Как часто получаете обновление? Не до конца разобрал ваш код, вы там что-то с MTU делаете.
Maniak003 Автор
14.10.2022 12:21+3Использую контрольную сумму для проверки целостности. Продолжительное время использовал без контроля, но были сбои с передачей. Данные передаются с небольшой задержкой, она нужна для того, что бы android успевал переварить принятый буфер. На медленных устройствах с этим были проблемы: гистограмма еще не отрисовалась, а новые данные уже грузятся. С mtu вроде все стандартно... У меня очень небольшой опыт разработки на java, по сути это первое относительно большое приложение.
Am6er
13.10.2022 20:13+1Ещё глаз зацепился за
/* Energy compensation function */
Можете рассказать, как вы её получали? И ещё каким образом она помогает в компенсации энергии спектра? Немного не понимаю эту цель в отвязке от дозиметра.
Maniak003 Автор
14.10.2022 10:46+1Получал из нескольких характеристик кристаллов nai:tl, доступных в публичном доступе. Проверить возможности нет, по этому для измерения дозы не использовал. В отношении спектра выглядит так:
Без компенсации:
С компенсацией:
Настройки полинома в форме setup, не используются, функция захардкожена в android приложении.
Serpiph
14.10.2022 09:15Ещё можно глянуть на польский проект RaySID для ознакомления, чего можно достичь в разработках. Не совсем ясно, выбрались ли они на полноценные продажи.
RU268
Отличная статья! Попробую повторить проект))