РадиоКот :: Радиометрический дозиметр GreenRay
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Измерительная техника >

Теги статьи: ДозиметрДобавить тег

Радиометрический дозиметр GreenRay

Автор: Aheir
Опубликовано 15.03.2011

Сегодня будем делать бытовой портативный дозиметр. Тема, в общем–то, не сильно оригинальная, но и не избитая, прибор не первой необходимости, но может быть полезен, ну а поскольку поле для творчества имеется, то почему бы и нет? Понимаю, что таких разработок в сети в последнее время появилось достаточно много, но тем не менее, давно хотелось сделать такой прибор самому, так что, собственно говоря, вот) Почему так называется? Ну... Надо было что-то написать над экраном... А он весь такой зеленый на вид. Смотрите сами:

Общий вид

Основные отличительные особенности получившегося прибора:


Теоретические пределы измерения: 1мкР/ч – 999 мР/ч
Время измерения – 23с
Графическое представление плотности излучения во времени
Встроенный GPS–модуль, термометр, часы реального времени и барометр (не установлен)
Сохранение всех данных (логирование) в виде файлов на microSD–карту в FAT32
Подключение к ПК по USB
Встроенный светодиодный фонарик
Питание от встроенной Li–Ion батареи, зарядка от USB
Простейшая «читалка» книг в Unicode txt (экспериментальный функционал)
Средний ток потребления (при отключенных вспомогательных устройствах) не более 2 мА


Ну, обо все по порядку...
Пожалуй, одним из наиболее простых и дешевых способов регистрации ионизирующих излучений на сегодняшний день остается счетчик Гейгера. Здесь, в качестве теоретического отступления, позволю себе привести выдержку из статьи Википедии на эту тему.
Счётчик Гейгера или Гейгера–Мюллера – газоразрядный прибор для автоматического подсчёта числа попавших в него ионизирующих частиц. Представляет собой газонаполненный конденсатор, который пробивается при пролёте ионизирующей частицы через объём газа.
Чувствительность счётчика определяется составом газа, его объёмом, а также материалом и толщиной его стенок.
Цилиндрический счётчик Гейгера–Мюллера состоит из металлической трубки или металлизированной изнутри стеклянной трубки, и тонкой металлической нити, натянутой по оси цилиндра. Нить служит анодом, трубка – катодом. Трубка заполняется разреженным газом, в большинстве случаев используют благородные газы – аргон и неон.
Работа счетчика основана на ударной ионизации: гамма–кванты, испускаемые радиоактивным изотопом, попадая на стенки счетчика, выбивают из него электроны. Электроны, двигаясь в газе и сталкиваясь с атомами газа, выбивают из атомов электроны и создают положительные ионы и свободные электроны. Электрическое поле между катодом и анодом ускоряет электроны до энергий, при которых начинается ударная ионизация. Возникает лавина ионов, и ток через счетчик резко возрастает. При этом на сопротивлении, последовательно включенном в цепь счетчика, образуется импульс напряжения, который подается в регистрирующее устройство. Чтобы счётчик смог регистрировать следующую попавшую в него частицу, лавинный разряд нужно погасить. Это происходит автоматически. В момент появления импульса тока на сопротивлении в цепи возникает большое падение напряжения, поэтому напряжение между анодом и катодом резко уменьшается – настолько, что разряд прекращается, и счетчик снова готов к работе.
Думаю, не ошибусь, если скажу, что наиболее распространенными и доступными счетчиками были и остаются СБМ–20 (вверху) и СТС–5 (внизу).

Счетчики


В принципе, можно говорить, что это один и тот же счетчик: СБМ пришел на смену СТС, да и конструктивно они почти один в один (СТС чуть длиннее). В общем, вполне взаимозаменяемы. Я использовал СБМ–20.
Пожалуй, будем двигаться в сторону конкретной схемотехники и конструкции, а на возникающие вопросы постараюсь ответить по ходу пьесы.
Мне показалось логичным разделить прибор на две части как конструктивно, так и функционально (да и разрабатывались они по отдельности, по большому–то счету). Будем называть эти части нижней платой (Bottom Board) и верхней платой (Top Board). Нижняя плата – собственно измерительная часть и источники питания, плюс немного вспомогательных элементов, которые там разместились просто в силу наличия места; верхняя плата – все сервисные функции: микроконтроллер, кнопки, экран, интерфейс к ПК и т.д. Вот в таком порядке и будем их рассматривать.

Bottom Board

Схема представлена на рисунке:

Для восприятия тяжеловато, поэтому будем, как говорится, интегрировать по частям...
Питание всего устройства осуществляется от литиевого аккумулятора от мобильного телефона. В принципе, применимы многие аккумуляторы, мне по габаритам наиболее удачно подошел BL–4C от Nokia (точнее, его аналог, заявленная емкость – 890 мА*ч). Функции зарядки аккумулятора, а также общее управление питанием системы возложены на микросхему BQ24030 от Texas Instruments. Схема узла – на рисунке.

Зарядка и управление питанием

При наличии напряжения на входе USB, превышающего напряжение полностью заряженной батареи, начинается процесс заряда батареи, подключенной к разъемы Х2. Процесс заряда (его стадии) можно контролировать по состоянию выводов Stat1 и Stat2. Управлением выводом Iset можно задавать зарядные ток: 100 мА (если на выводе лог. 0) или 500 мА (если там лог. 1). К разъему Х3 подключается терморезистор, служащий для контроля температуры батареи и отключению в случае аварии. Я для этой цели использовал терморезистор на 10 кОм от батареи какого–то ноутбука (терморезистор представляет собой гибкую полимерную полоску с запресованным чувствительным элементом минимальной толщины, поэтому его удобно располагать непосредственно под батареей). Микросхема отключает заряд аккумулятора при достижении на нем напряжения 4,2 В, а также в случае перегрева батареи или по таймеру. За конфигурацию режимов работы микросхемы отвечают резисторы R6–R8, подробности – в даташите, там ничего сложного. В процессе заряда на выходе микросхемы (группа выводов OUT) присутствует напряжение со входа USB, которое используется для питания системы, в остальных случаях на этих выводах имеется напряжение аккумуляторной батареи, таким образом микросхема осуществляет коммутацию источника питания системы в зависимости от имеющихся на данный момент источников (на самом деле, первичных источников может быть два, можно задавать их приоритет и много чего еще – читайте доки на микросхему). В общем, весьма полезная и несложная в использовании микросхема. Местный аккумулятор при начальном токе заряда 500мА она заряжает где-то за два часа...
В качестве основного источника питания системы при работе от аккумулятора выступает простой импульсный преобразователь со стабилизированным выходным напряжением 3 В:

