Русский
Русский
English
Статистика
Реклама

Радиометр

Делаем сами сцинтилляционный спектрометр из радиометра

16.06.2020 00:11:35 | Автор: admin
Весной меня отправили на карантин и появилось немного времени, что бы спаять что-нибудь интересное. Выбор пал на вот это устройство.

Конечно же хотелось расширить возможности радиометра и узнать, какие же конкретно радиоактивные изотопы подстерегают меня в повседневной жизни в г. Киев, который находится уж очень близко к ЧЗО.



В статье расскажу, как собирал прибор и что поменял в схемотехнике и прошивке.

Первым делом нужно заказать платы. В материалах к исходной статье есть гербер файлы, поэтому все просто. Заказ сделал на PCBWay и JLCPCB, чтобы сравнить качество. Первый рекомендовать не могу: доставка заняла 3 месяца, крепежные отверстия на платах оказались меньше, чем нужно. Из 5 системных плат 2 оказались бракованными (о чем они мне сообщили в письме). C JLCPCB все вышло хорошо и придраться не к чему.

Компоненты заказывал на Mouser и наборы конденсаторов и резисторов на Али (лень стало подбирать все по емкости и решил просто заказать набор). В качестве SiPM использовал MicroFC 60035 это самая дорогая часть устройства. На момент заказа стоила 70 долларов на Mouser. С более мелким и дешевым 30035 решил не связываться, испугавшись, что припаять и собрать его будет сложнее.

Вторым главным компонентом устройства, кроме фотоприемника, является сцинтилляционный кристалл. И здесь большое поле для модификаций. Найти используемый автором CsI(Tl) маленьких размеров дешевле 90 долларов мне не удалось. Поэтому остановился на NaI(Tl) 10x40мм c ебея за 32 доллара с доставкой. Поиск такого кристалла это само по себе увлекательное занятие, здесь главное не спешить. Все поисковые запросы в гугле вели меня к Евгению с Украины, но прозрачных кристаллов для спектрометрии у него просто нет. Все, что он присылал имело неприятный желтый оттенок урины.

И вот, все детальки и платы пришли, можно начинать паять. Первым делом решил спаять аналоговую плату. Здесь все без приключений, главное не забыть припаять резистор, место под которое не разведено (внимательно читаем советы по сборке к оригинальной статье).

В системную плату пришлось внести следующие изменения: По даташиту LM2733Y, выходное напряжение не зависит от входного, соответственно подстраивать нечего. Берем из того же даташита формулу R1 = R2 X (VOUT/1.23 1) и из того, что нашлось, ставим R13 = 1.8K, R12 = 12K, R11 = 300K. На выходе стабильно 28.18В (пробовал подавать 2.5В, 5В на выходе все стабильно). После подключения дисплея устройство стало выдавать намного большее число импульсов, чем есть на самом деле. Исправить удалось изменением цепи питания дисплея: вход переключателя DA6 подключаем ко входу DA3. На выходе DA6 ставим преобразователь на 5В (у меня под рукой оказался pololu cj7032) и уже от него питаем дисплей. При таком подключении все помехи сразу ушли.

В качестве дисплея взял nx4024t032: он меньше, дешевле, меньше потребляет и главное, был доступен в локальном магазине. Прошивку я все равно планировал менять, об этом ниже.

После пайки отмывал схемы изопропиловым спиртом в УЗ ванне. После спирта стоит отмыть дистиллированной водой в той же ванне и просушить в духовке при температуре около 70-80 градусов.

Теперь пришла пора сделать самое интересное: подключить датчик и посмотреть, что же получится. MicroFC 60035 почти идеально припаивается к куску макетной платы 3x3 отверстия: лудим угловые отверстия и припаиваем датчик феном. С обратной стороны макетки припаиваем провода. Вот так это выглядит.



Вот так выглядит кучка плат и деталек без корпуса.



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

Корпус сделал в Fusion 360 и напечатал на 3D принтере. Вот ссылка на проект.

Вот так все выглядит уже в сборе:



Настало время для самого интересного изменений в прошивке. Мы же хотим сделать именно сцинтилляционный детектор, а не просто радиометр. Для этого нам понадобится использовать DMA с ADC (ADC в этом процессоре один, но есть переключатель входов). А входов у нас два: SP и вольтаж батареи. DMA нужно для ускорения всего процесса. Так же хочу обратить внимание на количество циклов измерений ADC_SampleTime, при 48 и более у меня ничего не получилось. 4 цикла показали наиболее стабильный результат.

