Русский
Русский
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

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

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

Подробнее..

Из песочницы История разработки одного дозиметра (Часть 1)

30.06.2020 20:09:15 | Автор: admin
Всем привет. Месяца два назад, от нечего делать, решил достать из своего пыльного ящика пару уже давно заброшенных проектов, до которых никак не доходили руки, и один из них был проект дозиметра-радиометра, который я начинал делать года так 3 назад, но из за недостатка знаний так и не довёл его до рабочего варианта. И вот теперь, спустя два долгих и мучительных месяца, хочу рассказать вам с чем я за это время успел столкнуться, и как делать не надо.

С чего всё начиналось


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

Возобновляя старый проект


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

Начало разработки


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

Хьюстон, у нас помехи


Как понятно из заголовка, появились ужасные помехи по питанию и не только. Когда напряжение приближалось к 400 вольтам, на ножке прерывания начиналась полная вакханалия. Прерывание постоянно срабатывало, и я просто не мог понять долгое время в чём была эта проблема. Изменение частоты шим не помогало, конденсаторы по питанию тоже. Я уже начал отчаиваться, но решение пришло внезапно, когда я поднёс палец к ножке прерывания. Прибор сразу стал функционировать нормально, до того момента, пока я не уберу палец. И тут я вспомнил завет давнего приятеля: Везде ставь керамику. После того как я поставил керамический конденсатор на 100нФ между прерыванием и землёй, проблема ушла. На то, чтобы разобраться с этой проблемой у меня ушла куча времени, но этот урок я запомню на долго. Собственно керамические конденсаторы в итоге я поставил везде, где только можно, и всё заработало как надо.

Разработка платы


Плату я разрабатывал в редакторе EasyEda, потому-что сразу решил заказывать платы с Китая. Скажу честно, редактор удобный и интуитивно понятный. Для меня, человека, который всегда делал платы в SprintLayout, эта программа была просто чем-то за гранью фантастики.
Теперь к сути. Я хотел сделать прибор как можно меньше, и выбрал размер 50х100 мм, что в каком то плане многовато и можно было уместить на меньшем размере. Первые варианты я решил делать на семи-сегментных индикаторах, что было огромной ошибкой, так, как они были крайне не информативные, и было достаточно сложно отобразить на них то, что хотел я. Следующим в моём списке был дисплей от nokia 5110. Этот вариант меня более чем удовлетворил.

Главные его плюсы это:

  1. Не требует подсветки днём.
  2. Низкое энергопотребление.
  3. Простота в использовании.

Но собственно были и проблемы. Дисплей требует 3.3 вольта питания, и желательно 3.3 вольта логику, а микроконтроллер работает от 5 вольт. Проблема решилась 10 кОм резисторами и линейным стабилизатором.

Ядром устройства является микроконтроллер atmega328p-mu. Я выбрал именно, потому-что судя по даташиту он более живучий.

Устройство является автономным и работает от аккумулятора li-ion, по-этому на плате была разведена микросхема tp4056 и маломощный повышающий dc-dc преобразователь на 5 вольт на микросхеме me2108a50.

В итоге плата приняла следующий вид:

image

Зачем оно нужно если можно купить?


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

Программно были вынесены следующие характеристики для редактирования:

  1. Напряжение счётчика
  2. Время счёта
  3. Ошибка

Настройки этих характеристик позволяют подключить любой датчик, напряжение работы которого не больше 800 вольт (Для того, чтобы повысить напряжение требуются доработки), время счёта не более 100 секунд и ошибка меньше 50%.

Себестоимость прибора выходит 500 руб. если заказывать детали с Китая и около 1000 рублей, если закупать в местных радиодеталях. Конечно я не учёл стоимость счётной трубки, т.к. её цена на барахолках обычно не превышает 500 руб.

Если сравнивать с приборами, которые близки по характеристикам, то 1000 рублей получается довольно аппетитная цена для любителей по паять.

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

image

Как видно по фото, плата ещё не собрана до конца, так как я не нашёл некоторые компоненты в моём городе и нужно ждать их с Китая.

Резюмируя


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

Надеюсь я вам помог, и мой проект заинтересовал вас. Прилагаю ссылки на репозиторий с прошивкой и на проект печатной платы:

github.com/AdamFull/Dosimeter-SQUICK
easyeda.com/AdamFull/geigercounter_nokia
Подробнее..

