Счетчик Гейгера Ардуино

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Logik пишет:

Где найти для отладки радиацию ближе чем в чернобыле?

В ближайшей метрологической лаборатории. Проверка прибора недорого стоит (хотя, ХЗ именно  такие приборы я не проверял).

Logik
Offline
Зарегистрирован: 05.08.2014

Официально думаю не пройдет, это вобще не прибор, нет методики поверки. За "шоколадку" наверно дадут возможность померить эталонное. Но неудобный вариант. Хороше бы иметь некую штучку, чтоб фонила раз в 10-20 выше нормы. Для оперативной проверки. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Такие "штучки" нередко продаются в комплекте с дозиметрами - для проверки.

Logik
Offline
Зарегистрирован: 05.08.2014

Надоел соплюшник с 400 вольтами. Перекинул все на плату.

Logik
Offline
Зарегистрирован: 05.08.2014

Забабахал поиск мифического "плато".  В скетч докинул ежеминутное понижение напряжениия на 5В и вывод насчитаного за эту минуту. Чтото похожее на участок нечувствительности к напряжению питания лежит в диапазоне 295-370В. Зря только лез на 400В получается.

Strannic1924
Offline
Зарегистрирован: 30.08.2016

Уважаемый, Logik!

Может Вы подскажите, как оптимизировать скетч:

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);
 
 
  }
 
}
 

 

Logik
Offline
Зарегистрирован: 05.08.2014

Намекну.

По п.1 , совсем просто убрать функцию ledVar,  стр63-77, попробовать скомпилировать, оно споткнется на вызовах убраной функции - удаляем строки где спотыкается, но замечаем что в этих строках есть типа подобное TH1. Их тоже желательно убрать везьде чтоб не загромождали код.