Источник питания

Я не был уверен, какую микросхему буду использовать в окончательном варианте, поэтому на схеме отражены все варианты. В конце концов, в устройстве прижилась LTC3531 от Linear. Схема, сами видите, проще некуда. Микросхема умеет работать как в понижающем, так и в повышающем режимах, таким образом стабильное напряжение на ее выходе сохраняется в весьма широком диапазоне входных. В принципе, падение входного напряжения ниже 3 В не планируется (потому как в данном случае входное напряжение – это напряжение батареи, а для лития такой разряд не есть хорошо), но все же может оказаться полезным. Кроме того, микросхема отличается крайне низким собственным потреблением, что немаловажно в батарейных применениях. Включение источника осуществляется подачей лог. 1 на вход SHDN через диод D4 либо от микроконтроллера по цепи ON/OFF_CNTRL, либо (первично) от кнопки по цепи BUTTON_MAIN_2.
За получение высокого напряжения для питания счетчиков отвечает следующий узел:

Повышалка

В общем, тоже ничего сложного: полевой транзистор, коммутирующий первичную обмотку высоковольтного трансформатора, а на стороне вторичной обмотки – выпрямитель и накопительные емкости. Элементы D3, R12 и С8 не устанавливались, выпрямительный диод – быстрый на соответствующее напряжение. В качестве трансформатора применен таковой от инвертора ламп подсветки ЖК–монитора. Трансформатор пришлось разобрать и ввести дополнительный зазор в сердечник, в остальном переделок не потребовалось. Огромный плюс такого решения – не нужно ничего мотать вручную. КПД преобразователя невысок (около 40%), но т.к. он работает не постоянно, а в импульсном режиме и весьма непродолжительное время, такое решение вполне себя оправдывает. Преобразователь позволяет получать напряжение до 450 В на нагрузке 5 МОм. Управление преобразователем осуществляется по цепи HV_PUMP, об этом чуть ниже.
Теперь можно перейти и к измерительной схеме.

Измерительная схема

Пара счетчиков подключается параллельно к разъемам Х4–Х7. Такое решение позволяет уменьшить время накопления для выдачи результата первого измерения.
В результате пробоя счетчика на резисторах R26–R27 появляется импульс напряжения. Величина резисторов подобрана так, чтобы амплитуда этого импульса не превышала 3В. Форма импульса представлена на рисунках:

Счетные импульсы

Импульсы поступают одновременно на вход одного из триггеров CD4013 и на инвертирующий вход компаратора MAX987. Триггер включен в счетном режиме, поэтому с каждым новым импульсом происходит инвертирование логического сигнала на выходе триггера в цепи CNT_OUTPUT.
Очевидно, что амплитуда импульса зависит от напряжения на счетчиках в момент пробоя. Счетчики имеют на своей характеристике так называемое плато: область рабочих напряжений, в которой счетчик сохраняет линейность зависимости количества счетных импульсов от радиационного фона. Таким образом, мы можем работать на всем протяжении этого плато, которое для СБМ–20 составляет 100В (рабочее напряжение счетчика по паспорту – 400В). Теперь вернемся к компаратору. К его неинвертирующему входу подключен выход источника опорного напряжения (допустима установка ИОН из серии REF33 от Texas Instruments или ISL21080 от Intersil) величиной 2,5 В (в конечном итоге применен ISL21080CIH325 от Intersil), что соответствует нижней границе плато счетчика (с учетом коэффициента делителя напряжения, образованного счетчиками, нагрузочными резисторами 10 МОм и измерительным резистором R26–R27). Зачем это надо – сейчас узнаем.
Микросхема U10 является микроконтроллером ATTiny13, обслуживающим измерительную часть схемы. Теперь рассмотрим работу узла вцелом. Цепь CNT_OUTPUT подключена ко входу прерывания МК, таким образом каждый новый импульс пробуждает МК из спячки, МК генерирует короткий импульс 100 мкс на ножке PortB.2 в цепи IMP_OUT (для передачи во внешний мир) и далее анализирует состояние цепи LOW_HV_FLAG. Если амплитуда импульса превышала 2,5 В, на выходе компаратора был сформирован импульс отрицательной полярности, который привел к инвертированию логического сигнала на выходе триггера в цепи LOW_HV_FLAG, а точнее, к переключению этого сигнала в состояние лог.1 (считаем, что предварительно триггер был сброшен). Таким образом, если МК после детектированя импульса не обнаруживает на этой линии лог.1, это свидетельствует о падении напряжении на счетчиках до нижней отметки и необходимости запуска повышающего преобразователя. В этом случае МК выставляет соответствующий внутренний программный флаг. Если напряжение в пределах нормы, МК сбрасывает триггер в исходное состояние (вот почему мы исходно считаем, что триггер сброшен) по цепи TRG_RESET и засыпает до прихода следующего импульса.
Если необходим запуск повышающего преобразователя, МК формирует в цепи HV_PUMP последовательность из 3500 импульсов накачки, после чего засыпает:

Накачка