Меняем код инициализации ADC следующим образом:

void initADC(void) {/* PWR_CTRL and CHG_STAT clock enable */RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);/* UBAT input pin configuration */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_15;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);/*------------------------ DMA1 configuration ------------------------------*//* Enable DMA1 clock */RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);/* DMA1 channel1 configuration */DMA_DeInit(DMA1_Channel1);DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_ADDRESS;DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADC_ConvertedValue[0];DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;DMA_InitStructure.DMA_BufferSize = 2;DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;DMA_InitStructure.DMA_Priority = DMA_Priority_High;DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;DMA_Init(DMA1_Channel1, &DMA_InitStructure);/* Enable DMA1 channel1 */DMA_Cmd(DMA1_Channel1, ENABLE);/*----------------- ADC1 configuration with DMA enabled --------------------*//* Enable The HSI (16Mhz) */RCC_HSICmd(ENABLE);/* Check that HSI oscillator is ready */while(!RCC_GetFlagStatus(RCC_FLAG_HSIRDY));/* Enable ADC1 clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);/* ADC1 Configuration -----------------------------------------------------*/ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;ADC_InitStructure.ADC_ScanConvMode = ENABLE;ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;ADC_InitStructure.ADC_ExternalTrigConv = 0;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfConversion = 2;ADC_Init(ADC1, &ADC_InitStructure);/* Enable temperature sensor and Vref */ADC_TempSensorVrefintCmd(ENABLE);//ADC_TempSensorVrefintCmd(DISABLE);/* ADC1 regular channel configuration */ADC_RegularChannelConfig(ADC1, SP_ADC_CHANNEL, 1, ADC_SampleTime_4Cycles);ADC_RegularChannelConfig(ADC1, UBAT_ADC_CHANNEL, 2, ADC_SampleTime_4Cycles);/* Enable the request after last transfer for DMA Circular mode */ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE); /* Causes problem.. *//* Define delay between ADC1 conversions */ADC_DelaySelectionConfig(ADC1, ADC_DelayLength_None);/* Enable ADC1 Power Down during Delay */ADC_PowerDownCmd(ADC1, ADC_PowerDown_Idle_Delay, ENABLE);/* Enable ADC1 DMA */ADC_DMACmd(ADC1, ENABLE);/* Enable ADC1 */ADC_Cmd(ADC1, ENABLE);while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADONS));ADC_SoftwareStartConv(ADC1);}

Теперь нам нужно попросить контроллер сделать измерения сигнала каждый раз, когда мы видим импульс на входе TRIG:

void EXTI0_IRQHandler(void) // Обработчик импульсов сцинтиллятора{uint16_t i;    /* Проверяем, откуда у нас прерывание */    if (EXTI_GetITStatus(EXTI_Line0) != RESET) {        if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) != 1) {            // Убеждаемся, что прерывание прилетело по нужной линии, а не с клавиатуры, например.        if(Mute == false) {        GPIOB->ODR &= ~GPIO_ODR_ODR_3;        }        if(DMA_GetFlagStatus(DMA1_FLAG_TC1)) {        ADC_SoftwareStartConv(ADC1);        }        counter++;            Delay(20); // ждем, пока не кончится дребезжащий хвост импульса            if(Mute == false) {            GPIOB->ODR |= GPIO_ODR_ODR_3;            }            if((DMA_GetFlagStatus(DMA1_FLAG_TC1))) {i = ADC_ConvertedValue[0];adcBatValue += ADC_ConvertedValue[1];if (i >= SPECTRE_START_BIT && i < (SPECTRE_RES + SPECTRE_START_BIT)) {i = i-SPECTRE_START_BIT;spectre[i] ++;if(spectre[i] > spectreMax) {spectreMax = spectre[i];}if(spectreMax > SPECTRE_MAX_VAL) {spectreMax = 0;resetSpectre();}}}        }        /* Не забываем сбросить флаг прерывания */        EXTI_ClearITPendingBit(EXTI_Line0);    }}

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

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

Вот такие так выглядят спектрограммы фона и америций-241 из датчика дыма.



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

Модифицированные прошивка дисплея и микроконтроллера доступны на Google Drive.