2. Тут сложно, вопрос принципиальный. Пока не насчитаем, то показывать в общем нечего :( Насчитать можна быстрей чем за минуту если мерить не кол-во импульсов за отрезок времени, а время между импульсами с последующей матобработкой. Но точность первых показаний будет низкой и переделка будет большой. Не советую заниматся. 

Оптимальным видится вариант делать первый замер не 60 сек а  к примеру 10, тогда первые не точные выведем через 10 сек, а после каждого импульса уточнять. Но ваш скетч тогда надо прилично перетряхнуть.

Strannic1924
Offline
Зарегистрирован: 30.08.2016

По п.1 пробовал такой скетч: 

/*  
 *  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....

Logik
Offline
Зарегистрирован: 05.08.2014

Странно. Вроде верно сделали и не должно выводить 0. Загрузите старый чтоб, проверить аппаратную часть.

Strannic1924
Offline
Зарегистрирован: 30.08.2016

Не знаю, скетч с поста 106 работает (вывод показаний с 2-ой минуты от включения и далее через каждую минуту).

А скетч с поста 108 выдает только 0,0000 и далее через минуту видно что показание мигает, но остается таким же 0,0000...

Может строка 086 в скетче с поста 108 виновата?...

Logik
Offline
Зарегистрирован: 05.08.2014

Strannic1924 пишет:

Может строка 086 в скетче с поста 108 виновата?...

Нет, count = 0; там верно. Это раз в минуту мы по значению накопленому в count  расчитываем показания  для вывода radiationValueсразу перед обнулением, а сам count обнуляем для накопления за следующую минуту. Накапливается в стр.50 в прерывании. Все это осталось с о старого скетча без изменений и должно работать, если в старом работало. 

Получается что прерывание не отрабатывает. 

Вы после скетча их п.108 снова заливали п.106 для проверки аппаратной части? Провода, контакты, раземы имеют свойство тихо незаметно отваливатся, потому полезно иметь под рукой заведомо исправный скетч для проверки аппаратной части и заливать его  когда чудеса начинаются .

Еще ledArray лишний в сетапе стр.59-61 и само обявление. Нет светодиодов - нечего и пины под них держать.

Logik
Offline
Зарегистрирован: 05.08.2014

Наигрался с гейгером. Результаты.

Схема.

Код.

#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  импульсов. Потом органические добавки в газах предназначеные для ускорения гашения разряда выгорают и звон растет.

Strannic1924
Offline
Зарегистрирован: 30.08.2016

Подредактировал скетч:


/*  
 *  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 работает...

Logik
Offline
Зарегистрирован: 05.08.2014

Ну можете построчно менять 106 и проверять на какой строке перестанет работать.

Strannic1924
Offline
Зарегистрирован: 30.08.2016

Ссылка на архив (схема, мануалы, графики, скетч, калибровка и т.д.) для китайского гейгера с али-экспресс

 http://my-files.ru/6rzzwz

Кстати, здесь можно глянуть показания с датчиков предприятий Росатома:

http://www.russianatom.ru/ (необходим флеш-плеер в браузере)

  

 

Strannic1924
Offline
Зарегистрирован: 30.08.2016

Logik пишет:

Ну можете построчно менять 106 и проверять на какой строке перестанет работать.

Не получается, начинаешь построчно удалять, выдает ошибки компиляции, до тех пор, пока не приведешь к скетчу с поста 108. Ну а он нули выдает...

Logik
Offline
Зарегистрирован: 05.08.2014

В схеме заменил С3 на 100пФ.  "Звон" при нем (типичныое значение до 40мксек с редкими значениями до 150мксек) не  превышает  паспортного времени нечувствительности. На этом доработкам схемы капец. 

Графически получаемое выглядит так

По оси х-номер импульса, а по у-количество импульсов в минуту. Синяя линия - результат с фильтра по значениям времени между импульсами. Коричневые квадраты - ежеминутные результаты подсчета количества импульсов за минуту.

Хороше видно что фон прилично изменяется, за десятки минут нарастает и спадает, колбасясь между 20 и 30. Странный результат, пойду шапку из фольги делать ;)

Strannic1924
Offline
Зарегистрирован: 30.08.2016

Нормальный фон.

Среднее значение приблизительно = 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/

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Logik пишет:

Хороше видно что фон прилично изменяется, за десятки минут нарастает и спадает, колбасясь между 20 и 30. Странный результат, пойду шапку из фольги делать ;)

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

Результат совершенно ожидаемый, что именно Вы в нем увидели странного?

Logik
Offline
Зарегистрирован: 05.08.2014

andriano пишет:

Logik пишет:

Хороше видно что фон прилично изменяется, за десятки минут нарастает и спадает, колбасясь между 20 и 30. Странный результат, пойду шапку из фольги делать ;)

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

Результат совершенно ожидаемый, что именно Вы в нем увидели странного?

Ну как же. Над соответствующими участками, зеленый спад затем красный рост.

Может не совсем монотонно, но тренд явно виден. И ладно бы флуктуации на пару минут, так нет жеж 10-15 минут растет или падает.

Strannic1924
Offline
Зарегистрирован: 30.08.2016

Вот здесь, к примеру, посмотрите на график радиационного фона любительской станции: https://narodmon.ru/866

Logik
Offline
Зарегистрирован: 05.08.2014

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

ПС. Попер читать про космические лучи и мюонные ливни.

Strannic1924
Offline
Зарегистрирован: 30.08.2016

Можете еще глянуть данные с автоматизированной системы контроля радиационной обстановки (АСКРО) предприятий Росатома, там профессиональное оборудование, http://www.russianatom.ru/ (необходим флеш-плеер в браузере).

АСКРО Томской области: http://askro.green.tsu.ru/

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Logik пишет:

Может не совсем монотонно, но тренд явно виден. И ладно бы флуктуации на пару минут, так нет жеж 10-15 минут растет или падает.

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

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

Logik
Offline
Зарегистрирован: 05.08.2014

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

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

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

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

Грубая оценка: если Вы проводите измерение в течение минуты, то при 25 импульсах среднее отклонение порядка 5, а максимальное - около 15, что мы и наблюдаем на графике.

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

Logik
Offline
Зарегистрирован: 05.08.2014

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

Ну гдето так. Все перевернуто.

//Существующий математический аппарат вполне подходит и для этого случая. Просто надо понимат, что именно мы измеряем.

Ага, только матаппарат "иной", я не "открыл америку", понимаю, но сам факт, что все не так как в обычной инженерной практике,  он и привлекает и не радует одновременно ;)

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

Так я  ж не спорю что моя марахайка как бы вроде работает я всецело за ;))

Вопросы вобщем прикладные:

1. Поиск "плато" - т.е. зоны напряжений питания в которой чувствительность почти не зависит от этого самого напряжения питания. Делаю так, в цикле прогоняю питание от 420В до 250В с шагом 5В через каждую минуту (т.е. полчаса дето гоняется). Было бы равномерный фон (ну более-менее) результат плато находилось бы легко и без проблем, а с такими вариациями ни в чем нельзя быть увереным.

2. Хотел бы сделать заодно и генератор случайных чисел на этом гейгере. Причем знаю, такое делают.. Так какие же они случайные?! По крайней мере на то, что монетка или кубик дает не похоже. 

3. Хочется по первым 5-10 импульсам быстренько получить хоть приближенный результат измерения (чтоб инициализировать фильтр для последующего усреднения и уточнения). Оно как бы да, но не всегда, в 10-20% (на глаз пишу) получается сильно не так. Подозреваю Пуанкаре с своей теоремой тут поможет.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Logik пишет:

2. Хотел бы сделать заодно и генератор случайных чисел на этом гейгере. Причем знаю, такое делают.. Так какие же они случайные?! По крайней мере на то, что монетка или кубик дает не похоже. 

Чисто аппаратный ДСЧ имеет столько недостатков, что, пожалуй, единственное разумное его использование - инициализация ДПСЧ.

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

Цитата:

3. Хочется по первым 5-10 импульсам быстренько получить хоть приближенный результат измерения (чтоб инициализировать фильтр для последующего усреднения и уточнения). Оно как бы да, но не всегда, в 10-20% (на глаз пишу) получается сильно не так. Подозреваю Пуанкаре с своей теоремой тут поможет.

У Вас цифры не согласуются. 5-10 импульсов явно недостаточно для достижения 10-20% точности. Хотите точность 10% - будьте любезны подождать порядка 400 импульсов. Для 20% достаточно 100.

Logik
Offline
Зарегистрирован: 05.08.2014

andriano пишет:
Чисто аппаратный ДСЧ имеет столько недостатко..

Ага. Но одно преимущество. Он дает действительно случайные, а не ПСЧ. Переодическая (с случайным периодом) инициализация ими ДПСЧ как раз и есть хороший подход.

andriano пишет:

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

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

andriano пишет:

У Вас цифры не согласуются. 5-10 импульсов явно недостаточно для достижения 10-20% точности. Хотите точность 10% - будьте любезны подождать порядка 400 импульсов. Для 20% достаточно 100.

Бездоказательное утверждение. Например тут - https://www.google.com.ua/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&cad=rja&uact=8&ved=0ahUKEwihnZbki87SAhUsSJoKHfZ6BO8QFghBMAY&url=http%3A%2F%2Fnuclphys.sinp.msu.ru%2Fp%2F14zad.doc&usg=AFQjCNEIyZHN0oGWoh_qlCu5hqgitoZZ0A&sig2=n-k70QlY9nwrwrU2VxXlpw 

Утверждают что 10% получается быстрей

Первое измерение активности радиоактивного препарата в течение 1 секунды дало значение активности источника A = 84 отсчетов/сек. Рассчитанное стандартное отклонение  ... (формулы не скопировались:(( просто корень из 84) ... Относительная ошибка в этом случае составляет ... корень из 84 делить на 84 =10%

ПС. Выше Пуанкаре с Пуассоном попутал. 

Logik
Offline
Зарегистрирован: 05.08.2014

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

За  минуту можна получить такие значения

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 просто нормальный результат для какого-то момента времени, нормальная точка на графике. Позже все может изменится но вот сейчас именно так))) Т.е. как мгновенное значение тока.

Чем больше думаю над этим, тем больше понимаю шо не понимаю.

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Подскажите, какой коэффициент писать в строке

Conversion factor - CPM to uSV/h

#define CONV_FACTOR 0.00812

для трубки J305?

Logik
Offline
Зарегистрирован: 05.08.2014

Без понятия. Я с J305 не знаком. 

Strannic1924
Offline
Зарегистрирован: 30.08.2016

uncle_grin пишет:

Подскажите, какой коэффициент писать в строке

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...

 
nik182
Offline
Зарегистрирован: 04.05.2015

Тут главный вопрос - что вы хотите получить? Проверку чего? Например продукты из зоны Чернобыля фонят на 20 -30 % выше чем фон. Если сделать датчик с такой погрешностью, то отличить от нормальных будет очень сложно, а они, попав в организм, будут непрерывно интегрировать накопление суммарной дозы.

Как у любой случайной величины точность измеренного значения увеличивается при увеличении количества наблюдений. Об этом уже писали. Поэтому путь один - увеличение времени замера и соотношение его с чувствительностью датчика.   

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Спасибо!

Logik
Offline
Зарегистрирован: 05.08.2014

nik182 пишет:

Тут главный вопрос - что вы хотите получить? Проверку чего? 

Ежели вопрос ко мне, то попробую ответить. Если мы подымимся по теме к началу, то идея вобще чего либо возникла по ходу из факта что все необходимое (гейгер, трансформатор и ардуино, даже стеклотекстолит для платы) был, только высоковольтные кондеры докупил, но то копейки, уже все есть и чего бы при этом не спаять их вместе. Тем более что дозиметр - штука в общем то не первой необходимости, но если чего случится и вызовет повышение фона - то лучше иметь уже готовый, т.к. времени разбиратся и  паять уже не будет. Вобщем типичный случай, когда "соломку подстелил", а пригодится или нет - ХЗ, дай бог нет. Во вторых опыт показывает что быть увереным в работе чего либо можна только при условии что оно регулярно эксплуатируется, так приходим к мысли о стационарном  постоянно работающем устройстве. Идею ежедневно ходить по магазинам в поиске самого не радиоактивного картофеля оставим параноикам. Я над таким могу только ржать. К тому же стационарное устройство удачно сочитается с существующем сервером на оранжпи, мониторящим все чего можна. Чего он собственно прямо сейчас и делает, рисуя такие графики.

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

Ну а имея такую штуку в наличии, чего бы не использовать её по полной. Например для генератора случайных чисел. И расположить гейгера возле входных дверей, пасть "нюхает" что в дом занесли, например кулек с едой (да и  вобще,все что в дом заносится, включая обувь). Его можна просто поставить возле датчика на пару минут, пока руки мою.  Я раз в пару дней могу глянуть график, может чего и увижу. А если матаппарат получится победить и скорость и надежность получится достаточной - ну может пусть даже пискнет. 

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

Так в общем. Без сверхзадачи, свободный полет.

ПС. Я в курсе что продукты могут светить альфой и об этом гейгер не скажет. Жаль, нет идеала в природе.

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Logik пишет:

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

О природе различия я уже писал выше.

А насчет принципиальности...

Как говорят, у слона есть крылья, но они равны нулю.

Так и здесь любая измеренная величина состоит из постояннй составляющей, трендов и шума. Так вот, радиация - это шум в чистом виде, тогда как другие величины несут в себе все три составляющие. Это как принципиальное различие или лишь количественное?

Logik
Offline
Зарегистрирован: 05.08.2014

Ну что Вы там писаль?! Домыслы одни.

Считаем по 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. И это верно, хотя от среднего многочасового и отличается.

Таки дела.

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Давайте зайдем с другой стороны.

От чего зависит радиоактивный фон? От характеристик вещества, фон от которого мы наблюдаем.

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

Именно это утверждение и следует принять за исходную посылку.

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

 

PS. Правда, следует иметь в виду, что а практике значительня часть радиоактивного фона своим происхождением обязана газообразным радиоактивным продуктам распада земных недр. Поэтому в значительной доле практически важных случаев считать радиоактивную массу неподвижной будет некорректно.

nik182
Offline
Зарегистрирован: 04.05.2015

Неправильно это постоянно мерить радиацию. Ну меняется она. Над базой МЧС висит показометр и показывает. Каждый день проезжаю и вижу от 15 до 19. Было время когда у жены был бзик и она все продукты проверяла. Мы с ней пришли к алгоритму.  Пару измерений "Мастером" посреди комнаты, пару измерений около продуктов и опять одно посреди комнаты. На всё уходит 5 минут. Если измерения в комнате не сильно различаются, а около продуктов выше, то повторить цикл и если второй раз выше, то продукты браковать.

А на счёт распределений, не верю я, что в мире есть что то отличное от гауса. Всё остальное это смесь гауссов разных процессов.  

Logik
Offline
Зарегистрирован: 05.08.2014

andriano пишет:

Поэтому в значительной доле практически важных случаев считать радиоактивную массу неподвижной будет некорректно.

Да. Легкий ветерок всегда может занести немного радона из соседнего подвала. Про космические лучи Вы снова забыли.

Так что физически все обосновано и математически обсчитано. 

 

 

Logik
Offline
Зарегистрирован: 05.08.2014

nik182 пишет:

А на счёт распределений, не верю я, что в мире есть что то отличное от гауса. Всё остальное это смесь гауссов разных процессов.  

Тут не предмет веры ))) Этому учат в вузах. Как счас помню, учили оба расппределения. Просто Гауса чаще встречается, а равномерное довольно редко.

Тезис "Неправильно это постоянно мерить радиацию." Не раскрыт ни разу. Чего это не правильно, на мировозрение плохо влияет? Или на эстетическое восприятие действительности ;)

nik182
Offline
Зарегистрирован: 04.05.2015

Ну да, гаусс чаще. В том числе в пределе выборок радиоционного естественного фона. Поэтому делать вывод о типе распределения по коротким выборкам для него не корректно.

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

Logik
Offline
Зарегистрирован: 05.08.2014

Выборка не короткая, данных валом, кроме некоторых случаев (сразу после включения, поиск плато), где хочется по быстрому.

Ну чегож "пронесённую мимо "? Я ж писал, принес поставил постояло. Такой порядок и сейчас есть, только без датчика радиации. Пока куртку снял, кросовки скинул, руки помыл... Как раз пару минут для замера.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Logik пишет:

 Пока куртку снял, кросовки скинул, руки помыл... Как раз пару минут для замера.

а жена не скажет -"ты где шлялся"?

Logik
Offline
Зарегистрирован: 05.08.2014

Тю, а я шо?! Да я хавчик в дом приторбил. Это амнистирует все ;)

Efendis
Efendis аватар
Offline
Зарегистрирован: 25.01.2017

Камрады, всем добра! Тоже приобрел модуль с газоразрядной лампой J305ß, есть готовый код для неё? Под дисплей 1602. Чтоб каждую секунду уточнял примерное значение. Поделитесь кому не жалко.

Strannic1924
Offline
Зарегистрирован: 30.08.2016

Есть, с выводом показаний каждые 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

Efendis
Efendis аватар
Offline
Зарегистрирован: 25.01.2017

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

Strannic1924
Offline
Зарегистрирован: 30.08.2016

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

Да переделать скетч из поста № 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=