ArDos / дозиметр, часть №1

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

Там привязка не ко времени, а к накопленной дозе. При естественном фоне реже, при повышенном чаще. Задаётся в строке
#define save_DOZ 20 //как часто сохранять накопленную дозу например каждые 20мкР

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

Wik
Offline
Зарегистрирован: 10.11.2019

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

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

Напряжение при накачке 10 импульсы уменьшаются до 130, но напряжение ростет до 540в. при установке перемычки напряжениеуменьшается до 400в импульсы 200. При замере на конденсаторе напряжение на мультиметре и ардуине одинаковое 390в. Транзистор поставил irmlm6346, перевернул ногами к верху. Ёмкость 270 mf в первичке. Может делитель неправильно посчитал? 

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

Если напряжения при замерах совпали - делитель посчитан верно. Какая ёмкость конденсатора в нижнем плече делителя?
Что ж всех так тянет собирать именно олед версию? В ней глюков вагон и тележка, в том числе и в алгоритме накачки...

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

конденсатора в нижнем плече 1000 пикофарад  который рядом с резистором на 200 килоом

#define  ADC_value 189  //значение АЦП при котором 400В с учетом вашего делителя напряжения (0..255)
#define k_delitel 501 //коефициент дельтеля напряжения, зависит от вашего делителя.
//#define UNO_DIP
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мкР
//настройки //////////////конец
ВСЕ ВЕРНО ВПИСАЛ?
tekagi
tekagi аватар
Offline
Зарегистрирован: 07.10.2016

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

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

При изменении напряжения питания от 3,3в до 5в, изменяется и высокое напряжение от 350в-450в  ADC_value 64 поставил, импульсы уменьшились до 17-20. ёмкость менял на 2nf изменений не заметил

 

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

Почему 64? Если напряжение отличалось на треть, то и подбирать коэффициент стоило исходя из этого. Высокое не должно изменяться в зависимости от напряжения питания.
Можно ещё попробовать заменить HV_read на взятую из версии 1.08.2.

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

при замене вышла ошибка. Высокое изменяться в зависимости от напряжения питания, может ардуина бракованная?

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

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

byte Read_HV () 
{
ADCSRA = 0b11100111;
ADMUX = 0b11100110;
for (int i = 0; i < 10; i++) 
	{
		while ((ADCSRA & 0x10) == 0);
		ADCSRA |= 0x10;
	}
int result = 0;
for (int i = 0; i < 10; i++) 
	{
		while ((ADCSRA & 0x10) == 0);
		ADCSRA |= 0x10;
		result += ADCH;
	}
result /= 10;
byte result2 = byte(result);
return result2;
}

Полный скетч oled с багфиксом замера:

/* ArDOs   v105 без режима сна
 *  Mod for OLED 128*64 I2C by Lazy_Dragon
***Дозиметр на Ардуино
***IDE Arduino 1.8.5
  ветка форума arduino.ru/forum/proekty/delaem-dozimetr
  сайт srukami.inf.ua/ardos.html
  
  OLED версия более не поддерживается!
*/
#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_value 163  //значение АЦП при котором 400В с учетом вашего делителя напряжения (0..255)
#define k_delitel 567 //коефициент дельтеля напряжения, зависит от вашего делителя.
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_value) { //Значение АЦП при котором на выходе 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 () 
{
ADCSRA = 0b11100111;
ADMUX = 0b11100110;
for (int i = 0; i < 10; i++) 
	{
		while ((ADCSRA & 0x10) == 0);
		ADCSRA |= 0x10;
	}
int result = 0;
for (int i = 0; i < 10; i++) 
	{
		while ((ADCSRA & 0x10) == 0);
		ADCSRA |= 0x10;
		result += ADCH;
	}
result /= 10;
byte result2 = byte(result);
return result2;
}
//--------------------------------------------------------------------------------------------------
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);
}

Файл gif.c:

#include <avr/pgmspace.h>
const unsigned char PROGMEM gif_chast_1[] =
{ 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00};
const unsigned char PROGMEM gif_chast_2[] =
{ 0x3C, 0x7E, 0xC3, 0xC3, 0xC3, 0xC3, 0x7E, 0x3C};
const unsigned char PROGMEM logo_bat[] =
{ 0x1C, 0xFF, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF
};
const unsigned char PROGMEM  logo_tr[] =
{ 0x3C, 0x42, 0x99, 0x24,
  0x00, 0x60, 0x90, 0x98,
  0x8E, 0x81, 0x81, 0x8E,
  0x98, 0x90, 0x60, 0x00,
  0x24, 0x99, 0x42, 0x3C
};

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