Временные параметры импульсов накачки и их количество определялись эмпирически по максимально эффективной генерации высокого напряжения на фоне минимума энергопотребления. Естественно, при включении МК осуществляет первичную накачку преобразователя, иначе последующая работа невозможна. Эксперименты показали, что запасов энергии в конденсаторах преобразователя в условиях естественного радиационного фона хватает примерно на 40–50 секунд работы двух счетчиков, т.е. «повышалка» включается, грубо говоря, чуть чаще, чем раз в минуту на время около 130 мс – вполне приличная скважность с точки зрения энергопотребления.
Исходники и прошивка всего этого безобразия доступны в конце статьи, но программа там простейшая, сами видите. Писалось все в CVAVR’e, fuse–биты сконфигурированы следующим образом:

Фьюзы

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

RTC

Классика жанра, что скажешь). Я использовал M41T80 от STM, при минимальных изменениях возможно использование DS1307.
GPS–модуль EB–500:

GPS

Включение согласно даташиту, коммутация питания на одном полевике. На данный момент на плату не установлен.
«Пищалка» для озвучивания событий:

Buzzer

Собственно звуковой излучатель цепляется к контактам Х45 и Х48, в остальном – обычный ключ.
В итоге, вся измерительная часть при работе потребляет от аккумулятора ток около 100 мкА (без учета накачки «повышалки»), учет потребления повышающего преобразователя дает расчетное значение среднего тока на уровне 150 мкА. Мне кажется – вполне достойно.
По большому счету, нижняя плата является отдельным, функционально законченным модулем и может использоваться в составе других устройств.
Подключение нижней платы к верхней осуществляется с помощью PLS–разъемов, список цепей и их соответствие друг другу на разных платах – на рисунке:

Соединение

Секция «Net Transformer» служит для технологических целей, удобства разводки и настройки (это разрывы цепей с помощью перемычек на печатной плате)

Top Board
Схема на рисунке, опять же:

Здесь с читабельностью все еще хуже, так что частей будет больше)
"Сердце" верхней платы – микроконтроллер ATMega128.

Микроконтроллер

В основном – включен стандартным образом. Основная частота работы – 11,0592 МГц для совместимости со стандартным рядом скоростей RS–232. Предусмотрен часовой кварц на 32,768 КГц. Подключена MicroSD карта для хранения логов и иной информации. Назначение цепей либо ясно из их названий, либо станет понятно ниже. Оговорюсь, что включение МК на такой частоте при напряжении питания менее 3В несколько не согласуется с даташитом, здесь более уместно использовать Atmega128L. За неимением оного я ставил Atmega128, все работает, но – это частный случай и по большому счета так делать я не рекомендую.
Общение с большим внешним миром осуществляется через USB с помощью микросхемы FT232R:

USB

Используется 5–ти контактный miniUSB–разъем. Подобным преобразователям интерфейсов посвящена эта статья.
В качестве экрана используется дисплей от Nokia 3310:

Экран

Для подсветки экрана используется 4 светодиода, которыми по цепи LCD_BACKLIGHT через транзисторный ключ ШИМом управляет микроконтроллер. Подробнее про этот экран можно узнать в этой статье.
При наличии питания от USB–разъема, система работает от источника на линейном стабилизаторе:

PSU

Для развязки двух источников (напомню, на нижней плате имеется 3 В источник) применены диоды Шоттки. Не очень изящное решение, но это цена функциональной завершенности нижней платы.
Для включения/выключения зарядки аккумулятора введен ключ, коммутирующий напряжение от USB–разъема:

Коммутатор питания

Полевик в обычном включении, +5USB – входное напряжение, +5USB_COMM – выходное, +5_COMM – цепь управления.
Для управления устройством служат 5 кнопок:

Кнопки

Интерес представляет разве что кнопка SW1. Она коммутирует напряжение питания системы, которое через делитель R9–R10 попадает на МК, сигнализируя ему о нажатии кнопки, а также поступает в цепь BUTTON_MAIN_2, осуществляя первичный запуск источника питания 3 В на нижней плате. Далее, если требуется включение питания устройства, управление источником перехватывает МК.
Поскольку место позволяло, на верхней плате так же имеется модуль часов реального времени:

RTC

Отличий от нижней платы не наблюдается; не смонтирован, т.к. уже имеется на нижней.
Аналогичная ситуация – с модулем GPS:

GPS

В отличие от нижней платы, где есть только контакт для подключения антенны, здесь имеется полноценная керамическая GPS–антенна 13х13 мм. В остальном – все то же самое.
Предусмотрен датчик температуры:

Датчик температуры

Используется микросхема TMP101 от Texas Instruments, обеспечивает измерение температуры с дискретностью до 12 бит, общение с ней – по шине I2C.
Имеется возможность установить датчик давления:

Датчик давления

В текущей версии не установлен.
Я использовал чуть–чуть нестандартное включение подтягивающих резисторов для шины I2C:

I2C

Практика показывает, что через эти резисторы при простое шины течет существенный ток (на уровне нескольких десятков мкА), что явно лишнее в батарейных приложениях. Управление логическим уровнем в цепи I2C_PULLUP_EN (она напрямую подключена к ноге МК – токи–то копеечные) позволяет исключить этот эффект.
Также для экономии энергии применена следующая схема измерения напряжения на аккумуляторной батарее:

Измерение напряжения

Делитель подключается к батарее только на время измерения, все остальное время он отключен. Напряжение, пропорциональное напряжению АКБ подается через цепь VBAT_MEASURE_ADC на АЦП микроконтроллера. За управление коммутатором отвечает цепь VBAT_MEASURE_CNTRL.
В качестве дополнительного средства оповещения применен виброзвонок от брелка автосигнализации, включен самым обыкновенным образом:

Вибро

Моторчик подключается к разъемам Х59 и Х60. Пожалуй, стоит добавить обратновключенный диод параллельно двигателю… Как–то я зевнул этот момент) В качестве небольшой полезняшки – светодиодный фонарик:

Фонарик

Драйвер светодиода – TPS60230 от Texas Instruments. Микросхема выдрана из телефона Samsung SGH–E350, светодиод (подключается к разъемам Х62 и Х63) оттуда же. В телефоне эта связка трудилась в качестве фотовспышки (точнее, фотоподсветки). Микросхема умеет регулировать яркость светодиода с помощью входов En1 и En2 (цепи FLASH_1 и FLASH_2). Если нет микросхемы – можно просто включать/выключать фонарик транзистором Q5, ограничив ток светодиода резистором, соединяющим выводы Vin и Vout микросхемы (физически это 4 параллельно включенных резистора).
Короче говоря, верхняя плата существенно менее интересна, но более функционально насыщена.
Переходим к конструкции.
Для размещения прибора я выбрал корпус Gainta G1389G: коробочка из светло–серого ABS–пластика размерами 172х77х25 мм.

Корпус

Печатные платы проектировались непосредственно под этот корпус, что явилось причиной достаточно сложных контуров.
BottomBoard:

Нижняя плата

Задача — все сделать максимально плоским. С нижней стороны платы, между ней и корпусом, стоит аккумулятор. Он и лимитирует высоту. С другой (верхней) стороны платы чем высота компонентов будет меньше, тем лучше. Поэтому счетчики установлены в вырез платы, под высоковольтный трансформатор вырезано окно. Трансформатор обернут в экран из медной фольги, виток не замкнут. Изначально планировалась установка 9мм звукового излучателя, поэтому под него так же сделан вырез, хотя в итоге в устройстве прижился HC0309A, под него такие ухищрения вроде как излишни, ну да ладно. Держатель для батарейки выполнен из каких-то упругих контактов. Разъем для соединения плат – укороченные PLS-40 штырьки. Массивные элементы дополнительно зафиксированы термоклеем.
Из доработок, не отраженных на схеме, сделано следующее. Т.к. на нижней плате не установлен GPS–модуль, незадействованными остались часть контактов в соединителе плат. Через них к модулю ЕВ–500 на верхнюю плату подведено напряжение от батарейки резервного питания (оно необходимо GPS–модулю для нормальной работы), а так же сигнал Reset для МК от кнопки, установленной навесным монтажом на нижней плате.
Top Board:

Верхняя плата

USB-разъем для экономии высоты установлен в вырез печатной платы, как и вибромоторчик. Подсветка экрана осуществляется припаянными «с изнанки» зелеными SMD-светодиодами, для которых сделаны отверстия в плате. Пластиковый «отражатель» в нижней части экрана пришлось закрасить белой краской, иначе через него уходила значительная часть светового потока и подсветка получалась весьма тусклой. Светодиод фонарика припаян к торцу платы в специальную «нишу». В качестве ответной части разъема для соединения плат используются половинки от «кроваток» для микросхем. Кстати, их надо было бы ставить на нижнюю плату, потому как на ее разъеме присутствует, например, напряжение с аккумулятора... Мне было так удобнее при отладке, но это неправильно. На плату в разных местах приклеены кусочки резины для прижимания всего бутерброда при стягивании корпуса.
Всяческие «сопли» – результат полета мысли после изготовления платы и исправление мелких несуразиц...
Внешний вид в сборе и не очень со всех сторон:

В сборе


Нижняя плата прикручена к корпусу саморезами на штатные посадочные места. Верхняя плата устанавливается в разъем и прижимается при стягивании корпуса – этого вполне достаточно для надежного крепления. Между платами имеется дополнительная изолирующая прокладка – на всякий случай. Нижняя заглушка корпуса изготовлена из двух слоев 1,5мм текстолита и снабжена двумя резиновыми заглушками, за которыми прячутся слот для карточки и USB-разъем. Верхняя заглушка доработана: в нее вклеено прозрачное окно для фонарика (само окно позаимствовано все у того же сотового телефона). На нижней стороне корпуса сделана наклейка с кратким описанием управления прибором, наклейка защищена прозрачной полимерной пленкой.
Теперь о программном обеспечении для «верхней» платы. Как уже сказано, «окучивает» весь праздник микроконтроллер Atmega128, писалось все в CVAVR’е, фьюзы следующие:

Фьюзы

Сначала об интерфейсе пользователя, из которого во многом будет понятен функционал устройства
Управление осуществляется посредством пяти кнопок, расположенных в виде крестовины. Их функционал схематично представлен в виде таблицы:

Функции кнопок

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

Заставка

кнопку можно отпустить. Если при этом подключен кабель питания от зарядного устройства или USB и напряжение на батарее больше установленного для начала безусловного заряда, появится сообщение

Сообщение

Нажатием на левую или правую кнопку можно выбрать соответствующее действие.
После этого прибор начинает счет импульсов и мы попадаем в основной экран. Экран имеет несколько видов:

Основной экран

Первые четыре экрана отличаются только информацией в правом нижнем углу. Первый экран (дозиметрический) отображает там максимальное значение экспозиционной дозы за текущую сессию в мкР/ч и накопленную дозу в мкР. Второй экран (климатический) – значение температуры и давления. Третий (батарейный) – напряжение на батарее и примерный заряд. Четвертый (GPS) – направление на север и скорость движения (на фото промежуточная версия этого экрана, сейчас северный конец указателя заштрихован). Пятый экран – часы, шестой – компас с указанием скорости и пройденного пути. Переключение в какой–либо экран осуществляется коротким нажатием на соответствующую кнопку, экраны 5 и 6 переключаются между собой повторным нажатием на кнопку «Влево».
Первая строка 4–х экранов содержит пиктограммы, описывающие состояние прибора. Слева направо: батарея (такая пиктограмма говорит о том, что батарея заряжена, но кабель питания еще подключен, при отсутствии кабеля отображает 10 ступеней заряда батареи в диапазоне от 3.0 до 4.0В); карта памяти (на примере – активна, может быть перечеркнута (ошибка карты), полностью заштрихована (карта полна), отсутствовать (карта не установлена или не прошла инициализацию)); символ вилки – подключенный кабель питания; символ USB – есть соединение по USB с ПК; колокольчик – включен будильник, спутниковая антенна – включен GPS (после определения координат вокруг антенны появятся точки–спутники), пятиступенчатая диаграммка – отображает степень приближения текущего значения фона к установленному порогу тревоги.
Ниже – строка со временем и датой.
Среднюю часть экрана занимает значение измеренного фона, в зависимости от величины меняется форма отображения и размерность величин. Теоретически можно отобразить данные от 1 мкР/ч до 999 мР/ч. Левую нижнюю часть экрана занимает диаграмма, столбцы которой отображают количество импульсов в секунду за последние 33 с. Диаграмма автоматически масштабируется и нормируется к максимальному за период значению.
При включении фонаря, GPS–приемника, будильника, а так же при сохранении данных на экране отображаются соответствующие сообщения.
Сохранение данных служит для записи в энергонезависимую память данных о количестве посчитанных импульсов, суммарной накопленной дозе и т.п. Аналогичный процесс происходит при выключении прибора.
Пример экрана при включенном и «зацепившемся» за спутники GPS, заряд батареи около 60%:

