Делаем дозиметр!

Dozick
Offline
Зарегистрирован: 22.04.2017

Молодой человек я вижу вы тоже из украины

 

Dozick
Offline
Зарегистрирован: 22.04.2017

а у вас часом нету лишнего датчика сбм 20 или стс 5

Dozick
Offline
Зарегистрирован: 22.04.2017

я намерен зделать дозиметр так сказать по вашим стопам

Dozick
Offline
Зарегистрирован: 22.04.2017

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

Dozick
Offline
Зарегистрирован: 22.04.2017

именно печатную не принцыпиальную

Dozick
Offline
Зарегистрирован: 22.04.2017

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

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Dozick пишет:

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

---На страничке проекта есть два архива в них есть печатки.

---ардуино можно брать любую с Атмега328 на борту.

---датчики  сам себе покупал у перекупа на OLX, все под  разработки.

 

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Lazy_Dragon пишет:

....

 

....

Выглядит отлично!!!!

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

Joiner
Offline
Зарегистрирован: 04.09.2014

Три недели в поте лица трахался с изготовлением высокоомного вольтметра из журнала радио №8 за 1973 год. Что только не делал!!!, даже печатную плату вытравил, даже нашел древний транзистор...но ни чего у меня не получилось. Генератор генерировал, но ни как на напряжение не реагировал. Хоть я и упорно бился лбом об стену, победить не удалось. Не понимаю почему :(

Сегодня нашел схему преобразователя напряжение-ток, немного рассчитал, собрал на макетке. Все устройство состоит из ОУ LM358, транзистора 2N2222, резистора (без учета деталей входного делителя) и микроамперметра на 50 микроампер. Попробовал измерять напряжение батареек, показывает стабильный результат даже при изменении напряжения питания прибора в два раза.

Буду делать вольтметр по этой схеме.

Жаль, убитого на вольтметр из журнала радио, времени, может дозиметр радиации уже был бы готов  на макете :(((((

tekagi
tekagi аватар
Offline
Зарегистрирован: 07.10.2016

Joiner, так вольтметр же в самом Ardos'e есть. Как показало сравнение с образцовым вольтметром его показаниям вполне можно доверять. (При условии тщательной отмывки и обязательной последующей сушки платы). Разброс оказался в пределах 10-15 вольт. Хотя поначалу наступил на грабли, когда пытался после промывки и кратковременной сушки запустить, показания не сходились раза в два. Пришлось сушить ещё пару раз и на сутки оставить на батарее, чтобы остатки изопропанола выветрились, тогда пасьянс сошёлся.

Joiner
Offline
Зарегистрирован: 04.09.2014

tekagi пишет:

Joiner, так вольтметр же в самом Ardos'e есть.........

А что такое Ardos? Я не понял про что Вы говорите..

Пока сохранял, понял про что :) Ardos - это название дозиметра.

А чем Вы контролировали показание вольтметра Ardos'а ?

tekagi
tekagi аватар
Offline
Зарегистрирован: 07.10.2016

В самом дозиметре, в системном нею есть вольтметр, который берёт данные с делителя.

Joiner
Offline
Зарегистрирован: 04.09.2014

tekagi пишет:

В самом дозиметре, в системном нею есть вольтметр, который берёт данные с делителя.

Спасибо, понял. Но все равно в певую очередь доделаю свой вольтметр :)

tekagi
tekagi аватар
Offline
Зарегистрирован: 07.10.2016

Joiner пишет:

А чем Вы контролировали показание вольтметра Ardos'а ?

Электростатическим зайчиковым, в давние времена специально достал для работы с дозиметрами.

 

Joiner
Offline
Зарегистрирован: 04.09.2014

tekagi пишет:

Электростатическим зайчиковым, в давние времена специально достал для работы с дозиметрами.

Не очень понимаю... Если сделать делитель общим сопротивлением мегаом сто, а потом на низком плече измерять напряжение обычным тестером, показания сильно исказятся? Допустим, подаем на делитель 400 вольт, а делитель сделан так, что на низком плече получается 4 вольта, если измерим обычным тестером, получится 4 вольта?

tekagi
tekagi аватар
Offline
Зарегистрирован: 07.10.2016

Пробовал делителем 90МОм с мультиметром со входным 10 МОм, ерунда получается. В схеме дозиметра через делитель накапливается заряд на конденсаторе, и меряется уже на нём. Плюс делитель ArDos'a является частью схемы, то есть подключён к высокому напряжению постоянно, внешний же вольтметр, если его сопротивление не гигаомы, при подключении всё равно будет давать просадку. (Насколько схема стабилизации будет её держат - не экспериментировал, надо будет попробовать).

Joiner
Offline
Зарегистрирован: 04.09.2014

tekagi пишет:

Пробовал делителем 90МОм .......

Сегодня попробовал без точного подбора резистора в преобразователе, сделанном на макетке, измерять сопротивление пальчиковой батарейки. С получившимися, по быстренькому, параметрами батарейка дает показания на микроамперметре 20 микроампер, которые четко держатся даже при изменении напряжения питания схемы. При подключении той же самой батарейки через резистор 1мегаом, показания микроамперметра не меняются и остаются 20 микроампер. Что дает мне право думать об очень большом входном сопротивлении схемы и дает надежду что из этого получится нормальный вольтметр с высоким входным сопротивлением, не меньше 100 мегаом при напряжении 400 вольт.

tekagi
tekagi аватар
Offline
Зарегистрирован: 07.10.2016

Попробовал подкинуть параллельно высокому шуп 90МОм. На предыдущей прошивке (1.04) показания остаются стабильными, на 1.05 у меня почему-то идёт лёгкая перекачка до 440-450, при подключении щупа стабилизируется на требуемых 400 плюс-минус лапоть. Сказывается попытка упростить схему, отказавшись от ОУ :(  А когда этим же щупом мерял блокинги, не имеющие обратной связи, напряжение проседало в два-три раза. Доберусь до мастерской, попробую снова поэкспериментировать с замером 90МОМ щупом + 10МОм мультиметром, по результату отпишусь.

UPD: Щуп 90МОм плюс мультиметр со входным 10МОм (сопротивление вольтметра является нижним плечом делителя):

Образцовый вольтметр 392-405В

ArDos (калиброваный по образцовому) 395-401В

Мультиметр с делителем 38.2В, то бишь условно 382 на щупе.

Учитывая размер счётного плато счётчика Гейгера, думаю, даже такой точности будет достаточно.

Коэффициент делителя #define k_delitel, указанный у меня в скетче, 1395 (подогнан под показания образцового), рассчётный 1400 (140МОм/100КОм).

Большинство недорогих мультиметров имеют внутреннее сопротивление 1МОм и для этих целей не подойдут. Даже те, в которых указано внутреннее сопротивление в 10МОм имеют его лишь на верхних диапазонах измерения напряжения.

UPD2: Померял внаглую десятимегаомным мультиметром. Кряхтит, свистит, ест аккумулятор столовой ложкой, но вытягивает 382-395 вольт. Показания ArDos'a и мультиметра совпадают.

 

Joiner
Offline
Зарегистрирован: 04.09.2014

tekagi пишет:

Попробовал подкинуть ..................... Показания ArDos'a и мультиметра совпадают.

 

Сегодня постараюсь за день сделать свой вольтметр. О результатете отпишусь.

Ранее измерял напряжение на макете дозиметра, работающем от сети 220в, своим мультиметром. В инструкции не нашел его (мультиметра) сопротивления. Но проседало напряжение прилично. Это я понял по очень заметному уменьшению громкости щелчков бузера при подключении мультиметра. Понял, что напряжение на счетчики идет с большим превышением и эксперименты прекратил.

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Joiner пишет:

Ранее измерял напряжение на макете дозиметра, работающем от сети 220в, своим мультиметром. В инструкции не нашел его (мультиметра) сопротивления. Но проседало напряжение прилично. Это я понял по очень заметному уменьшению громкости щелчков бузера при подключении мультиметра. Понял, что напряжение на счетчики идет с большим превышением и эксперименты прекратил.

Привет, если у тебя  какая-нибудь DT-шка измеряй через резистор 10МОм показания потом в уме домножай на 10, самый примитивный способ.

А вообще как писал выше 2резистора в делитель и кондер.

Резисторы мыть спиртом и не трогать руками!!!!

Joiner
Offline
Зарегистрирован: 04.09.2014

bodriy2014 пишет:

Привет, если у тебя  какая-нибудь DT-шка измеряй через резистор 10МОм показания потом в уме домножай на 10, самый примитивный способ.

А вообще как писал выше 2резистора в делитель и кондер.

Резисторы мыть спиртом и не трогать руками!!!!

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

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Lazy_Dragon пишет:

Привет.

У скетч под олед выкладывать планируете?

Если да, хотел бы разместить его так же на страничке своего сайта вместе с вашими скринами.

Lazy_Dragon
Offline
Зарегистрирован: 09.03.2017

Без проблем могу выложить, правда на реальном устройстве не тестировал. И абсолютно не против выкладывания куда либо. Единственное я его сразу исправлял под работу с 2 датчиками, так что с 1 датчиком будет занижать показания в 2 раза. Но это опять же в теории, никакой практики пока нет...

А вот собственно код

/* ArDOs   v105 без режима сна
 *  Mod for OLED 128*64 I2C
***Дозиметр на Ардуино
***IDE Arduino 1.8.2
  ветка форума http://arduino.ru/forum/proekty/delaem-dozimetr
  сайт http://srukami.inf.ua/ardos.html
*/
#include <util/delay.h> //уже есть
#include <EEPROM.h>//уже есть
#include <OLED_I2C.h>


//настройки /////////////начало
OLED myGLCD(SDA, SCL); //подключение дисплея
#define contrast 65 //контрастность дисплея
byte treviga_1 = 30; //первая ступень тревоги
byte treviga_2 = 60; //вторая ступень тревоги
byte ton_BUZZ = 70; //тональность буззера
#define  ADC 220  //значение АЦП при котором 400В с учетом вашего делителя напряжения (0..255)
#define k_delitel 440 //коефициент дельтеля напряжения, зависит от вашего делителя.
byte puls = 2; //тонкая настройка длинны импульса высоковольтного транса
byte scrin_GRAF = 1; //скорость построения графика в секундах
bool buzz_ON = 1;  //включить индикацию бузером (1)
bool podsvetka = 0; //подсветка
bool Lcd_Inv = 0; //разрешение или запрет сна
float opornoe = 1.10; //делить на opornoe/10
#define son_t 40 //время засыпания в секундах
#define save_DOZ 20 //как часто сохранять накопленную доху например каждые 20мкР
//настройки //////////////конец

extern uint8_t SmallFont[], MediumNumbers[], TinyFont[], BigNumbers[];
extern uint8_t logo_bat[], logo_rag[], logo_tr_OLED[], logo_tr[], gif_chast_1[], gif_chast_2[];
volatile int shet = 0;
unsigned long t_milis = 0, gr_milis = 0, lcd_milis = 0, toch_milis = 0;
unsigned long spNAK_milis = 0, time_doza = 75000;
int hv_adc, hv_400, shet_s = 0, fon = 0, shet_gr = 0, shet_n = 0;
int speed_nakT = 0, speed_nak = 0, time_sh_l = 0, MIN, HOUR;
int doza_vr = 0, val_dr_pr = 0, val_dr_OK = 0;
byte mass_p[84];
byte mass_toch[181], m = 0, n_menu = 0, sys_menu = 0, mass_36[37];
byte val_kl = 0, val_ok = 0, menu = 0, zam_180p = 0, zam_36p = 0, gif_x = 0;
float VCC = 0.0, doz_v = 0.0, stat_percent = 99.0;
bool tr = 0, poisk = 1, fonarik = 0, g_fl = 0;
//-------------------------------------------------------------
void setup() {
  Serial.begin(57600);
  ACSR |= 1 << ACD; //отключаем компаратор
  ADCSRA &= ~(1 << ADEN);  // отключаем АЦП,
  pinMode(3, INPUT_PULLUP); //кнопка
  pinMode(4, INPUT_PULLUP); //кнопка
  pinMode(7, INPUT_PULLUP); //кнопка
  DDRB |= (0 << 0); PORTB &= ~(1 << 0); //пин пустой 8
  DDRC |= (0 << 4); PORTC &= ~(1 << 4); //пин пустой А4
  DDRC |= (0 << 5); PORTC &= ~(1 << 5); //пин пустой А5
  DDRB |= (1 << 1);//пин фонаря
  DDRC |= (1 << 3);//A3 дисплей GND
  DDRC |= (1 << 2);//A2 дисплей Light
  PORTC &= ~(1 << 3); //A3 дисплей GND
  PORTC  |= (1 << 2); //A2 дисплей Light
  eeprom_readS ();
  eeprom_readD ();
  lcd_init();
  attachInterrupt(0, Schet, FALLING);//прерываниям пин 2
  DDRB |= (1 << 5); //пины на выход
  DDRD |= (1 << 5);
  DDRD |= (1 << 6);
  DDRD |= (1 << 6);//пин бузера
  nakachka();
}
//-------------------------------------------------------------
void loop() {
  if (menu == 0) {
    if (!(PIND & (1 << PIND7))) { //нажатие <<<
      _delay_ms(500);//антидребезг
      menu = 3;
      shet = 0; zam_180p = 0; fon = 0;
      stat_percent = 99.0;
      if (!(PIND & (1 << PIND7))) {//нажатие <<< фонарик
        val_kl++;
        if (val_kl == 6) {
          val_kl = 0;
          fonarik = !fonarik;
        }
      }
    }
  }
  if (fonarik == 0) { //фонарик
    PORTB &= ~(1 << 1);//пин фонаря
  } else if (fonarik == 1) {
    PORTB |= (1 << 1);//пин фонаря
  }
  if (podsvetka == 1) {
    PORTC &= ~(1 << 2); //A2 дисплей Light
  }
  if (podsvetka == 0) {
    PORTC |= (1 << 2); //A2 дисплей Light
  }
  if (millis() - lcd_milis >= 100) { //скорость отрисоаки дисплея
    lcd_milis = millis();
    if (menu == 0) {
      lcd_poisk();//вывод на дисплей режима поиск
      poisk_f();
    }
    if (menu == 1) {
      lcd_menu();//вывод на дисплей меню
    }
    if (menu == 2) {
      lcd_sys();//вывод на дисплей системного меню
    }
    if (menu == 3) {
      zamer_180s();//вывод на дисплей замер 180сек
    }
  }
  generator();//накачка по обратной связи с АЦП
  if (shet_s != shet) {
    signa ();//подача сигнала о частичке
  }
  if (!(PIND & (1 << PIND3))) { //нажатие ок
    _delay_ms(500);//антидребезг
    OK();
  }
  if (menu == 1) {
    if (!(PIND & (1 << PIND4))) { //нажатие >>>
      _delay_ms(500);//антидребезг
      if (n_menu == 0) {
        treviga_1++;
      }
      if (n_menu == 1) {
        treviga_2++;
      }
      if (n_menu == 2) {
        podsvetka = !podsvetka;
      }
      if (n_menu == 3) {
        Lcd_Inv = !Lcd_Inv;
      }
      if (n_menu == 4) {
        scrin_GRAF++;
        if (scrin_GRAF > 10) {
          scrin_GRAF = 1;
        }
      }
      if (n_menu == 5) {
        buzz_ON = !buzz_ON;
      }
      if (n_menu == 6) {
        menu = 0;
      }
      if (n_menu == 7) {
        eeprom_wrS ();
        menu = 0;
      }
    }
  }
  if (menu == 2) {
    if (!(PIND & (1 << PIND4))) { //нажатие >>>
      _delay_ms(500);//антидребезг
      if (sys_menu == 0) {
        opornoe = opornoe + 0.01;
        if (opornoe < 0.98) {
          opornoe = 1.20;
        }
        if (opornoe > 1.20) {
          opornoe = 0.98;
        }
      }
      if (sys_menu == 1) {
        puls++;
        if (puls < 1) {
          puls = 10;
        }
        if (puls > 10) {
          puls = 1;
        }
      }
      if (sys_menu == 2) {
        time_doza = 0;//сброс накопленной дозы
        doz_v = 0;//сброс накопленной дозы
        eeprom_wrD();
        myGLCD.clrScr();
        myGLCD.setFont(SmallFont);
        myGLCD.print("SBROS OK", CENTER, 24);
        myGLCD.update();
        _delay_ms(1000);
      }
      if (sys_menu == 3) {
        menu = 0;
      }
      if (sys_menu == 4) {
        eeprom_wrS ();
        menu = 0;
      }
    }
  }
  if (menu == 1) {
    if (!(PIND & (1 << PIND7))) { //нажатие <<<
      _delay_ms(500);//антидребезг
      if (n_menu == 0) {
        treviga_1--;
      }
      if (n_menu == 1) {
        treviga_2--;
      }
      if (n_menu == 2) {
        podsvetka = !podsvetka;
      }
      if (n_menu == 3) {
        Lcd_Inv = !Lcd_Inv;
      }
      if (n_menu == 4) {
        scrin_GRAF--;
        if (scrin_GRAF < 1) {
          scrin_GRAF = 10;
        }
      }
      if (n_menu == 5) {
        buzz_ON = !buzz_ON;
      }
      if (n_menu == 6) {
        menu = 0;
      }
      if (n_menu == 7) {
        eeprom_wrS ();
        menu = 0;
      }
    }
  }
  if (menu == 2) {
    if (!(PIND & (1 << PIND7))) { //нажатие <<<
      _delay_ms(500);//антидребезг
      if (sys_menu == 0) {
        opornoe = opornoe - 0.01;
        if (opornoe < 0.98) {
          opornoe = 1.20;
        }
        if (opornoe > 1.20) {
          opornoe = 0.98;
        }
      }
      if (sys_menu == 1) {
        puls--;
        if (puls < 1) {
          puls = 10;
        }
        if (puls > 10) {
          puls = 1;
        }
      }
      if (sys_menu == 2) {
        time_doza = 0;//сброс накопленной дозы
        doz_v = 0;//сброс накопленной дозы
        eeprom_wrD();
        myGLCD.clrScr();
        myGLCD.setFont(SmallFont);
        myGLCD.print("SBROS OK", CENTER, 24);
        myGLCD.update();
        _delay_ms(1000);
      }
      if (sys_menu == 3) {
        menu = 0;
      }
      if (sys_menu == 4) {
        eeprom_wrS ();
        menu = 0;
      }
    }
  }
}
//-------------------------------------------------------------
void OK () { //нажатие ОК
  if (!(PIND & (1 << PIND3))) { //удержаиние OK
    val_ok++;
    if (val_ok == 10) {
      val_ok = 0;
      menu = 2;
    }
  }
  if (menu == 2) {
    sys_menu++;
    if (sys_menu > 4) {
      sys_menu = 0;
    }
  }
  if (menu == 1) {
    n_menu++;
    if (n_menu > 7) {
      n_menu = 0;
    }
  }
  if (menu == 0) {
    menu = 1;
  }
  if (menu == 3) {
    menu = 1;
  }
}
//--------------------------------------------------------------
void gif_nabor() {
  myGLCD.setFont(SmallFont);
  myGLCD.drawLine(0, 50, 127, 50); myGLCD.drawLine(0, 63, 127, 63);
  for (int i = 127 - zam_180p * 0.72; i < 127; i++) {
    myGLCD.drawLine(i, 50, i, 63);
  }
  g_fl = !g_fl;
  if (g_fl == 0) {
    myGLCD.drawBitmap(gif_x, 53, gif_chast_1, 8, 8);
  } else {
    myGLCD.drawBitmap(gif_x, 53, gif_chast_2, 8, 8);
  }
  if (zam_180p < 180) {
    gif_x = gif_x + 1;
    if (gif_x >= 123 - zam_180p * 0.72) {
      gif_x = 0;
    }
    myGLCD.print("ANALIZ", CENTER, 40);
  }

  if (zam_180p >= 180) {
    myGLCD.print("OBNOVLENIE", CENTER, 40);
  }
}
//--------------------------------------------------------------
void zamer_180s() {
  myGLCD.clrScr();
  myGLCD.setFont(TinyFont);
  myGLCD.print("ACCURACY", 93, 10);
  myGLCD.setFont(SmallFont);
  myGLCD.printNumF(stat_percent, 1, 93, 18, '.', 4); myGLCD.print("%", 117, 18);
  myGLCD.setFont(BigNumbers);
  myGLCD.drawRect(0, 0, 88, 30);
  if (fon >= 1000) {
    float mZV = float(fon) / 1000;
    myGLCD.printNumF(mZV, 1, 4, 4, '.', 4, '0');
    myGLCD.setFont(SmallFont); myGLCD.print("mR/h", 62, 19);
  }
  if (fon < 1000) {
    myGLCD.printNumI(fon, 4, 4, 4, '0');
    myGLCD.setFont(SmallFont); myGLCD.print("uR/h", 62, 19);
  }

  gif_nabor();
  battery();
  myGLCD.update();
  if (millis() - toch_milis >= 1000) {
    toch_milis = millis();
    for (int i = 0; i < 180; i++) { //сдвигаем
      mass_toch[i] = mass_toch[i + 1];
    }
    mass_toch[179] = shet;
    shet = 0;
    if (zam_180p < 180) { //первый набор массива
      zam_180p++;
      int fon_vr1 = 0;
      for (int i = 180 - zam_180p; i < 180; i++) {
        fon_vr1 = fon_vr1 + mass_toch[i];
      }
      fon = fon_vr1 * (18.0 / zam_180p);
    }
    if (zam_180p >= 180) { //набор массива
      int fon_vr1 = 0;
      for (int i = 0; i < 180; i++) {
        fon_vr1 = fon_vr1 + mass_toch[i];
      }
      fon = fon_vr1 / 10;
    }
    if (zam_180p <= 36) {
      stat_percent = stat_percent - 2.0;
    }
    if (zam_180p > 36 && zam_180p <= 72) {
      stat_percent = stat_percent - 0.3;
    }
    if (zam_180p > 72 && zam_180p <= 100) {
      stat_percent = stat_percent - 0.2;
    }
    if (zam_180p > 100 && zam_180p <= 180) {
      stat_percent = stat_percent - 0.1;
    }
    if (stat_percent < 5) {
      stat_percent = 5.0;
    }
  }
  if (!(PIND & (1 << PIND7))) { //нажатие <<<
    _delay_ms(500);//антидребезг
    menu = 0;
    shet = 0; fon = 0; zam_36p = 0;
    for (int i = 0; i < 18; i++) { //чистим
      mass_36[i] = 0;
    }
    if (!(PIND & (1 << PIND7))) {//нажатие <<< фонарик
      val_kl++;
      if (val_kl == 6) {
        val_kl = 0;
        fonarik = !fonarik;
      }
    }
  }
}
//--------------------------------------------------------------
void lcd_poisk() {//вывод на дисплей режима поиск
  if (shet < treviga_1 && fon < treviga_1) {//проверяем тревогу
    tr = 0;
  }
  if (shet > treviga_1 || fon > treviga_1) {//проверяем тревогу
    tr = 1;
  }

  myGLCD.clrScr();
  if (tr == 1) { //опасно
    myGLCD.drawBitmap(91, 29, logo_tr_OLED, 32, 32);
  }
  else myGLCD.drawCircle(107, 45, 2);
  myGLCD.setFont(BigNumbers);
  myGLCD.drawRect(0, 0, 88, 41);
  myGLCD.drawRect(0, 30, 88, 63);
  if (fon >= 1000) {
    float mZV = float(fon) / 1000;
    myGLCD.printNumF(mZV, 1, 4, 4, '.', 4, '0');
    myGLCD.setFont(SmallFont); myGLCD.print("mR/h", 62, 19);
  }
  if (fon < 1000) {
    myGLCD.printNumI(fon, 4, 4, 4, '0');
    myGLCD.setFont(SmallFont); myGLCD.print("uR/h", 62, 19);
  }

  time_d ();
  myGLCD.setFont(TinyFont);
  myGLCD.print("ACCURACY", 93, 10);
  myGLCD.printNumI(HOUR, 2, 34);
  if (HOUR >= 9) {
    myGLCD.print("h", 15, 34);
  }
  if (HOUR < 9) {
    myGLCD.print("h", 7, 34);
  }
  myGLCD.printNumI(MIN, 20, 34);
  if (MIN >= 9) {
    myGLCD.print("m", 28, 34);
  }
  if (MIN < 9) {
    myGLCD.print("m", 25, 34);
  }
  myGLCD.setFont(SmallFont);
  if (doz_v < 1000) {
    myGLCD.printNumF(doz_v, 1, 35, 33, '.', 6); myGLCD.print("uR", 72, 33);
  }
  if (doz_v >= 1000) {
    myGLCD.printNumF(doz_v / 1000.0, 2, 35, 33, '.', 6); myGLCD.print("mR", 72, 33);
  }
  myGLCD.printNumF(100 - (zam_36p * 2.2), 1, 93, 18, '.', 4); myGLCD.print("%", 117, 18);


  battery();
  for (int i = 0; i < 5; i++) {
    myGLCD.drawLine(1, (4 * i) + 46, 4, (4 * i) + 46);
  }
  for (int i = 0; i < 82; i ++) { //печатаем график
    if (mass_p[i] > 0) {
      if (mass_p[i] <= 20) {
        myGLCD.drawLine(i + 5, 63, i + 5, 63 - mass_p[i]);
      }
      if (mass_p[i] > 20) {
        myGLCD.drawLine(i + 5, 63, i + 5, 63 - 20);
      }
    }
  }
  myGLCD.update();
}
//-------------------------------------------------------------
void lcd_menu() { //вывод на дисплей меню
  myGLCD.clrScr();
  myGLCD.setFont(SmallFont);
  myGLCD.print("OPASN.1", 8, 0); myGLCD.printNumI(treviga_1, 75, 0); myGLCD.print("uR/h", RIGHT, 0);
  myGLCD.print("OPASN.2", 8, 8); myGLCD.printNumI(treviga_2, 75, 8); myGLCD.print("uR/h", RIGHT, 8);
  myGLCD.print("PODSV.", 8, 16); myGLCD.printNumI(podsvetka, 75, 16);
  myGLCD.print("INVERT", 8, 24); myGLCD.printNumI(Lcd_Inv, 75, 24); myGLCD.print("on/off", RIGHT, 24);//usr
  myGLCD.print("POISK R", 8, 32); myGLCD.printNumI(scrin_GRAF, 75, 32); myGLCD.print("SEK", RIGHT, 32);
  myGLCD.print("ZVUK", 8, 40); myGLCD.printNumI(buzz_ON, 75, 40);
  myGLCD.print("OUT", 8, 48);
  myGLCD.print("SAVE", 8, 56);
  myGLCD.print(">", 0, n_menu * 8);
  myGLCD.update();
}
//-------------------------------------------------------------
void lcd_sys() { //вывод на дисплей меню
  VCC_read();
  speed_nakachka ();//скорость накачки имлульсы/сек
  myGLCD.clrScr();
  myGLCD.setFont(SmallFont);
  myGLCD.print("OPORN", 8, 0); myGLCD.printNumF(opornoe, 2, 44, 0); myGLCD.print("VCC", 75, 0); myGLCD.printNumF(VCC, 2, RIGHT, 0);
  hv_400 = hv_adc * opornoe * k_delitel / 255; //считем высокео перед выводом
  myGLCD.print("NAKAH", 8, 10); myGLCD.printNumI(puls, 75, 10); myGLCD.printNumI(hv_400, RIGHT, 10);
  myGLCD.print("DOZA", 8, 20); myGLCD.print(">>", 75, 20); myGLCD.print("SBROS", RIGHT, 20);
  myGLCD.print("OUT", 8, 30);
  myGLCD.print("SAVE", 8, 40);
  myGLCD.print(">", 0, sys_menu * 10);
  myGLCD.print("SPEED N", 0, 56); myGLCD.printNumI(speed_nak, 50, 56); myGLCD.print("imp/sek", RIGHT, 56);
  myGLCD.update();
}
//-------------------------------------------------------------
void poisk_f() {//режим поиска
  if (poisk == 1) {
    if (millis() - gr_milis >= scrin_GRAF * 1000) { //счет для графика
      gr_milis = millis();
      val_ok = 0;//сброс удержания системного меню
      shet_gr = shet - shet_n;
      if (shet_gr < 0) {
        shet_gr = 1;
      }
      mass_p[m] = shet_gr ;
      shet_n = shet;
      if (m < 82) {
        m++;
      }
      if (m == 82) {
        for (int i = 0; i < 83; i++) {
          mass_p[i] = mass_p[i + 1];
        }
        mass_p[82] = shet_gr;
      }
    }
    if (millis() - toch_milis >= 1000) {
      toch_milis = millis();
      for (int i = 0; i < 36; i++) { //сдвигаем
        mass_36[i] = mass_36[i + 1];
      }
      mass_36[36] = shet;
      if (zam_36p < 36) { //первый набор массива
        zam_36p++;
        fon = fon + shet;
      }
      if (zam_36p >= 36) { //набор массива
        int fon_vr1 = 0;
        for (int i = 0; i < 36; i++) {
          fon_vr1 = fon_vr1 + mass_36[i];
        }
        fon = fon_vr1;
      }
      shet = 0;
      /*
        for (int i = 0; i < 36; i++) {
          Serial.print( mass_36[i]); Serial.print(",");
          }
          Serial.print(","); Serial.print(fon); Serial.println(" ");
      */
      doz_v = doz_v + fon / 100.0 / 36.0;
      time_doza = time_doza + 1;
      if (doz_v - doza_vr >= save_DOZ) { //а не пора ли сохранить дозу ?)
        eeprom_wrD ();
        doza_vr = doz_v;
      }
    }
  }
}
//-------------------------------------------------------------
void signa () { //индикация каждой частички звуком светом
  shet_s = shet;
  if (buzz_ON == 1) {//включаем бузер
    PORTB |= (1 << 5); //светодиод
    int d = 30;
    while (d > 0) {
      PORTD |= (1 << 6);
      _delay_us(ton_BUZZ);
      PORTD &= ~(1 << 6);
      _delay_us(ton_BUZZ);
      d--;
    }
    PORTB &= ~(1 << 5);//светодиод
  }
  generator();//накачка по обратной связи с АЦП
}
//-------------------------------------------------------------
void Schet() { //прерывание от счетчика на пин 2
  //detachInterrupt(0);
  shet++;
  //attachInterrupt(0, Schet, FALLING);
}
//-------------------------------------------------------------
void generator() {//накачка по обратной связи с АЦП
  hv_adc  = Read_HV();
  if (hv_adc < ADC) { //Значение АЦП при котором на выходе 400В
    int c = puls;
    PORTD |= (1 << 5); //пин накачки
    while (c > 0) {
      asm("nop");
      c--;
    }
    PORTD &= ~(1 << 5);//пин накачки
    speed_nakT++;
  }
}
//-------------------------------------------------------------
void VCC_read() { // Чтение напряжения батареи
  ADCSRA = 0b11100111;
  ADMUX = 0b01101110;//Выбор внешнего опорного+BG
  _delay_ms(5);
  while ((ADCSRA & 0x10) == 0);
  ADCSRA |= 0x10;
  byte resu = ADCH;
  ADCSRA &= ~(1 << ADEN);  // отключаем АЦП,
  VCC = (opornoe * 255.0) / resu;
}
//-------------------------------------------------------------
byte Read_HV () {
  ADMUX = 0b11100110;//выбор внутреннего опорного 1,1В и А6
  ADCSRA = 0b11100111;
  _delay_us(20);
  while ((ADCSRA & 0x10) == 0);
  ADCSRA |= 0x10;
  byte result = ADCH;
  ADCSRA &= ~(1 << ADEN);  // отключаем АЦП,
  return result;
}
//-------------------------------------------------------------

void lcd_init() {
  myGLCD.begin();
  myGLCD.setBrightness(contrast);
  myGLCD.invert(Lcd_Inv);
  myGLCD.clrScr();
  myGLCD.drawBitmap(0, 0, logo_rag, 84, 48);
  myGLCD.setFont(SmallFont);
  myGLCD.print("Arduino+", CENTER, 32);
  myGLCD.print("Dosimetr v1.03", CENTER, 40);
  myGLCD.update();
  delay(1000);
}
//-------------------------------------------------------------
void eeprom_wrS () { //запись настроек в память
  EEPROM.write(0, 222);
  EEPROM.write(1, treviga_1);
  EEPROM.write(2, podsvetka);
  EEPROM.write(3, Lcd_Inv);
  EEPROM.write(4, scrin_GRAF);
  EEPROM.write(5, buzz_ON);
  EEPROM.write(6, puls);
  EEPROM.write(7, opornoe * 100);
  EEPROM.write(8, treviga_2);
  myGLCD.clrScr();
  myGLCD.setFont(SmallFont);
  myGLCD.print("Save OK", CENTER, 24);
  myGLCD.update();
  _delay_ms(1000);
}
//-------------------------------------------------------------
void eeprom_wrD () { //запись настроек в память время накопления дозы
  byte hi = time_doza >> 8;
  byte low = time_doza;
  EEPROM.write(9, hi);
  EEPROM.write(10, low);
  hi = int(doz_v) >> 8;
  low = int(doz_v);
  EEPROM.write(11, hi);
  EEPROM.write(12, low);
}
//-------------------------------------------------------------
void eeprom_readD () { //чтание настроек из памяти время накопления дозы
  byte hi  = EEPROM.read(9);
  byte low  = EEPROM.read(10);
  time_doza = (hi << 8) | low;
  hi  = EEPROM.read(11);
  low  = EEPROM.read(12);
  doz_v = (hi << 8) | low;

}
//-------------------------------------------------------------
void eeprom_readS () { //чтание настроек из памяти
  if (EEPROM.read(0) == 222) {
    treviga_1 = EEPROM.read(1);
    podsvetka = EEPROM.read(2);
    Lcd_Inv = EEPROM.read(3);
    scrin_GRAF = EEPROM.read(4);
    buzz_ON = EEPROM.read(5);
    puls = EEPROM.read(6);
    opornoe = EEPROM.read(7) / 100.0;
    treviga_2 = EEPROM.read(8);
  }
  _delay_ms(10);
}
//-------------------------------------------------------------
void nakachka() {//первая накачка
  byte n = 0;
  while (n < 30) {
    PORTD |= (1 << 5);//дергаем пин
    int c = puls;
    while (c > 0) {
      asm("nop");
      c--;
    }
    PORTD &= ~(1 << 5);//дергаем пин
    n++;
    _delay_us(100);
  }
}
//-------------------------------------------------------------
void speed_nakachka () { //скорость накачки имлульсы/сек
  if (millis() - spNAK_milis >= 1000) {
    spNAK_milis = millis();
    speed_nak = speed_nakT;
    speed_nakT = 0;
  }
}
//-------------------------------------------------------------
void time_d() {
  HOUR = time_doza / 3600;
  MIN = (time_doza / 60) % 60;
}
//-------------------------------------------------------------
void battery() { //батарейка
  VCC_read();
  myGLCD.drawBitmap(99, 0, logo_bat, 24, 8);
  myGLCD.setFont(TinyFont);
  myGLCD.printNumF(VCC, 2, 103, 2);
}

При выборе инверсии экрана, она происходит после перезагрузки (в функции инициализации). Если это делать уже в работе появляются странные глюки.

Lazy_Dragon
Offline
Зарегистрирован: 09.03.2017

Чуть не забыл, файл gif.c тоже поменял, добавил иконку тревоги такую

const unsigned char PROGMEM  logo_tr_OLED[] =
{ 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xE8, 0x8C, 0x04, 0x06, 0x02, 0x02, 0x02, 0x02,
0x02, 0x02, 0x02, 0x02, 0x06, 0x04, 0x8C, 0xE8, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00,
0x00, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0xC0, 0xC0,
0xC0, 0xC0, 0x00, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0x00,
0x00, 0x1F, 0x70, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE3, 0xE3,
0xE3, 0xE3, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x70, 0x1F, 0x00,
0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x18, 0x10, 0x30, 0x30, 0x7C, 0x7F, 0x7F, 0x7F, 0x7F,
0x7F, 0x7F, 0x7F, 0x7F, 0x7C, 0x30, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00
};

 

вот архив https://mega.nz/#!uUJFQCQa!f7bMjEgLC2AMosU60gRSgOm-fkA3oEGedhVGdJUGOXM

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Lazy_Dragon пишет:

....

вот архив https://mega.nz/#!uUJFQCQa!f7bMjEgLC2AMosU60gRSgOm-fkA3oEGedhVGdJUGOXM

Спасибо! Разместил на страничке.

 

 

kaktuc
Offline
Зарегистрирован: 03.06.2015

Всем привет, я тут карилицу замастрячил в библилтеку, шрифт 6х8 RUS_Fonts. 

У меня нету экранчика что бы проверить((.

Сдесь библиотека и исходник.  https://yadi.sk/d/eeJf1UlQ3HKsEV

Проверяйте.

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

kaktuc пишет:

Всем привет, я тут карилицу замастрячил в библилтеку, шрифт 6х8 RUS_Fonts. 

У меня нету экранчика что бы проверить((.

Сдесь библиотека и исходник.  https://yadi.sk/d/eeJf1UlQ3HKsEV

Проверяйте.

Отлично.

extern uint8_t RUS_Fonts[];// Кирилица 6х8

будет время проверю, если ок будут наш АрДОс русифицирован.

kaktuc
Offline
Зарегистрирован: 03.06.2015

ОК

Joiner
Offline
Зарегистрирован: 04.09.2014

Победа!!! Получилось! Высокоомный вольтметр 150 мегаом.

Слева выпрямитель по схеме удвоения от напряжения сети. Напряжение снимается с делителя, состоящего из 6-ти резисторов 1 Мом. Мой вольтметр подключен параллельно тестеру.

Вольтметр, вид сзади

Вот показания на другом плече делителя

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

P.S.  Теперь я знаю, что ранее подключал счетчик к 600 В..... :(

tekagi
tekagi аватар
Offline
Зарегистрирован: 07.10.2016

Joiner, аккуратно получилось. Поделитесь ссылкой на описание/схему? Думаю, желающим собрать пригодится.

kaktuc, есть траблы с кодировкой. Залил скетч без изменения, получил такой результат.

Потанцевал с (бубном) кодировками (UTF8-WIN1251) - заработало. Но в среде Ардуино (1.8.1) кириллический текст в скетче при этом нечитаем. IDE поддерживает смену кодировки?

 

Lazy_Dragon
Offline
Зарегистрирован: 09.03.2017

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

архив перезалил, вернул все расчеты назад для одного датчика.
https://mega.nz/#!vUBWkY5I!LpXWbFRZkTI0b75_zLZEKkjK5EVoceJfOfnV4IFUpmQ

kaktuc
Offline
Зарегистрирован: 03.06.2015

Я боролся с траблами так  https://youtu.be/tJM89vWpD3M

Всё компилируется ок, пока не закроеш проект. Просто потом копируеш сохранёный проект и встовляеш в пустой и всё работает дальше)))  

kaktuc
Offline
Зарегистрирован: 03.06.2015

Кодировку не менял

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

kaktuc пишет:

Я боролся с траблами так  https://youtu.be/tJM89vWpD3M

Всё компилируется ок, пока не закроеш проект. Просто потом копируеш сохранёный проект и встовляеш в пустой и всё работает дальше)))  

Я не помню в какой версии ИДЕ но у меня с коментами в скетче тоже бывают проблемы, слетает кириллица.

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

primer_skrtvhs.ino.hex

укорачиваю до

primer_skrtvhs.hex

только тогда идет симуляция и это утомляет когда по многу раз делать(((

bwn
Offline
Зарегистрирован: 25.08.2014

Joiner пишет:

Победа!!! Получилось! Высокоомный вольтметр 150 мегаом.

Жадина.)))) Сссылочку выкладывай на схему-описание.

Joiner
Offline
Зарегистрирован: 04.09.2014

bwn пишет:

Joiner пишет:

Победа!!! Получилось! Высокоомный вольтметр 150 мегаом.

Жадина.)))) Сссылочку выкладывай на схему-описание.

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

Вот она, красава!  

P.S.  Ни когда не делайте высокоомный вольтметр по схеме из журнала Радио №8 за 1973 год, по которой я убил целый месяц!!! И которая так и не заработала.  :)

P.S.p.s. В ходе измерений, параллельно подключенными, моим вольтметром и тестером входным сопротивлением 10 Мом, отмечено, что при отключении моего вольтметра, показания на тестере увеличивались всего на 2 вольта......при отключении тестера, показания моего вольтметра увеличивались на величину более 50 вольт. Это говорит об ошибке, которую дает тестер, и на сколько показания точнее моим вольтметром. 

P.S.p.s.з.ы. Если нет стрелочного микроамперметра, мою схему можно модернизировать под ардуиновский вольтметр. Для этого пересчитать коэффициэнт передачи преобразователя и снимать напряжение с R1 и подавать его на аналоговый вход ардуинки. При номилах как на схеме, при входном напряжении 500 вольт, на резисторе R1 напряжение 5 вольт.

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Joiner пишет:

....

P.S.p.s.з.ы. Если нет стрелочного микроамперметра, мою схему можно модернизировать под ардуиновский вольтметр. Для этого пересчитать коэффициэнт передачи преобразователя и снимать напряжение с R1 и подавать его на аналоговый вход ардуинки. При номилах как на схеме, при входном напряжении 500 вольт, на резисторе R1 напряжение 5 вольт.