При создании устройства мне пригодились следующие материалы:

habr.com/ru/post/456878
habr.com/ru/post/487510 и habr.com/ru/post/487518
misrv.com/ultra-micron-module-as
www.youtube.com/watch?v=I8-h8mLnexw
Подробнее..

Обзор RadiaCode-101 Android-приложение и программа для Windows

05.06.2021 10:15:16 | Автор: admin

Предисловие

Это вторая часть обзора дозиметра-радиометра-спектрометра RadiaCode-101, новинки 2021 года в мире дозиметров от компании Скан-Электроникс. В первой части мы рассмотрели прибор, его характеристики, провели некоторые тесты и испытали функцию гамма-спектрометра. Но, прибор позволяет подключатся к смартфонам или ПК, поэтому сегодня мы рассмотрим программное обеспечение для них. Обзор описывает состояние приложения на начало июня 2021, v. 1.00.15, в дальнейшем, возможно, будут дополнения.

Android-приложение

Приложение для управления RadiaCode-101 бесплатное, доступно в Google Play и называется RadiaCode. После скачивания и установки мы попадаем в основное тело приложения, где имеются три вкладки: "Главная", "Журнал", "Спектр".

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

Вкладка "Главное"
"Главная""Главная"

Вкладка "Журнал" представляет собой таблицу, в которую заносятся события и параметра прибора, автоматические измерения, измерения, выполненные вручную и измерения по расписанию. Сверху таблицы отображаются условные обозначения типов записей и значок "Настроек журнала". В "Настройках журнала" можно выбрать, какие события будут отображаться и как сортироваться. При длительном нажатии на запись в журнале ее можно выделить, а затем, при нажатии трех точек в верхнем правом углу, комментировать или удалить, а также очистить весь журнал.

Вкладка "Журнал"
"Журнал""Журнал""Настройки журнала", (Фото 1)"Настройки журнала", (Фото 1)"Настройки журнала", (Фото 2)"Настройки журнала", (Фото 2)

Вкладка "Спектр" представляет собой поле, в котором происходит построение спектрограммы. Поле имеет две отградуированные оси, и элементы масштабирования и управления слева. Помимо этого сверху отображается время набора и частота обновления спектрограммы. Спектр можно приближать, изменять масштаб с логарифмического на линейный, изменять отображение фона. При нажатии трех точек можно перезапустить накопление спектра, поделится им, сохранить в "Библиотеку спектров" или войти в нее. "Библиотека спектров" представляет из себя список всех сохраненных спектров с небольшой иконкой, которые можно переименовывать, устанавливать как фон, делиться ими или удалять. Накопленные спектры можно экспортировать в формате .csv при нажатии кнопки "Поделиться спектром", а затем импортировать в Bequerel Monitor или InterSpec. Возможно три варианта отображения фона на спектре: без наложения фона, наложение поверх, отображение разницы фона и спектра. Накапливаемый спектр подсвечивается оранжевым, фон зеленым, а разница фиолетовым. В "Настройках спектра" можно выбирать единицы осей, масштаб, отображение фона и последнего канала, варианты отрисовки спектра и фона. Также через "Настройки спектра" можно ввести калибровочные коэффициенты (не трогайте эти настройки, если вы не знаете, как калибровать прибор, о калибровке будет отдельная статья).

Вкладка "Спектр"
"Спектр", наложение фона на спектр"Спектр", наложение фона на спектр"Спектр", отображение разницы между фоном и спектром"Спектр", отображение разницы между фоном и спектром"Спектр", отображение фона отключено"Спектр", отображение фона отключено"Настройки спектра", (Фото 1)"Настройки спектра", (Фото 1)"Настройки спектра", (Фото 2)"Настройки спектра", (Фото 2)"Настройки спектра", (Фото 3)"Настройки спектра", (Фото 3)"Калибровочные коэффициенты""Калибровочные коэффициенты""Библиотека спектров""Библиотека спектров"

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

Панель быстрого управления
"Панель быстрого доступа""Панель быстрого доступа"

Помимо этого в приложении есть выпадающее меню, вызываемое нажатием на три полоски слева в верхнем углу. В данном меня содержатся такие пункты как "Приборы", "Настройки приложения", "Настройки прибора", "Карта", "Справка", "Обратная связь" и "О RadiaCode".