const unsigned char PROGMEM logo_rag[] =
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0xF8,
  0xF8, 0xF8, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8,
  0xF8, 0xF8, 0x78, 0x78, 0x78, 0x78, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0,
  0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0xF8, 0x98, 0x18,
  0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0xFF, 0xFF, 0x9F, 0x81,
  0x81, 0x81, 0x9F, 0xFF, 0xFF, 0xFC, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFC, 0x1E, 0x0F, 0x0F, 0x0F, 0x06, 0x00, 0xFF, 0xFF,
  0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xCF, 0xFF, 0xFF,
  0xFF, 0xFF, 0x00, 0xFC, 0xFF, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x36,
  0x78, 0x78, 0x78, 0x36, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0xFF, 0xFC,
  0x00, 0xFC, 0xFE, 0xFF, 0xEF, 0xC7, 0xC7, 0x8F, 0x0F, 0x0E, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFF, 0xFF, 0xFF, 0x1F, 0x07, 0x07, 0x07,
  0x07, 0x07, 0x07, 0x07, 0x3F, 0xFF, 0xFF, 0xFF, 0xF8, 0xC0, 0x00, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
  0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x7E, 0x7F, 0x3F, 0x3F,
  0x0F, 0x07, 0x00, 0x01, 0x0F, 0x1E, 0x38, 0x70, 0x60, 0xF0, 0xFE, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF0, 0x60, 0x70, 0x38, 0x1F, 0x07, 0x01,
  0x00, 0x79, 0xF9, 0xF1, 0xF3, 0xF7, 0xFF, 0xFF, 0x7F, 0x3E, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

Или архивом вместе с библиотекой.

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

1.08.2. прошивку поставил без дисплея в слепую, она стабильно 400v держит

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

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

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

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

nasfiratu666
Offline
Зарегистрирован: 25.10.2019

Приветствую еще раз, чем эту гребаную ардуину мини прошить? Через нано ошибки посыпались, потом сама нано перестала шиться в SPI, через FTDI?

alexadresat
alexadresat аватар
Offline
Зарегистрирован: 22.02.2017
nasfiratu666
Offline
Зарегистрирован: 25.10.2019

Где видео, Уно нету, да и не проканало, пошел рыться их искать, все 2 типа есть...

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

При выходе из меню кратковременно увеличивается напряжение до 430в и происходит завышеие фона но через 10 секунд нормализуется напряжение. С этим багом можно что то сделать?

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

Можно, но самостоятельно :) У меня желания ковырять олед версию нет. По завышению фона при выходе решение когда-то ImaSoft в теме выкладывал.

TIGR
Offline
Зарегистрирован: 01.09.2019

По поводу прошивки ардуино. Вот в видосе все подробно рассказано, тоже сталкивался с проблемой прошивки. https://www.youtube.com/watch?v=gq64OQn5NDc

MaxOn
Offline
Зарегистрирован: 16.11.2019

Здравствуйте. Такой вопрос, а трубка Гейгера СИ-22Г подойдет? Она больше чем СБМ-20 и СТС-5. Просто в нашем городе тяжело достать СТС и СБМ, а СИ-22Г у меня осталась вместе с паспортом

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

Вот не надо обновлять страницу.

СИ-22 работает только с экспериментальной прошивкой из 26го поста, но там не реализован весь функционал и некорректный учёт дозы.

MaxOn
Offline
Зарегистрирован: 16.11.2019

Спасибо огромное за отзыв. Значит придется СБМ и СТС искать?

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

Если хочется собрать сейчас - да. Или ждать полнофункциональной прошивки под СИ-22. Ждать придётся долго.

MaxOn
Offline
Зарегистрирован: 16.11.2019

Спасибо, значит в другом городе буду заказывать счетчик

MaxOn
Offline
Зарегистрирован: 16.11.2019

Ещё такой вопрос, а печатную плату для изготовления дозиметра где можно заказать? Самому изготовить нет возможности

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

К примеру на jlcpcb. Пару страниц назад VlaoMao выкладывал фото платы их производства. Если заглянет в тему - может подскажет детали, там не так всё просто.

MaxOn
Offline
Зарегистрирован: 16.11.2019

Спасибо огромное

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

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

Дозиметр вроде работает нормально. буду пробовать запихать его в корпус от тестера 838.

решение то ImaSoft помогло.

 

artemcasey
artemcasey аватар
Offline
Зарегистрирован: 17.11.2019

Здравствуйте, эта гантелька пойдёт https://www.chipdip.ru/product/rlb1314-682kl :?

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

Не факт, пробовать надо. Вот такая проверена пользователем Medvedik: https://www.chipdip.ru/product/rlb1314-103kl

artemcasey
artemcasey аватар
Offline
Зарегистрирован: 17.11.2019

Спасибо!

VlaoMao
Offline
Зарегистрирован: 16.10.2019

tekagi пишет:
К примеру на jlcpcb. Пару страниц назад VlaoMao выкладывал фото платы их производства. Если заглянет в тему - может подскажет детали, там не так всё просто.

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

К вопросу выше о катушке - я такую же использовал, всё ок.

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

394В на дисплее

http://youtu.be/KPwirmW7HTc

 

 

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

VlaoMao, вопрос скорее в процедуре заказа (требования к файлам, может ссылка на ваш заказ, наверняка у них фотошаблон остался). Ну и стоимость/пересылка/время выполнения. Тем, кто не сталкивался ранее с заказом плат информация, думаю, пригодится.

Jeep64, если подсоединить миллиамперметр вместо снятого джампера - сколько показывает?

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

Там постоянно значениена мультиметре изменяется, где то 1,3-0.6 иногда 2-3 милиампера проскакивает

MaxOn
Offline
Зарегистрирован: 16.11.2019

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

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

Когда по кнопкам перемещаешься в верх низ генерация высокого прекращается, а потом происходит резкий скачек на доли секунд 450-470в

это может трубке навредить?

Получается 11 ma ардуина потребляет? 

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

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

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

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

в этой части прошивки 300. нужно ли на 100 поменять или не важно? и замер 180s было значение 200  изменил на 180s   как было в олед версии  или все же 200 s правильное значение? 

if (millis() - lcd_milis >= 300) { //скорость отрисоаки дисплея
    lcd_milis = millis();
    if (menu == 0) {
      lcd_poisk();//вывод на дисплей режима поиск
      poisk_f();  //вызов функции счёта и набора массива
    }
    if (menu == 1) {
      lcd_menu();//вывод на дисплей меню
      poisk_f(); //вызов функции счёта и набора массива________________________________  
    }
    if (menu == 2) {
      lcd_sys();//вывод на дисплей системного меню
      poisk_f();  //вызов функции счёта и набора массива________________________________
    }
    if (menu == 3) {
      zamer_180s();//вывод на дисплей замер 180сек
    }
tekagi
tekagi аватар
Offline
Зарегистрирован: 07.10.2016

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

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

_delay_ms(500);//антидребезг. В новых прошивках таких строк нет. Нужны ли они вообще, или можно поудалять?

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

Сидит программист глубоко в отладке. Подходит сынишка:
- Папа, почему солнышко каждый день встаёт на востоке, а садится на западе?
- Ты это проверял?
- Проверял.
- Хорошо проверял?
- Хорошо.
- Работает?
- Работает.
- Каждый день работает?
- Да, каждый день.
- Тогда ради Бога, сынок, ничего не трогай и не меняй.

VlaoMao
Offline
Зарегистрирован: 16.10.2019

Не, ну антидребезг на 0,5с это конечно сильно

Jeep64
Jeep64 аватар
Offline
Зарегистрирован: 04.05.2019

Просто подумал может из за этих задержек высокое напряжение прыгает выше 400 когда кнопки клацаеш

artemcasey
artemcasey аватар
Offline
Зарегистрирован: 17.11.2019

Скиньте пожалуйста печатную плату в dip варианте 

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

Ссылки на печатки в посте #26 на первой странице и на авторском сайте (ссылка там же). Советую выбрать смешаную печатку дип/смд от alexadresat.

artemcasey
artemcasey аватар
Offline
Зарегистрирован: 17.11.2019

Можно ли в схеме два резистора на 30 Мом распаять по 10 Мом ?

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

Можно. Особенно если изменить это в печатке, чтобы не колхозить навесной монтаж. Но лучше использовать поправленную схему и печатку alexadresat (которая sot-23), там сопротивления по 10М. Но смд.

2moder: оперативно)) А 3521 и 3524 так же можно?

artemcasey
artemcasey аватар
Offline
Зарегистрирован: 17.11.2019

 

Вот, проверьте пожалуйста) Переделал умножитель и резисторы 30 Мом
P.S Первый раз этим занимаюсь

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

Не пойдёт, так элементы под счётчиком гейгера будут. Лучше так. Заодно и коэффициенты с фиксеной схемы вписать можно.

Зря берёте старую печатку, она габаритнее и менее удобна для корпусирования.

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