Привет.

Думаю если использовать Ардуино, то можно и транзистор выбросить у LM358 хватит мощности чтоб потянуть измерения АЦП Ардуинки.

Joiner
Offline
Зарегистрирован: 04.09.2014

bodriy2014 пишет:

Joiner пишет:

....

P.S.p.s.з.ы. Если нет стрелочного микроамперметра, мою схему можно модернизировать под ардуиновский вольтметр. Для этого пересчитать коэффициэнт передачи преобразователя и снимать напряжение с R1 и подавать его на аналоговый вход ардуинки. При номилах как на схеме, при входном напряжении 500 вольт, на резисторе R1 напряжение 5 вольт.

Привет.

Думаю если использовать Ардуино, то можно и транзистор выбросить у LM358 хватит мощности чтоб потянуть измерения АЦП Ардуинки.

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

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

Особенный кайф после бесполезной борьбы в течение месяца с другой схемой, которая в 10 раз сложнее и оказалась неработоспособной (может по причине моих кривых рук) :)

sva_khv
Offline
Зарегистрирован: 19.12.2016

Добрый день всем!

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

Сразу поясню - я делаю не с АВТОНОМНЫМ питанием, поэтому вопрос минимизации потребления не актуален. Я реализую на основе меги и TFT экрана сбор статистики по радиации почасовой и суточный. Показ текущего значения тоже реализован.

Генератор я собрал по схемеhttp://cxem.net/dozimetr/3-10.php с моим трансом заработало при частоте ШИМ -3кГц и параметре ШИМ в пределах 5-8.

Регистратор импульса взял как у вас сдесь реализовано.

И т.к. на фоне потребления TFT экрана  (200ма),  потребление преобразователя 5-12ма не критично, я нагрузил 400В резистором 30 МОм и добавив 470кОм (как у вас в схемах) с него снимаю сигнал на аналоговый вход меги, замеряю и параметром ШИМ регулирую напряжение. Показания напряжения измеряемое  Мегой я откалибравал не заморачиваясь - подключил резисторы, тестер и мегу. Тестер показал 240В. Настроил показания меги. Убрал тестер - мега показала на преобразователе 440В. Далее подстроил параметры ШИМ и програмно меняя пареметр ШИМ регулирую напряжение. Особой точностью не заморачивался - поддерживаю от 390 до 406 В.

sva_khv
Offline
Зарегистрирован: 19.12.2016

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

sva_khv пишет:

Отлично получилось!

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Залил прошивку под Oled в устройство,

очень понравился инверсный режим.

Снал отличие 14сек.

 

tekagi
tekagi аватар
Offline
Зарегистрирован: 07.10.2016

Маловат экранчик для такого корпуса) Если собрать на сбм10 или сбм21 то можно габаритами пейджера обойтись.

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

tekagi пишет:
Маловат экранчик для такого корпуса) Если собрать на сбм10 или сбм21 то можно габаритами пейджера обойтись.

Да маловат, но читаемость отличная!

сбм10 или сбм21 смотрел по объявлениям стоят дорого!(

Joiner
Offline
Зарегистрирован: 04.09.2014

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

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

Вот иллюстрация

Теперь мои руки развязаны, и я могу приступить непосредственно к дозиметру.

P.S. Обидно...высокоомный вольтметр даже не понадобился. Так как напряжение стабилизированное, оно совсем не просаживается от обычного тестера. Измерял тестером и высокоомным вольтметром, результат одинаковый.

tekagi
tekagi аватар
Offline
Зарегистрирован: 07.10.2016

Joiner, сколько по потребению выходит?

Joiner
Offline
Зарегистрирован: 04.09.2014

tekagi пишет:

Joiner, сколько по потребению выходит?

По ходу изготовления преобразователя сопровождал следующий гемморой - когда подключал конец вторичной обмотки к земле, чтобы организовать обратную связь для стабилизации напряжения, схема переставала работать. Пробовал принудительно запустить микросхему притянув ногу компаратора к земле.Микросхема работала на полную катушку без ОС и выдавала на накопительном конденсаторе 700 вольт. Стоило только соединить конец вторичной катушки к земле, микросхема выключалась, вернее работала в каком-то ненормальном режиме. Без ОС и напряжении на выходе 700в, схема потребляла 20 ма.

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

Но без всяких изменений схема вдруг заработала, но как я и писал немного через Ж. Это выражается высоким потреблением, уже 65-100 ma.

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

Joiner
Offline
Зарегистрирован: 04.09.2014

Подключил к преобазователю счетчик гейгера, попытался снять импульсы. Получилась какая-то фигня. Импульсы идут от 1 килогерца до 20-ти. Снял осциллограмму с резистора через который минус счетчика соединен с землей. Вот что получилось

Так понимаю тригером отловлен настоящий импульс, а другие поменьше - это какие-то помехи. Что делаю не так?

tekagi
tekagi аватар
Offline
Зарегистрирован: 07.10.2016

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

Joiner
Offline
Зарегистрирован: 04.09.2014

Так и есть, скорее всего. Убрал счетчик, а импулсы на резисторе остались :)