История разработки одного дозиметра (Часть 2)

26.07.2020 00:10:08 | Автор: admin
В продолжении статьи хочу поговорить о тех проблемах, на которые мне указывали люди в комментариях, рассказать о проблеме переноса прошивки с макета на итоговое устройство, т.к. с этим так же возникли проблемы, продемонстрировать работу устройства, и рассказать об изменениях в прошивке, которые были сделаны, и поговорить о планах на будущее. Я согласен со всеми комментаторами, и критика была вполне обоснована, но на данный момент у меня уже нет денег на переделку всего прибора, потому-что по сути, перелопатить нужно практически всё.


Те самые помехи


Во время прохождения практики на заводе, я решил взять с собой платку преобразователя, и посмотреть на осциллографе, что собственно происходит на выходе. На моё удивление, помехи были не на выходе преобразователя, а в принципе по питанию. Когда происходила смена уровня на шим с низкого на высокий, по линии 5 вольт наблюдалась сильная просадка напряжения, приблизительно на 1-2 вольта, а когда происходила смена состояния с высокого на низкий, происходил скачок вверх примерно на 1.5 2.5 вольта. И все эти пульсации были с частотой работы шим. При питании напрямую от аккумулятора особо ничего не менялось. На этом я решил больше никогда не использовать подобные типы преобразователей в своих устройствах (Конкретно если нужно повысить напряжение более чем в 2 раза). Так же были рекомендации заменить полевой транзистор на биполярный, но мои попытки найти что-то с высоким коэффициентом усиления (порядка 300), в smd корпусе и с напряжением порядка 450-500 вольт не увенчались успехом, это отсылая к использованию полевого транзистора, который открывается полноценно при 10 вольтах.

Перенос прошивки на живой прибор


Честно говоря, я не думал, что столкнусь с проблемами, потому что на макете всё хорошо работало (Да и когда делал плату под первую версию на семи-сегментном индикаторе, все было нормально), и не было тех проблем, которые возникли после прошивки.
По сути работал только экран и меню, а вот шим, ацп, таймеры и прерывания работать отказывались. Повторюсь, на ардуине всё работало хорошо. В итоге переставив инициализацию таймеров местами, мне удалось достигнуть нормальной работы прибора.
Об необходимости убрать фреймворк ардуино. Да, ардуино это плохо, что я уже не раз понял, и в моём коде на данный момент из этого фреймворка используются только методы millis и micros. Всё это я стараюсь победить, и некоторые успехи уже имеются. Так же ардуина всё ещё живёт в моём коде из за библиотеки дисплея, который я уже победил без использования ардуины, и в скором времени оно уйдёт совсем, т.к. какое-никакое количество нужной мне памяти это добавит. Так же, использование C++ вместо C в программировании микроконтроллеров это не лучшая практика, так что этот момент так же нужно будет переделать.

Что нового в прошивке?


Из основного, что было добавлено/исправлено:
  • Убраны задержки из звуковой индикации, что очень сильно повысило скорость работы и точность показаний.
  • Обновление экрана происходит по таймеру каждую секунду, или когда пользователь нажимает кнопки.
  • Добавлен экран зарядки аккумулятора. Включается когда присоединяется кабель.
  • В режиме поиск добавлена возможность включить отображение усреднённых значений за два установленных времени счёта.
  • Из настроек убрана возможность подстраивать напряжение вручную, теперь это происходит автоматически. Требуемое напряжение можно установить в файле конфигурации, при компиляции.
  • Добавлена возможность устанавливать порог сохранения дозы.
  • Добавлена тревога, уровень можно выставить в настройках ( от 30 до 255 мкр/ч).
  • Добавлена программная защита от разряда аккумулятора. Программа виснет на экране, говорящем о низком заряде батареи, проигрывается анимация моргания батареи.
    image
  • При удержании правой кнопки (не в меню) показывается информация о батарее.
    image


Что изменено на печатной плате?


  • Повышающий преобразователь и линейный преобразователь на 3.3 вольта были подключены на прямую от аккумулятора.
  • Изменены номиналы делителя напряжения на аккумуляторе с 10 кОм до 220 кОм.
  • Полевой транзистор был перенесён с эмиттерного усилителя на делитель напряжения, для снятия напряжения с аккумулятора.
  • Убран лишний подтягивающий резистор.
  • Некоторые dip компоненты заменены на smd.


Что вообще есть в прошивке?


