Модуль дозиметра RadSens V2 I2C 3,3VDC
Модуль дозиметра RadSens V2 I2C 3,3VDC
Модуль дозиметра RadSens V2 I2C 3,3VDC
Модуль дозиметра RadSens V2 I2C 3,3VDC
Модуль дозиметра RadSens V2 I2C 3,3VDC
Модуль дозиметра RadSens V2 I2C 3,3VDC
Модуль дозиметра RadSens V2 I2C 3,3VDC
Модуль дозиметра RadSens V2 I2C 3,3VDC

Модуль дозиметра RadSens V2 I2C 3,3VDC

Арт. 12319

5,950

менее 10 шт.

Описание

Модуль дозиметра RadSens V2v6

RadSens – универсальный дозиметр-радиометр модульного форм-фактора. 
В качестве чувствительного элемента в модуле используется газоразрядный счетчик Гейгера-Мюллера СБМ20-1, применяемый в большинстве бытовых и профессиональных дозиметров. Устройство поддерживает измерение и расчет интенсивности излучения с использованием двух алгоритмов: с динамическим диапазоном времени счета для обнаружения локальных источников загрязнения, и с широким статическим временным диапазоном для точного измерения значения текущего радиационного фона. Также имеется возможность использовать модуль без дополнительных устройств в качестве «индикатора» излучения, ориентируясь на частоту мигания установленного на плате светодиода. Регистрация импульсов, алгоритмы расчета и передача данных по I2C с частотой работы шины до 400кГц реализованы на установленном на плате микроконтроллере STМ32. Модуль поддерживает программную смену адреса и включение / отключение работы высоковольтного преобразователя для повышения энергоэффективности. Также имеется возможность по I2C корректировать чувствительность счетчика к ионизирующему излучению, что позволяет использовать на данном модуле другие счетчики с аналогичным анодным напряжением питания. 

Технические характеристки:

  • Напряжение питания 3,0…3,5 В
  • Максимальный ток потребления при высоком излучении: не более 50 мА
  • Интерфейс подключения: I2C
  • Частота шины I2C: 400 кГц
  • I2C адрес по умолчанию: 0x66
  • Диапазон измеряемого излучения: 14,4...144 000,0 мкР/ч
  • Чувствительность к гаммаизлучению Ra226: 100...110 имп/мкР
  • Разброс относительной чувствительности: ±15 %
  • Диапазон рабочих температур: от -20°C до +60°C
  • Диапазон влажности: 0...98 %RH
  • Размеры модуля: 89мм х 21мм х 13,5мм
  • Вес модуля: не более 12 г

Расположение выводов (разъём XH-2.54 4P):

  • VCC - Цепь питания датчика
  • GND - Земля
  • I2C-SCL - Линия тактирования интерфейса I2C
  • I2C-SDA - Линия данных интерфейса I2C
  • INT - Импульсный выход (не имеет вывода в разъем XH-2.54 4P)

Обмен данными (настройка и передача измеренных значений) осуществляется по интерфейсу I2C на скорости до 400 кГц. При этом датчик работает в режиме Slave c адресом по умолчанию 0x66 (настраивается программно). 

Описание регистров:

  • ID устройства [адрес: 0x00, размер: 8 бит, доступ: R] Контрольный регистр, содержащий идентификатор изделия. По умолчанию имеет значение 0x7D. Используется для контроля подключения устройства.
  • Версия прошивки [адрес: 0x01, размер: 8 бит, доступ: R] Регистр хранения текущей версии прошивки. Используется для контроля и своевременного обновления ПО.
  • Интенсивность излучения (динамический период счета) [адрес: 0x03, размер: 24 бит, доступ: R] Содержит динамическое значение интенсивности ионизирующего гаммаизлучения. При детектировании резкого изменения интенсивности излучения (как в большую, так и в меньшую сторону) динамически регулирует период счета скользящего окна, чтобы диапазон охватывал временной промежуток, содержащий только актуальные данные. Позволяет использовать устройство в режиме поиска локальных загрязнений. Частота обновления – 1 сек.
  • Интенсивность излучения (статический период счета) [адрес: 0x06, размер: 24 бит, доступ: R] Содержит статистическое значение интенсивности ионизирующего гаммаизлучения. Период счета скользящего окна составляет 500 сек. Позволяет производить точные измерения постоянного радиационного фона. Частота обновления – 1 сек.
  • Счетчик импульсов [адрес: 0x09, размер: 16 бит, доступ: R] Содержит накопленное количество зарегистрированных модулем импульсов с момента последнего считывания данных по I2C. Значение сбрасывается каждый раз при считывании. Позволяет
  • Адрес устройства [адрес: 0x10, размер: 8 бит, доступ: W] Данный регистр используется для изменения адреса устройства при необходимости подключения на одну линию одновременно нескольких устройств. По умолчанию содержит значение 0x66. По окончании записи новое значение сохраняется в энергонезависимую память микроконтроллера.
  • Генератор HV [адрес: 0x11, размер: 8 бит, доступ: R/W] Регистр управления высоковольтным преобразователем напряжения. По умолчанию находится во включенном состоянии. Для включения HV генератора в регистр необходимо записать 1, для отключения 0. При попытке записи других значений команда игнорируется.
  • Чувствительность счетчика [адрес: 0x12, размер: 16 бит, доступ: R/W] Содержит значение коэффициента Рср (п 3.2), используемое при расчете интенсивности излучения. При необходимости (например, при установке другого типа счетчика) в регистр вносится необходимое значение чувствительности в имп/мкР. По умолчанию установлено значение 105 имп/мкР. По окончании записи новое значение сохраняется в энергонезависимую память

Импульсный выход предназначен для регистрации импульсов внешним устройством (контроллером) в режиме реального времени. Рабочий уровень линии – 3.3 В. При регистрации импульса модуль опускает линию в 0 на 150 микросекунд, затем восстанавливает высокий рабочий уровень линии.

Геометрические размеры:

   

Библиотека для Arduino, ESP82266, ESP32 (GitHub)

Пример кода для Arduino с применением библиотеки.

// Инициализируем библиотеки
#include <Wire.h>
#include <CG_RadSens.h>
#include <GyverOLED.h>

#define ADC_pin A0 // задаём значение пина АЦП
#define buz_pin 14 // Задаём значения пина для пищалки

GyverOLED<SSH1106_128x64> oled; // Инициализируем 1.3" OLED-экран
CG_RadSens radSens(RS_DEFAULT_I2C_ADDRESS); // Инициализируем RadSens

uint16_t ADC; // Переменная для значений АЦП
uint32_t timer_cnt; // Таймер для измерений дозиметра
uint32_t timer_bat; // Таймер для измерения заряда батареи
uint32_t timer_imp; // Таймер опроса импульсов для пьезоизлучателя
uint32_t pulsesPrev; // Число импульсов за предыдущую итерацию

//Функция аудиоприветствия
void hello() {
  for (int i = 1; i < 5; i++) {
    tone(buz_pin, i * 1000);
    delay(100);
  }
  tone(buz_pin, 0);
  delay(100);
  oled.setScale(2);
  oled.setCursor(10, 3);
  oled.print("Radsensor");
  oled.update();  
  delay(3000);
  oled.clear(); 
}

//Функция, которая создаёт "трески" пьезоизлучателя при появлении импульсов
void beep() {     // Функция, описывающая время и частоту пищания пьезоизлучателя
  tone(buz_pin, 3500);
  delay(13);
  tone(buz_pin, 0);
  delay(40);
}

//Функция предупреждения при превышении порога излучения
void warning() {
  for (int i = 0; i < 3; i++) {
    tone(buz_pin, 1500);
    delay(250);
    tone(buz_pin, 0);
    delay(250);
  }
}

void setup() {
  Wire.begin();
  oled.init(); // Инициализируем OLED в коде
  oled.clear(); 
  oled.update();  
  pinMode(ADC_pin, OUTPUT); // Инициализируем АЦП как получатель данных
  hello();  // Приветствуем пищанием  
  oled.update();  // Обновляем экран
  pulsesPrev = radSens.getNumberOfPulses(); // Записываем значение для предотвращения серии тресков на старте
}

void loop() {
  // Раз в 250 мс происходит опрос счётчика импульсов для создания тресков, если число импульсов за 250 мс превысит 5, раздастся предупреждение
  if (millis() - timer_imp > 250) {  
    timer_imp = millis();
    int pulses = radSens.getNumberOfPulses();
    if (pulses - pulsesPrev > 5 ) {
      pulsesPrev = pulses;
      warning();
    }
    if (pulses > pulsesPrev) {
      for (int i = 0; i < (pulses - pulsesPrev); i++) {
        beep();
      }
      pulsesPrev = pulses;
    }
  }
  // Снимаем показания с дозиметра и выводим их на экран
  if (millis() - timer_cnt > 1000) { 
    timer_cnt = millis();
    char buf1[50];
    char buf2[50];
    char buf3[50];
    sprintf(buf1, "%.1f мкр/ч", radSens.getRadIntensyDynamic()); // Собираем строку с показаниями динамической интенсивности
    sprintf(buf2, "Стат: %.1f мкр/ч ", radSens.getRadIntensyStatic()); // Собираем строку с показаниями средней интенсивности за период работы
    oled.setCursor(0, 2);
    oled.setScale(2);
    oled.print(buf1);
    oled.setCursor(0, 6);
    oled.setScale(1);
    oled.print(buf2);
  }
  // Считываем показание с АЦП, рисуем батарею и создаём индикацию заряда, показания АЦП вы можете подстроить под своё удобство
  if (millis() - timer_bat > 5000) { 
    timer_bat = millis();
    ADC = analogRead(ADC_pin); 
    oled.rect(110, 0, 124, 8, OLED_STROKE); 
    oled.rect(125, 3, 126, 5, OLED_FILL);
    if (ADC >= 350) {
      oled.rect(112, 2, 114, 6, OLED_FILL);
      oled.rect(116, 2, 118, 6, OLED_FILL);
      oled.rect(120, 2, 122, 6, OLED_FILL);
    }
    if (ADC < 350 && ADC >= 335) {
      oled.rect(112, 2, 114, 6, OLED_FILL);
      oled.rect(116, 2, 118, 6, OLED_FILL);
    }
    if (ADC < 335 && ADC >= 320) {
      oled.rect(112, 2, 114, 6, OLED_FILL);
    }
    if (ADC < 320){
      oled.rect(110, 0, 124, 8, OLED_STROKE);
      oled.rect(125, 3, 126, 5, OLED_FILL);
    }
  }
  oled.update(); // Обновляем экран в конце цикла
}

Datasheet (PDF, ENG)