Официально думаю не пройдет, это вобще не прибор, нет методики поверки. За "шоколадку" наверно дадут возможность померить эталонное. Но неудобный вариант. Хороше бы иметь некую штучку, чтоб фонила раз в 10-20 выше нормы. Для оперативной проверки.
Забабахал поиск мифического "плато". В скетч докинул ежеминутное понижение напряжениия на 5В и вывод насчитаного за эту минуту. Чтото похожее на участок нечувствительности к напряжению питания лежит в диапазоне 295-370В. Зря только лез на 400В получается.
1. Убрать из скетча информацию о светодиодном баре (световая индикация различного фонового уровня) - led bar, так чтобы скетч сохранил работоспособность;
2. Подредактировать скетч, чтобы показания шли после минуты от включения ( сейчас показывает текущее показание, только на второй минуте, на первой пишет нули).
Буду Вам очень благодарен. Помогите, пожалуйста сапожнику... Ну не шарю я в этих делах... Спасибо.
Собственно скетч:
/*
* Geiger Counter - Radiation Sensor Board
*
* Copyright (C) Libelium Comunicaciones Distribuidas S.L.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* a
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.
* Version: 3.0
* Design: David Gascón
* Implementation: Marcos Yarza
*/
// include the library code:
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal_I2C lcd(0x27,16,2);
// Threshold values for the led bar
#define TH1 45
#define TH2 95
#define TH3 200
#define TH4 400
#define TH5 600
// Conversion factor - CPM to uSV/h
#define CONV_FACTOR 0.00812
// Variables
int ledArray [] = {10,11,12,13,9};
int geiger_input = 2;
long count = 0;
long countPerMinute = 0;
long timePrevious = 0;
long timePreviousMeassure = 0;
long time = 0;
long countPrevious = 0;
float radiationValue = 0.0;
static unsigned long G; // для цифрового фильтра
long D_rs =0; // В этой переменной накапливаем счётчик для циф. обработки
float D_rsf = 0.0; // переменная для расчётной средней
void countPulse(){
detachInterrupt(0);
count++;
while(digitalRead(2)==0){
}
attachInterrupt(0,countPulse,FALLING);
}
void ledVar(int value){
if (value > 0){
for(int i=0;i<=value;i++){
digitalWrite(ledArray[i],HIGH);
}
for(int i=5;i>value;i--){
digitalWrite(ledArray[i],LOW);
}
}
else {
for(int i=5;i>=0;i--){
digitalWrite(ledArray[i],LOW);
}
}
}
void setup(){
pinMode(geiger_input, INPUT);
digitalWrite(geiger_input,HIGH);
for (int i=0;i<5;i++){
pinMode(ledArray[i],OUTPUT);
}
Serial.begin(19200);
//set up the LCD\'s number of columns and rows:
// lcd.begin(16,2);
lcd.init();
lcd.backlight();// Включаем подсветку дисплея
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CPM=");
lcd.setCursor(4,0);
lcd.print(6*count);
lcd.setCursor(0,1);
lcd.print(radiationValue);
attachInterrupt(0,countPulse,FALLING);
}
void loop(){
if (millis()-timePreviousMeassure >=60000){
countPerMinute = count;
radiationValue = countPerMinute * CONV_FACTOR;
timePreviousMeassure = millis();
count = 0; // счетчик обнулим тут, для правильности счёта, вывод на экран ведь время занимает
// вычисляем среднее с предыдущим средним )))
if (D_rsf >0) {
D_rsf =(D_rsf+radiationValue)/2;}
else { D_rsf=radiationValue;}
// и выводим в порт и на дисплей
Serial.print("cpm = ");
Serial.print(countPerMinute,DEC);
Serial.print(" - ");
Serial.print("uSv/h = ");
Serial.println(radiationValue,4);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CPM=");
lcd.setCursor(4,0);
lcd.print(countPerMinute);
lcd.setCursor(8,0);
lcd.print("uSv/h");
lcd.setCursor(0,1);
lcd.print(radiationValue,4);
lcd.setCursor(8,1);
lcd.print(D_rsf,4);
//led var setting
if(countPerMinute <= TH1) ledVar(0);
if((countPerMinute <= TH2)&&(countPerMinute>TH1)) ledVar(1);
if((countPerMinute <= TH3)&&(countPerMinute>TH2)) ledVar(2);
if((countPerMinute <= TH4)&&(countPerMinute>TH3)) ledVar(3);
if((countPerMinute <= TH5)&&(countPerMinute>TH4)) ledVar(4);
if(countPerMinute>TH5) ledVar(5);
}
}
По п.1 , совсем просто убрать функцию ledVar, стр63-77, попробовать скомпилировать, оно споткнется на вызовах убраной функции - удаляем строки где спотыкается, но замечаем что в этих строках есть типа подобное TH1. Их тоже желательно убрать везьде чтоб не загромождали код.
2. Тут сложно, вопрос принципиальный. Пока не насчитаем, то показывать в общем нечего :( Насчитать можна быстрей чем за минуту если мерить не кол-во импульсов за отрезок времени, а время между импульсами с последующей матобработкой. Но точность первых показаний будет низкой и переделка будет большой. Не советую заниматся.
Оптимальным видится вариант делать первый замер не 60 сек а к примеру 10, тогда первые не точные выведем через 10 сек, а после каждого импульса уточнять. Но ваш скетч тогда надо прилично перетряхнуть.
/*
* Geiger Counter - Radiation Sensor Board
*
* Copyright (C) Libelium Comunicaciones Distribuidas S.L.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* a
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.
* Version: 3.0
* Design: David Gascón
* Implementation: Marcos Yarza
*/
// include the library code:
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal_I2C lcd(0x27,16,2);
// Conversion factor - CPM to uSV/h
#define CONV_FACTOR 0.00812
// Variables
int ledArray [] = {10,11,12,13,9};
int geiger_input = 2;
long count = 0;
long countPerMinute = 0;
long timePrevious = 0;
long timePreviousMeassure = 0;
long time = 0;
long countPrevious = 0;
float radiationValue = 0.0;
static unsigned long G; // для цифрового фильтра
long D_rs =0; // В этой переменной накапливаем счётчик для циф. обработки
float D_rsf = 0.0; // переменная для расчётной средней
void countPulse(){
detachInterrupt(0);
count++;
while(digitalRead(2)==0){
}
attachInterrupt(0,countPulse,FALLING);
}
void setup(){
pinMode(geiger_input, INPUT);
digitalWrite(geiger_input,HIGH);
for (int i=0;i<5;i++){
pinMode(ledArray[i],OUTPUT);
}
Serial.begin(19200);
//set up the LCD\'s number of columns and rows:
// lcd.begin(16,2);
lcd.init();
lcd.backlight();// Включаем подсветку дисплея
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CPM=");
lcd.setCursor(4,0);
lcd.print(6*count);
lcd.setCursor(0,1);
lcd.print(radiationValue);
attachInterrupt(0,countPulse,FALLING);
}
void loop(){
if (millis()-timePreviousMeassure >=60000){
countPerMinute = count;
radiationValue = countPerMinute * CONV_FACTOR;
timePreviousMeassure = millis();
count = 0; // счетчик обнулим тут, для правильности счёта, вывод на экран ведь время занимает
// вычисляем среднее с предыдущим средним )))
if (D_rsf >0) {
D_rsf =(D_rsf+radiationValue)/2;}
else { D_rsf=radiationValue;}
// и выводим в порт и на дисплей
Serial.print("cpm = ");
Serial.print(countPerMinute,DEC);
Serial.print(" - ");
Serial.print("uSv/h = ");
Serial.println(radiationValue,4);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CPM=");
lcd.setCursor(4,0);
lcd.print(countPerMinute);
lcd.setCursor(8,0);
lcd.print("uSv/h");
lcd.setCursor(0,1);
lcd.print(radiationValue,4);
lcd.setCursor(8,1);
lcd.print(D_rsf,4);
}
}
Почему то не показывает данные, все время пишет 0,0000....
Может строка 086 в скетче с поста 108 виновата?...
Нет, count = 0; там верно. Это раз в минуту мы по значению накопленому в count расчитываем показания для вывода radiationValue, сразу перед обнулением, а сам count обнуляем для накопления за следующую минуту. Накапливается в стр.50 в прерывании. Все это осталось с о старого скетча без изменений и должно работать, если в старом работало.
Получается что прерывание не отрабатывает.
Вы после скетча их п.108 снова заливали п.106 для проверки аппаратной части? Провода, контакты, раземы имеют свойство тихо незаметно отваливатся, потому полезно иметь под рукой заведомо исправный скетч для проверки аппаратной части и заливать его когда чудеса начинаются .
Еще ledArray лишний в сетапе стр.59-61 и само обявление. Нет светодиодов - нечего и пины под них держать.
#include <util/delay.h>
#define PIN_DRV A3
#define PIN_INT A2
#define Vhigh 350 //требуемое напряжение, В
#define Kadc 627 //разряд АЦП с учетом делителя, формат 6.10, В
#define TimeUnSensitiv 300 //время нечувствительности
//набор заклинания прерываний
#ifndef cbi
#define cbi(sfr, bit) (sfr &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
// регулировка высокого напряжения
int PulseT; //время выдачи последнего импульса подкачки
#define VALUE_ADC(V) (int)(V*(long)1024/Kadc) //из напряжения в разряды АЦП
#define Vh(N) (int)(N*(long)Kadc/1024) //напряжение по данным АЦП
//счет импульсов с датчика по прерыванию
volatile unsigned int BipCount; //счет импульсов наростающим итогом
volatile unsigned long BipPause; //время омежду последними импульсами
volatile unsigned long BipTime; //системное время начала последнего импульса
volatile int Zvon=0; //счетчик кол-ва звонов
volatile int TimeZvonEnd; //время завершения звона в мксек от начала импульса
volatile byte Flgs;
#define FLAG_DISABLE_INT _BV(0) //заменяет запрет прерывания при отладке
#define FLAG_DBG _BV(1) //вывод отладочной инфы
#define FLAG_WAIT_PULSE _BV(2) //находимся в ожидании импульса с датчика
#define FLAG_LED_ON _BV(3) //включен светодиод индикации импульса
#define FLAG_DBG_V _BV(4) //вывод отладочной инфы по питанию
#define FLAG_START _BV(5) //режим запуска
#define FLAG_FIND_PLATO _BV(6) //поиск плато
ISR (INT0_vect)
{
if(Flgs&FLAG_DISABLE_INT)
{
Zvon++;
TimeZvonEnd = micros();
return;
}
if(BipPause) return; //?????
BipCount++;
unsigned long int t = micros();
BipPause = t-BipTime;
BipTime = t;
if(Flgs&FLAG_DBG)
{
Flgs|=FLAG_DISABLE_INT;
Zvon=0;
}
else
cbi(EIMSK,INT0); //запрещаем себя
TCNT1 =-(TimeUnSensitiv>>2);
sbi(TIFR1,TOV1); //сброс флага срабатывания таймера для формирования интервала
Flgs&=~FLAG_WAIT_PULSE;
}
//таймер формирования времени нечувствительности
ISR(TIMER1_OVF_vect)
{
TCNT1 =-100;
EIFR|=_BV(INTF0);//сбрасываем пропущеные прерывания
if(Flgs&FLAG_DBG)
Flgs&=~FLAG_DISABLE_INT;
sbi(EIMSK,INT0); //разрешаем прерывание по импульсу
Flgs|=FLAG_WAIT_PULSE;
}
void TIMER1_INIT()
{
TCCR1A = 0;
TCCR1B = 0;
sbi(TIFR1,TOV1);
TCCR1B = (0<<CS12)|(1<<CS11)|(1<<CS10); //настройка прескаллера дл¤ формировани¤ тиков по 4мксек при кварце 16ћ√ц
TCNT1 =-100;
sbi(TIMSK1,TOIE1);
}
unsigned int Vhigh_=Vhigh; //уставка напряжения
unsigned int timeMin; //время начала минутного интервала мсек
unsigned int CountMin;
void setup()
{
Serial.begin(115200);
Serial.println("Geiger+");
digitalWrite(PIN_DRV, LOW);
pinMode(PIN_DRV, OUTPUT);
pinMode(13, OUTPUT);
analogReference(INTERNAL);
PulseT=micros();
timeMin=millis();
// PIN_INTERRUPT(PIN_INT,true);
// PINS_GROUP_INTERRUPT_ENABLE(PIN_INT);
Flgs|= FLAG_START;
EICRA=_BV(ISC01); //The falling edge of INT0 generates an interrupt request.
TIMER1_INIT();
}
byte OutCount;
int Vmin;
int Vmax;
long Vsr;
int Nsr;
int PeriodVpulse; //время между импульсами подкачки мксек
int BipPulse; //системное время зажигания светодиода мсек
//фильтры для периода импульсов
unsigned long Pfiltr;
unsigned long BipPause4;
void OutV()
{
Serial.print("Vmin=");
Serial.print(Vh(Vmin));
Serial.print("V; Vmax=");
Serial.print(Vh(Vmax));
Serial.print("V; Vs=");
Serial.print(Vh(Vsr/Nsr));
Serial.print("V; Tvpulse=");
Serial.print(PeriodVpulse);
Serial.println("us");
}
void InitFindPlato()
{
Vhigh_=420;
}
void loop()
{
int V=analogRead(A1);
int t=micros();
long TT=millis();
unsigned int T=TT;
if(Flgs&FLAG_START)
{
if(T-timeMin>500)
{
OutV();
BipCount=0;
CountMin=0;
timeMin=T;
Flgs&=~FLAG_START;
}
}
else
{
if(T-timeMin>60000)
{
if(Flgs&FLAG_FIND_PLATO)
{
Serial.print(Vhigh_);
Serial.print("; ");
Serial.print(CountMin);
Serial.print("; ");
Serial.println(BipCount);
BipCount=0;
CountMin=0;
if(Vhigh_>200)
Vhigh_=Vhigh_-5;
else
{
Vhigh_=Vhigh;
Flgs&=~FLAG_FIND_PLATO;
}
}
else
{
Serial.print(CountMin);
Serial.println(" pulse/min");
}
CountMin=0;
timeMin=T;
}
}
if(Serial.available())
{
byte op=0;
switch(toupper(Serial.read()))
{
case 'V': op=FLAG_DBG_V;break;
case 'P': op=FLAG_FIND_PLATO;break;
case 'D': op=FLAG_DBG;break;
}
Flgs^=op;
}
//сбор статистики по высоковольтному питанию
if(V<Vmin) Vmin=V;
if(V>Vmax) Vmax=V;
Vsr+=V;
Nsr++;
if(t-PulseT>700)
{
if(V<VALUE_ADC(Vhigh_))
{
PeriodVpulse=t-PulseT;
PulseT=t;
digitalWrite(PIN_DRV, HIGH);_delay_us(20);digitalWrite(PIN_DRV, LOW);
}
}
else
{
if(!OutCount++)
{
if(Flgs&FLAG_DBG_V)
{
OutV();
}
Vmin=1023;
Vmax=0;
Vsr=0;
Nsr=0;
}
}
if(BipPause &&(Flgs&FLAG_WAIT_PULSE))
{
if(BipCount>7)
{
Pfiltr+=BipPause-(Pfiltr>>6);
Serial.print((60000000.)/(Pfiltr>>6));
}
else
{
BipPause4+=BipPause;
Serial.print((BipCount*60000000.)/(BipPause4));
static long TimePulse7[7];
TimePulse7[BipCount-1]=BipPause;
if(BipCount==7)
{
Pfiltr=(BipPause4/7)<<6;
}
}
Serial.println(" pulse/min");
if(Flgs&FLAG_DBG)
{
Serial.print("Zvon=");
Serial.print(Zvon);
if(Zvon)
{
Serial.print("; Tmax=");
Serial.print(TimeZvonEnd-(int)BipTime);
Serial.print("usec");
}
Serial.println();
}
BipPause=0;
digitalWrite(13,HIGH);
BipPulse=T;
Flgs|=FLAG_LED_ON;
CountMin++; //инкремент минутного счетчика
}
else if(Flgs&FLAG_LED_ON)
{
if(T-BipPulse>100)
{
digitalWrite(13, LOW);
Flgs&=~FLAG_LED_ON;
}
}
}
Умеет:
1.управлять мосфетом с целью поддержания высокого напряжения не ниже заданого в коде.
2. определять время между срабатываниями гейгера и расчитывать по нему число импульсов в минуту. Для превых 7 импульсов - как среднее, для остальных через фильтр инициализированый средним по первым 7-и.
3. подсчитывать и выводить реальное кол-во импульсов за секунду.
4. защищатся от "звона", см. ниже.
5. принимать и исполнять с консоли 3 команды для отладки и проверки работы: "V" - вывод статистики по напряжению (мин, мах, средний и период подкачки) "P" - поиск плато ( измеряет число импульсов в мин при напряжениях от 420 до 200В с шагом 5В) "D"- вывод информации о звоне.
Подробней по пунктам. п.1 преобразователь - блеск, он может много большее, 400В получается при скважности около 30, значить есть куда его еще повышать. Марка трансформатора видна на фотке. Он от компютерного БП, там много вариантов, но этот стоит в схеме, похожей на
Три диода FR154 из этой схемы показали себя не хуже fr157 что я впаял. Электролит по входу быстрый и обязателен, его впаял какой был, возможно не оптимальный. Мосфет дергается из лупа, что изначально предполагалось так, поскольку таймер трогать не предполагалось. Теперь таймер задействован и поддержку напряжения логично на нем делать. Может доделаю. п.2 Для быстрого старта предпочтительней мерить время первых нескольких (у меня 7-и) импульсов. Не скажу что идеально, но лучше. Будет время и желание - еще поиграюсь с этим. п.4 Когда сделал измерение по времени и подсчетом импульсов обнаружилось бешеное расхождение. Причем показания по времени между импульсами были правдоподобны. Причина - при одном срабатывании датчика генерится пачка из десятков импульсов, с периодом от нескольких мксек. Прерывание как может их считает, а на время между срабатываниями этот процесс практически не влияет. Эти пачки и называю "звон". Сделал защиту по времени, для чего и задействовал таймер.
При тех номиналах, что на схеме, длительность "звона" не превышает 300мкс. По докам (см. например здесь - http://www.radiokot.ru/forum/viewtopic.php?f=25&t=58813&start=60 много интересных цифр) датчик имеет время нечувствительности 190мкс, в общем вполне нормально согласуются, думаю условия когда импульсы будут ити чаще 300мкс рассматривать не стоит ;)
Задумался о влиянии элементов цепи на этот процесс. Уменьшение номиналов C3 и R3 сокращает длительность, что в общем не удивительно. При 680пФ и 470КОм - до 700мксек, при 340пФ и 100КОм несколько десятков. Но по R3 есть ограничение - ток через датчик не более 0,4мА (это правда для модели СБМ-20-1, но думаю СБМ-20 не далеко). При импульсах по доке от 50В до 90В(это уже по измерению) получаем номинал более 220КОм. Кроме того этот ток сокращает срок службы датчика. Потому R3 сокращать не хочется. А C3 можна сокращать пока устойчиво срабатывает, но ниже номинала у меня не было, а без С3 вобще работать не хочет.
Думаю что проблема борьбы со "звоном" будет чем далее тем актуальнее. Очень много упоминаний есть что у людей датчики вот так звенят и набрасывают импульсы. Датчики используем старые состояние их непонятное, бог весть сколько они отработали и насчитали перед тем как к нам попасть. По паспорту до 10^9 импульсов. Потом органические добавки в газах предназначеные для ускорения гашения разряда выгорают и звон растет.
/*
* Geiger Counter - Radiation Sensor Board
*
* Copyright (C) Libelium Comunicaciones Distribuidas S.L.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* a
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.
* Version: 3.0
* Design: David Gascón
* Implementation: Marcos Yarza
*/
// include the library code:
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal_I2C lcd(0x27,16,2);
// Conversion factor - CPM to uSV/h
#define CONV_FACTOR 0.00812
// Variables
int geiger_input = 2;
long count = 0;
long countPerMinute = 0;
long timePrevious = 0;
long timePreviousMeassure = 0;
long time = 0;
long countPrevious = 0;
float radiationValue = 0.0;
static unsigned long G; // для цифрового фильтра
long D_rs =0; // В этой переменной накапливаем счётчик для циф. обработки
float D_rsf = 0.0; // переменная для расчётной средней
void countPulse(){
detachInterrupt(0);
count++;
while(digitalRead(2)==0){
}
attachInterrupt(0,countPulse,FALLING);
}
void setup(){
pinMode(geiger_input, INPUT);
digitalWrite(geiger_input,HIGH);
Serial.begin(19200);
//set up the LCD\'s number of columns and rows:
// lcd.begin(16,2);
lcd.init();
lcd.backlight();// Включаем подсветку дисплея
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CPM=");
lcd.setCursor(4,0);
lcd.print(6*count);
lcd.setCursor(0,1);
lcd.print(radiationValue);
attachInterrupt(0,countPulse,FALLING);
}
void loop(){
if (millis()-timePreviousMeassure >=60000){
countPerMinute = count;
radiationValue = countPerMinute * CONV_FACTOR;
timePreviousMeassure = millis();
count = 0; // счетчик обнулим тут, для правильности счёта, вывод на экран ведь время занимает
// вычисляем среднее с предыдущим средним )))
if (D_rsf >0) {
D_rsf =(D_rsf+radiationValue)/2;}
else { D_rsf=radiationValue;}
// и выводим в порт и на дисплей
Serial.print("cpm = ");
Serial.print(countPerMinute,DEC);
Serial.print(" - ");
Serial.print("uSv/h = ");
Serial.println(radiationValue,4);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CPM=");
lcd.setCursor(4,0);
lcd.print(countPerMinute);
lcd.setCursor(8,0);
lcd.print("uSv/h");
lcd.setCursor(0,1);
lcd.print(radiationValue,4);
lcd.setCursor(8,1);
lcd.print(D_rsf,4);
}
}
Но всеравно только нули отображает, при этом скетч из поста 106 работает...
В схеме заменил С3 на 100пФ. "Звон" при нем (типичныое значение до 40мксек с редкими значениями до 150мксек) не превышает паспортного времени нечувствительности. На этом доработкам схемы капец.
Графически получаемое выглядит так
По оси х-номер импульса, а по у-количество импульсов в минуту. Синяя линия - результат с фильтра по значениям времени между импульсами. Коричневые квадраты - ежеминутные результаты подсчета количества импульсов за минуту.
Хороше видно что фон прилично изменяется, за десятки минут нарастает и спадает, колбасясь между 20 и 30. Странный результат, пойду шапку из фольги делать ;)
Хороше видно что фон прилично изменяется, за десятки минут нарастает и спадает, колбасясь между 20 и 30. Странный результат, пойду шапку из фольги делать ;)
Вообще-то никаких признаков, что фон меняется, на графиках не обнаружил.
Результат совершенно ожидаемый, что именно Вы в нем увидели странного?
Хороше видно что фон прилично изменяется, за десятки минут нарастает и спадает, колбасясь между 20 и 30. Странный результат, пойду шапку из фольги делать ;)
Вообще-то никаких признаков, что фон меняется, на графиках не обнаружил.
Результат совершенно ожидаемый, что именно Вы в нем увидели странного?
Ну как же. Над соответствующими участками, зеленый спад затем красный рост.
Может не совсем монотонно, но тренд явно виден. И ладно бы флуктуации на пару минут, так нет жеж 10-15 минут растет или падает.
Посмотрел. Тоже волна гуляет. А вобще график не понравился, там похоже сбор инфы и её сохранение несинхронны, сплошные горизонтальные участочки, это когда одно измерение дважды подряд на графике отображаются. Увы, эти народные мониторинги часто с лажами.
ПС. Попер читать про космические лучи и мюонные ливни.
Можете еще глянуть данные с автоматизированной системы контроля радиационной обстановки (АСКРО) предприятий Росатома, там профессиональное оборудование, http://www.russianatom.ru/ (необходим флеш-плеер в браузере).
Может не совсем монотонно, но тренд явно виден. И ладно бы флуктуации на пару минут, так нет жеж 10-15 минут растет или падает.
Нету там никакого тренда. Вы данные неправильно отображаете, поэтому у Вас складывается иллюзия, что якобы есть какой-то тренд. Рисуйте не только среднюю величину, но и доверительный интервал, тогда сразу будет видно, что отклонения от среднего не выходят за рамки интервала.
Вам бы что-то по теории измерений почитать, но вот что - я посоветовать не могу, давно это было.
Здесь обычная теория не канает, она для нормального (гаусовского) распределения а здесь равномерное. Данные не кучкуются возле среднего. Тут обработка другая, надо матожидание считать и не так как всегда (три сигмы я еще отдаленно помню). Потому все непревычно. Я открыл теорию, глянул и закрыл )) Может потом какнить доберусь до теоремы Пуассона.
Но почитав про космические лучи, так похоже таки могут давать неравномерность. Нашел какуюто лабораторку для будущих ученых, они массивами счетчиков гейгера эти самые лучи как раз и ловят.
Единственное, что здесь не совсем обычно, - это то, что по сути полезного сигнала нет, а все, что приходит - это шум. Вот и надо вычислять среднюю интенсивность этого шума, тогда как при обычных измерениях нужно шум по возможности убрать, выделив только полезный сигнал. Существующий математический аппарат вполне подходит и для этого случая. Просто надо понимат, что именно мы измеряем.
Грубая оценка: если Вы проводите измерение в течение минуты, то при 25 импульсах среднее отклонение порядка 5, а максимальное - около 15, что мы и наблюдаем на графике.
В общем, график вполне соответствует физической природе сигнала и способу его измерения.
///Единственное, что здесь не совсем обычно, - это то, что по сути полезного сигнала нет, а все, что приходит - это шум. Вот и надо вычислять среднюю интенсивность этого шума, тогда как при обычных измерениях нужно шум по возможности убрать, выделив только полезный сигнал.
Ну гдето так. Все перевернуто.
//Существующий математический аппарат вполне подходит и для этого случая. Просто надо понимат, что именно мы измеряем.
Ага, только матаппарат "иной", я не "открыл америку", понимаю, но сам факт, что все не так как в обычной инженерной практике, он и привлекает и не радует одновременно ;)
//В общем, график вполне соответствует физической природе сигнала и способу его измерения.
Так я ж не спорю что моя марахайка как бы вроде работает я всецело за ;))
Вопросы вобщем прикладные:
1. Поиск "плато" - т.е. зоны напряжений питания в которой чувствительность почти не зависит от этого самого напряжения питания. Делаю так, в цикле прогоняю питание от 420В до 250В с шагом 5В через каждую минуту (т.е. полчаса дето гоняется). Было бы равномерный фон (ну более-менее) результат плато находилось бы легко и без проблем, а с такими вариациями ни в чем нельзя быть увереным.
2. Хотел бы сделать заодно и генератор случайных чисел на этом гейгере. Причем знаю, такое делают.. Так какие же они случайные?! По крайней мере на то, что монетка или кубик дает не похоже.
3. Хочется по первым 5-10 импульсам быстренько получить хоть приближенный результат измерения (чтоб инициализировать фильтр для последующего усреднения и уточнения). Оно как бы да, но не всегда, в 10-20% (на глаз пишу) получается сильно не так. Подозреваю Пуанкаре с своей теоремой тут поможет.
2. Хотел бы сделать заодно и генератор случайных чисел на этом гейгере. Причем знаю, такое делают.. Так какие же они случайные?! По крайней мере на то, что монетка или кубик дает не похоже.
Чисто аппаратный ДСЧ имеет столько недостатков, что, пожалуй, единственное разумное его использование - инициализация ДПСЧ.
Помнится, несколькими постами ранее Вы утверждали, что датчик дает не Гаусса, а равномерное распределение. Так вот, монетка и кубик дают как раз равномерное. Если не похоже на датчик, значит, о равномерном распределении у последнего говорить не приходится.
Цитата:
3. Хочется по первым 5-10 импульсам быстренько получить хоть приближенный результат измерения (чтоб инициализировать фильтр для последующего усреднения и уточнения). Оно как бы да, но не всегда, в 10-20% (на глаз пишу) получается сильно не так. Подозреваю Пуанкаре с своей теоремой тут поможет.
У Вас цифры не согласуются. 5-10 импульсов явно недостаточно для достижения 10-20% точности. Хотите точность 10% - будьте любезны подождать порядка 400 импульсов. Для 20% достаточно 100.
Ага. Но одно преимущество. Он дает действительно случайные, а не ПСЧ. Переодическая (с случайным периодом) инициализация ими ДПСЧ как раз и есть хороший подход.
andriano пишет:
Помнится, несколькими постами ранее Вы утверждали, что датчик дает не Гаусса, а равномерное распределение. Так вот, монетка и кубик дают как раз равномерное. Если не похоже на датчик, значит, о равномерном распределении у последнего говорить не приходится.
Так то, что радиоактивный распад дает равномерное распределение - научный факт, утверждаемый в сотне источников. В том числе и при изучении этого самого равномерного распределения как его пример приводят именно распад атомов. Но на практике, как видите не все просто. Вероятно в свинцовой камере с одним изотопом процесс выглядел бы строго как в теории, но у естественного радиационного фона много составляющих, и не все так просты.
andriano пишет:
У Вас цифры не согласуются. 5-10 импульсов явно недостаточно для достижения 10-20% точности. Хотите точность 10% - будьте любезны подождать порядка 400 импульсов. Для 20% достаточно 100.
Первое измерение активности радиоактивного препарата в течение 1 секунды дало значение активности источника A = 84 отсчетов/сек. Рассчитанное стандартное отклонение ... (формулы не скопировались:(( просто корень из 84) ... Относительная ошибка в этом случае составляет ... корень из 84 делить на 84 =10%
Попытка применить почерпнутые знания для данных на графике приводят к следующему.
За минуту можна получить такие значения
N=16 среднее отклонение 4 а относительная ошибка 25%
а можна такие
N=25 среднее отклонение 5 а относительная ошибка 20%
или такие
N=36 среднее отклонение 6 а относительная ошибка 17%
Но если 16+-25% и 25+-20% хотябы пересекаются на границе ошибки, то 16+-25% и 36+-17% - вобще совершенно разные значения.
И как с этим быть? Я шото воще не понимаю... Но надежда теплится на том что кроме числа импульсов в минуту есть у меня большее - значения времени между отдельными импульсами. Возможно матобработка их чегото даст.
Но окончательно добивает следующая неопределенность. Вот получили мы к примеру N=36. А что это означает? Если фон неизменный и стабильный около N=25 то N=36 - просто заметное отклонение от среднего, ну так звезды стали, отклонилось изредка, как например три раза подряд монеткой орел выпал. Редко но бывает. Надо просто больше измерений и все устаканится к среднему.
А если фон таки меняется, пульсирует, нарастает и спадает - то N=36 просто нормальный результат для какого-то момента времени, нормальная точка на графике. Позже все может изменится но вот сейчас именно так))) Т.е. как мгновенное значение тока.
Чем больше думаю над этим, тем больше понимаю шо не понимаю.
Тут главный вопрос - что вы хотите получить? Проверку чего? Например продукты из зоны Чернобыля фонят на 20 -30 % выше чем фон. Если сделать датчик с такой погрешностью, то отличить от нормальных будет очень сложно, а они, попав в организм, будут непрерывно интегрировать накопление суммарной дозы.
Как у любой случайной величины точность измеренного значения увеличивается при увеличении количества наблюдений. Об этом уже писали. Поэтому путь один - увеличение времени замера и соотношение его с чувствительностью датчика.
Тут главный вопрос - что вы хотите получить? Проверку чего?
Ежели вопрос ко мне, то попробую ответить. Если мы подымимся по теме к началу, то идея вобще чего либо возникла по ходу из факта что все необходимое (гейгер, трансформатор и ардуино, даже стеклотекстолит для платы) был, только высоковольтные кондеры докупил, но то копейки, уже все есть и чего бы при этом не спаять их вместе. Тем более что дозиметр - штука в общем то не первой необходимости, но если чего случится и вызовет повышение фона - то лучше иметь уже готовый, т.к. времени разбиратся и паять уже не будет. Вобщем типичный случай, когда "соломку подстелил", а пригодится или нет - ХЗ, дай бог нет. Во вторых опыт показывает что быть увереным в работе чего либо можна только при условии что оно регулярно эксплуатируется, так приходим к мысли о стационарном постоянно работающем устройстве. Идею ежедневно ходить по магазинам в поиске самого не радиоактивного картофеля оставим параноикам. Я над таким могу только ржать. К тому же стационарное устройство удачно сочитается с существующем сервером на оранжпи, мониторящим все чего можна. Чего он собственно прямо сейчас и делает, рисуя такие графики.
Обратите внимание на принципиальное различие графиков температуры, качества воздуха и радиации.
Ну а имея такую штуку в наличии, чего бы не использовать её по полной. Например для генератора случайных чисел. И расположить гейгера возле входных дверей, пасть "нюхает" что в дом занесли, например кулек с едой (да и вобще,все что в дом заносится, включая обувь). Его можна просто поставить возле датчика на пару минут, пока руки мою. Я раз в пару дней могу глянуть график, может чего и увижу. А если матаппарат получится победить и скорость и надежность получится достаточной - ну может пусть даже пискнет.
К тому же разработаная штука не ресурсоемка и легко совмещаема с другими задачами, т.е. контроллер освещения в прихожей заодно потянет и этот код.
Так в общем. Без сверхзадачи, свободный полет.
ПС. Я в курсе что продукты могут светить альфой и об этом гейгер не скажет. Жаль, нет идеала в природе.
Обратите внимание на принципиальное различие графиков температуры, качества воздуха и радиации.
О природе различия я уже писал выше.
А насчет принципиальности...
Как говорят, у слона есть крылья, но они равны нулю.
Так и здесь любая измеренная величина состоит из постояннй составляющей, трендов и шума. Так вот, радиация - это шум в чистом виде, тогда как другие величины несут в себе все три составляющие. Это как принципиальное различие или лишь количественное?
Считаем по 10 одноминутным интервалам для двух случаев: высокий (вблизи верхнего конеца левого зелено отрезка - тренда) и низкий (вблизи его нижнего конца )
Имп/мин
отклонение
кв.отклон.
откл.%
Имп/мин
отклонение
кв.отклон.
откл.%
19
8,5
72,25
30,90909
14
6,8
46,24
32,69231
27
0,5
0,25
1,818182
20
0,8
0,64
3,846154
40
-12,5
156,25
-45,4545
22
-1,2
1,44
-5,76923
29
-1,5
2,25
-5,45455
21
-0,2
0,04
-0,96154
26
1,5
2,25
5,454545
27
-6,2
38,44
-29,8077
28
-0,5
0,25
-1,81818
22
-1,2
1,44
-5,76923
30
-2,5
6,25
-9,09091
20
0,8
0,64
3,846154
23
4,5
20,25
16,36364
16
4,8
23,04
23,07692
29
-1,5
2,25
-5,45455
17
3,8
14,44
18,26923
24
3,5
12,25
12,72727
29
-8,2
67,24
-39,4231
сумма=
275
274,5
сумма=
208
193,6
среднее=
27,5
Дисперсия=
27,45
27,45
среднее=
20,8
Дисперсия=
19,36
19,36
СКО=
5,2392748
СКО=
4,4
станд. отклонение=
16,58312
3*СКО=
15,717824
станд. отклонение=
14,42221
3*СКО=
13,2
Дисперсия посчитана дважды для каждого случая: как учили и встроенной функцией екселя. Совпали.
Обратите внимание на огромную дисперсию она равна среднему. Это характерная черта равномерного распределения, потому считаем стандартное отклонение для равномерного.
И что имеем? Меряли по десять минут, в одном случае 27,5 в другом 20,8. Оба с огромными допусками. Фактически мусор. Для равномерного распределения варианты 275+-17 импульсов за 10 минут и 208+-15 импульсов за 10 минут куда точней. Но они не перекрываются!!
Если выглядит как утка, крякает как утка и плавает как утка то скорей всего утка!
Если распределение равномерное (дисперсия равна среднему) и в первые 10минут имеем 275+-17 импульсов а во вторые 208+-15 то фон таки менялся. Он не постоянен и получается что вычислить средний многочасовой по десятку другому импульсов не получится не из за сильного разброса отсчетов, а из-за того что фон в момент измерения может быть заметно отклонен от среднего многочасового. Получается что если "зашаманить" некую обработку десятка импульсов, допустим верно работающую, и включить её в первый момент когда за десять минут 275 импульсов, то она и должна показать около 27,5+-1,7. И это верно, хотя от среднего многочасового и отличается.
От чего зависит радиоактивный фон? От характеристик вещества, фон от которого мы наблюдаем.
Если характерное время измерения (между измерениями) много меньше периода полураспада с одной стороны и перемещение как радиоактивных масс, так и измерительного прибота отсутствуют, значит фон не меняется.
Именно это утверждение и следует принять за исходную посылку.
Если же в результате наших измерений/умозаключений получается, что фон меняется, из этого с железобетонной неизбежностью следует, что мы допустили оштбку - либо в самих измерениях, либо в трактовке их результатов.
PS. Правда, следует иметь в виду, что а практике значительня часть радиоактивного фона своим происхождением обязана газообразным радиоактивным продуктам распада земных недр. Поэтому в значительной доле практически важных случаев считать радиоактивную массу неподвижной будет некорректно.
Неправильно это постоянно мерить радиацию. Ну меняется она. Над базой МЧС висит показометр и показывает. Каждый день проезжаю и вижу от 15 до 19. Было время когда у жены был бзик и она все продукты проверяла. Мы с ней пришли к алгоритму. Пару измерений "Мастером" посреди комнаты, пару измерений около продуктов и опять одно посреди комнаты. На всё уходит 5 минут. Если измерения в комнате не сильно различаются, а около продуктов выше, то повторить цикл и если второй раз выше, то продукты браковать.
А на счёт распределений, не верю я, что в мире есть что то отличное от гауса. Всё остальное это смесь гауссов разных процессов.
А на счёт распределений, не верю я, что в мире есть что то отличное от гауса. Всё остальное это смесь гауссов разных процессов.
Тут не предмет веры ))) Этому учат в вузах. Как счас помню, учили оба расппределения. Просто Гауса чаще встречается, а равномерное довольно редко.
Тезис "Неправильно это постоянно мерить радиацию." Не раскрыт ни разу. Чего это не правильно, на мировозрение плохо влияет? Или на эстетическое восприятие действительности ;)
Ну да, гаусс чаще. В том числе в пределе выборок радиоционного естественного фона. Поэтому делать вывод о типе распределения по коротким выборкам для него не корректно.
Если вам для души приятно видеть постоянно какой сейчас естественный фон - то пожалуйста. Я только хотел сказать, что в остальных случаях смысл имеет конкретное применение. Иначе просто висящий в одном месте датчик сможет уверенно зафиксировать пронесённую мимо радиоактивную вещь только если она будет иметь фон опасный для несущего.
Выборка не короткая, данных валом, кроме некоторых случаев (сразу после включения, поиск плато), где хочется по быстрому.
Ну чегож "пронесённую мимо "? Я ж писал, принес поставил постояло. Такой порядок и сейчас есть, только без датчика радиации. Пока куртку снял, кросовки скинул, руки помыл... Как раз пару минут для замера.
Камрады, всем добра! Тоже приобрел модуль с газоразрядной лампой J305ß, есть готовый код для неё? Под дисплей 1602. Чтоб каждую секунду уточнял примерное значение. Поделитесь кому не жалко.
Спасибо. Ну это я видел, меня интересует с уточнением каждую секунду. Я думал, что уже кто то сделал так. В этой ветке. Выше есть ссылка на самоделку, с видео, но там замарочено сильно, и экран другой и кнопки. А мне бы по проще хотелось.
Спасибо. Ну это я видел, меня интересует с уточнением каждую секунду. Я думал, что уже кто то сделал так. В этой ветке. Выше есть ссылка на самоделку, с видео, но там замарочено сильно, и экран другой и кнопки. А мне бы по проще хотелось.
Да переделать скетч из поста № 11 не проблема, просто будет тогда погоду в африке показывать...
Вообще, рекомендуемый период отсчета для замеров от 15 секунд до 60 секунд - Logging period in milliseconds, recommended value 15000-60000
Для ваших "хотелок" эта газоразрядная трубка + ардуино+ дисплей не подходят..
Где найти для отладки радиацию ближе чем в чернобыле?
Официально думаю не пройдет, это вобще не прибор, нет методики поверки. За "шоколадку" наверно дадут возможность померить эталонное. Но неудобный вариант. Хороше бы иметь некую штучку, чтоб фонила раз в 10-20 выше нормы. Для оперативной проверки.
Такие "штучки" нередко продаются в комплекте с дозиметрами - для проверки.
Надоел соплюшник с 400 вольтами. Перекинул все на плату.
Забабахал поиск мифического "плато". В скетч докинул ежеминутное понижение напряжениия на 5В и вывод насчитаного за эту минуту. Чтото похожее на участок нечувствительности к напряжению питания лежит в диапазоне 295-370В. Зря только лез на 400В получается.
Уважаемый, Logik!
Может Вы подскажите, как оптимизировать скетч:
1. Убрать из скетча информацию о светодиодном баре (световая индикация различного фонового уровня) - led bar, так чтобы скетч сохранил работоспособность;
2. Подредактировать скетч, чтобы показания шли после минуты от включения ( сейчас показывает текущее показание, только на второй минуте, на первой пишет нули).
Буду Вам очень благодарен. Помогите, пожалуйста сапожнику... Ну не шарю я в этих делах... Спасибо.
Собственно скетч:
Намекну.
По п.1 , совсем просто убрать функцию ledVar, стр63-77, попробовать скомпилировать, оно споткнется на вызовах убраной функции - удаляем строки где спотыкается, но замечаем что в этих строках есть типа подобное TH1. Их тоже желательно убрать везьде чтоб не загромождали код.
2. Тут сложно, вопрос принципиальный. Пока не насчитаем, то показывать в общем нечего :( Насчитать можна быстрей чем за минуту если мерить не кол-во импульсов за отрезок времени, а время между импульсами с последующей матобработкой. Но точность первых показаний будет низкой и переделка будет большой. Не советую заниматся.
Оптимальным видится вариант делать первый замер не 60 сек а к примеру 10, тогда первые не точные выведем через 10 сек, а после каждого импульса уточнять. Но ваш скетч тогда надо прилично перетряхнуть.
По п.1 пробовал такой скетч:
Почему то не показывает данные, все время пишет 0,0000....
Странно. Вроде верно сделали и не должно выводить 0. Загрузите старый чтоб, проверить аппаратную часть.
Не знаю, скетч с поста 106 работает (вывод показаний с 2-ой минуты от включения и далее через каждую минуту).
А скетч с поста 108 выдает только 0,0000 и далее через минуту видно что показание мигает, но остается таким же 0,0000...
Может строка 086 в скетче с поста 108 виновата?...
Может строка 086 в скетче с поста 108 виновата?...
Нет, count = 0; там верно. Это раз в минуту мы по значению накопленому в count расчитываем показания для вывода radiationValue, сразу перед обнулением, а сам count обнуляем для накопления за следующую минуту. Накапливается в стр.50 в прерывании. Все это осталось с о старого скетча без изменений и должно работать, если в старом работало.
Получается что прерывание не отрабатывает.
Вы после скетча их п.108 снова заливали п.106 для проверки аппаратной части? Провода, контакты, раземы имеют свойство тихо незаметно отваливатся, потому полезно иметь под рукой заведомо исправный скетч для проверки аппаратной части и заливать его когда чудеса начинаются .
Еще ledArray лишний в сетапе стр.59-61 и само обявление. Нет светодиодов - нечего и пины под них держать.
Наигрался с гейгером. Результаты.
Схема.
Код.
Умеет:
1.управлять мосфетом с целью поддержания высокого напряжения не ниже заданого в коде.
2. определять время между срабатываниями гейгера и расчитывать по нему число импульсов в минуту. Для превых 7 импульсов - как среднее, для остальных через фильтр инициализированый средним по первым 7-и.
3. подсчитывать и выводить реальное кол-во импульсов за секунду.
4. защищатся от "звона", см. ниже.
5. принимать и исполнять с консоли 3 команды для отладки и проверки работы: "V" - вывод статистики по напряжению (мин, мах, средний и период подкачки) "P" - поиск плато ( измеряет число импульсов в мин при напряжениях от 420 до 200В с шагом 5В) "D"- вывод информации о звоне.
Подробней по пунктам. п.1 преобразователь - блеск, он может много большее, 400В получается при скважности около 30, значить есть куда его еще повышать. Марка трансформатора видна на фотке. Он от компютерного БП, там много вариантов, но этот стоит в схеме, похожей на
Три диода FR154 из этой схемы показали себя не хуже fr157 что я впаял. Электролит по входу быстрый и обязателен, его впаял какой был, возможно не оптимальный. Мосфет дергается из лупа, что изначально предполагалось так, поскольку таймер трогать не предполагалось. Теперь таймер задействован и поддержку напряжения логично на нем делать. Может доделаю. п.2 Для быстрого старта предпочтительней мерить время первых нескольких (у меня 7-и) импульсов. Не скажу что идеально, но лучше. Будет время и желание - еще поиграюсь с этим. п.4 Когда сделал измерение по времени и подсчетом импульсов обнаружилось бешеное расхождение. Причем показания по времени между импульсами были правдоподобны. Причина - при одном срабатывании датчика генерится пачка из десятков импульсов, с периодом от нескольких мксек. Прерывание как может их считает, а на время между срабатываниями этот процесс практически не влияет. Эти пачки и называю "звон". Сделал защиту по времени, для чего и задействовал таймер.
При тех номиналах, что на схеме, длительность "звона" не превышает 300мкс. По докам (см. например здесь - http://www.radiokot.ru/forum/viewtopic.php?f=25&t=58813&start=60 много интересных цифр) датчик имеет время нечувствительности 190мкс, в общем вполне нормально согласуются, думаю условия когда импульсы будут ити чаще 300мкс рассматривать не стоит ;)
Задумался о влиянии элементов цепи на этот процесс. Уменьшение номиналов C3 и R3 сокращает длительность, что в общем не удивительно. При 680пФ и 470КОм - до 700мксек, при 340пФ и 100КОм несколько десятков. Но по R3 есть ограничение - ток через датчик не более 0,4мА (это правда для модели СБМ-20-1, но думаю СБМ-20 не далеко). При импульсах по доке от 50В до 90В(это уже по измерению) получаем номинал более 220КОм. Кроме того этот ток сокращает срок службы датчика. Потому R3 сокращать не хочется. А C3 можна сокращать пока устойчиво срабатывает, но ниже номинала у меня не было, а без С3 вобще работать не хочет.
Думаю что проблема борьбы со "звоном" будет чем далее тем актуальнее. Очень много упоминаний есть что у людей датчики вот так звенят и набрасывают импульсы. Датчики используем старые состояние их непонятное, бог весть сколько они отработали и насчитали перед тем как к нам попасть. По паспорту до 10^9 импульсов. Потом органические добавки в газах предназначеные для ускорения гашения разряда выгорают и звон растет.
Подредактировал скетч:
Но всеравно только нули отображает, при этом скетч из поста 106 работает...
Ну можете построчно менять 106 и проверять на какой строке перестанет работать.
Ссылка на архив (схема, мануалы, графики, скетч, калибровка и т.д.) для китайского гейгера с али-экспресс
http://my-files.ru/6rzzwz
Кстати, здесь можно глянуть показания с датчиков предприятий Росатома:
http://www.russianatom.ru/ (необходим флеш-плеер в браузере)
Ну можете построчно менять 106 и проверять на какой строке перестанет работать.
Не получается, начинаешь построчно удалять, выдает ошибки компиляции, до тех пор, пока не приведешь к скетчу с поста 108. Ну а он нули выдает...
В схеме заменил С3 на 100пФ. "Звон" при нем (типичныое значение до 40мксек с редкими значениями до 150мксек) не превышает паспортного времени нечувствительности. На этом доработкам схемы капец.
Графически получаемое выглядит так
По оси х-номер импульса, а по у-количество импульсов в минуту. Синяя линия - результат с фильтра по значениям времени между импульсами. Коричневые квадраты - ежеминутные результаты подсчета количества импульсов за минуту.
Хороше видно что фон прилично изменяется, за десятки минут нарастает и спадает, колбасясь между 20 и 30. Странный результат, пойду шапку из фольги делать ;)
Нормальный фон.
Среднее значение приблизительно = 26 срм.
26* 0,0057 = 0,15 мкЗв/ч.
For example, the conversion factor for the LDN-712 tube is 0.01 and for the SBM-20 is 0.0057.
https://www.cooking-hacks.com/documentation/tutorials/geiger-counter-radiation-sensor-board-arduino-raspberry-pi-tutorial/
Хороше видно что фон прилично изменяется, за десятки минут нарастает и спадает, колбасясь между 20 и 30. Странный результат, пойду шапку из фольги делать ;)
Вообще-то никаких признаков, что фон меняется, на графиках не обнаружил.
Результат совершенно ожидаемый, что именно Вы в нем увидели странного?
Хороше видно что фон прилично изменяется, за десятки минут нарастает и спадает, колбасясь между 20 и 30. Странный результат, пойду шапку из фольги делать ;)
Вообще-то никаких признаков, что фон меняется, на графиках не обнаружил.
Результат совершенно ожидаемый, что именно Вы в нем увидели странного?
Ну как же. Над соответствующими участками, зеленый спад затем красный рост.
Может не совсем монотонно, но тренд явно виден. И ладно бы флуктуации на пару минут, так нет жеж 10-15 минут растет или падает.
Вот здесь, к примеру, посмотрите на график радиационного фона любительской станции: https://narodmon.ru/866
Посмотрел. Тоже волна гуляет. А вобще график не понравился, там похоже сбор инфы и её сохранение несинхронны, сплошные горизонтальные участочки, это когда одно измерение дважды подряд на графике отображаются. Увы, эти народные мониторинги часто с лажами.
ПС. Попер читать про космические лучи и мюонные ливни.
Можете еще глянуть данные с автоматизированной системы контроля радиационной обстановки (АСКРО) предприятий Росатома, там профессиональное оборудование, http://www.russianatom.ru/ (необходим флеш-плеер в браузере).
АСКРО Томской области: http://askro.green.tsu.ru/
Может не совсем монотонно, но тренд явно виден. И ладно бы флуктуации на пару минут, так нет жеж 10-15 минут растет или падает.
Нету там никакого тренда. Вы данные неправильно отображаете, поэтому у Вас складывается иллюзия, что якобы есть какой-то тренд. Рисуйте не только среднюю величину, но и доверительный интервал, тогда сразу будет видно, что отклонения от среднего не выходят за рамки интервала.
Вам бы что-то по теории измерений почитать, но вот что - я посоветовать не могу, давно это было.
Здесь обычная теория не канает, она для нормального (гаусовского) распределения а здесь равномерное. Данные не кучкуются возле среднего. Тут обработка другая, надо матожидание считать и не так как всегда (три сигмы я еще отдаленно помню). Потому все непревычно. Я открыл теорию, глянул и закрыл )) Может потом какнить доберусь до теоремы Пуассона.
Но почитав про космические лучи, так похоже таки могут давать неравномерность. Нашел какуюто лабораторку для будущих ученых, они массивами счетчиков гейгера эти самые лучи как раз и ловят.
Единственное, что здесь не совсем обычно, - это то, что по сути полезного сигнала нет, а все, что приходит - это шум. Вот и надо вычислять среднюю интенсивность этого шума, тогда как при обычных измерениях нужно шум по возможности убрать, выделив только полезный сигнал. Существующий математический аппарат вполне подходит и для этого случая. Просто надо понимат, что именно мы измеряем.
Грубая оценка: если Вы проводите измерение в течение минуты, то при 25 импульсах среднее отклонение порядка 5, а максимальное - около 15, что мы и наблюдаем на графике.
В общем, график вполне соответствует физической природе сигнала и способу его измерения.
///Единственное, что здесь не совсем обычно, - это то, что по сути полезного сигнала нет, а все, что приходит - это шум. Вот и надо вычислять среднюю интенсивность этого шума, тогда как при обычных измерениях нужно шум по возможности убрать, выделив только полезный сигнал.
Ну гдето так. Все перевернуто.
//Существующий математический аппарат вполне подходит и для этого случая. Просто надо понимат, что именно мы измеряем.
Ага, только матаппарат "иной", я не "открыл америку", понимаю, но сам факт, что все не так как в обычной инженерной практике, он и привлекает и не радует одновременно ;)
//В общем, график вполне соответствует физической природе сигнала и способу его измерения.
Так я ж не спорю что моя марахайка как бы вроде работает я всецело за ;))
Вопросы вобщем прикладные:
1. Поиск "плато" - т.е. зоны напряжений питания в которой чувствительность почти не зависит от этого самого напряжения питания. Делаю так, в цикле прогоняю питание от 420В до 250В с шагом 5В через каждую минуту (т.е. полчаса дето гоняется). Было бы равномерный фон (ну более-менее) результат плато находилось бы легко и без проблем, а с такими вариациями ни в чем нельзя быть увереным.
2. Хотел бы сделать заодно и генератор случайных чисел на этом гейгере. Причем знаю, такое делают.. Так какие же они случайные?! По крайней мере на то, что монетка или кубик дает не похоже.
3. Хочется по первым 5-10 импульсам быстренько получить хоть приближенный результат измерения (чтоб инициализировать фильтр для последующего усреднения и уточнения). Оно как бы да, но не всегда, в 10-20% (на глаз пишу) получается сильно не так. Подозреваю Пуанкаре с своей теоремой тут поможет.
2. Хотел бы сделать заодно и генератор случайных чисел на этом гейгере. Причем знаю, такое делают.. Так какие же они случайные?! По крайней мере на то, что монетка или кубик дает не похоже.
Чисто аппаратный ДСЧ имеет столько недостатков, что, пожалуй, единственное разумное его использование - инициализация ДПСЧ.
Помнится, несколькими постами ранее Вы утверждали, что датчик дает не Гаусса, а равномерное распределение. Так вот, монетка и кубик дают как раз равномерное. Если не похоже на датчик, значит, о равномерном распределении у последнего говорить не приходится.
3. Хочется по первым 5-10 импульсам быстренько получить хоть приближенный результат измерения (чтоб инициализировать фильтр для последующего усреднения и уточнения). Оно как бы да, но не всегда, в 10-20% (на глаз пишу) получается сильно не так. Подозреваю Пуанкаре с своей теоремой тут поможет.
У Вас цифры не согласуются. 5-10 импульсов явно недостаточно для достижения 10-20% точности. Хотите точность 10% - будьте любезны подождать порядка 400 импульсов. Для 20% достаточно 100.
Помнится, несколькими постами ранее Вы утверждали, что датчик дает не Гаусса, а равномерное распределение. Так вот, монетка и кубик дают как раз равномерное. Если не похоже на датчик, значит, о равномерном распределении у последнего говорить не приходится.
Так то, что радиоактивный распад дает равномерное распределение - научный факт, утверждаемый в сотне источников. В том числе и при изучении этого самого равномерного распределения как его пример приводят именно распад атомов. Но на практике, как видите не все просто. Вероятно в свинцовой камере с одним изотопом процесс выглядел бы строго как в теории, но у естественного радиационного фона много составляющих, и не все так просты.
У Вас цифры не согласуются. 5-10 импульсов явно недостаточно для достижения 10-20% точности. Хотите точность 10% - будьте любезны подождать порядка 400 импульсов. Для 20% достаточно 100.
Утверждают что 10% получается быстрей
Первое измерение активности радиоактивного препарата в течение 1 секунды дало значение активности источника A = 84 отсчетов/сек. Рассчитанное стандартное отклонение ... (формулы не скопировались:(( просто корень из 84) ... Относительная ошибка в этом случае составляет ... корень из 84 делить на 84 =10%
ПС. Выше Пуанкаре с Пуассоном попутал.
Попытка применить почерпнутые знания для данных на графике приводят к следующему.
За минуту можна получить такие значения
N=16 среднее отклонение 4 а относительная ошибка 25%
а можна такие
N=25 среднее отклонение 5 а относительная ошибка 20%
или такие
N=36 среднее отклонение 6 а относительная ошибка 17%
Но если 16+-25% и 25+-20% хотябы пересекаются на границе ошибки, то 16+-25% и 36+-17% - вобще совершенно разные значения.
И как с этим быть? Я шото воще не понимаю... Но надежда теплится на том что кроме числа импульсов в минуту есть у меня большее - значения времени между отдельными импульсами. Возможно матобработка их чегото даст.
Но окончательно добивает следующая неопределенность. Вот получили мы к примеру N=36. А что это означает? Если фон неизменный и стабильный около N=25 то N=36 - просто заметное отклонение от среднего, ну так звезды стали, отклонилось изредка, как например три раза подряд монеткой орел выпал. Редко но бывает. Надо просто больше измерений и все устаканится к среднему.
А если фон таки меняется, пульсирует, нарастает и спадает - то N=36 просто нормальный результат для какого-то момента времени, нормальная точка на графике. Позже все может изменится но вот сейчас именно так))) Т.е. как мгновенное значение тока.
Чем больше думаю над этим, тем больше понимаю шо не понимаю.
Подскажите, какой коэффициент писать в строке
Conversion factor - CPM to uSV/h
#define CONV_FACTOR 0.00812
для трубки J305?
Без понятия. Я с J305 не знаком.
Подскажите, какой коэффициент писать в строке
Conversion factor - CPM to uSV/h
#define CONV_FACTOR 0.00812
для трубки J305?
Оставить без изменения, J305β=J305=j305βγ, т.е. это одна и таже газоразрядная лампа, для нее коэффициент для пересчета CONV_FACTOR 0.00812
https://www.cooking-hacks.com/documentation/tutorials/geiger-counter-rad...
Тут главный вопрос - что вы хотите получить? Проверку чего? Например продукты из зоны Чернобыля фонят на 20 -30 % выше чем фон. Если сделать датчик с такой погрешностью, то отличить от нормальных будет очень сложно, а они, попав в организм, будут непрерывно интегрировать накопление суммарной дозы.
Как у любой случайной величины точность измеренного значения увеличивается при увеличении количества наблюдений. Об этом уже писали. Поэтому путь один - увеличение времени замера и соотношение его с чувствительностью датчика.
Спасибо!
Тут главный вопрос - что вы хотите получить? Проверку чего?
Ежели вопрос ко мне, то попробую ответить. Если мы подымимся по теме к началу, то идея вобще чего либо возникла по ходу из факта что все необходимое (гейгер, трансформатор и ардуино, даже стеклотекстолит для платы) был, только высоковольтные кондеры докупил, но то копейки, уже все есть и чего бы при этом не спаять их вместе. Тем более что дозиметр - штука в общем то не первой необходимости, но если чего случится и вызовет повышение фона - то лучше иметь уже готовый, т.к. времени разбиратся и паять уже не будет. Вобщем типичный случай, когда "соломку подстелил", а пригодится или нет - ХЗ, дай бог нет. Во вторых опыт показывает что быть увереным в работе чего либо можна только при условии что оно регулярно эксплуатируется, так приходим к мысли о стационарном постоянно работающем устройстве. Идею ежедневно ходить по магазинам в поиске самого не радиоактивного картофеля оставим параноикам. Я над таким могу только ржать. К тому же стационарное устройство удачно сочитается с существующем сервером на оранжпи, мониторящим все чего можна. Чего он собственно прямо сейчас и делает, рисуя такие графики.
Обратите внимание на принципиальное различие графиков температуры, качества воздуха и радиации.
Ну а имея такую штуку в наличии, чего бы не использовать её по полной. Например для генератора случайных чисел. И расположить гейгера возле входных дверей, пасть "нюхает" что в дом занесли, например кулек с едой (да и вобще,все что в дом заносится, включая обувь). Его можна просто поставить возле датчика на пару минут, пока руки мою. Я раз в пару дней могу глянуть график, может чего и увижу. А если матаппарат получится победить и скорость и надежность получится достаточной - ну может пусть даже пискнет.
К тому же разработаная штука не ресурсоемка и легко совмещаема с другими задачами, т.е. контроллер освещения в прихожей заодно потянет и этот код.
Так в общем. Без сверхзадачи, свободный полет.
ПС. Я в курсе что продукты могут светить альфой и об этом гейгер не скажет. Жаль, нет идеала в природе.
Обратите внимание на принципиальное различие графиков температуры, качества воздуха и радиации.
О природе различия я уже писал выше.
А насчет принципиальности...
Как говорят, у слона есть крылья, но они равны нулю.
Так и здесь любая измеренная величина состоит из постояннй составляющей, трендов и шума. Так вот, радиация - это шум в чистом виде, тогда как другие величины несут в себе все три составляющие. Это как принципиальное различие или лишь количественное?
Ну что Вы там писаль?! Домыслы одни.
Считаем по 10 одноминутным интервалам для двух случаев: высокий (вблизи верхнего конеца левого зелено отрезка - тренда) и низкий (вблизи его нижнего конца )
Дисперсия посчитана дважды для каждого случая: как учили и встроенной функцией екселя. Совпали.
Обратите внимание на огромную дисперсию она равна среднему. Это характерная черта равномерного распределения, потому считаем стандартное отклонение для равномерного.
И что имеем? Меряли по десять минут, в одном случае 27,5 в другом 20,8. Оба с огромными допусками. Фактически мусор. Для равномерного распределения варианты 275+-17 импульсов за 10 минут и 208+-15 импульсов за 10 минут куда точней. Но они не перекрываются!!
Если выглядит как утка, крякает как утка и плавает как утка то скорей всего утка!
Если распределение равномерное (дисперсия равна среднему) и в первые 10минут имеем 275+-17 импульсов а во вторые 208+-15 то фон таки менялся. Он не постоянен и получается что вычислить средний многочасовой по десятку другому импульсов не получится не из за сильного разброса отсчетов, а из-за того что фон в момент измерения может быть заметно отклонен от среднего многочасового. Получается что если "зашаманить" некую обработку десятка импульсов, допустим верно работающую, и включить её в первый момент когда за десять минут 275 импульсов, то она и должна показать около 27,5+-1,7. И это верно, хотя от среднего многочасового и отличается.
Таки дела.
Давайте зайдем с другой стороны.
От чего зависит радиоактивный фон? От характеристик вещества, фон от которого мы наблюдаем.
Если характерное время измерения (между измерениями) много меньше периода полураспада с одной стороны и перемещение как радиоактивных масс, так и измерительного прибота отсутствуют, значит фон не меняется.
Именно это утверждение и следует принять за исходную посылку.
Если же в результате наших измерений/умозаключений получается, что фон меняется, из этого с железобетонной неизбежностью следует, что мы допустили оштбку - либо в самих измерениях, либо в трактовке их результатов.
PS. Правда, следует иметь в виду, что а практике значительня часть радиоактивного фона своим происхождением обязана газообразным радиоактивным продуктам распада земных недр. Поэтому в значительной доле практически важных случаев считать радиоактивную массу неподвижной будет некорректно.
Неправильно это постоянно мерить радиацию. Ну меняется она. Над базой МЧС висит показометр и показывает. Каждый день проезжаю и вижу от 15 до 19. Было время когда у жены был бзик и она все продукты проверяла. Мы с ней пришли к алгоритму. Пару измерений "Мастером" посреди комнаты, пару измерений около продуктов и опять одно посреди комнаты. На всё уходит 5 минут. Если измерения в комнате не сильно различаются, а около продуктов выше, то повторить цикл и если второй раз выше, то продукты браковать.
А на счёт распределений, не верю я, что в мире есть что то отличное от гауса. Всё остальное это смесь гауссов разных процессов.
Поэтому в значительной доле практически важных случаев считать радиоактивную массу неподвижной будет некорректно.
Да. Легкий ветерок всегда может занести немного радона из соседнего подвала. Про космические лучи Вы снова забыли.
Так что физически все обосновано и математически обсчитано.
А на счёт распределений, не верю я, что в мире есть что то отличное от гауса. Всё остальное это смесь гауссов разных процессов.
Тут не предмет веры ))) Этому учат в вузах. Как счас помню, учили оба расппределения. Просто Гауса чаще встречается, а равномерное довольно редко.
Тезис "Неправильно это постоянно мерить радиацию." Не раскрыт ни разу. Чего это не правильно, на мировозрение плохо влияет? Или на эстетическое восприятие действительности ;)
Ну да, гаусс чаще. В том числе в пределе выборок радиоционного естественного фона. Поэтому делать вывод о типе распределения по коротким выборкам для него не корректно.
Если вам для души приятно видеть постоянно какой сейчас естественный фон - то пожалуйста. Я только хотел сказать, что в остальных случаях смысл имеет конкретное применение. Иначе просто висящий в одном месте датчик сможет уверенно зафиксировать пронесённую мимо радиоактивную вещь только если она будет иметь фон опасный для несущего.
Выборка не короткая, данных валом, кроме некоторых случаев (сразу после включения, поиск плато), где хочется по быстрому.
Ну чегож "пронесённую мимо "? Я ж писал, принес поставил постояло. Такой порядок и сейчас есть, только без датчика радиации. Пока куртку снял, кросовки скинул, руки помыл... Как раз пару минут для замера.
Пока куртку снял, кросовки скинул, руки помыл... Как раз пару минут для замера.
а жена не скажет -"ты где шлялся"?
Тю, а я шо?! Да я хавчик в дом приторбил. Это амнистирует все ;)
Камрады, всем добра! Тоже приобрел модуль с газоразрядной лампой J305ß, есть готовый код для неё? Под дисплей 1602. Чтоб каждую секунду уточнял примерное значение. Поделитесь кому не жалко.
Есть, с выводом показаний каждые 10 секунд, см. пост №11,
Есть , с выводом показаний с 2-ой минуты от включения и далее через каждую минуту, с выводом средних значений, пост №106
Не забываем в строке подключения LCD1602 указать свой адрес
LiquidCrystal_I2C lcd(0x27,16,2) Т.е. у меня 0х27, у Вас может отличаться
Как узнать адрес I2C устройства читаем здесь: https://www.google.ru/search?q=%D0%BA%D0%B0%D0%BA+%D1%83%D0%B7%D0%BD%D0%B0%D1%82%D1%8C+%D0%B0%D0%B4%D1%80%D0%B5%D1%81+%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0+i2c&oq=%D0%BA%D0%B0%D0%BA+%D1%83%D0%B7%D0%BD%D0%B0%D1%82%D1%8C+%D0%B0%D0%B4%D1%80%D0%B5%D1%81+i2c&aqs=chrome.1.69i57j0.11956j0j7&sourceid=chrome&ie=UTF-8
Спасибо. Ну это я видел, меня интересует с уточнением каждую секунду. Я думал, что уже кто то сделал так. В этой ветке. Выше есть ссылка на самоделку, с видео, но там замарочено сильно, и экран другой и кнопки. А мне бы по проще хотелось.
Да переделать скетч из поста № 11 не проблема, просто будет тогда погоду в африке показывать...
Вообще, рекомендуемый период отсчета для замеров от 15 секунд до 60 секунд - Logging period in milliseconds, recommended value 15000-60000
Для ваших "хотелок" эта газоразрядная трубка + ардуино+ дисплей не подходят..
Да же у простых промышленных индикаторов радиоактивности период отсчета - больше 15 секунд, к примеру здесь 36 секунд - http://www.neywa.ru/cgi-bin/catalog/viewpos.cgi?in_id=118&made=