Помимо того, что я перечислил ранее, в прошивке есть:
  • Три режима работы: Поиск, измерение(Как в дозиметре Припять) и частиц/с
  • Расчёт погрешности измерения в режиме поиск. Есть как продвинутый алгоритм, так и более простой. Выбирается в файле конфигурации.
  • Настройки для: сбм-20, сбм-19, бета-1-1
  • Построение графиков (Да, не ново, но смотрится неплохо).
  • Режим сна (Сниженное энергопотребление, прибор включается либо по удержанию кнопки, либо при тревоге). На данный момент не доделан.
  • Звуковая и световая индикация и её настройка
  • Русский и Английский язык (Устанавливается в конфигурации при прошивке)

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

Навигация и меню


Управление прибором происходит посредством двух кнопок. Левая reset и правая set.
Для того, чтобы войти в меню, следует удерживать обе, в течении 1 секунды.
Перемещение по меню происходит коротким нажатием кнопок. Выбор требуемого пункта удержание кнопки set. Отмена или назад удержание кнопки reset.
image
В меню реализована большая часть того, что я хотел, но если бы не ограничения по памяти и портам gpio, то была бы добавлена возможность построения карт (sd + gnss).

Режим поиск


Я думаю этот режим не требует подробного объяснения. По сути показывает текущее значение в микро рентгенах в час, и меняет диапазон в зависимости от текущего значения. Усреднение показаний сделано не по медиане, а просто сумма измерений на время, и включается нажатием правой кнопки. В верхнем правом углу показывается заряд батареи, чуть ниже статистическая погрешность и ещё ниже накопленная доза.
image
Так же в этом режиме можно отключить звук и тревогу. Чтобы отключить звук, нужно однократно нажать левую кнопку, а чтобы отключить тревогу, нужно либо во время тревоги нажать левую кнопку, либо удерживать левую кнопку.
image

Режим измерения активности


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

Режим секундного замера


Данный режим показывает число частиц в секунду, как бы логично это не звучало. В правой части экрана отображается число частиц с предыдущего замера. График строится так же как и в режиме поиск.
image

Корпус


На данный момент, в программе fusion 360 был разработан следующий корпус
image
Корпус делался для датчика Бета-1-1 и с расчётом на то, что будет печататься на 3д принтере. Модели в формате stl выложу позже.
Отверстия для крепления платы, сделаны для вплавления туда втулок под винтики М2.

Проблемы прибора


Главная проблема, как отмечали в комментариях к прошлой части это то, что проблема с ложными срабатываниями по сути не решена, а скажем залеплена скотчем и да, я с этим полностью соглашусь. Я пытался бороться с ней иными способами, но сильно хороших результатов это не дало. Делал питание напрямую от аккумулятора, это частично снизило размах пульсаций питания, ставил дополнительные электролитические конденсаторы по питанию (ставил даже на 10000мкф, тоже не помогло), ну керамика так же проблему не решила. Свой вывод об этом я озвучивал, больше не буду повторять подобных ошибок. Трансформатор выйдет немного дороже (рублей так на 250 за штуку, по сравнению с 45 за индуктивность.), но мороки с ним будет гораздо меньше.
Из за того, что стабильная генерация идёт при 4х кГц, слышен слабый, но раздражающий в тишине писк. В разведку с этим прибором не походишь.
Преобразователь напряжения это тоже главная неудача. Решил я делать на нём, только из за доступности индуктора, а вот об остальном сразу не подумал.
Но несмотря на недостатки, как по мне он вполне выполняет те задачи, которые я и хотел. Для бытового дозиметра думаю пойдёт, до профессиональных ему довольно.

Энергопотребление прибора


Аккумулятор на 600 мА/ч прибор разряжает за 12 14 часов активного использования (разряд до 3.6). Скорее всего ёмкость аккумулятора уже давно не 600 мА/ч, т.к. она полтора года стояла в электронной сигарете.

Что дальше?


В дальнейшем я буду доделывать прошивку текущего прибора, и начну делать тоже самое на stm32, но с учётом всех своих ошибок. Так же хочется добавить поддержку sd карты, gnss, заменить экран на 1202, и возможно сделать питание от батареек, если не найду хорошую микросхему понижающего dc-dc.

Ссылка на предыдущую часть:
habr.com/ru/post/509002
Подробнее..

Категории

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

  • Имя: Макс
    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