Пример GPS

При активизации какой–либо из функций группы «инфо» получим одно из следующих сообщений:

Инфо

Первый экран – дозиметрический: накопленная за текущую сессию доза, суммарная доза за все время эксплуатации прибора, суммарное число импульсов за все время эксплуатации прибора, время и дата последней тревоги, ее уровень и общее количество тревог за сессию.
Второй экран – батарейный: текущее напряжение на батарее, напряжение окончания заряда, напряжения предупреждения о разряде/отключения прибора, установленный ток заряда, текущий статус процесса заряда, число зарядных циклов.
Третий экран – климатический: текущая, минимальная и максимальная за сессию величина температуры и давления (вместо давления – программная заглушка).
Четвертый экран – GPS: статус приемника, последние корректные координаты, скорость, азимут, пройденный за сессию путь, время по Гринвичу и дата последней локализации.
Пятый экран – карта памяти: статус карты и данные о свободном месте.
Выход из «инфо» – по таймеру неактивности или по нажатию центральной кнопки.
Настройка прибора:

Настройки

В принципе, все понятно из картинки. Доступные типы сигналов – звук, вибро, звук+вибро. Большинство величин изменяются в диапазоне 1..100. Яркость подсветки 0..255, контрастность дисплея – 1..127. Фонарик – 33, 66 или 99% яркости. Кнопки «вверх/вниз» – изменение значение параметра, «влево/вправо» – последовательное переключение этих экранов–параметров. В текущей версии прошивки в последней строке экрана располагается прогресс–бар, степень заполнения которого иллюстрирует близость установленного значения величины к ее максимуму.
Аналогично построено меню настройки системных параметров:

Системные настройки

На скриншотах не последняя версия прошивки. Сейчас дискретность настройки напряжений составляет 10 мВ, в последней строке экрана располагается прогресс–бар, степень заполнения которого иллюстрирует близость установленного значения величины к ее максимуму.
Настройка времени и даты:

Время и дата

Будильника:

Будильник

Можно включить будильник однократно, ежедневно или только по рабочим дням.
Выход из всех меню настройки – по таймеру неактивности (при этом не происходит сохранения измененных значений в энергонезависимую память, настройки актуальны только для текущей сессии) или по нажатию центральной кнопки с записью всех настроек в энергонезависимую память.
Теперь чуть более подробно о работе некоторых узлов прибора и особенностях ПО.
В приборе установлено два счетчика СБМ–20. Известно, что такой счетчик за 46с выдает количество импульсов, численно равное экспозиционной дозе в мкР/ч (счетчик выдает 78 импульсов в час на один микрорентген). Поскольку счетчиков два, время измерения (накопления) составляет 23с. Вычисление результата происходит каждую секунду на основе данных за последние 23с (в программе реализован «скользящий» массив, элементы которого содержат количество импульсов за одну секунду). Этих данных достаточно для вычисления любой требуемой величины, например, суммарной поглощенной дозы и т.п.
Большую часть времени микроконтроллер «спит», просыпаясь и производя необходимые вычисления по прерыванию от таймера Т0, тактируемого от вспомогательного кварца с частотой 32,768кГц. Этот же таймер занимается отсчетом системного времени (хотя в приборе есть модуль RTC на специальной микросхеме), для сохранения точности и экономии энергии синхронизация с модулем RTC осуществляется через заданные настраиваемые через меню системных настроек промежутки времени, так же как и измерение напряжения на батарее, температуры и т.д. Если карта памяти не установлена или выдала ошибку в процессе работы, прерывания таймера происходят один раз в секунду, если карта памяти активна, то 16 раз в секунду (для запуска вспомогательных функций, обслуживающих карту памяти).
При включении прибора, если карта памяти установлена, происходит ее инициализация и, в случае успеха, создание файла лога с именем «DDMMHHMM.txt» (число-месяц-часы-минуты.txt). Далее в процессе работы в этот файл через заданный настраиваемый интервал времени (период логирования) пишутся данные о состоянии окружающей среды и самого прибора , при выключении файл дополняется завершающей записью, в результат чего приобретает следующий вид:

Лог данных дозиметра
Начало записи: 01:51:55 19.02.2011
Период логирования: 001 минут(а)
Время накопления: 023 секунд(ы)

Запись №|Число импульсов|Ср. доза|Макс. доза|Температура|Давление|Батарея|Широта______|__|Долгота_____|__|Скорость|Азимут|Время___|Дата____|
________|за период лога |мкР/ч___|мкР/ч_____|град. С____|мм.рт.ст|мВ_____|____________|__|____________|__|км/ч *10|град. |ЧЧ:ММ:СС|ЧЧ.ММ.ГГ|
00000001|000000000000041|00000011|0000000019|00000000025|00000760|0003910|000000000000|00|000000000000|00|00000000|000000|01:52:53|19.02.11|
00000002|000000000000042|00000017|0000000023|00000000025|00000760|0003908|000000000000|00|000000000000|00|00000000|000000|01:53:53|19.02.11|
00000003|000000000000031|00000010|0000000021|00000000025|00000760|0003931|000000000000|00|000000000000|00|00000000|000000|01:54:54|19.02.11|
00000004|000000000000039|00000015|0000000024|00000000025|00000760|0003925|5952.6030050|СШ|03016.260755|ВД|00000005|000265|01:55:54|19.02.11|
00000005|000000000000049|00000018|0000000024|00000000025|00000760|0003925|000000000000|00|000000000000|00|00000000|000000|01:56:54|19.02.11|
00000006|000000000000045|00000016|0000000023|00000000024|00000760|0003925|000000000000|00|000000000000|00|00000000|000000|01:57:54|19.02.11|
00000007|000000000000058|00000022|0000000028|00000000024|00000760|0003925|000000000000|00|000000000000|00|00000000|000000|01:58:53|19.02.11|
00000008|000000000000049|00000020|0000000025|00000000023|00000760|0003925|000000000000|00|000000000000|00|00000000|000000|01:59:53|19.02.11|
00000009|000000000000050|00000018|0000000022|00000000023|00000760|0003925|000000000000|00|000000000000|00|00000000|000000|02:00:53|19.02.11|
00000010|000000000000054|00000019|0000000024|00000000022|00000760|0003925|000000000000|00|000000000000|00|00000000|000000|02:01:53|19.02.11|
00000011|000000000000034|00000015|0000000025|00000000022|00000760|0003925|000000000000|00|000000000000|00|00000000|000000|02:02:53|19.02.11|
00000012|000000000000047|00000017|0000000022|00000000021|00000760|0003925|000000000000|00|000000000000|00|00000000|000000|02:03:53|19.02.11|
00000013|000000000000056|00000022|0000000029|00000000021|00000760|0003925|5952.5923600|СШ|03016.357115|ВД|00000017|000292|02:04:54|19.02.11|
00000014|000000000000054|00000020|0000000025|00000000021|00000760|0003925|5952.5920420|СШ|03016.363058|ВД|00000002|000293|02:05:54|19.02.11|
00000015|000000000000048|00000016|0000000023|00000000020|00000760|0003925|5952.5928730|СШ|03016.359848|ВД|00000002|000292|02:06:54|19.02.11|
00000016|000000000000036|00000015|0000000025|00000000020|00000760|0003925|5952.5926770|СШ|03016.360350|ВД|00000000|000291|02:07:54|19.02.11|
00000017|000000000000042|00000016|0000000025|00000000020|00000760|0003925|5952.5933790|СШ|03016.356609|ВД|00000001|000291|02:08:54|19.02.11|
.
.
.
00000781|000000000000038|00000013|0000000022|00000000019|00000760|0003607|000000000000|00|000000000000|00|00000000|000000|14:52:54|19.02.11|
00000782|000000000000042|00000016|0000000021|00000000019|00000760|0003603|000000000000|00|000000000000|00|00000000|000000|14:53:54|19.02.11|
00000783|000000000000039|00000014|0000000022|00000000019|00000760|0003599|000000000000|00|000000000000|00|00000000|000000|14:54:54|19.02.11|

Окончание записи: 14:55:47 19.02.2011
Продолжительность сессии, с: 047033
Число импульсов за время сессии: 0000035908
Суммарное число импульсов за время работы прибора: 0000287521

Файл открывается на запись при каждом к нему обращении и закрывается после осуществления записи, поэтому даже нештатные ситуации (вроде вытаскивания карточки в процессе работы и т.п.) с высокой долей вероятности не приводят к повреждению данных, однако так поступать все же не стоит.
При превышении установленного для экспозиционной дозы порога тревоги, происходит оповещение согласно настроенному типу сигнала тревоги, сопровождающееся инвертированием раз в секунду изображения на экране. Состояние тревоги активно еще 5с после понижения уровня излучения ниже установленного порога.
Срабатывание будильника сопровождается сообщением «Сработал будильник» и сигналом будильника согласно настроенному типу сигнала. Сигнал продолжается до нажатия любой кнопки, но не дольше одной минуты.
При разряде батареи до установленного заранее предела предупреждения о разряде появляется сообщение «Зарядите батарею!» и раз в 10с осуществляется короткий предупредительный сигнал. Состояние сохраняется до нажатия на любую кнопку.
При разряде батареи ниже критического уровня выводится сообщение «Батарея разряжена. Выключение устройства…», в течение 3с активен сигнал тревоги, после чего происходит принудительное выключение прибора.
При подключении к ПК (прибор определяется как виртуальный COM–порт, для этого должны быть установлены драйверы FTDI для микросхемы FT232R) появляется возможность считать с прибора данные о его текущем состоянии, а также загрузить настройки и синхронизировать время. Доступны команды «g» (get – получить данные), «s» (set – загрузить в прибор новые настройки), «t» (time – синхронизировать время) и «a» (alarmtime – установить будильник), которые можно подавать используя любой терминал на скорости 115200 бод с параметрами 8N1. Форматы следующие.
В ответ на «g» прибор выдаст строку вида:


«000:00:00:00:00:000:00000:00:00:00:00:00:00:0:000:00:00:0:0:0:000:000:000:000:000:000:000:000: 000:0:000:00000:00000:00000:00000:00000:00000:0000000000:0000000000:000:760:000:000:999:000: 0000:0000:0000:0000:0000:0000:0:0:0: 0:0000:0000»,
где (в порядке следования групп):
000 – установленный уровень тревоги, мкР/ч
00 – время последней тревоги, часы
00 – время последней тревоги, минуты
00 – дата последней тревоги, число
00 – дата последней тревоги, месяц
000 – максимальный уровень в течение последней тревоги, мкР/ч
00000 – количество тревог
00 – системное время, часы
00 – системное время, минуты
00 – системное время, секунды
00 – системная дата, число
00 – системная дата, месяц
00 – системная дата, (год–2000)
0 – системная дата, день недели: 1 – Понедельник
000 – часовой пояс по Гривничу
00 – время будильника, часы
00 – время будильника, минуты
0 – режим будильника (1 – ежедневно, 2 – однократно, 3 – по рабочим дням)
0 – тип сигнала будильника (1 – звук, 2 – вибро, 3 – звук+вибро)
0 – статус будильника (0/1 – выкл/вкл)
000 – период измерения напряжения батареи, с
000 – период измерения температуры, с
000 – период измерения давления, с
000 – период синхронизации системного времени с RTC, мин
000 – период записи лога, мин
000 – длительность работы подсветки, с
000 – яркость подсветки
000 – длительность работы экрана, мин
000 – контрастность экрана
0 – яркость фонарика (1 – 33%, 2 – 66%, 3 – 99%)
000 – период накопления, с
00000 – число импульсов за период накопления (численно равно экспозиционной дозе в мкР/ч)
00000 – число импульсов за минуту
00000 – максимальный уровень излучения за сессию, мкР/ч
00000 – средний уровень излучения за минуту, мкР/ч
00000 – среднее значение излучения за период лога, мкР/ч
00000 – максимальное значение излучения за период лога, мкР/ч
0000000000 – общее число импульсов за время эксплуатации прибора
0000000000 – число импульсов за текущую сессию
000 – температура, град. С
000 – минимальная за сессию температура, град. С
000 – максимальная за сессию температура, град. С
760 – давление, мм.рт.ст (стоит заглушка)
999 – минимальное за сессию давление, мм.рт.ст (стоит заглушка)
000 – максимальное за сессию давление, мм.рт.ст (стоит заглушка)
0000 – напряжение батареи, мВ
0000 – напряжение выключения прибора, мВ
0000 – напряжение предупреждения о разряде, мВ
0000 – напряжение безусловного включения заряда, мВ
0000 – напряжение выключения заряда, мВ
0000 – число циклов заряда
0 – озвучивание частиц (0/1 – выкл/вкл)
0 – тип сигнала тревоги (1 – звук, 2 – вибро, 3 – звук+вибро)
0 – тип сигнала кнопок (0 – выкл, 1 – звук, 2 – вибро, 3 – звук+вибро)
0 – ток зарядки (0 – 100мА, 1 – 500мА)
0000 – свободное место на карте памяти на момент включения, МБ
0000 – объем карты, МБ


Пример команды «set»:


«s040001002060010001005100005070102330003100390041000220хххх» (без кавычек), где:
s – команда
040 – уровень тревоги, мкР/ч
001 – период измерения напряжения батареи, мин
002 – период измерения температуры, мин
060 – период измерения давления, мин
010 – период синхронизации системного времени с RTC, мин
001 – период записи лога, мин
005 – длительность работы подсветки, с
100 – яркость подсветки
005 – длительность работы экрана, мин
070 – контрастность экрана
1 – яркость фонарика (1 – 33%, 2 – 66%, 3 – 99%)
023 – период накопления, с
3000 – напряжение выключения прибора, мВ
3100 – напряжение предупреждения о разряде, мВ
3900 – напряжение безусловного включения заряда, мВ
4100 – напряжение выключения заряда, мВ
0 – озвучивание частиц (0/1 – выкл/вкл)
2 – тип сигнала тревоги (1 – звук, 2 – вибро, 3 – звук+вибро)
2 – тип сигнала кнопок (0 – выкл, 1 – звук, 2 – вибро, 3 – звук+вибро)
0 – ток зарядки (0 – 100мА, 1 – 500мА)
хххх – CRC16 по полю данных (без префикса «s»)


Пример команды «time»:


«t012100120211хххх» (без кавычек), где:
t – команда,
01 – 01 час,
21 – 21 минута
00 – 00 секунд
12 – 12 числа
02 – 02 месяца
11 – 11 года
хххх – CRC16 по полю данных (без префикса «t»)

Пример команды «alarmtime»:
«a0000110хххх» (без кавычек), где:
00 – часы будильника
00 – минуты будильника
1 – режим будильника (1 – ежедневно, 2 – однократно, 3 – по рабочим дням)
1 – тип сигнала будильника (1 – звук, 2 – вибро, 3 – звук+вибро)
0 – статус будильника (0/1 – выкл/вкл)
хххх – CRC16 по полю данных (без префикса «t»)

CRC считается вот с такими настройками:

Name : CRC–16 CCITT
Poly : 0x1021 x^16 + x^12 + x^5 + 1
Init : 0xFFFF
Revert: false
XorOut: 0x0000
Check : 0x29B1 ("123456789")

При включении GPS происходит его конфигурация (чтобы он выдавал только RMC–строку один раз в секунду), данные RMC–строки передаются в простой парсер, вычленяющий из нее необходимые величины. Если прибор подключен к ПК, прибор выдает в порт эту же строчку:


$GPRMC,hhmmss.ss,A,GGMM.MM,P,gggmm.mm,J,v.v,b.b,ddmmyy,x.x,n,m*hh, где:
«GP» – приём сигналов GPS
«RMC» – «Recommended Minimum sentence C»
«hhmmss.ss» – время фиксации местоположения по Гринвичу UTC: «hh» – часы, «mm» – минуты, «ss.ss» – секунды. Длина дробной части секунд варьируется. Лидирующие нули не опускаются.
«A» – статус: «A» – данные достоверны, «V» – недостоверны.
«GGMM.MM» – широта. 2 цифры градусов(«GG»), 2 цифры целых минут, точка и дробная часть минут переменной длины. Лидирующие нули не опускаются.
«P» – «N» для северной или «S» для южной широты.
«gggmm.mm» – долгота. 3 цифры градусов(«ggg»), 2 цифры целых минут, точка и дробная часть минут переменной длины. Лидирующие нули не опускаются.
«J» – «E» для восточной или «W» для западной долготы.
«v.v» – горизонтальная составляющая скорости относительно земли в узлах. Число с плавающей точкой. Целая и дробная части переменной длины.
«b.b» – путевой угол (направление скорости) в градусах. Число с плавающей точкой. Целая и дробная части переменной длины. Значение равное 0 соответствует движению на север, 90 – восток, 180 – юг, 270 – запад.
«ddmmyy» – дата: день месяца, месяц, последние 2 цифры года (ведущие нули обязательны).
«x.x» – магнитное склонение в градусах (часто отсутствует), рассчитанное по некоторой модели. Число с плавающей точкой. Целая и дробная части переменной длины. Для EB–500 отсутствует.
«n» – направление магнитного склонения: для получения магнитного курса магнитное склонение необходимо «E» – вычесть, «W» – прибавить к истинному курсу. Для EB–500 отсутствует.
«m» – индикатор режима: «A» – автономный, «D» – дифференциальный, «E» – аппроксимация, «N» – недостоверные данные (часто отсутствует, данное поле включая запятую отсутствует в старых версиях NMEA).
«hh» – контрольная сумма.
– байт равен 0x0D.
– байт равен 0x0A.

Теоретически, это позволяет использовать прибор к качестве GPS–приемника для работы с навигационными программами.
В прибор в качестве эксперимента введена функция просмотра txt–файлов, предназначенная для чтения книг. На данный момент поддерживается один файл с именем «booktext.txt», который должен быть расположен в корневом каталоге карты памяти. При активации функции «читалки» в случае отсутствия этого файла будет выдано соответствующее сообщение («Карта памяти не содержит файла книги»), если карта вообще не установлена – «Карта памяти не установлена». Если файл на месте, происходит проверка наличия файла «bookmark.mrk», содержащего закладку на последнюю страницу. Если такого файла нет (первое открытие книги), он создается и в него записывается 0. Если файл уже есть, происходит чтение его содержимого (содержимое – номер байта файла книги, с которого начинается последняя открытая страница) и установка указателя на соответствующее место файла, после чего страница книги выводится на экран. Кнопки «Влево/Вправо» перелистывают страницы, при выходе из «читалки» происходит сохранение закладки в файл. Очевидно, что при заливке новой книги нужно удалять «bookmark.mrk». Переносы или какое–либо форматирование не поддерживается, файл отображается как есть. При чтении доступны все функции настройки, просмотра информации и все тревоги и предупреждения, не работает только смена типа основного экрана.
Пару слов об энергопотреблении. В режиме ожидания (экран отключен, измерение активно) прибор в «слипе» микроконтроллера потребляет около 400мкА. При «просыпании» МК потребление подскакивает до 4–5мА. Средний ток потребления, как его показывает UT-70D, не превышает 2мА. Сходную величину дает и теоретический расчет. Включение подсветки на максимум дает +35мА к потреблению, GPS - +30мА, фонарик - +40(60, 75)мА (в зависимости от установленной яркости), вибро - +30мА. Кроме того, при включенных подсветке и/или GPS МК вынужден уходить в «слип» не в Power-Save, а в Idle Mode, поскольку в противном случае ему будет не проснуться по прерыванию от таймера ШИМа и UARTa. На фоне потребления подсветки или GPS пара лишних миллиампер, конечно, не очень заметна, но все же… Все измерения проводились при напряжении на аккумуляторе 4В, очевидно, что по мере снижения напряжения батареи потребляемый ток будет возрастать.
В качестве иллюстрации энергоемкости: полного заряда аккумулятора хватает на 20 часов непрерывной работы прибора со включенным GPS-модулем или на 12 дней непрерывной работы в режиме логирования с периодическими просмотрами статистики, ползаньями по меню, включениями/выключениями и т.д.
Для «общения» с прибором посредством ПК, в HiAsm"e была «написана» простая программа, позволяющая получить данные о текущем состоянии прибора и произвести настройку его параметров. Скриншот на рисунке, сама софтинка и проект HiAsm в конце статьи.

ПО

Что мне сейчас не очень нравится: подсистема питания, точнее, организация двойного питания от USB и «набортного» преобразователя и их развязка. Нужно подумать, как это поизящнее и попроще реализовать. Также есть вопросы к системе подсветки экрана, стоило бы сделать ее с применением какого-либо драйвера светодиодов, а не с простым резистивным балластом, но не оказалось под рукой ничего толкового. Из замеченных проблем: на морозе (я гулял с прибором при температуре -20С, прибор при этом показал минимальную температуру в -5С, дальше замерз экран)) были замечены ошибки при работе с картой памяти.
Что еще хотелось бы добавить из более-менее глобального:
1.Прикрутить бутлоадер
2.Прикрутить Z-modem или что-то подобное для неспешной передачи файлов на ПК
3.Можно покопать в сторону развития функционала GPS (пока не уверен, что стоит)
4.Усовершенствование «читалки» - тоже совсем не уверен в необходимости, скорее «просится» отдельное устройство для этих целей
5.Таки все же установить датчик давления
В принципе, сейчас прошивка занимает около 65% ресурса МК по флеш-памяти, оперативка тоже еще есть, так что поле для деятельности имеется.
В остальном, прибор получился, на мой взгляд, достаточно толковый и ждет своего часа: летних вылазок во всяческие походы.

Файлы:
BottomBoard оригинальная, требует доработок при сборке
BottomBoard отредактированная, в "железе" еще не проверялась
TopBoard оригинальная, требует доработок при сборке
TopBoard отредактированная, в "железе" еще не проверялась
Комплект плат-деталей корпуса
Прошивка для BottomBoard с исходником
Прошивка для TopBoard с исходником
ПО для ПК и проект HiAsm

Все вопросы, как всегда, в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

61 5 0
0 0 3

Эти статьи вам тоже могут пригодиться: