199

Счетчик Гейгера для Arduino

Привет всем ардуинщикам и пикабушникам.


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


Посмотрел на одном из тематических форумов и на ютубе как автор сделал с нуля счетчик на ардуино нано вроде, то есть плату по типу той, что я купил, но полностью спаял сам, в общем то там есть и схемы и код и видео, всё достаточно подробно, но он использует в своей схеме трубки СБМ20, которые оказалось достаточно сложно найти в спб, но возможно, стоят они около 250-500 р. за штуку, но как советует автор лучше брать сразу несколько, т.к. могут попасться и нерабочие и фонящие, в общем прикинул я и решил пока заказать готовую плату и не заморачиваться, плата шла уже с трубкой. Маркировка трубки J350Br, при этом поддерживает и СБМ20 как заявляют китайцы, есть второе посадочное место под СБМ20 (она подлиннее), хотя если не ошибаюсь по спецификации СБМ20 работает от большего напряжения, чем выдает китайский девайс (в документации 380-450В).


Заказал значит данную плату, пока ждал попутно купил в спб дисплей nokia 5110 и arduino mimi pro специально под сборку счетчика (благо есть один хороший магазинчик и не пришлось ждать чудес от почты россии) и начал постепенную сборку. По цене немного, около 300 рублей.


Собственно общий вид данного девайса:

Кстати очень заботливые китайцы хорошо упаковали посылку, чтобы не разбилась трубка, бонусом шло оргстекло, слот для батареек и USB кабель питания, со штекером как у обычного Arduino uno, стоимость около 2500р с доставкой.


Перепаял выходы для подключения к arduino (на фото GND, 5V, VIN) на обратную сторону, чтобы приколхозить уже спаянную мной mini pro с дисплеем, и припаял одно к другому. Подключение простое - выход GND к GND Arduino, если быть точным то просто к минусу дисплея, 5V к 5V соответственно, также от дисплея, т.к. так ближе и без проводов получилось, а VIN к D2 arduino проводком. Дисплей подключен к D3, D4, D5, D6, D7, к 5v и GND, на тему подключения данного дисплея полно инфы, многократно дублировать думаю не имеет смысла.


Получилось вот так:

На плате имеется: выключатель, разъем питания в виде круглого штекера, как я писал выше, колодка для подключения отсека с батарейками (3 пальчиковых последовательно) ну или аккума 4В, я так понял работает от 3.3v до 5v, индикатор работы в виде красного диода, индикатор попадания частицы в трубку в виде второго красного диода, бузер, переменный резистор и пара перемычек для калибровки (описание калибровки есть в прилагаемой документации).


Соединение всего вместе:

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


Ну и фотки первых запусков и работы в сборе:

В принципе и так устраивает, нужно дошаманить точность замеров, не смог только разобраться с float, т.к. не яжпрограммист, в кратце суть такая: плата замеряет в фон в CPM (counts per minute), чтобы перевести в милизиверты для данной трубки в документации указан коэффициент 151, т.е. чтобы получить милизиверты, нужно CPM разделить на 151. Естественно CPM был задан в int, после замены на float стал показывать 2 знака до и 2 знака после запятой, но как видно на первой фотке, в некоторых случаях округляет, т.е. микрорентгены показывает 7,95, а милизиверты 0,08, хотя просто умножает на 100 (в коде можно посмотреть), вот этот момент я бы попросил Вас помочь разобрать. Собственно за этим и добавил мКр, чтобы показывало поточнее.


Всем спасибо, отвечу на вопросы, приму советы и замечения =) Всем бобра!



Ссылка на код:

https://gist.github.com/anonymous/2c0814fdb82f5e8bc516285a7d...

Arduino & Pi

1.5K постов20.9K подписчик

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

22
Автор поста оценил этот комментарий

А девайс для измерения паров ртути вы закрафтить не можете случайно?) Сейчас актуально на Пикабу знаете ли.

раскрыть ветку (1)
17
Автор поста оценил этот комментарий

Сделать думаю не смогу, но в стены могу вмонтировать)))

показать ответы
7
Автор поста оценил этот комментарий

Ртуть??)

раскрыть ветку (1)
8
Автор поста оценил этот комментарий

Радий подойдет? :D

показать ответы
2
Автор поста оценил этот комментарий

Возможно вы просто не в курсе) на всякий случай http://pikabu.ru/story/nashli_rtut_v_otverstiyakh_stenyi_cha...

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

читал с утра, продолжение еще не видел просто, я поэтому и написал, что в стены могу вмонтировать датчики))

показать ответы
2
Автор поста оценил этот комментарий

Arduino mimi pro - это так мимимишно.)

раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Именно, на чипе котик нарисован)) а так mini pro* очепятка...
1
Автор поста оценил этот комментарий

кстати говоря, возможно это происходит из-за того, что Вы используете float, а также неявное преобразование типов.

cpm = counts * multiplier;

MSVh = cpm/151;

Т.к. Си очень требовательный ко всему такому, советую попробовать разные варианты.

https://foxford.ru/wiki/informatika/yavnoe-i-neyavnoe-preobrazovanie-tipov-v-c

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Всем спасибо за советы, самым правильном оказалось поправить строки

display.println(MSVh, 4);

display.println(MR, 2);


результат на фото, осталось проверить как будет показывать большие числа, может наползти на текст или сдвинуть

Иллюстрация к комментарию
4
Автор поста оценил этот комментарий
раз китай то али.
Вот ссылочка https://ru.aliexpress.com/wholesale?ltype=wholesale&d=y&...
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

да я вроде в тексте упоминал, что с али)) все верно это именно они, если конкретней то вот у этого китайца


https://ru.aliexpress.com/item/Portable-Handle-Geiger-Counte...

0
Автор поста оценил этот комментарий
Друзья, товарищи, перерыл инфу сам. Искал. Но я начинающий. Можете пожалуйста посоветовать хорошую, расписанную статью по созданию чпу из ардуинки, если вас не затруднит :с
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

могу, сам чпу собираю, может начну писать посты скоро, пока не все комплектующие есть


http://pikabu.ru/story/arduino_cnc_shield_ot_protoneer_42518...

показать ответы
7
DELETED
Автор поста оценил этот комментарий
Так в чем в итоге вопрос? Почему 0.08 при умножении на 100 становится 7.95?
Потому что данные на дисплее(0.08) при выводе округляются, но само значение в переменной хранится примерно как 0.0795 и при выводе не изменяется.
Поскольку вывести это невозможно данные для вывода округляются.
Собственно не пойму в чем именно вопрос
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Да, вопрос как сделать, чтоб больше знаков после запятой выводил)
Просто если поднесу источник, то думаю, что начнет показывать ересь, еще не проверял.
показать ответы
1
Верь мне, я инженер.
Автор поста оценил этот комментарий

Самодельная плата для ардуино? О_о Находи китайцев и начинай производство. Ждём серию на али)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

не понял коммента, поясните плиз :D

0
Автор поста оценил этот комментарий

Можно с Вами связаться? У меня есть несколько вопросов по данной плате.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

можно, почта в самом нижнем коменте

0
Автор поста оценил этот комментарий

Добрый день. Решил собирать многоканальный счетчик Гейгера для лабораторных исследований)) Крайне заинтересовался вашей сборкой. Сделал свою тестовую версию на базе вашего кода. Но у меня задача посчитать не Зиверты/Рентгены, а количество срабатываний трубки. И вот при считывании этого начинается какая-то дичь... Ибо просто вывод cpm за 10-15 сек. несколько периодов выдает нормальные значения, потом несколько периодов откровенную дичь, потом может опять выдать нормальные значения. Чтоб справиться с этой проблемой хочу брать сигнал непосредственно с трубки после каждого её срабатывания. Но! Китайцы никак не смогли дать мне даташиты и прочую документацию. Если у вас есть схема платы или ещё что-то по плате пришлите пожалуйста, буду очень благодарен. Или как нам с вами можно связаться? Я бы у вас проконсультировался)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

все есть, напишите на почту yand-ex@ya.ru скину в ответ

0
Автор поста оценил этот комментарий

А нормальный это какой?)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

прибор похож на дозиметр "эколог", а так точно не могу сказать, не мой мопед был

показать ответы
1
Автор поста оценил этот комментарий

А сколько максимум намеряли им? На Али есть готовый дозиметр/радиомер с такой же трубкой, у него предел 10 миллирентген

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

ну он рисовал 233, на нормальном приборе вроде было 120 (23 и 12 миллирентген соответственно)

показать ответы
0
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

0
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

показать ответы
1
Автор поста оценил этот комментарий

здравствуйте. скиньте пожалуйста первоначальный код который шел вместе с счетчиком т.к при покупке мне его не дали

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

/*Serial Communication for Radiation Detector Arduino Compatible DIY Kit ver 2.01 or higher

* http://radiohobbystore.com/radiation-detector-geiger-counter...

* Allow to connect the kit to computer and use the kit with Radiation Logger PC software

* http://radiohobbystore.com/radiation-logger/

* This Arduino sketch written by Alex Boguslavsky RH Electronics; mail: support@radiohobbystore.com

* CPM counting algorithm is very simple, it just collect GM Tube events during presettable log period.

* For radiation monitoring station it's recommended to use 30-60 seconds logging period. Feel free to modify

* or add functions to this sketch. This Arduino software is an example only for education purpose without any

* warranty for precision radiation measurements. You are fully responsible for your safety in high

* radiation area!!

* --------------------------------------------------------------------------------------

* WHAT IS CPM?

* CPM (or counts per minute) is events quantity from Geiger Tube you get during one minute. Usually it used to

* calculate a radiation level. Different GM Tubes has different quantity of CPM for background. Some tubes can produce

* about 10-50 CPM for normal background, other GM Tube models produce 50-100 CPM or 0-5 CPM for same radiation level.

* Please refer your GM Tube datasheet for more information. Just for reference here, SBM-20 can generate

* about 10-50 CPM for normal background.

* --------------------------------------------------------------------------------------

* HOW TO CONNECT GEIGER KIT?

* The kit 3 wires that should be connected to Arduino UNO board: 5V, GND and INT. PullUp resistor is included on

* kit PCB. Connect INT wire to Digital Pin#2 (INT0), 5V to 5V, GND to GND. Then connect the Arduino with

* USB cable to the computer and upload this sketch.

*/


#include <SPI.h>

#define LOG_PERIOD 15000 //Logging period in milliseconds, recommended value 15000-60000.

#define MAX_PERIOD 60000 //Maximum logging period without modifying this sketch


unsigned long counts; //variable for GM Tube events

unsigned long cpm; //variable for CPM

unsigned int multiplier; //variable for calculation CPM in this sketch

unsigned long previousMillis; //variable for time measurement


void tube_impulse(){ //subprocedure for capturing events from Geiger Kit

counts++;

}


void setup(){ //setup subprocedure

counts = 0;

cpm = 0;

multiplier = MAX_PERIOD / LOG_PERIOD; //calculating multiplier, depend on your log period

Serial.begin(9600);

attachInterrupt(0, tube_impulse, FALLING); //define external interrupts


}


void loop(){ //main cycle

unsigned long currentMillis = millis();

if(currentMillis - previousMillis > LOG_PERIOD){

previousMillis = currentMillis;

cpm = counts * multiplier;


Serial.print(cpm);

counts = 0;

}


}

показать ответы
0
Автор поста оценил этот комментарий
Спасибо большое!!! Похоже коэффициент 151 только для трубки m4011(( на другие трубки надо расчитывать эксперементально((
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

там еще 151 это для минуты взято, у меня он замеряет 15 или 10 секунд вроде, соответственно там 151/15 или 151/10


там выше у человека была плата другой ревизии с СБМ20, может он в курсе

@webrusik, вот он!

0
Автор поста оценил этот комментарий

Буду очень признателен!

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Вот из документации приложенной к плате, т.е. трубка замеряет CPM (количество в минуту), чтобы перевести в микрозиверты в час, нужно домножить на 151, видимо значение определено эксперементально

Иллюстрация к комментарию
показать ответы
1
Автор поста оценил этот комментарий

Здравствуйте! Статья интересная. Можно ли уточнить, что за коэффициент 151 указан в документации сбм 20? Этот коэффициент справедлив для любых сбм?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

для трубок указывается, где-то в документации была формула откуда он берется, попробую поискать

показать ответы
0
Автор поста оценил этот комментарий
А есть ссылка на эиу штуку ? Заранее спасибо
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Собраны DIY счетчик Гейгера комплект Детектор ядерного излучения бета гамма построить излучения станции мониторинга

http://s.aliexpress.com/miYRzmUR?fromSns=Copy to Clipboard


ключевое слово ''гейгера'' в поиске на али

1
Автор поста оценил этот комментарий
Можно подключать к андроид или ios устройству aux проводом и через приложение мерить уровень радиации.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

спасибо, не знал =)

1
Автор поста оценил этот комментарий

Извиняюсь, что сразу не ответил. Плата высылалась автором. На али - прошлая ревизия платы.

Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Не подскажешь кстати зачем выход под 3.5? В документации не нашел про него ничего.
показать ответы
7
DELETED
Автор поста оценил этот комментарий
Так в чем в итоге вопрос? Почему 0.08 при умножении на 100 становится 7.95?
Потому что данные на дисплее(0.08) при выводе округляются, но само значение в переменной хранится примерно как 0.0795 и при выводе не изменяется.
Поскольку вывести это невозможно данные для вывода округляются.
Собственно не пойму в чем именно вопрос
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
В дополнение замеры с компаса Адрианова, максимум выдавал около 950мкр/час по замеру за 15 секунд, но это вплотную к трубке, с расстояния около 10см, уже 100мкр, а с 20см уже в пределах фона. Ну и показание пофикшены и не уехал текст.
Иллюстрация к комментарию
показать ответы
0
Автор поста оценил этот комментарий
Сам ты совок. Но пост хороший. Вкл-выкл пищалки можно?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Нет, можно просто вкл-выкл) но можно сделать
1
Автор поста оценил этот комментарий
Есть такая же плата новой ревизии. Под сбм-20 или любой другой. Могу сделать фото, кто захочет повторить.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
так сюда тоже сбм20 встает, просто я спаял прищепку эту, мешала. А чем отличается, кинь фотку
показать ответы
1
Автор поста оценил этот комментарий

Хехехе :) Ссылочка на мой пост :)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

