В продолжении статьи хочу поговорить о тех проблемах, на которые мне указывали люди в комментариях, рассказать о проблеме переноса прошивки с макета на итоговое устройство, т.к. с этим так же возникли проблемы, продемонстрировать работу устройства, и рассказать об изменениях в прошивке, которые были сделаны, и поговорить о планах на будущее. Я согласен со всеми комментаторами, и критика была вполне обоснована, но на данный момент у меня уже нет денег на переделку всего прибора, потому-что по сути, перелопатить нужно практически всё.
Во время прохождения практики на заводе, я решил взять с собой платку преобразователя, и посмотреть на осциллографе, что собственно происходит на выходе. На моё удивление, помехи были не на выходе преобразователя, а в принципе по питанию. Когда происходила смена уровня на шим с низкого на высокий, по линии 5 вольт наблюдалась сильная просадка напряжения, приблизительно на 1-2 вольта, а когда происходила смена состояния с высокого на низкий, происходил скачок вверх примерно на 1.5 – 2.5 вольта. И все эти пульсации были с частотой работы шим. При питании напрямую от аккумулятора особо ничего не менялось. На этом я решил больше никогда не использовать подобные типы преобразователей в своих устройствах (Конкретно если нужно повысить напряжение более чем в 2 раза). Так же были рекомендации заменить полевой транзистор на биполярный, но мои попытки найти что-то с высоким коэффициентом усиления (порядка 300), в smd корпусе и с напряжением порядка 450-500 вольт не увенчались успехом, это отсылая к использованию полевого транзистора, который открывается полноценно при 10 вольтах.
Честно говоря, я не думал, что столкнусь с проблемами, потому что на макете всё хорошо работало (Да и когда делал плату под первую версию на семи-сегментном индикаторе, все было нормально), и не было тех проблем, которые возникли после прошивки.
По сути работал только экран и меню, а вот шим, ацп, таймеры и прерывания работать отказывались. Повторюсь, на ардуине всё работало хорошо. В итоге переставив инициализацию таймеров местами, мне удалось достигнуть нормальной работы прибора.
Об необходимости убрать фреймворк ардуино. Да, ардуино это плохо, что я уже не раз понял, и в моём коде на данный момент из этого фреймворка используются только методы millis и micros. Всё это я стараюсь победить, и некоторые успехи уже имеются. Так же ардуина всё ещё живёт в моём коде из за библиотеки дисплея, который я уже победил без использования ардуины, и в скором времени оно уйдёт совсем, т.к. какое-никакое количество нужной мне памяти это добавит. Так же, использование C++ вместо C в программировании микроконтроллеров это не лучшая практика, так что этот момент так же нужно будет переделать.
Из основного, что было добавлено/исправлено:
Помимо того, что я перечислил ранее, в прошивке есть:
В файле конфигурации расписано, что можно отключить, и сколько памяти это освободит.
Управление прибором происходит посредством двух кнопок. Левая — reset и правая — set.
Для того, чтобы войти в меню, следует удерживать обе, в течении 1 секунды.
Перемещение по меню происходит коротким нажатием кнопок. Выбор требуемого пункта — удержание кнопки set. Отмена или назад — удержание кнопки reset.
![image](https://habrastorage.org/r/w780q1/webt/fm/n7/ea/fmn7eairiyhcbmykcgobohchdfs.jpeg)
В меню реализована большая часть того, что я хотел, но если бы не ограничения по памяти и портам gpio, то была бы добавлена возможность построения карт (sd + gnss).
Я думаю этот режим не требует подробного объяснения. По сути показывает текущее значение в микро рентгенах в час, и меняет диапазон в зависимости от текущего значения. Усреднение показаний сделано не по медиане, а просто сумма измерений на время, и включается нажатием правой кнопки. В верхнем правом углу показывается заряд батареи, чуть ниже статистическая погрешность и ещё ниже накопленная доза.
![image](https://habrastorage.org/r/w780q1/webt/_y/it/42/_yit42jpgwbkvostahsy4vnfsdq.jpeg)
Так же в этом режиме можно отключить звук и тревогу. Чтобы отключить звук, нужно однократно нажать левую кнопку, а чтобы отключить тревогу, нужно либо во время тревоги нажать левую кнопку, либо удерживать левую кнопку.
![image](https://habrastorage.org/r/w780q1/webt/wo/gk/fa/wogkfarka-bbe6kwk3iwshv6gkg.jpeg)
Настраиваемый режим, как по времени, так и по числу замеров. Максимальное время замера, которое можно установить это 120 минут, а число измерений 2. По сути автоматизирует процесс замера, имеющийся в дозиметре «Припять». Из первого измерения вычитается второе и от этого берётся модуль, в результате получается количество зафиксированных частиц за указанное время. Можно использовать по разному, как для измерения продуктов, так и для выделения отдельных частиц, измеряя сначала допустим сначала с альфа фильтром, а потом без него и т.д.
![image](https://habrastorage.org/r/w780q1/webt/si/tv/a5/sitva51xtvnngn32xlcahoyktms.jpeg)
Подобный режим реализовывали многие, кто собирал собственные дозиметры, ну и я не исключение.
Данный режим показывает число частиц в секунду, как бы логично это не звучало. В правой части экрана отображается число частиц с предыдущего замера. График строится так же как и в режиме поиск.
![image](https://habrastorage.org/r/w780q1/webt/qp/mb/dd/qpmbddkyo8pxmwudfih43szsije.jpeg)
На данный момент, в программе fusion 360 был разработан следующий корпус
![image](https://habrastorage.org/r/w780q1/webt/eo/lu/eq/eolueqmytab8d8eqq6nb7hzobec.jpeg)
Корпус делался для датчика Бета-1-1 и с расчётом на то, что будет печататься на 3д принтере. Модели в формате stl выложу позже.
Отверстия для крепления платы, сделаны для вплавления туда втулок под винтики М2.
Главная проблема, как отмечали в комментариях к прошлой части это то, что проблема с ложными срабатываниями по сути не решена, а скажем «залеплена скотчем» и да, я с этим полностью соглашусь. Я пытался бороться с ней иными способами, но сильно хороших результатов это не дало. Делал питание напрямую от аккумулятора, это частично снизило размах пульсаций питания, ставил дополнительные электролитические конденсаторы по питанию (ставил даже на 10000мкф, тоже не помогло), ну керамика так же проблему не решила. Свой вывод об этом я озвучивал, больше не буду повторять подобных ошибок. Трансформатор выйдет немного дороже (рублей так на 250 за штуку, по сравнению с 45 за индуктивность.), но мороки с ним будет гораздо меньше.
Из за того, что стабильная генерация идёт при 4х кГц, слышен слабый, но раздражающий в тишине писк. В разведку с этим прибором не походишь.
Преобразователь напряжения это тоже главная неудача. Решил я делать на нём, только из за доступности индуктора, а вот об остальном сразу не подумал.
Но несмотря на недостатки, как по мне он вполне выполняет те задачи, которые я и хотел. Для бытового дозиметра думаю пойдёт, до профессиональных ему довольно.
Аккумулятор на 600 мА*ч прибор разряжает за 12 — 14 часов активного использования (разряд до 3.6). Скорее всего ёмкость аккумулятора уже давно не 600 мА*ч, т.к. он полтора года стоял в электронной сигарете.
В дальнейшем я буду доделывать прошивку текущего прибора, и начну делать тоже самое на stm32, но с учётом всех своих ошибок. Так же хочется добавить поддержку sd карты, gnss, заменить экран на 1202, и возможно сделать питание от батареек, если не найду хорошую микросхему понижающего dc-dc.
Забыл сказать. Так, как прибор не может фиксировать более 1000 частиц (По факту немного меньше) в секунду, в программе будет добавлен счётчик, для проверки достижения предела измерения. На данный момент это реализуется так. Если значение фона находится на значении 0 мкр/ч более 3-х секунд, включается тревога и включается флаг превышения диапазона.
Ссылка на предыдущую часть
Те самые помехи
Во время прохождения практики на заводе, я решил взять с собой платку преобразователя, и посмотреть на осциллографе, что собственно происходит на выходе. На моё удивление, помехи были не на выходе преобразователя, а в принципе по питанию. Когда происходила смена уровня на шим с низкого на высокий, по линии 5 вольт наблюдалась сильная просадка напряжения, приблизительно на 1-2 вольта, а когда происходила смена состояния с высокого на низкий, происходил скачок вверх примерно на 1.5 – 2.5 вольта. И все эти пульсации были с частотой работы шим. При питании напрямую от аккумулятора особо ничего не менялось. На этом я решил больше никогда не использовать подобные типы преобразователей в своих устройствах (Конкретно если нужно повысить напряжение более чем в 2 раза). Так же были рекомендации заменить полевой транзистор на биполярный, но мои попытки найти что-то с высоким коэффициентом усиления (порядка 300), в smd корпусе и с напряжением порядка 450-500 вольт не увенчались успехом, это отсылая к использованию полевого транзистора, который открывается полноценно при 10 вольтах.
Перенос прошивки на живой прибор
Честно говоря, я не думал, что столкнусь с проблемами, потому что на макете всё хорошо работало (Да и когда делал плату под первую версию на семи-сегментном индикаторе, все было нормально), и не было тех проблем, которые возникли после прошивки.
По сути работал только экран и меню, а вот шим, ацп, таймеры и прерывания работать отказывались. Повторюсь, на ардуине всё работало хорошо. В итоге переставив инициализацию таймеров местами, мне удалось достигнуть нормальной работы прибора.
Об необходимости убрать фреймворк ардуино. Да, ардуино это плохо, что я уже не раз понял, и в моём коде на данный момент из этого фреймворка используются только методы millis и micros. Всё это я стараюсь победить, и некоторые успехи уже имеются. Так же ардуина всё ещё живёт в моём коде из за библиотеки дисплея, который я уже победил без использования ардуины, и в скором времени оно уйдёт совсем, т.к. какое-никакое количество нужной мне памяти это добавит. Так же, использование C++ вместо C в программировании микроконтроллеров это не лучшая практика, так что этот момент так же нужно будет переделать.
Что нового в прошивке?
Из основного, что было добавлено/исправлено:
- Убраны задержки из звуковой индикации, что очень сильно повысило скорость работы и точность показаний.
- Обновление экрана происходит по таймеру каждую секунду, или когда пользователь нажимает кнопки.
- Добавлен экран зарядки аккумулятора. Включается когда присоединяется кабель.
- В режиме поиск добавлена возможность включить отображение усреднённых значений за два установленных времени счёта.
- Из настроек убрана возможность подстраивать напряжение вручную, теперь это происходит автоматически. Требуемое напряжение можно установить в файле конфигурации, при компиляции.
- Добавлена возможность устанавливать порог сохранения дозы.
- Добавлена тревога, уровень можно выставить в настройках ( от 30 до 255 мкр/ч).
- Добавлена программная защита от разряда аккумулятора. Программа виснет на экране, говорящем о низком заряде батареи, проигрывается анимация моргания батареи.
- При удержании правой кнопки (не в меню) показывается информация о батарее.
Что изменено на печатной плате?
- Повышающий преобразователь и линейный преобразователь на 3.3 вольта были подключены на прямую от аккумулятора.
- Изменены номиналы делителя напряжения на аккумуляторе с 10 кОм до 220 кОм.
- Полевой транзистор был перенесён с эмиттерного усилителя на делитель напряжения, для снятия напряжения с аккумулятора.
- Убран лишний подтягивающий резистор.
- Некоторые dip компоненты заменены на smd.
Что вообще есть в прошивке?
Помимо того, что я перечислил ранее, в прошивке есть:
- Три режима работы: Поиск, измерение(Как в дозиметре Припять) и частиц/с
- Расчёт погрешности измерения в режиме поиск. Есть как продвинутый алгоритм, так и более простой. Выбирается в файле конфигурации.
- Настройки для: сбм-20, сбм-19, бета-1-1
- Построение графиков (Да, не ново, но смотрится неплохо).
- Режим сна (Сниженное энергопотребление, прибор включается либо по удержанию кнопки, либо при тревоге). На данный момент не доделан.
- Звуковая и световая индикация и её настройка
- Русский и Английский язык (Устанавливается в конфигурации при прошивке)
В файле конфигурации расписано, что можно отключить, и сколько памяти это освободит.
Навигация и меню
Управление прибором происходит посредством двух кнопок. Левая — reset и правая — set.
Для того, чтобы войти в меню, следует удерживать обе, в течении 1 секунды.
Перемещение по меню происходит коротким нажатием кнопок. Выбор требуемого пункта — удержание кнопки set. Отмена или назад — удержание кнопки reset.
![image](https://habrastorage.org/webt/fm/n7/ea/fmn7eairiyhcbmykcgobohchdfs.jpeg)
В меню реализована большая часть того, что я хотел, но если бы не ограничения по памяти и портам gpio, то была бы добавлена возможность построения карт (sd + gnss).
Режим поиск
Я думаю этот режим не требует подробного объяснения. По сути показывает текущее значение в микро рентгенах в час, и меняет диапазон в зависимости от текущего значения. Усреднение показаний сделано не по медиане, а просто сумма измерений на время, и включается нажатием правой кнопки. В верхнем правом углу показывается заряд батареи, чуть ниже статистическая погрешность и ещё ниже накопленная доза.
![image](https://habrastorage.org/webt/_y/it/42/_yit42jpgwbkvostahsy4vnfsdq.jpeg)
Так же в этом режиме можно отключить звук и тревогу. Чтобы отключить звук, нужно однократно нажать левую кнопку, а чтобы отключить тревогу, нужно либо во время тревоги нажать левую кнопку, либо удерживать левую кнопку.
![image](https://habrastorage.org/webt/wo/gk/fa/wogkfarka-bbe6kwk3iwshv6gkg.jpeg)
Режим измерения активности
Настраиваемый режим, как по времени, так и по числу замеров. Максимальное время замера, которое можно установить это 120 минут, а число измерений 2. По сути автоматизирует процесс замера, имеющийся в дозиметре «Припять». Из первого измерения вычитается второе и от этого берётся модуль, в результате получается количество зафиксированных частиц за указанное время. Можно использовать по разному, как для измерения продуктов, так и для выделения отдельных частиц, измеряя сначала допустим сначала с альфа фильтром, а потом без него и т.д.
![image](https://habrastorage.org/webt/si/tv/a5/sitva51xtvnngn32xlcahoyktms.jpeg)
Подобный режим реализовывали многие, кто собирал собственные дозиметры, ну и я не исключение.
Режим секундного замера
Данный режим показывает число частиц в секунду, как бы логично это не звучало. В правой части экрана отображается число частиц с предыдущего замера. График строится так же как и в режиме поиск.
![image](https://habrastorage.org/webt/qp/mb/dd/qpmbddkyo8pxmwudfih43szsije.jpeg)
Корпус
На данный момент, в программе fusion 360 был разработан следующий корпус
![image](https://habrastorage.org/webt/eo/lu/eq/eolueqmytab8d8eqq6nb7hzobec.jpeg)
Корпус делался для датчика Бета-1-1 и с расчётом на то, что будет печататься на 3д принтере. Модели в формате stl выложу позже.
Отверстия для крепления платы, сделаны для вплавления туда втулок под винтики М2.
Проблемы прибора
Главная проблема, как отмечали в комментариях к прошлой части это то, что проблема с ложными срабатываниями по сути не решена, а скажем «залеплена скотчем» и да, я с этим полностью соглашусь. Я пытался бороться с ней иными способами, но сильно хороших результатов это не дало. Делал питание напрямую от аккумулятора, это частично снизило размах пульсаций питания, ставил дополнительные электролитические конденсаторы по питанию (ставил даже на 10000мкф, тоже не помогло), ну керамика так же проблему не решила. Свой вывод об этом я озвучивал, больше не буду повторять подобных ошибок. Трансформатор выйдет немного дороже (рублей так на 250 за штуку, по сравнению с 45 за индуктивность.), но мороки с ним будет гораздо меньше.
Из за того, что стабильная генерация идёт при 4х кГц, слышен слабый, но раздражающий в тишине писк. В разведку с этим прибором не походишь.
Преобразователь напряжения это тоже главная неудача. Решил я делать на нём, только из за доступности индуктора, а вот об остальном сразу не подумал.
Но несмотря на недостатки, как по мне он вполне выполняет те задачи, которые я и хотел. Для бытового дозиметра думаю пойдёт, до профессиональных ему довольно.
Энергопотребление прибора
Аккумулятор на 600 мА*ч прибор разряжает за 12 — 14 часов активного использования (разряд до 3.6). Скорее всего ёмкость аккумулятора уже давно не 600 мА*ч, т.к. он полтора года стоял в электронной сигарете.
Что дальше?
В дальнейшем я буду доделывать прошивку текущего прибора, и начну делать тоже самое на stm32, но с учётом всех своих ошибок. Так же хочется добавить поддержку sd карты, gnss, заменить экран на 1202, и возможно сделать питание от батареек, если не найду хорошую микросхему понижающего dc-dc.
Дополнение
Забыл сказать. Так, как прибор не может фиксировать более 1000 частиц (По факту немного меньше) в секунду, в программе будет добавлен счётчик, для проверки достижения предела измерения. На данный момент это реализуется так. Если значение фона находится на значении 0 мкр/ч более 3-х секунд, включается тревога и включается флаг превышения диапазона.
Ссылка на предыдущую часть
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Есть ли смысл продолжать разрабатывать и улучшать прибор?
84% Да42
16% Нет8
Проголосовали 50 пользователей. Воздержались 15 пользователей.