Три недели в поте лица трахался с изготовлением высокоомного вольтметра из журнала радио №8 за 1973 год. Что только не делал!!!, даже печатную плату вытравил, даже нашел древний транзистор...но ни чего у меня не получилось. Генератор генерировал, но ни как на напряжение не реагировал. Хоть я и упорно бился лбом об стену, победить не удалось. Не понимаю почему :(
Сегодня нашел схему преобразователя напряжение-ток, немного рассчитал, собрал на макетке. Все устройство состоит из ОУ LM358, транзистора 2N2222, резистора (без учета деталей входного делителя) и микроамперметра на 50 микроампер. Попробовал измерять напряжение батареек, показывает стабильный результат даже при изменении напряжения питания прибора в два раза.
Буду делать вольтметр по этой схеме.
Жаль, убитого на вольтметр из журнала радио, времени, может дозиметр радиации уже был бы готов на макете :(((((
Joiner, так вольтметр же в самом Ardos'e есть. Как показало сравнение с образцовым вольтметром его показаниям вполне можно доверять. (При условии тщательной отмывки и обязательной последующей сушки платы). Разброс оказался в пределах 10-15 вольт. Хотя поначалу наступил на грабли, когда пытался после промывки и кратковременной сушки запустить, показания не сходились раза в два. Пришлось сушить ещё пару раз и на сутки оставить на батарее, чтобы остатки изопропанола выветрились, тогда пасьянс сошёлся.
Электростатическим зайчиковым, в давние времена специально достал для работы с дозиметрами.
Не очень понимаю... Если сделать делитель общим сопротивлением мегаом сто, а потом на низком плече измерять напряжение обычным тестером, показания сильно исказятся? Допустим, подаем на делитель 400 вольт, а делитель сделан так, что на низком плече получается 4 вольта, если измерим обычным тестером, получится 4 вольта?
Пробовал делителем 90МОм с мультиметром со входным 10 МОм, ерунда получается. В схеме дозиметра через делитель накапливается заряд на конденсаторе, и меряется уже на нём. Плюс делитель ArDos'a является частью схемы, то есть подключён к высокому напряжению постоянно, внешний же вольтметр, если его сопротивление не гигаомы, при подключении всё равно будет давать просадку. (Насколько схема стабилизации будет её держат - не экспериментировал, надо будет попробовать).
Сегодня попробовал без точного подбора резистора в преобразователе, сделанном на макетке, измерять сопротивление пальчиковой батарейки. С получившимися, по быстренькому, параметрами батарейка дает показания на микроамперметре 20 микроампер, которые четко держатся даже при изменении напряжения питания схемы. При подключении той же самой батарейки через резистор 1мегаом, показания микроамперметра не меняются и остаются 20 микроампер. Что дает мне право думать об очень большом входном сопротивлении схемы и дает надежду что из этого получится нормальный вольтметр с высоким входным сопротивлением, не меньше 100 мегаом при напряжении 400 вольт.
Попробовал подкинуть параллельно высокому шуп 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 и мультиметра совпадают.
Попробовал подкинуть ..................... Показания ArDos'a и мультиметра совпадают.
Сегодня постараюсь за день сделать свой вольтметр. О результатете отпишусь.
Ранее измерял напряжение на макете дозиметра, работающем от сети 220в, своим мультиметром. В инструкции не нашел его (мультиметра) сопротивления. Но проседало напряжение прилично. Это я понял по очень заметному уменьшению громкости щелчков бузера при подключении мультиметра. Понял, что напряжение на счетчики идет с большим превышением и эксперименты прекратил.
Ранее измерял напряжение на макете дозиметра, работающем от сети 220в, своим мультиметром. В инструкции не нашел его (мультиметра) сопротивления. Но проседало напряжение прилично. Это я понял по очень заметному уменьшению громкости щелчков бузера при подключении мультиметра. Понял, что напряжение на счетчики идет с большим превышением и эксперименты прекратил.
Привет, если у тебя какая-нибудь DT-шка измеряй через резистор 10МОм показания потом в уме домножай на 10, самый примитивный способ.
А вообще как писал выше 2резистора в делитель и кондер.
Без проблем могу выложить, правда на реальном устройстве не тестировал. И абсолютно не против выкладывания куда либо. Единственное я его сразу исправлял под работу с 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);
}
При выборе инверсии экрана, она происходит после перезагрузки (в функции инициализации). Если это делать уже в работе появляются странные глюки.
Слева выпрямитель по схеме удвоения от напряжения сети. Напряжение снимается с делителя, состоящего из 6-ти резисторов 1 Мом. Мой вольтметр подключен параллельно тестеру.
Вольтметр, вид сзади
Вот показания на другом плече делителя
Ну вот теперь можно заняться высоковольтным питанием счетчиков гейгера.....
P.S. Теперь я знаю, что ранее подключал счетчик к 600 В..... :(
Потанцевал с (бубном) кодировками (UTF8-WIN1251) - заработало. Но в среде Ардуино (1.8.1) кириллический текст в скетче при этом нечитаем. IDE поддерживает смену кодировки?
Всё компилируется ок, пока не закроеш проект. Просто потом копируеш сохранёный проект и встовляеш в пустой и всё работает дальше)))
Я не помню в какой версии ИДЕ но у меня с коментами в скетче тоже бывают проблемы, слетает кириллица.
Но в видео меня удивило другое, у тебя протеус жрет хексы с тем именем которое формирует ардуино с точками и ТД, у меня отказывается пока не укорочу, например было
primer_skrtvhs.ino.hex
укорачиваю до
primer_skrtvhs.hex
только тогда идет симуляция и это утомляет когда по многу раз делать(((
Жадина.)))) Сссылочку выкладывай на схему-описание.
Схему придумал почти сам. Схема очень простая и удобная в настройке. Сейчас хочу выложить ее с описанием у себя на страничке. Описывать собственно нечего, все очень просто и работать начинает сразу. Надо только настроить ее многооборотным подстроечником по образцовому вольтметру.
Вот она, красава!
P.S. Ни когда не делайте высокоомный вольтметр по схеме из журнала Радио №8 за 1973 год, по которой я убил целый месяц!!! И которая так и не заработала. :)
P.S.p.s. В ходе измерений, параллельно подключенными, моим вольтметром и тестером входным сопротивлением 10 Мом, отмечено, что при отключении моего вольтметра, показания на тестере увеличивались всего на 2 вольта......при отключении тестера, показания моего вольтметра увеличивались на величину более 50 вольт. Это говорит об ошибке, которую дает тестер, и на сколько показания точнее моим вольтметром.
P.S.p.s.з.ы. Если нет стрелочного микроамперметра, мою схему можно модернизировать под ардуиновский вольтметр. Для этого пересчитать коэффициэнт передачи преобразователя и снимать напряжение с R1 и подавать его на аналоговый вход ардуинки. При номилах как на схеме, при входном напряжении 500 вольт, на резисторе R1 напряжение 5 вольт.
P.S.p.s.з.ы. Если нет стрелочного микроамперметра, мою схему можно модернизировать под ардуиновский вольтметр. Для этого пересчитать коэффициэнт передачи преобразователя и снимать напряжение с R1 и подавать его на аналоговый вход ардуинки. При номилах как на схеме, при входном напряжении 500 вольт, на резисторе R1 напряжение 5 вольт.
Привет.
Думаю если использовать Ардуино, то можно и транзистор выбросить у LM358 хватит мощности чтоб потянуть измерения АЦП Ардуинки.
P.S.p.s.з.ы. Если нет стрелочного микроамперметра, мою схему можно модернизировать под ардуиновский вольтметр. Для этого пересчитать коэффициэнт передачи преобразователя и снимать напряжение с R1 и подавать его на аналоговый вход ардуинки. При номилах как на схеме, при входном напряжении 500 вольт, на резисторе R1 напряжение 5 вольт.
Привет.
Думаю если использовать Ардуино, то можно и транзистор выбросить у LM358 хватит мощности чтоб потянуть измерения АЦП Ардуинки.
Если честно, то не задумывался об этом. Я же просто взял типовую схему преобразователя напряжение-ток, в этой схеме есть транзистор. Ни чего не переделывал, только рассчитал резистор и добавил микроамперметр. Не пробовал, может и стрелочный микроамперметр будет работать без транзистора.
Приборчик, в общем-то, одноразовый, поэтому глубоко не вдавался. Самое главное что работает, и работает хорошо.
Особенный кайф после бесполезной борьбы в течение месяца с другой схемой, которая в 10 раз сложнее и оказалась неработоспособной (может по причине моих кривых рук) :)
Можно я тоже поделюсь своими результатами эксперементов.
Сразу поясню - я делаю не с АВТОНОМНЫМ питанием, поэтому вопрос минимизации потребления не актуален. Я реализую на основе меги и TFT экрана сбор статистики по радиации почасовой и суточный. Показ текущего значения тоже реализован.
Генератор я собрал по схемеhttp://cxem.net/dozimetr/3-10.php с моим трансом заработало при частоте ШИМ -3кГц и параметре ШИМ в пределах 5-8.
Регистратор импульса взял как у вас сдесь реализовано.
И т.к. на фоне потребления TFT экрана (200ма), потребление преобразователя 5-12ма не критично, я нагрузил 400В резистором 30 МОм и добавив 470кОм (как у вас в схемах) с него снимаю сигнал на аналоговый вход меги, замеряю и параметром ШИМ регулирую напряжение. Показания напряжения измеряемое Мегой я откалибравал не заморачиваясь - подключил резисторы, тестер и мегу. Тестер показал 240В. Настроил показания меги. Убрал тестер - мега показала на преобразователе 440В. Далее подстроил параметры ШИМ и програмно меняя пареметр ШИМ регулирую напряжение. Особой точностью не заморачивался - поддерживаю от 390 до 406 В.
Плетусь за вами крохотными шагами. То с вольтметром больше месяца занимался, то преобразователь работать не хотел.
Время упущено.....но мой преобразователь всетаки заработал....Пока на макете, пока немного через Ж, но работает.
Вот иллюстрация
Теперь мои руки развязаны, и я могу приступить непосредственно к дозиметру.
P.S. Обидно...высокоомный вольтметр даже не понадобился. Так как напряжение стабилизированное, оно совсем не просаживается от обычного тестера. Измерял тестером и высокоомным вольтметром, результат одинаковый.
По ходу изготовления преобразователя сопровождал следующий гемморой - когда подключал конец вторичной обмотки к земле, чтобы организовать обратную связь для стабилизации напряжения, схема переставала работать. Пробовал принудительно запустить микросхему притянув ногу компаратора к земле.Микросхема работала на полную катушку без ОС и выдавала на накопительном конденсаторе 700 вольт. Стоило только соединить конец вторичной катушки к земле, микросхема выключалась, вернее работала в каком-то ненормальном режиме. Без ОС и напряжении на выходе 700в, схема потребляла 20 ма.
Даже обращался на форум по электронике с просьбой чтобы подсказали в чем может быть причина. Спасибо ребятам, во многих вопросах просветили меня.
Но без всяких изменений схема вдруг заработала, но как я и писал немного через Ж. Это выражается высоким потреблением, уже 65-100 ma.
Пока продолжать буду с ним. Напряжение держит четко. А по ходу тестирования макета дозиметра, продолжу разбираться с преобразователем. Выбрал такой, потому что не хочу нагружать ардуинку регулировкой напряжения.
Подключил к преобазователю счетчик гейгера, попытался снять импульсы. Получилась какая-то фигня. Импульсы идут от 1 килогерца до 20-ти. Снял осциллограмму с резистора через который минус счетчика соединен с землей. Вот что получилось
Так понимаю тригером отловлен настоящий импульс, а другие поменьше - это какие-то помехи. Что делаю не так?
Не от преобразователя наводки идут? На плате обычно стараются разнести подальше генератор высокого и узел снятия импульсов.
Неисправный счётчик тоже может генерить импульсы пачками. Поставить бы накопительный конденсатор побольше, чтобы хватило на надцать секунд работы счётчика после отключения преобразователя, да посмотреть импульсы. Нет помех - проблема в преобразователе, есть - в счётчике.
На какой микре преобразователь и по какой схеме?
Молодой человек я вижу вы тоже из украины
а у вас часом нету лишнего датчика сбм 20 или стс 5
я намерен зделать дозиметр так сказать по вашим стопам
и ещо один вопрос не могли бы вы мне скинуть печатную плату этого прибора
именно печатную не принцыпиальную
и последний вопрос скажите пожалуйста как вы програмировали ардуинку и можно ли ардуино про мини заменить ардуино мини или нано
и последний вопрос скажите пожалуйста как вы програмировали ардуинку и можно ли ардуино про мини заменить ардуино мини или нано
---На страничке проекта есть два архива в них есть печатки.
---ардуино можно брать любую с Атмега328 на борту.
---датчики сам себе покупал у перекупа на OLX, все под разработки.
....
....
Выглядит отлично!!!!
---нужно проверить как на улице, возможно инверсный режим будет лучше видно.
Три недели в поте лица трахался с изготовлением высокоомного вольтметра из журнала радио №8 за 1973 год. Что только не делал!!!, даже печатную плату вытравил, даже нашел древний транзистор...но ни чего у меня не получилось. Генератор генерировал, но ни как на напряжение не реагировал. Хоть я и упорно бился лбом об стену, победить не удалось. Не понимаю почему :(
Сегодня нашел схему преобразователя напряжение-ток, немного рассчитал, собрал на макетке. Все устройство состоит из ОУ LM358, транзистора 2N2222, резистора (без учета деталей входного делителя) и микроамперметра на 50 микроампер. Попробовал измерять напряжение батареек, показывает стабильный результат даже при изменении напряжения питания прибора в два раза.
Буду делать вольтметр по этой схеме.
Жаль, убитого на вольтметр из журнала радио, времени, может дозиметр радиации уже был бы готов на макете :(((((
Joiner, так вольтметр же в самом Ardos'e есть. Как показало сравнение с образцовым вольтметром его показаниям вполне можно доверять. (При условии тщательной отмывки и обязательной последующей сушки платы). Разброс оказался в пределах 10-15 вольт. Хотя поначалу наступил на грабли, когда пытался после промывки и кратковременной сушки запустить, показания не сходились раза в два. Пришлось сушить ещё пару раз и на сутки оставить на батарее, чтобы остатки изопропанола выветрились, тогда пасьянс сошёлся.
Joiner, так вольтметр же в самом Ardos'e есть.........
Пока сохранял, понял про что :) Ardos - это название дозиметра.
А чем Вы контролировали показание вольтметра Ardos'а ?
В самом дозиметре, в системном нею есть вольтметр, который берёт данные с делителя.
В самом дозиметре, в системном нею есть вольтметр, который берёт данные с делителя.
А чем Вы контролировали показание вольтметра Ardos'а ?
Электростатическим зайчиковым, в давние времена специально достал для работы с дозиметрами.
Электростатическим зайчиковым, в давние времена специально достал для работы с дозиметрами.
Пробовал делителем 90МОм с мультиметром со входным 10 МОм, ерунда получается. В схеме дозиметра через делитель накапливается заряд на конденсаторе, и меряется уже на нём. Плюс делитель ArDos'a является частью схемы, то есть подключён к высокому напряжению постоянно, внешний же вольтметр, если его сопротивление не гигаомы, при подключении всё равно будет давать просадку. (Насколько схема стабилизации будет её держат - не экспериментировал, надо будет попробовать).
Пробовал делителем 90МОм .......
Попробовал подкинуть параллельно высокому шуп 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 и мультиметра совпадают.
Попробовал подкинуть ..................... Показания ArDos'a и мультиметра совпадают.
Ранее измерял напряжение на макете дозиметра, работающем от сети 220в, своим мультиметром. В инструкции не нашел его (мультиметра) сопротивления. Но проседало напряжение прилично. Это я понял по очень заметному уменьшению громкости щелчков бузера при подключении мультиметра. Понял, что напряжение на счетчики идет с большим превышением и эксперименты прекратил.
Ранее измерял напряжение на макете дозиметра, работающем от сети 220в, своим мультиметром. В инструкции не нашел его (мультиметра) сопротивления. Но проседало напряжение прилично. Это я понял по очень заметному уменьшению громкости щелчков бузера при подключении мультиметра. Понял, что напряжение на счетчики идет с большим превышением и эксперименты прекратил.
Привет, если у тебя какая-нибудь DT-шка измеряй через резистор 10МОм показания потом в уме домножай на 10, самый примитивный способ.
А вообще как писал выше 2резистора в делитель и кондер.
Резисторы мыть спиртом и не трогать руками!!!!
Привет, если у тебя какая-нибудь DT-шка измеряй через резистор 10МОм показания потом в уме домножай на 10, самый примитивный способ.
А вообще как писал выше 2резистора в делитель и кондер.
Резисторы мыть спиртом и не трогать руками!!!!
Привет.
У скетч под олед выкладывать планируете?
Если да, хотел бы разместить его так же на страничке своего сайта вместе с вашими скринами.
Без проблем могу выложить, правда на реальном устройстве не тестировал. И абсолютно не против выкладывания куда либо. Единственное я его сразу исправлял под работу с 2 датчиками, так что с 1 датчиком будет занижать показания в 2 раза. Но это опять же в теории, никакой практики пока нет...
А вот собственно код
При выборе инверсии экрана, она происходит после перезагрузки (в функции инициализации). Если это делать уже в работе появляются странные глюки.
Чуть не забыл, файл gif.c тоже поменял, добавил иконку тревоги такую
вот архив https://mega.nz/#!uUJFQCQa!f7bMjEgLC2AMosU60gRSgOm-fkA3oEGedhVGdJUGOXM
....
вот архив https://mega.nz/#!uUJFQCQa!f7bMjEgLC2AMosU60gRSgOm-fkA3oEGedhVGdJUGOXM
Спасибо! Разместил на страничке.
Всем привет, я тут карилицу замастрячил в библилтеку, шрифт 6х8 RUS_Fonts.
У меня нету экранчика что бы проверить((.
Сдесь библиотека и исходник. https://yadi.sk/d/eeJf1UlQ3HKsEV
Проверяйте.
Всем привет, я тут карилицу замастрячил в библилтеку, шрифт 6х8 RUS_Fonts.
У меня нету экранчика что бы проверить((.
Сдесь библиотека и исходник. https://yadi.sk/d/eeJf1UlQ3HKsEV
Проверяйте.
Отлично.
extern uint8_t RUS_Fonts[];// Кирилица 6х8
будет время проверю, если ок будут наш АрДОс русифицирован.
ОК
Победа!!! Получилось! Высокоомный вольтметр 150 мегаом.
Слева выпрямитель по схеме удвоения от напряжения сети. Напряжение снимается с делителя, состоящего из 6-ти резисторов 1 Мом. Мой вольтметр подключен параллельно тестеру.
Вольтметр, вид сзади
Вот показания на другом плече делителя
Ну вот теперь можно заняться высоковольтным питанием счетчиков гейгера.....
P.S. Теперь я знаю, что ранее подключал счетчик к 600 В..... :(
Joiner, аккуратно получилось. Поделитесь ссылкой на описание/схему? Думаю, желающим собрать пригодится.
kaktuc, есть траблы с кодировкой. Залил скетч без изменения, получил такой результат.
Потанцевал с (бубном) кодировками (UTF8-WIN1251) - заработало. Но в среде Ардуино (1.8.1) кириллический текст в скетче при этом нечитаем. IDE поддерживает смену кодировки?
В общем сегодня проверил с 2 датчиками. Парралельное подключение не получится, полная хрень в результатах получается.
архив перезалил, вернул все расчеты назад для одного датчика.
https://mega.nz/#!vUBWkY5I!LpXWbFRZkTI0b75_zLZEKkjK5EVoceJfOfnV4IFUpmQ
Я боролся с траблами так https://youtu.be/tJM89vWpD3M
Всё компилируется ок, пока не закроеш проект. Просто потом копируеш сохранёный проект и встовляеш в пустой и всё работает дальше)))
Кодировку не менял
Я боролся с траблами так https://youtu.be/tJM89vWpD3M
Всё компилируется ок, пока не закроеш проект. Просто потом копируеш сохранёный проект и встовляеш в пустой и всё работает дальше)))
Я не помню в какой версии ИДЕ но у меня с коментами в скетче тоже бывают проблемы, слетает кириллица.
Но в видео меня удивило другое, у тебя протеус жрет хексы с тем именем которое формирует ардуино с точками и ТД, у меня отказывается пока не укорочу, например было
primer_skrtvhs.ino.hex
укорачиваю до
primer_skrtvhs.hex
только тогда идет симуляция и это утомляет когда по многу раз делать(((
Победа!!! Получилось! Высокоомный вольтметр 150 мегаом.
Жадина.)))) Сссылочку выкладывай на схему-описание.
Победа!!! Получилось! Высокоомный вольтметр 150 мегаом.
Жадина.)))) Сссылочку выкладывай на схему-описание.
Вот она, красава!
P.S. Ни когда не делайте высокоомный вольтметр по схеме из журнала Радио №8 за 1973 год, по которой я убил целый месяц!!! И которая так и не заработала. :)
P.S.p.s. В ходе измерений, параллельно подключенными, моим вольтметром и тестером входным сопротивлением 10 Мом, отмечено, что при отключении моего вольтметра, показания на тестере увеличивались всего на 2 вольта......при отключении тестера, показания моего вольтметра увеличивались на величину более 50 вольт. Это говорит об ошибке, которую дает тестер, и на сколько показания точнее моим вольтметром.
P.S.p.s.з.ы. Если нет стрелочного микроамперметра, мою схему можно модернизировать под ардуиновский вольтметр. Для этого пересчитать коэффициэнт передачи преобразователя и снимать напряжение с R1 и подавать его на аналоговый вход ардуинки. При номилах как на схеме, при входном напряжении 500 вольт, на резисторе R1 напряжение 5 вольт.
....
P.S.p.s.з.ы. Если нет стрелочного микроамперметра, мою схему можно модернизировать под ардуиновский вольтметр. Для этого пересчитать коэффициэнт передачи преобразователя и снимать напряжение с R1 и подавать его на аналоговый вход ардуинки. При номилах как на схеме, при входном напряжении 500 вольт, на резисторе R1 напряжение 5 вольт.
Привет.
Думаю если использовать Ардуино, то можно и транзистор выбросить у LM358 хватит мощности чтоб потянуть измерения АЦП Ардуинки.
....
P.S.p.s.з.ы. Если нет стрелочного микроамперметра, мою схему можно модернизировать под ардуиновский вольтметр. Для этого пересчитать коэффициэнт передачи преобразователя и снимать напряжение с R1 и подавать его на аналоговый вход ардуинки. При номилах как на схеме, при входном напряжении 500 вольт, на резисторе R1 напряжение 5 вольт.
Привет.
Думаю если использовать Ардуино, то можно и транзистор выбросить у LM358 хватит мощности чтоб потянуть измерения АЦП Ардуинки.
Приборчик, в общем-то, одноразовый, поэтому глубоко не вдавался. Самое главное что работает, и работает хорошо.
Особенный кайф после бесполезной борьбы в течение месяца с другой схемой, которая в 10 раз сложнее и оказалась неработоспособной (может по причине моих кривых рук) :)
Добрый день всем!
Можно я тоже поделюсь своими результатами эксперементов.
Сразу поясню - я делаю не с АВТОНОМНЫМ питанием, поэтому вопрос минимизации потребления не актуален. Я реализую на основе меги и TFT экрана сбор статистики по радиации почасовой и суточный. Показ текущего значения тоже реализован.
Генератор я собрал по схемеhttp://cxem.net/dozimetr/3-10.php с моим трансом заработало при частоте ШИМ -3кГц и параметре ШИМ в пределах 5-8.
Регистратор импульса взял как у вас сдесь реализовано.
И т.к. на фоне потребления TFT экрана (200ма), потребление преобразователя 5-12ма не критично, я нагрузил 400В резистором 30 МОм и добавив 470кОм (как у вас в схемах) с него снимаю сигнал на аналоговый вход меги, замеряю и параметром ШИМ регулирую напряжение. Показания напряжения измеряемое Мегой я откалибравал не заморачиваясь - подключил резисторы, тестер и мегу. Тестер показал 240В. Настроил показания меги. Убрал тестер - мега показала на преобразователе 440В. Далее подстроил параметры ШИМ и програмно меняя пареметр ШИМ регулирую напряжение. Особой точностью не заморачивался - поддерживаю от 390 до 406 В.
Отлично получилось!
Залил прошивку под Oled в устройство,
очень понравился инверсный режим.
Снал отличие 14сек.
Маловат экранчик для такого корпуса) Если собрать на сбм10 или сбм21 то можно габаритами пейджера обойтись.
Да маловат, но читаемость отличная!
сбм10 или сбм21 смотрел по объявлениям стоят дорого!(
Плетусь за вами крохотными шагами. То с вольтметром больше месяца занимался, то преобразователь работать не хотел.
Время упущено.....но мой преобразователь всетаки заработал....Пока на макете, пока немного через Ж, но работает.
Вот иллюстрация
Теперь мои руки развязаны, и я могу приступить непосредственно к дозиметру.
P.S. Обидно...высокоомный вольтметр даже не понадобился. Так как напряжение стабилизированное, оно совсем не просаживается от обычного тестера. Измерял тестером и высокоомным вольтметром, результат одинаковый.
Joiner, сколько по потребению выходит?
Joiner, сколько по потребению выходит?
Даже обращался на форум по электронике с просьбой чтобы подсказали в чем может быть причина. Спасибо ребятам, во многих вопросах просветили меня.
Но без всяких изменений схема вдруг заработала, но как я и писал немного через Ж. Это выражается высоким потреблением, уже 65-100 ma.
Пока продолжать буду с ним. Напряжение держит четко. А по ходу тестирования макета дозиметра, продолжу разбираться с преобразователем. Выбрал такой, потому что не хочу нагружать ардуинку регулировкой напряжения.
Подключил к преобазователю счетчик гейгера, попытался снять импульсы. Получилась какая-то фигня. Импульсы идут от 1 килогерца до 20-ти. Снял осциллограмму с резистора через который минус счетчика соединен с землей. Вот что получилось
Так понимаю тригером отловлен настоящий импульс, а другие поменьше - это какие-то помехи. Что делаю не так?
Не от преобразователя наводки идут? На плате обычно стараются разнести подальше генератор высокого и узел снятия импульсов.
Неисправный счётчик тоже может генерить импульсы пачками. Поставить бы накопительный конденсатор побольше, чтобы хватило на надцать секунд работы счётчика после отключения преобразователя, да посмотреть импульсы. Нет помех - проблема в преобразователе, есть - в счётчике.
На какой микре преобразователь и по какой схеме?
Так и есть, скорее всего. Убрал счетчик, а импулсы на резисторе остались :)