у меня кстати как-то неверно дублирует ось, ставлю перемычки ввожу перемещение по x 10 условных миллиметров 2 двигателя вращаются по часовой стрелке, ставлю x -10, опять вращаются по часовой стрелке, с одной перемычкой оба вращаются в противоположные стороны =( в общем не хватает времени со всеми этими ардуино разобраться =))

0
Автор поста оценил этот комментарий
arduino-diy.com/arduino-cnc-stanok-iz-dereva
А как это вариант?
Спасибо большое. Подписался. Жду :)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

неплохо, тут сообщество чпушников есть, там из дсп вообще один собирал, на подобии такого

0
DELETED
Автор поста оценил этот комментарий

переменная float хранит ~7 знаков. Поскольку это переменная с плавающей точкой то количество десятичных знаков перед запятой влияет на количество после запятой. Но суммарно они составят 7 знаков.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

тогда должно по идее сработать опциональный параметр этот

1
Автор поста оценил этот комментарий

Небольшое дополнение, данная функция работает только для double, поэтому советую не использовать явное преобразование и сразу задать тип исходной переменной в double.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

ок, покавыряю, если не сработает .println(msvh, 4), может тут всё проще :))

показать ответы
0
Автор поста оценил этот комментарий

Те переменная типа float в принципе имеет только 2 знака после запятой?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

как писали выше, хранит и оперирует она большем кол-вом (не знаю сколько, может до 8 знаков), но выводит два


вот в работе девайса считывает он попадания частиц в трубку за интервал времени (CPM), в данном случае за 15 секунд и умножает на кэф 4 (60сек/15сек=4) для подсчета попаданий в минуту. Изначально CPM был int и имел значения при работе 4, 8, 12, 16, 20 и так далее, что не позволяло вычислить милизиверты, т.к. int/151=0, после перевода на float 4.00, 8.00, 12.00 и т.д.

1
Автор поста оценил этот комментарий

если я не ошибаюсь, код на C.

eps - точность, которая нужна, например, 0.01, тогда будет выведено 2 знака.

val - значение, которое нужно вывести

void PrintRes(double eps, double val){

for (int n = 0; floor( eps ) <= 0; eps *= 10, n++ );

printf( "%.*f\n", n, val ); //можно написать display.printf()

}

https://ideone.com/kwntXW - пример.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

вот это вот похоже на правду, спасибо, попробую вечерком

показать ответы
2
Автор поста оценил этот комментарий

Ardiuno shell должен понять такой формат.

Вот тут написано более подробно:

http://arduino.ru/Reference/Serial/Print


Правда, там, походу ошибка в том плане что Println все таки возвращает значение, просто считывать его необязательно.

Как я понимаю, в строке 50 можно попробовать вот это:

display.println(MSVh,4);
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

да, тут println возвращает значения


если будет display.println(msvh, 4) думаю ничего не поменяется, так как переменная имеет формат x.xx

показать ответы
3
Автор поста оценил этот комментарий

Для вывода большего количества знаков после запятой должно помочь:
.println(1.23456, 4)
Проверить сейчас негде, но мануалы говорят должно работать

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Странная строка, но попробую скомпилить
показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества