- Цена: $29,85
Интересовались тут, мол когда будут обзоры на что-то радиолюбительское, но не просто чтобы поиграться и забросить, а чтобы девайс был полезен в хозяйстве. Этот обзор будет как раз о нём — детектор-сигнализатор радиоактивности, который может не просто сам по себе долго работать, но и может дружить с Arduino, MSP430, iOS, Android, Windows и выводить данные. Что примечательно, модуль этот не китайский, — пришёл он мне из Израиля. Весь материал, включая и программный код, постарался упростить для лёгкого понимания широкому читателю, поскольку тема довольно интересная.
Навигация по обзору
1. Технические характеристики
— замечание по сборке
— замечание по отмывке платы
2. Внешний вид. Контакты и органы управления
— описание выводов и органов управления
3. Энергопотребление
— повышающий преобразователь NCP1402
— распиновка понижающих преобразователей
— понижающий преобразователь LP2950
— понижающий преобразователь MCP1700
— понижающий преобразователь MCP1702
— запитка от мини солнечных панелей
4. Синхронизация с различными платформами
— вывод показаний в Radiation Logger под WINDOWS (через Arduino)
— вывод показаний в монитор порта Arduino IDE под WINDOWS (через Arduino)
— вывод показаний на дисплей Nokia 5110 (через Arduino)
— подключение к смартфону через 3.5мм аудиоразъём
5. Видеоприложения к обзору
— работа от ААА батарейки через повышающий преобразователь NCP1402
— работа от солнечных панелек и искусственного света
— работа в связке с Arduino и выводом данных на дисплей LCD5110
6. Итоговая сводка
Версия модуля 3.0, и как поясняет разработчик, — он имеет несколько улучшений по сравнению с предыдущей версией, где раньше высоковольтная часть базировалась на таймере 555 и в связи с этим ранняя версия имела такие недостатки, как высокое энергопотребление, большое падение напряжения под нагрузкой и отсутствие защиты от перенапряжения. В последней версии вместо таймера 555 используется уже микроконтроллер, и вышеперечисленные недостатки, как он говорит, были устранены и улучшена стабильность до 1мЗв/ч радиационной нагрузки.
[НАВЕРХ]
Технические характеристики
Разработчик: RHelectronics
Версия: 3.0
Совместимость со счётчиками: STS-5, SBM-20, J305, LND-712
Напряжения счётчиков: 400В, 500В
Диапазон питающих напряжений: 4.5-5.5В
Токопотребление (при нормальном фоне): 30-60мкА
Порог измерения: до 1мЗв/ч
Индикация: сигнальная линия, буззер, светодиод
Разъёмы: 3.5мм аудиоразъём TRRS
Размеры: 120 x 50 мм
К плате разработчиком прилагается документация на английском языке, где к моему удивлению, даны не просто характеристики, но и даже советы по пайке, отмывке, тестированию узлов платы и устранению неисправностей. Вспоминая китайцев, — такой щепетильностью они никогда не могли похвастаться.
Отмечу такой положительный момент, что паять самому придётся только DIP-компоненты, которые со сквозным монтажём. Все SMD-компоненты были уже припаяны к плате уже изначально, что удобно, для тех, кто не умеет или боится их паять.
Элементы к плате припаивал, начиная с резисторов и диодов, с предварительной проверкой номиналов мультиметром. Впрочем, так и рекомендуется в инструкции.
[НАВЕРХ]
(!!!)
Есть важный момент: на плате можно найти две маркировки: R-INT и C-INT. В зависимости от того, с каким микроконтроллером планируется использовать модуль, нужно припаять соответствующий элемент.
Если это Arduino/MSP430 — напротив C-INT ставим конденсатор 10 нФ (103), для PIC — резистор 47К напротив R-INT. Одновременно эти два элемента — ставить нельзя. Если заказывать готовую собранную плату, то по умолчанию будет установлен конденсатор C-INT для работы с Arduino/MSP430
[НАВЕРХ]
Другое замечание, которое делает разработчик, это обязательное извлечение логической схемы CD4011 и заклеивание отверстия буззера перед отмывкой платы изопропиловым спиртом (я использую его с бензином «Калоша» в пропорциях 1:1)
[НАВЕРХ]
Внешний вид. Контакты и органы управления
Поскольку у меня чесались руки поскорее спаять это устройство, то прилагаю фото в уже собранном виде.
Сама плата размера 120 х 50 мм.
Толщина стеклотестолита 1.5 мм
Вес платы с уже установленным датчиком — чуть более 43 гр.
Высота платы с учётом нейлоновых ножек и самого высокого элемента — 20 мм
[НАВЕРХ]
Теперь, собственно, к органам управления:
1) — контактная колодка для подключения питания к плате. Левый контакт (-), правый (+). С установленной перемычкой (JMP3) на вход можно подавать напряжение в диапазоне 4.5-5.5В.
2) — сдвижной выключатель, проще говоря ВКЛ./ВЫКЛ.
3) — подстроечный резистор 10К, коим калибруется тональность буззера
4) — индикаторный светодиод, кратко мигает при регистрации импульса.
5) — буззер, издаёт щелчок при регистрации импульса (резонансная частота 4000Гц)
6) — перемычка JMP1 для смены выходного напряжения, которых здесь всего два — 400В (перемычка установлена) и 500В (перемычка снята). Речь о напряжении, которое подаётся на контакты под датчик.
7) — перемычка JMP2 для отключения буззера, если его звук не нужен.
8) — логическая интегральная схема CD4011BE
9) — контакты IN,GND,OUT — для подключения повышающего или понижающего стабилизатора, чтобы питать плату от напряжений, выходящих за пределы 4.5-5.5В.
Внимание! Перед подключением стабилизатора и подачей питания, нужно снять перемычку JMP3!
10) — перемычка JMP3 замыкает контакты IN и OUT у контактной площадки рядом, поэтому при подаче прямого напряжения 4.5-5.5В, она должна быть установлена. Но перед подключением стабилизатора напряжения и подачей питания за пределами 4.5-5.5В, её нужно снять.
11) — разъём 3.5мм AudioJack, нужен для подключения к аудиоразъёму в смартфонах. Можно на смартфоне загрузить приложение и выодить подсчёты на экран. Распайка 4-контактная по стандарту CTIA 2012.
12) — контакты 5V, INT, GND, первый и последний из которых для подключения питания 4.5-5.5В. Контакт INT — сигнальный, используется для подключения к MCU (например Arduino), к разъёму, настроенному на получение внешних прерываний, и соответственно, с последующей обработкой полученных импульсов.
13-14) контакты для подключения датчика. В моём случае это СБМ-20, купленный в оффлайне. На контактах генерируются 400В напряжения с установленной перемычкой JMP1, либо 500В со снятой перемычкой JMP1.
Внимание! Прикасаться к ним и к трубке во время работы модуля нельзя.
Обратная сторона платы:
15) — микроконтроллер PIC12F629, управляющий высоковольной частью посредством мосфета.
16) — N-канальный MOSFET BSP130
17) — транзисторный каскад
[НАВЕРХ]
Энергопотребление
Как и было выше сказано, питание модуля по умолчанию — 4.5-5.5В, а токопотребление его варьируется от 30 до 60мкА. Сперва я подал на контактную колодку 5В напряжения от ЛБП и замерил потребляемый ток. В моём случае он составил 45мкА, как раз посередине диапазона. Значит собрана плата правильно, а флюс хорошо отмыт. Во включенном состоянии буззер модуля издаёт короткие щелчки 1-2 раза в 2-5 секунд. Не раздражающий писк, как это делают в других приборах, а именно щелчки, что эстетически порадовало.
Про чешские бусы, которые сделаны из ураносодержащего стекла, наверно, слышали многие
И про их визуальные свойства при подсвечивании ультрафиолетом:
При поднесении бус к датчику СБМ-20, щелчки учащаются, сооттветственно, увеличивается и потребляемый ток, но при этом происходят частые скачки тока от тех же 45мкА до 151-213мкА.
[НАВЕРХ]
NCP1402 5В
Но поскольку предполагается, что модуль будет носимым и желательно с большой автономностью, то 5В придётся откуда-то брать. на помощь приходят различные DC-DC преобразователи. Разработчик на своём сайте прикладывает визуальную таблицу, где модуль запитывается от обычных алкалиновых ААА-батареек через повышающий преобразователь на микросхеме NCP1402 на 5В:
— 1 AAA батарейка = 20 дней работы*
— 2 ААА батарейки = 45 дней работы*
— 4 АА Ni-Mn аккумуляторы = 1 год работы* (уже без NCP1402)
* — при естественном фоне
У меня есть в наличии такой преобразователь. Он примечателен тем, что может «качать» ток, даже если батарейка разрядилась ниже 1В (нижний порог по ДШ 0.8В). Его диапазон входных напряжений 0.8-5.5В. Поддерживаемый ток 200мА. Но вместе с тем, конечно, он имеет и свои особенности — максимальный ток без просадок по напряжению достигается только от 3В… 4В. Если на входе только одна батареечка 1.5В, то максимальная нагрузка без просадок по напряжению уже будет не больше 5мА, что для запитки нашего микропотребляющего модуля хватит с запасом.
Подключим всё это дело и посмотрим на энергопотребление модуля в связке с NCP1402 в деле, при нормальном фоне, но разных питающих напряжениях в диапазоне 0.8-4В. На выходе преобразователя во всех случаях было 4.99В и ~43мкА.
Теперь смотрим, сколько тока отдаёт непосредственно ЛБП.
4В — здесь происходят небольшие скачки от 100мкА до 103мкА
3В — почти 315мкА
2В — 816мкА
1.5В — 1.23мА
1В — 2.42мА
0.9В — 2.49мА
0.8В — 3.08мА
Если рядом с датчиком положить источник излучения, то возрастёт энергопотребление. Причём тенденция та же — чем ниже питающее напряжение, тем выше скачки потребляемого тока. Значения ниже даны для примера, так как они не стабильны и постоянно колеблются.
4В — ~2.36мА
3В — ~2.64мА
2В — ~3мА
1.5В — ~6.32мА
0.8В — ~8мА
Да, есть такой недостаток — с уменьшением питающего напряжения и нагрузки, начинает падать КПД. Высокие же значения КПД достигаются при токе не меньше 20мА и при напряжении от 4В. Так что максимально эффективно использовать этот преобразователь с модулем не получится, тем не менее, этот вариант запитки модуля имеет право на существование, поскольку ААА-батарейки продаются на каждом углу, не считая полуразряженных, либо валяющихся где-нибудь в закромах. К тому же, замену новой батарейки, если модуль работает непрерывно, придётся производить не чаще, чем заряжать какой-нибудь MI Band 2. Видео работы от 1 ААА батарейки смотрите в конце обзора.
[НАВЕРХ]
LP2950, MCP1700, MCP1702
Обратимся теперь к понижающим стабилизаторам, на тот случай, если потребуется запитывать модуль от чего-то большего, чем 5В, например от кроны 9В, либо двух последовательно соединённых литиевых аккумулятора. У меня в наличии нашлось целых три штуки понижающих преобразователей в корпусе TO-92:
Далее будут парные скриншоты с показаниями энергопотребления при естественном фоне и при поднесении источника излучения к датчику. Питающее напряжение во всех случаях одно — 7.2В.
[НАВЕРХ]
LP2950
Показания на выходе стабилизатора:
Естественный фон — 44.2мкА, 5.04В
Рядом с иcточником — ~155.7мкА, 5.04В
Показания на входе стабилизатора:
Естественный фон — 91.8мкА, 7.2В
Рядом с иcточником — ~146.3мкА, 7.2В
[НАВЕРХ]
MCP1700
Показания на выходе стабилизатора:
Естественный фон — 43.7мкА, 5.01В
Рядом с иcточником — ~154.9мкА, 5.01В
Показания на входе стабилизатора:
Естественный фон — 45.3мкА, 7.2В
Рядом с иcточником — ~71.8мкА (иногда 90мкА), 7.2В
[НАВЕРХ]
MCP1702
Показания на выходе стабилизатора:
Естественный фон — 43.3мкА, 5.00В
Рядом с иcточником — ~143.9мкА, 5.00В
Показания на входе стабилизатора:
Естественный фон — 45.4мкА, 7.2В
Рядом с иcточником — ~70.9мкА, 7.2В
Как видно из тестов выше, наиболее оптимальнее использовать понижающие преобразователи, поскольку при их использовании потерь энергии гораздо меньше и соответственно — КПД выше, чем у повышающего стабилизатора NCP1402. Самым лучшим выбором из протестированных будут стабилизаторы под маркировками MCP1700 и MCP1702. При отсутствии оных, как компромисс — LP2950, но у него и потерь больше.
[НАВЕРХ]
Солнечные панели
В кладовке нашёл садовые светильники, которые втыкаются в землю, точнее то, что от них осталось, а именно — головные части с мелкими солнечными панельками. Внезапно возникла мысль испробовать работу модуля от этих панелек. Поскольку приоритет — в нужном напряжении, то на скорую руку я спаял их последовательно
Их размеры действительно довольно маленькие — 3 x 3.5см и 2.5 х 2.5 см. Если бы вы нашли у себя в кладовке такие, то не увидев для себя пользы, скорее всего выбросили бы:)
На высоте 20см светят две 8Вт лампы-трубки холодного белого свечения. Холостое напряжение 4.49В
Скорее подключаю панельки к модулю, запускаю, работает — прибор регистрирует фон и издаёт щелчки:) Напряжение при этом просело на 1/10 Вольта.
Потребляемый ток — 35.8мкА
Прислоняю более активный источник — напряжение скачет в примерном диапазоне 4.28-4.34В
Показание расходуемого тока колеблются 54… 137мкА
В общем, как вариант:) Видео работы смотрите в конце обзора.
[НАВЕРХ]
Синхронизация с различными платформами
Сама по себе плата показала себя достойно, но функционал её слишком аскетичен, поэтому попробуем связать её с разными устройствами, дабы немного разнообразить этот функционал и получить для себя больше полезной информации.
[НАВЕРХ]
Вывод показаний в Radiation Logger под WINDOWS (через Arduino)
Как понятно из подзаголовка, мы будем подключать плату к Windows и снимать показания. Посредником здесь будет выступать Arduino UNO с загруженным в него специальным скетчем, который был взят на сайта разработчика. Я его немного изменил и русифицировал комментарии. Программа, в которой будут выводиться данные — Radiation Logger.
Распиновка подключения следующая:
INT (плата) — вывод 2 (Arduino)
5V (плата) — 5V (Arduino)
GND (плата) — GND (Arduino)
После подключения платы к Arduino, а Arduino в свою очередь — к USB-порту компьютера, необходимо сперва запустить Arduino IDE, выбрать активный порт подключения Arduino и загрузить в него этот скетч:
#include <SPI.h>
#define LOG_PERIOD 30000 //период вывода CPM в миллисекундах, рекомендуется 15000-60000
#define MAX_PERIOD 60000 //маскимальный период мониторинга
unsigned long counts; //переменная для записи количества импульсов с трубки
unsigned long cpm; //переменная для CPM (количество распадов минуту)
unsigned int multiplier; //переменная для подсчёта CPM
unsigned long previousMillis; //переменная для записи времени
void tube_impulse(){ //обработчик внешнего прерывания,
counts++; //где идёт подсчёт импульсов за отрезок LOG_PERIOD
}
void setup(){ //Предварительные настройки
counts = 0; //обнулить счётчик импульсов
cpm = 0; //обнулить CPM
multiplier = MAX_PERIOD / LOG_PERIOD; //расчёт множителя для перевода импульсов в CPM
Serial.begin(9600); //скорость порта 9600
pinMode(2, INPUT); //вывод 2 сделать входным
digitalWrite(2, HIGH); //включить подтяжку на выводе 2
attachInterrupt(0, tube_impulse, FALLING); //внешнее прерывание на выводе 2 при смене уровня с 1 на 0
}
void loop(){ //Цикл
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > LOG_PERIOD){ //если разность переменных больше LOG_PERIOD, то выводим CPM в порт
previousMillis = currentMillis;
cpm = counts * multiplier; //CPM = количество импульсов * множитель
Serial.print(cpm); //Отправить в порт рассчитанный CPM для Radiation Logger
Serial.write(' '); //Отправить пробел для разделения величин
counts = 0; //Сбросить счётчик импульсов
}
}
Немного пояснений по величинам и данным в скетче
Нормы естественного радиационного фона:
нормальный — 0.1-0.2 мкЗв/ч
допустимый — 0.2-0.6 мкЗв/ч
повышенный — 0.6-1.2 мкЗв/ч
С модуля по последовательному порту через Arduimo в компьютер будут отправляться импульсы — CPM (количество распадов в минуту), на основе которых в программе Radiation Logger будут формироваться логи и выстраиваться графики.
Число 0.0057 — это коэффициент для трубки СБМ-20, необходимый для того, чтобы CPM перевести в мкЗв/час.
MAX_PERIOD 60000 — этот время в миллисекундах, актуальное для подсчёта CPM.
LOG_PERIOD 15000 — время обновления результатов подсчёта CPM, т.е. не обязательно ждать минуту, когда можно подсчитать распады/мин например за 15 секунд, а результат умножить на частное MAX_PERIOD 60000/LOG_PERIOD 15000 (60сек / 15сек). Однако, чем меньше время измерения, тем выше погрешность (ниже я это покажу). Для уменьшения погрешности замеры нужно производить дольше, желательно 1мин, а результаты сгладить, используя скользящую среднюю. В LOG_PERIOD можно задать другие промежутки вывода результатов подсчёта, например 20000 или 30000.
Закрываем Arduino IDE и запускаем Radiation Logger. На виду три табло с показаниями в мкЗв/ч (англ: uSv/h) и десятитысячными долями после точки:
Current Radiaton Level — текущий уровень радиации
Average Radiation Level — средний уровень радиации за последнюю минуту
Absorbed Value — поглощённая доза
Имеются опции и настройки:
— логирование измерений в файл (а также построение графика по логам)
— логирование измерений на сервисы в Xively и Radmon
— Alert Threshold — порог тревоги
— Коэффициент Conversion Factor для перевода CPM в мкЗв/ч (uSv/h)
В пункте меню File -> Settings надо выбрать порт, к которому подключено Arduino с модулем, протестировать подключения, сохранить. После чего нажать на кнопку Start Log и данные будут поступать и логироваться, а табло соотвественно начнут выдавать показания.
Далее приведу скриншоты с графиками при разном времени обновления результатов измерения: 15c, 30c, 60c. Во всех трёх случаях измерение производил в течении 1 часа. На графиках вы увидете «пилу» в нижней части — измерение фона и явно высокую точку подъёма — в этот момент я подносил к датчику те самые чешские бусы. Сам же датчие всегда лежал в одном и том же месте.
15 секунд — очень сильный разброс судя по нижней пиле: 0-0.5мкЗв
30 секунд — разброс уменьшился
60 секунд — здесь разброс ещё меньше
Как я уже и говорил, если добавить скользящую среднюю, то показания будут более сглаженными.
[НАВЕРХ]
Вывод показаний в монитор порта Arduino IDE под WINDOWS (через Arduino)
Такой вариант использования тоже можно продемонстрировать.
#include <SPI.h>
#define LOG_PERIOD 30000 //период вывода CPM в миллисекундах, рекомендуется 15000-60000
#define MAX_PERIOD 60000 //маскимальный период мониторинга
#define CONV_FACTOR 0.0057 //коэффициент для трубки СБМ-20, для перевода в мкЗв/час
unsigned long counts; //переменная для записи количества импульсов с трубки
unsigned long cpm; //переменная для CPM (количество распадов минуту)
unsigned int multiplier; //переменная для подсчёта CPM
unsigned long previousMillis; //переменная для записи времени
float mkzvHours = 0.0; // мкЗв/ч
void tube_impulse(){ //обработчик внешнего прерывания,
counts++; //где идёт подсчёт импульсов за отрезок LOG_PERIOD
}
void setup(){ //Предварительные настройки
counts = 0; //обнулить счётчик импульсов
cpm = 0; //обнулить CPM
multiplier = MAX_PERIOD / LOG_PERIOD; //расчёт множителя для перевода импульсов в CPM
Serial.begin(9600); //скорость порта 9600
pinMode(2, INPUT); //вывод 2 сделать входным
digitalWrite(2, HIGH); //включить подтяжку на выводе 2
attachInterrupt(0, tube_impulse, FALLING); //внешнее прерывание на выводе 2 при смене уровня с 1 на 0
}
void loop(){ //Цикл
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > LOG_PERIOD){ //если разность переменных больше LOG_PERIOD, то выводим CPM в порт
previousMillis = currentMillis;
cpm = counts * multiplier; //CPM = количество импульсов * множитель
mkzvHours = cpm * CONV_FACTOR; //перевод CPM в мкЗв/час
Serial.print("CPM: ");
Serial.print(cpm); // Вывод CPM в монитор порта
Serial.print(" | ");
Serial.print(mkzvHours); // Вывод дозы в мкЗв в монитор порта
Serial.print(" uSv/h");
Serial.print("rn");
counts = 0; //Сбросить счётчик импульсов
}
}
Разбег показаний:
15 сек — 0.23 мкЗв/ч
30 сек — 0.09 мкЗв/ч
60 сек — 0.06 мкЗв/ч
[НАВЕРХ]
Вывод показаний на дисплей Nokia 5110 (через Arduino)
Наверняка многие уже задумались об использовании счётчика Гейгера в портативном варианте и с выводом данных на дисплей. В моём случае это будет дисплей Nokia 5110.
Перед тем, как использовать нижеприведённую программу, скачайте библиотеку для работы с этими дисплеями: LCD5110_Basic.h, — содержимое поместите по пути Arduino/Libraries.
#include <SPI.h>
#include <LCD5110_Basic.h> //Базовая библиотека для работы с LCD5110
#define LOG_PERIOD 15000 //период вывода CPM в миллисекундах, рекомендуется 15000-60000
#define MAX_PERIOD 60000 //маскимальный период мониторинга
#define CONV_FACTOR 0.0057 //коэффициент для трубки СБМ-20, для перевода в мкЗв/час
// Назначение выводов (SCK, MOSI, DC, RST, CS)
LCD5110 myGLCD(3,4,5,6,7); // порты в Ардуино для подключения LCD5110
// Шрифты
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];
unsigned long counts; //переменная для записи количества импульсов с трубки
unsigned long cpm; //переменная для CPM (количество распадов минуту)
unsigned int multiplier; //переменная для подсчёта CPM
unsigned long previousMillis; //переменная для записи времени
unsigned long currentMillis; //переменная, засекающая мс
float mkzvHours = 0.0; // мкЗв/ч
void tube_impulse(){ //обработчик внешнего прерывания,
counts++; //где идёт подсчёт импульсов за отрезок LOG_PERIOD
}
void setup(){ //Предварительные настройки
counts = 0; //обнулить счётчик импульсов
cpm = 0; //обнулить CPM
multiplier = MAX_PERIOD / LOG_PERIOD; //расчёт множителя для перевода импульсов в CPM
Serial.begin(9600); //скорость порта 9600
pinMode(2, INPUT); //вывод 2 сделать входным
digitalWrite(2, HIGH); //включить подтяжку на выводе 2
myGLCD.InitLCD(65); //задать контрастность LCD5110
myGLCD.clrScr(); //очистить дисплей
myGLCD.setFont(SmallFont); //использовать мелкий шрифт
myGLCD.print("test example", CENTER, 8); //вывести надпись на 2-й строке
myGLCD.print("GEIGER COUNTER", CENTER, 24); //вывести надпись на 4-й строке
delay(2000); //пауза 2 сек
myGLCD.clrScr(); //очистить дисплей
myGLCD.print("Counting...", CENTER, 24); //вывести в центре надпись "идёт подсчёт"
attachInterrupt(0, tube_impulse, FALLING); //внешнее прерывание на выводе 2 при смене уровня с 1 на 0
}
void loop(){ //Цикл
currentMillis = millis();
if(currentMillis - previousMillis > LOG_PERIOD){ //если разность переменных больше LOG_PERIOD, то выводим CPM в порт
previousMillis = currentMillis;
cpm = counts * multiplier; //CPM = количество импульсов * множитель
mkzvHours = cpm * CONV_FACTOR; //перевод CPM в мкЗв/час
myGLCD.clrScr();
myGLCD.setFont(SmallFont); //использовать мелкий шрифт
myGLCD.print("uSv", RIGHT, 32); //вывести ед.измерения млЗв/ч на 5-й строке справа
if (cpm > 99){ //если CPM > 99,
myGLCD.print("CPM", RIGHT, 8); //то ед.измерения CPM сдвинуть к правому краю
}
else{ //в остальных случаях
myGLCD.print("CPM", CENTER, 8); //ед.измерения CPM будет в центре
}
myGLCD.setFont(MediumNumbers); //использовать средний шрифт
myGLCD.printNumI(cpm, LEFT, 0); //вывести величину CPM слева
myGLCD.setFont(BigNumbers); //использовать крупный шрифт
myGLCD.printNumF(float(mkzvHours), 2, LEFT, 20); //вывести величину мкЗв/ч слева
counts = 0; //Сбросить счётчик импульсов
}
}
Правильная распиновка подключения для этого скетча. Впрочем, при желании вы их можете изменить.
/* ПОДКЛЮЧЕНИЕ ДЛЯ Nokia_5110_Basic.h
ПРИ ПОСЛЕДОВАТЕЛЬНОСТИ:
LCD5110 myGLCD(3,4,5,6,7);
CLK (SCK) -> 3
DIN (MOSI) -> 4
DC -> 5
RST -> 6
CE (CS) -> 7
*/
Я уже всё подключил, скетч загрузил. Питание подал, и пошли замеры.
Демонстрационное видео смотрите в конце обзора.
[НАВЕРХ]
Подключение к смартфону через 3.5мм аудиоразъём
В модуле есть 4-контактный аудиоразъём 3.5мм для подключения к такому же аудиоразъёму смартфона посредством TRRS-кабеля:
Поскольку у меня такого кабеля нет, то я спаял его сам. Но стоит отметить, что Android устройства в этом плане капризны — на многих устройствах при подключении такого кабеля на верхней статусной панели отображается пиктограмма наушников, а нужно, чтобы была пиктограмма наушников с микрофоном, так как сигнал с модуля будем принимать именно по микрофонной линии. С iOS-устройствами в этом плане, как я понял, — обстоят проще. Стандарт распиновки разъёма у модуля — CTIA, т.е. крайний контакт не «земля», а микрофонная линия, поэтому аудиоразъём в смартфоне тоже должен быть CTIA-стандарта:
Приложение для iOS-устройств называется Geiger Bot, которое также можно найти в AppStore. Но поскольку у меня нет «яблочного» девайса, проверю работу под Android. Рекомендуемое разработчиком приложение под эту систему — GeigerCounter (можно скачать с этой страницы). Я его скачал и установил. В программе отображаются только количество импульсов CPM, что не очень удобно. Из возможностей можно задавать пороги, отправлять данные на сервер с актуальными координатами, которые отображаются здесь же. Эту программу я нахожу не очень удобной.
Про работу с программой Atom Simple, доступной в PlayMarket, производитель ничего не сообщал, однако я решил попробовать, благо здесь используется тот же принцип считывания данных по микрофонной линни. Работает. Но лично по мне удобнее было бы использовать программу, где можно самому производить тонкие настройки по типу трубок и сглаживанию величин.
[НАВЕРХ]
Видеоприложения к обзору
Работа от ААА батарейки через повышающий преобразователь NCP1402
Работа от солнечных панелек и искусственного света
Работа в связке с Arduino и выводом данных на дисплей LCD5110
[НАВЕРХ]
Итоговая сводка
Планы.
Простор для разработки огромен и эта широта выбора немного сбивает с толку, но сперва нужно разработать компактный корпус и распечатать его за 3D принтере. Тем временем поиграться с алгоритмами усреднения значений, добавить разные режимы замеров и обеспечить удобный для глаз вывод показаний на дисплее. Разумеется, задействовать режимы энергосбережения. Я экспериментировал с Atmega168 и мне пока удалось добиться 25мкА токопотребления в режиме PowerDown. На этом скорее всего и остановлюсь, так как всё равно дисплей Nokia 5110 — самый потребляемый элемент в сборке, чуть более 200мкА, без подстветки. Если сейчас появились более энергоэффективные дисплеи для работы с AVR, то будет любопытно узнать про такие из комментариев:)
Про варианты чтения данных.
Как сообщает разработчик, аудиоразъём платы модуля посылает довольно длинный фиксированный импульс — 1мс, поэтому такой способ подключения подойдёт только для измерения фона и источников с невысоким уровнем излучения. Поэтому для высокой скорости измерения он рекомендует использовать Arduino, так как контакт INT имеет длительность прерывания (1-0-1) — 10мкс.
По питанию.
У каждого рассмотренного мною способа есть свои достоинства и недостатки, но я лично вижу один неоспоримый плюс — широту выбора различных источников запитки модуля, на любой вкус.
Выводы.
Соглашусь, что для полноты картины не хватает эталонного источника, однако за его отсутствием измерения пришлось производить «как есть». Тем не менне работоспособность была успешно проверена. Можно посетовать на чувствительность СБМ-20, которая раза в 3 ниже, чем например у Бета-2, но и цена вопроса по поводу СБМ-20 — доступная. Для бытовых нужд такой вариант вполне годится. Что касается впечатлений в целом, то их накопилось масса, потому что вижу много сценариев применения, между которыми легко даже запутаться:) Для меня это была весьма интересная находка.
Надеюсь, материал оказался интересен и полезен.
[НАВЕРХ]