В пункте "Приборы" можно выбрать интерфейс соединения, а затем и прибор, чтобы подключится к нему, также есть режим "Demo", для демонстрации работы приложения.

Пункт "Приборы"
"Приборы""Приборы"

Пункт "Настройки приложения" позволяет изменять язык приложения, настраивать сигналы телефона, изменять настройки графиков в пункте "Главное", изменять настройки местоположения и расстояние между маркерами на карте. Имеются так же "Экспертные настройки", которые лучше не трогать, это может привести к неправильной работе приложения.

Пункт "Настройки приложения"
"Настройки приложения", (Фото 1)"Настройки приложения", (Фото 1)"Настройки приложения", (Фото 2)"Настройки приложения", (Фото 2)"Экспертные настройки""Экспертные настройки"

В пункте "Настройки прибора" можно изменять абсолютно все параметры RadiaCode-101 дистанционно, очень удобная функция, если прибор находится в сумке.

Пункт "Настройки прибора"
"Настройки прибора", (Фото 1)"Настройки прибора", (Фото 1)"Настройки прибора", (Фото 2)"Настройки прибора", (Фото 2)"Настройки прибора", (Фото 3)"Настройки прибора", (Фото 3)

А вот на пункте "Карта" остановимся поподробнее. Он представляет собой окно с Google-картой в центре, цветовой шкалой мощности дозы справа и элементами управления сверху. Для чего это нужно? Дело в том, что RadiaCode-101 вкупе с приложением смартфона умеет строить трек своего перемещения, отмечая новую позицию маркером на карте, цвет которого зависит от мощности дозы в этом месте. Таким образом, при помощи прибора и смартфона можно составлять карты радиационного фона на местности. Вернемся к элементам управления вверху окна. Данные элементы позволяют просмотреть список записанных треков, автоцентрировать карту, автоматически раскрасить маркеры по минимальным и максимальным значениям мощности дозы, быстро запустить или приостановить запись текущего трека, свернуть цветовую шкалу, а значок настроек позволяет войти в "Настройки карты", где можно изменять настройки, связанные с отрисовкой карты и маркеров, определением местоположения. Раздел "Треки" позволяет просмотреть записанные треки, переименовать, удалить или поделиться ими, а также начать запись нового трека. Для этого необходимо включить определение геолокации (GPS) на телефоне и нажать на зеленый значок справа в верхнем углу. После ввода названия и подтверждения на карте начнут появляться метки, расстояние между ними можно изменить в пункте "Настройки приложения". После остановки записи трек можно будет посмотреть на карте в приложении. Пример трека находится в спойлере ниже.

Пункт "Карта"
"Карта""Карта""Настройки карты", (Фото 1)"Настройки карты", (Фото 1)"Настройки карты", (Фото 2)"Настройки карты", (Фото 2)"Треки""Треки"Пример записанного трекаПример записанного трека

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

Пункт "Справка"
"Справка""Справка"

Пункт "Обратная связь" позволяет отправить отчет или сообщение разработчикам прибора, а в пункте "О RadiaCode" имеется история изменений приложения, данные прибора, подключенного в настоящий момент и версия android-приложения.

Пункты "Обратная связь" и "О RadiaCode"
"Сообщение разработчикам""Сообщение разработчикам""О RadiaCode""О RadiaCode"

Программа для Windows

Программа RadiaCode для Windows доступна для скачивания на сайте Скан-Электроникс в разделе "Загрузки". Программа почти полностью дублирует приложение для смартфона, за исключением немного другого оформления. Здесь так же имеются вкладки "Графики", "Журнал" и "Спектр", "Настройки прибора" и функции как в мобильной версии, за исключением "Карт" и наложения фона на спектр. Для стационарного использования такого набора функций более чем достаточно.

RadiaCode для Windows
"Графики""Графики""Журнал""Журнал""Спектр""Спектр"

Итоги

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

P.S. В дальнейшем после глобальных обновлений ПО и функций RadiaCode-101 будут дополнения, а также я намереваюсь написать статью про калибровку этого прибора.

Всех тех, кто купил прибор, приглашаю в Telegram-чат прибора, здесь можно узнать новости, задать вопросы, сообщить разработчикам о багах:https://t.me/radiacode101

Купить прибор можно на сайте компании Скан-Электроникс.

Буду рад, если обзор оказался полезным или интересным!

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru