Я применяю ГУ74Б, а у нее ток экранной сетки 10мА.
Я применяю ГУ74Б, а у нее ток экранной сетки 10мА.
Последний раз редактировалось RU9CA; 26.07.2022 в 14:07.
По паспорту допустимо до 35мА. На 84-й меряю на катодном резисторе, встроенном конструктивно в панель.
А что безопаснее - на аноде или в катоде?
Вообще, стараюсь придерживаться схемных и конструктивных решений, применяемых в заводской аппаратуре для радиолюбителей.
Последний раз редактировалось RU9CA; 26.07.2022 в 14:07.
Сделал свой набросок программы. Выводит пока градусник прямой волны, мощность и КСВ. Градусник с мелким шагом для более точной подстройки переменного конденсатора. Реакция шкалы хорошая, носится как угорелый. Шкала мощности на 1000Вт, текущий шаг округления 10Вт. Можно настроить в #define PWRStep. Шкала на 1000Вт практически пропорциональна входному сигналу на входе АЦП U1=1019, можно обойтись без всяких коэффициентов. Сделал более правильный (на мой взгляд) измеритель КСВ, правда толком его не проверял. В отсутствии сигнала он показывает 1.0, максимальные показания 9.9. Ограничить можно хоть до 99, кому как удобно. Но как мне думается до КСВ=10 формат вывода должен быть с десятыми, типа 9.9, а выше КСВ=10 в формате 99 без десятых.
Что касается библиотек. Стандартные Wire.h и LiquidCrystal_I2C.h здорово тормозят, крайне рекомендую использовать Алекса Гайвера microWire.h и microLiquidCrystal_I 2C.h Они меньше занимают места, около 15-20%, так еще и работают гораздо быстрее. А если подключить его ядро для Atmega328, то еще быстрее.
По схеме. Датчик температуры нужно подключить к аналоговому порту, которых уже не осталось. Резистор R1 можно не ставить, подключить внутренний. Предусмотреть подключение компьютерной пищалки (ЗП-ки).
на счет измерения анодного, особенно тока,
сделал набросок идеи :
этот же файл в .spl7 :
измерение тока.rar
Сыро.Очень.
да без проблем, проэкт открыт ! скетч открыт !
вносим улучшения в скетч, в схему и выкладываем в этой ветке !
я ЗА любой кипиш, кроме болтовни.
Последний раз редактировалось RU9CA; 26.07.2022 в 14:08.
В принципе, наверное, можно взять за основу схему контроллера 4-й версии RA3YBW, заменив PIC на Arduino.
Олег,RA3DNC, ссылку дайте на схему.
...
Нашел.
Приведенная в посте #24 схема соответствует схеме RA3YBW.
Выжмем и высушим))
Последний раз редактировалось RK9AMX; 19.12.2019 в 16:39.
Integral, Сергей, отлично! Рад, что вы подключились. Можно немного покритиковать оформление текста программы?
Скрытый текст
Правила хорошего тона программирования (не претендую на мнение в последней инстанции):
1. Макросы желательно писать прописными буквами (#define SoundPin 10 -> #define SOUND_PIN 10);
2. Отдельно строчную букву l (L) и прописную I(i) в макросе, да и вообще в программе лучше избегать. У вас получилось #define l 45, и в формуле V=((U1*5)/1019)*l это читается как единица;
3. Размерность массивов желательно указывать. Читабельность программы улучшается;
4. Переменные пишутся строчными буквами. Допускаются прописные в середине названия переменной (например: adcMeasureVariable или adc_measure_variable);
5. Объявлять переменные лучше по отдельности (uint16_t V=0, PWR=0;). К тому же они совсем разную смысловую нагрузку несут. Присваивать переменным значение 0 (ноль) необязательно. При объявлении переменной компилятор ей по умолчанию присваивает ноль;
6.Очень трудно прочитать. Для сравнения после автоформатирования:Код:byte a=U1/51; //вычисляем целое число a для градусника byte b=U1-a*51; //вычисляем значение переменной b остатка от деления lcd.setCursor(0,0); //уст. курсор начала градусника if (a>0){for (byte i=0; i<a; i++){lcd.write(3);} //выводим целую часть, если она больше 0 if (b<=17)lcd.write(1); //выводим дробную часть градусника if (b>17&&b<=34)lcd.write(2); //-------------------- if (b>34&&b<=51)lcd.write(3); //-------------------- for(byte i=a; i<19; i++)lcd.write(4);} //дорисовываем градусник точками else { //если целая часть равна 0 if (b<=17)lcd.write(1); //выводим дробную часть градусника if (b>17&&b<=34)lcd.write(2); //-------------------- if (b>34&&b<=51)lcd.write(3); //-------------------- for(byte i=a; i<19; i++)lcd.write(4);} //дорисовываем градусник точками
После ручного форматированияКод:byte a = U1 / 51; //вычисляем целое число a для градусника byte b = U1 - a * 51; //вычисляем значение переменной b остатка от деления lcd.setCursor(0, 0); //уст. курсор начала градусника if (a > 0) { for (byte i = 0; i < a; i++) { lcd.write(3); //выводим целую часть, если она больше 0 } if (b <= 17)lcd.write(1); //выводим дробную часть градусника if (b > 17 && b <= 34)lcd.write(2); //-------------------- if (b > 34 && b <= 51)lcd.write(3); //-------------------- for (byte i = a; i < 19; i++)lcd.write(4); } //дорисовываем градусник точками else { //если целая часть равна 0 if (b <= 17)lcd.write(1); //выводим дробную часть градусника if (b > 17 && b <= 34)lcd.write(2); //-------------------- if (b > 34 && b <= 51)lcd.write(3); //-------------------- for (byte i = a; i < 19; i++)lcd.write(4); }
7. Глобальные переменные объявлять желательно в самом начале (локальные в начале процедуры), а не по ходу алгоритма.Код:byte a = U1 / 51; //вычисляем целое число a для градусника byte b = U1 - a * 51; //вычисляем значение переменной b остатка от деления lcd.setCursor(0, 0); //уст. курсор начала градусника if (a > 0) { for (byte i = 0; i < a; i++) lcd.write(3); //выводим целую часть, если она больше 0 if (b <= 17) lcd.write(1); //выводим дробную часть градусника if (b > 17 && b <= 34) lcd.write(2); //-------------------- if (b > 34 && b <= 51) lcd.write(3); //-------------------- for (byte i = a; i < 19; i++) lcd.write(4); }else { //если целая часть равна 0 if (b <= 17) lcd.write(1); //выводим дробную часть градусника if (b > 17 && b <= 34) lcd.write(2); //-------------------- if (b > 34 && b <= 51) lcd.write(3); //-------------------- for (byte i = a; i < 19; i++) lcd.write(4); } //дорисовываем градусник точками
Это не для того, чтобы докопаться, а чтобы повысить взаимопонимание.
PWR1 = PWR / PWRStep; PWR = PWR1 * PWRStep;
Это не округление, а отбрасывание. Если в значении 199 "округлить" таким образом последний разряд с шагом 10, то получим 190. А если последних 2 разряда с шагом 100, то получим 100. Надо что-то другое подсмотреть у умных дядек)))
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)