Туристические маршруты
Всякие разности

вопрос приобретения снимается, связи с покупкой прибора Е7-8 а сделать ради интереса можно (сейчас за 2000 продают, а тестер 600р, а совсем недавно плата была 450 или долларов 6). Даже на Елене может быть ошибочка в 5 процентов а то и больше, особенно , если прибор не прогрет. Зато измеряет миллиомы от 10, микрогенри от 2 и емкость от 0.3 пФ. LC-100 lc100-a lcm 4.7 если купить - там плоховатая катушечка индуктивности, альсифер зачем то от силовой техники, поменять на ферритовый стерженек. А так неплохо за такую цену, в 50 раз дешевле большого измерителя. 3 варианта - даже 4 , с принципом работы (и с программой или прошивкой) Измерение емкости и индуктивности происходит достаточно просто, так как L/C элементы представляют собой колебательный контур, то компаратор совместно с колебательным контуром будет генерировать частоту, а частотомер на Arduino произведет пересчет частоты в значения индуктивности или емкости. В уст-ве две кнопки управления, первая переключение режимов измерения L/C, вторая калибровка нуля. Из схемы видно, что в уст-ве уже имеется индуктивность и емкость, индуктивность необходима для измерения емкости, а так же для измерения малых величин индуктивности. Емкость нужна для измерения индуктивности, при этом индуктивность встроенная в прибор может иметь большой разбег в номинале, а конденсатор должен быть точным, от него зависит базовая погрешность прибора. При первоначальной настройке прибора необходимо закоротить контакты «⊥» и «L», нажать на кнопку калибровки нуля, при этом произойдет измерение индуктивности встроенная в прибор, значение индуктивности будет сохранено в энергонезависимой памяти. Далее можно подключить любую катушку или конденсатор выбрать нужный режим (L/C) и провести измерение. Для измерения емкости необходимо нажать на кнопку L/C, закоротить контакты «⊥» и «L», а емкость подключить к контактам «⊥ или L» и «C». При измерении индуктивности или емкости значения индуктивности или емкости внутренних элементов (L1 C1), будут автоматически вычтены из конечного результата. Полученные значения выводятся на LCD индикатор 1602 на первую строку, а во второй строке выводится резонансная частота. В скетче необходимо указать точную емкость эталонного конденсатора: const float c = 1000.0*pow(10,-12); // == 1000 пФ Конденсатор 0,1 мкФ Конденсатор 82 пФ Эталонный конденсатор Так прибор способен проводить измерения емкости только до 0,5 мкФ, было принято решение немного доработать уст-во. Добавлена еще одна клемма для подключения электролитических конденсаторов емкостью от 0,1 до 10000 мкФ и пара резисторов. Процесс измерения емкости электролитических конденсаторов достаточно прост, через резистор номиналом 1 кОм подается напряжение 5 В на конденсатор, одновременно аналоговый вход микроконтроллера производит измерение напряжения подаваемое на конденсатор, как только напряжение достигнет 63% от 5 В, микроконтроллер подсчитает время заряда и пересчитает его по формуле: T = RC. Как и в первых двух режимах измерения, можно воспользоваться кнопкой калибровки нуля, для более точного измерения емкости конденсаторов небольшого номинала. Форум — http://forum.rcl-radio.ru/viewtopic.php?id=61 07.09.2021 15:47, автор DiEitch Время от времени у радиолюбителя возникает необходимость измерить индуктивность (чаще всего у неизвестного или самодельного дросселя) или ёмкость радиодетали без маркировки (или даже с маркировкой, когда необходимо узнать более точный номинал). В большинстве широкодоступных измерительных приборов (тестеров), к сожалению, нет режима измерения индуктивности (и далеко не всегда есть режим измерения ёмкости, но он встречается чаще). Тогда на помощь приходят смекалка и самодельные измерительные приборы. Почти так же случилось и со мной, только измерить мне надо было не индуктивность, а относительную магнитную проницаемость μ (сердечника, на котором не было никакой маркировки). Первым делом изучил интернет. И оказалось, что конструкций таких измерителей "мильон и больше". Поэтому критерием выбора для меня стала простота (ведь я его делаю для одного раза) и работоспособность (всё-таки измерение должно случиться). В итоге выбор пал на вот эту схему, к тому же на страничке было документальное подтверждение работоспособности и исходный код для Arduino. Простая и красивая схема. Но при всём уважении к автору, он больше физик чем электронщик: Вообще, входная часть универсальна, многие найденные мной в сети LC-метры её использовали в том или ином виде. Для примера: схемы китайского LC100-A и измерителя на PIC (ни там, ни там НЕТ никакого конденсатора на 100p): К сожалению, я не смог быстро найти в своих запасах LM311 (LM211, LM111), и вынужден был заменить её отечественным аналогом К554СА3. О как же я оказался не прав! Несмотря на "полную аналогичность" этих микросхем, они различаются (как минимум) корпусами и разводкой ножек и (как максимум) внутренней принципиальной электрической схемой (что накладывает отпечаток на схемотехнику, т.е. некоторые схемы для LM311 не будут работать на К554СА3 "в лоб", но об этом ниже). Принципиальные схемы компараторов очень похожи, но всё же попытайтесь найти 5 различий. В итоге схема моего измерителя получилась такая: Как видно из схемы: выводы компаратора К554СА3 7 и 8 (строб/баланс и балансировка) не соединены между собой в отличие от аналогичных выводов у LM311, при их замыкании у меня наблюдалось резкое повышение потребляемого компаратором тока по питанию, и стабилизатор на Arduino не справлялся со своей задачей: плата перезагружалась. С разомкнутыми выводами всё работает. Дисплея 1602 у меня тоже под рукой не оказалось, использовал безо всяких проблем 2004. Выводы Arduino у меня использованы немного иначе, как мне было удобно. Монтаж сделал на макетной плате. Не очень аккуратно, но зато быстро. Полевые испытания измерителя. После калибровки. Дроссель на 68мкГн (норма): Дроссель на 3.3мкГн (немного завышает): Также были измерены дроссели на 100мкГн, 120мкГн, 2.2 мкГн, 1мГн - результаты очень даже неплохие (чаще на завышение), хотя я использовал резонансный конденсатор на 2200пФ +/- 10% и не замерил его ёмкость предварительно, а потом лень было выпаивать (читателю же рекомендую измерить предварительно ёмкость или выбрать конденсатор с допуском +/-1%, если получится). А вот главные измерения, ради которых я это всё затеял. Кольцо типоразмера К45х28х12 из материала М2000НМ1-36 ОЖО.707.062ТУ и 10 витков провода диаметром 1мм: И расчёт в программе testring (пакета all in one) от Starichok показывает немного завышенные параметры u=2424 (это связано с погрешностью измерений и сравнительно малым количеством витков на исследуемом кольце): И неизвестное кольцо К45х28х8: И его расчёт в программе: Учитывая, что результат расчётов почти тот же (учитывая все погрешности), я полагаю, что "неизвестное" кольцо из того же материала, что и предыдущее (кроме того, одинаковые с предыдущим кольцом цвет, шероховатость, а также, слова продавца подтверждают этот факт). Файлы для тех, кто захочет повторить проект. Спасибо за внимание, когда-нибудь я расскажу, для чего мне потребовались эти кольца из феррита. [download id="151239"] PS: раз уж я собрал этот измеритель, решил заодно узнать и магнитную проницаемость сердечника (склейки из двух колец размером 43.6х28х20.4) предположительно из альсифера ТЧ60П (одна вертикальная чёрная полоса на каждом кольце), который мог в общем-то легко оказаться и пермаллоевым. Справочные данные: Собственно, измерение (на нижнем кольце справа виден чёрный штрих маркировки): Учитывая погрешность моего измерителя (в сторону завышения): Что коррелирует с параметрами ТЧ60П (конечно, это мог быть и ТЧ90, но маркировка на кольцах чёрная, а не синяя), а для мо-пермаллоя МП140, магнитная проницаемость маловата. Ещё один аргумент в пользу альсифера - вертикальные, а не горизонтальные полосы маркировки (у пермаллоя это будет либо горизонтальная полоса либо точка). Для себя же я сделал один вывод, что если я хочу дальше пользоваться сделанным измерителем LC, то нужно всё-таки выпаять и замерить"эталонный конденсатор" С1, либо поставить точный. * на таком кольце из советского альсифера сделан драйвер от фонаря - прожектора 220 вольт (210) и 30 ватт 150 ма от связки литиевых 3.3 - 3.9 вольт 40 ампер макс. в импульсах. Почти 90 процентов КПД, от 7 аккумуляторов время работы 3 часа, от 10 и при мощности 20 ватт 5 часов. Освещение на 700 метров, в 2 раза ярче фонарного столба, прожектор 20 на 10 см вес 1 кг. , французский светодиод cob bridgelux на керамике, и с хорошим радиатором 9 на 8 на 5 ребристым. третий и четвертый Programming, electronics, lifestyle Год назад я приобрел себе мультиметр Aneng Q1. Я сразу влюбился в этот мультиметр. Он удовлетворяет практически всем моим потребностям кроме отсутствия функционала измерения индуктивности. И у меня возникла идея из говна и палок собрать LC метр. В этой статье мы рассмотрим существующие схемы и принцип их работы. А также выберем одну, которую в дальнейшем я буду собирать. Основная идея построения этого прибора на микроконтроллере (МК) состоит в измеремении частоты колебательного контура на программной стороне МК. При этом зная номинал индуктивности или емкости мы можем вычислить номинал неизвестного компонента. Прибор условно можно разделить на три части: Рассмотрим первую схему с сайта circuitdigest.com (дубликат microkontroller.ru или аналогичная sampawno.ru): Работает эта схема следующим образом: Индуктивность L1 и конденсатор C1 объединенные в LC цепь образуют колебательный контур. После подачи в эту цепь нескольких коротких импульсов на выходе LC цепи образуется синусоидальное колебание на резонансной частоте. Чтобы измерить частоту этих синусоидальных колебаний с помощью микроконтроллера их необходимо преобразовать в последовательность прямоугольных импульсов (меандр). В которой логическая единица будет соотвествовать положительной полуволне исходного сигнала, а ноль – отрицательной. Для этого используется компаратор (в данном случае операционный усилитель Для проверки схемы я воссоздал её в программе Micro-Cap: На генераторе я создаю 15 импульсов длительностью 100мкс при периоде 150мкс. Как видно после накачки контура, он начинает резонировать на собственной частоте: В этой схеме мне в глаза бросается пару моментов: Вторая схема лишена этих недостатков и мне нравится гораздо больше (источник embedded.icu). Основная фишка этой схемы то, что для накачки контура используется обратная связь самого компаратора. Смоделируем схему в Micro-Cap и проверим как она работает. Как видно в точке 4 или 5 амплитуда калебаний нарастает. Это происходит в первые 30мс после подачи питания на контур. После чего амплитуда выравнивается, и контур колеблется на резонансной частоте. Первое, что бросается в глаза в точке 6 (красный график), форма сигнала очень острая, это связано с тем, что при симуляции вместо сопротивления входного канала МК подключен резистор на 100кОм. Что очень мало. Увеличим сопротивление до 1000кОм: Лучше. Увеличим ещё до 10.000кОм: Теперь это выглядит как нужно. Хотя на самом деле я не совсем понимаю смысл конденсатора C5 в выходной цепи. И соглашусь с автором, из источника которого я взял схему, в том, что этот конденсатор на выходе не нужен. Тк МК воспринимает за логический ноль все что ниже порогового значения около 2-3 вольт. Предположу, что возможно автор оригинальной схемы произвел тесты и увидел, что амплитуда в точке 2 (синий график) не опускается до ноля. И хотел решить это с помощью конденстора, но тогда в схеме необходим диод, отсекающий отрицательную часть (тк не понятно как может повести себя МК при подаче отрицательного напряжения). При увеличении частоты видно, как конденсатору C5 не хватает времени дозарядиться, и уже сопротивление в 10МОм становится слишком большим. Из-за этого график в точке 6 опять становится игольчатым. Но как я и сказал выше: совершенно ни к чему использовать конденсатор C5. Далее я погонял схему с разными значениями индуктивности и получил разрешающую способность в районе 0.05-0.1мкГн. А также меня удивил диапазон измерений, прибор может измерять как очень маленькие индуктивности в до 0.1мкГн так и большие – 200Гн. Нижняя частота колебательного контура ограничена конденсатором C2, а верхняя свойствами компаратора (ОУ). Мне понравилась эта схема, но давайте рассмотрим ещё парочку для общего ознакомления. Сслыка на оригинал radiolocman.com и на русскоязычную копию radiohata.ru. Как видно здесь калебательный контур отделен от компаратора. А для его накачки используется схема на базе транзистора Рассмотрим ещё одну похожую схему. Источник alpop/Arduino-UNO-R3-based-LC-meter. Мне нравится это схема своей модульностью: каждый отдельный модуль выполняет строго свою функцию. Рассмотрим основные модули: Кстати после изучения этой схемы я обратил внимание, что ёмкость конденсатора измеряется не через схему с колебательным контуром, а по другому принципу Capacitance Meter. После этого я откался от идеи делать LC метр и решил сделать просто измеритель индуктивности. Тк функционал измерения ёмкости у меня уже реализован в мультиметре. А городить в контуре сменяемые индуктивности мне не хочется (хотя к этому всегда можно вернуться). Я нашел еще одну схему LC-метра выполненного на МК на базе PIC. Где не используется компаратор, но мне это не подходит. Ссылку осталяю для общего ознакомления. Мне понравилась 4я схема, но я не смог ответить себе на сколько она лучше в плане измерения индуктивности. Да и у меня нет компонентов для её сборки под рукой (именно об этом будет вторая часть). Поэтому я решил собрать 2ю схему, и посмотреть как она себя поведёт. А если уткнусь в предел по частоте, то добавлю счетчик, как это сделано в 3ей и 4ой схемах. Продолжение следует. библиотека к экранчику есть во вложениях. Если кто хочет отремонтировать погоревший китайский - на stm8 - поставьте туда с обратной стороны платы arduino nano. там наверняка переделан код от ардуинки на stm8 и нет ни только программы а даже прошивок. А поддерживать коммерсантов - покупая $5 плату за $25 - ну по желанию. Сделали бы нормально - контакты с подписью 5 вольт или гнездо на 3 батарейки, или только юсб, а не разъемку - как от 12 - вольтового адаптера. Просто перепутать и бежать покупать новый. измеритель L C на Ардуино
На платформе Arduino можно собрать простой измеритель емкости и индуктивности. Прибор позволяет измерять индуктивность катушек от единиц мкГн до десятков мГн и емкость конденсаторов от десятков пФ до 0,5 мкФ с достаточно большой точностью. Схема собрана на компараторе LM311 и нескольких пассивных элементах, на плате Arduino собран частотомер (до 6,5 МГц).
#include <FreqCount.h> //
.zip
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 7, 2, 3, 4, 6);// RS,E,D4,D5,D6,D7
#include <EEPROM.h>
unsigned long f;
const float c = 1000.0*pow(10,-12);
float l_pop=0.00;
float l,c_iz;
int l_int;
byte lc,w;
void setup() {Serial.begin(9600);
lcd.begin(16, 2);// LCD 16X2
FreqCount.begin(1000);
pinMode(13,INPUT);pinMode(12,INPUT);
l_pop = float(EEPROM.read(0)*256 + EEPROM.read(1))/100;
Serial.println(float(EEPROM.read(0)*256 + EEPROM.read(1))/100);
}
void loop() {
lcd.setCursor(0,1);lcd.print("F = ");
if(FreqCount.available()&&w==0){f = FreqCount.read();lcd.print(f);lcd.print(" Hz ");}
if(digitalRead(13)==HIGH){
l_pop = float(1000000/(4*PI*PI*f*f*c));lcd.clear();lcd.setCursor(0,0);lcd.print(" calibration 0 ");
l_int=round(l_pop*100);EEPROM.update(0,highByte(l_int)); EEPROM.update(1,lowByte(l_int));delay(1000);
}
if(digitalRead(12)==HIGH&&lc==0){lc=1;delay(200);w=1;} if(digitalRead(12)==HIGH&&lc==1){lc=0;delay(200);w=1;}
if(lc==0){
l = float(1000000/(4*PI*PI*f*f*c))-l_pop;
lcd.setCursor(0,0);lcd.print("L = ");
if(l<=1000){lcd.print(l,1);lcd.print(" uH ");}
if(l>1000){lcd.print(l/1000,3);lcd.print(" mH ");}}
if(lc==1){
c_iz=float(1000000000000/(4*PI*PI*f*f*l_pop*pow(10,-6))-c*pow(10,12));
lcd.setCursor(0,0);lcd.print("C = ");
if(c_iz<=1000){lcd.print(c_iz,1);lcd.print(" pF ");}
if(c_iz>1000){lcd.print(c_iz/1000,2);lcd.print(" nF ");}}
w=0;}
#include <FreqCount.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 7, 2, 3, 4, 6);// RS,E,D4,D5,D6,D7
#include <EEPROM.h>
unsigned long f,time0,time1,time2;
const float c = 1000.0*pow(10,-12);
float l_pop=0.00;
float l,c_iz,c_uf,null0;
int l_int;
byte lc,w;
void setup() {Serial.begin(9600);lcd.begin(16, 2);// LCD 16X2
FreqCount.begin(1000);// 1000 мс - время измерения частотомера
pinMode(13,INPUT);pinMode(12,INPUT);pinMode(A0,INPUT);
l_pop = float(EEPROM.read(0)*256 + EEPROM.read(1))/100; // eeeprom
}
void loop() {
///////////////////// F ///////////////////////////////////////////////////
if(lc<2){lcd.setCursor(0,1);lcd.print("F = ");
if(FreqCount.available()&&w==0){f = FreqCount.read();lcd.print(f);lcd.print(" Hz ");}}
//////////////////// calib 0 //////////////////////////////////////////////
if(digitalRead(13)==HIGH&&lc<2){
l_pop = float(1000000/(4*PI*PI*f*f*c));lcd.clear();lcd.setCursor(0,0);lcd.print(" calibration 0 ");
l_int=round(l_pop*100);EEPROM.update(0,highByte(l_int)); EEPROM.update(1,lowByte(l_int));delay(1000);}
///////////////////////// button L/C/Cuf //////////////////////////////////////
if(digitalRead(12)==HIGH){lc++;lcd.clear();w=1;delay(200);if(lc>2){lc=0;}}
/////////////////// L /////////////////////////////////////////////////////
if(lc==0){
l = float(1000000/(4*PI*PI*f*f*c))-l_pop;
lcd.setCursor(0,0);lcd.print("L = ");
if(l<=1000){lcd.print(l,1);lcd.print(" uH ");}
if(l>1000){lcd.print(l/1000,3);lcd.print(" mH ");}}
////////////////// C pF nF ////////////////////////////////////////////////
if(lc==1){
c_iz=float(1000000000000/(4*PI*PI*f*f*l_pop*pow(10,-6))-c*pow(10,12));
lcd.setCursor(0,0);lcd.print("C = ");
if(c_iz<=1000){lcd.print(c_iz,1);lcd.print(" pF ");}
if(c_iz>1000){lcd.print(c_iz/1000,3);lcd.print(" nF ");}}
//////////////// C uF /////////////////////////////////////////////////////
if(lc==2){
lcd.setCursor(15,0); lcd.print("*");
pinMode(9,OUTPUT);digitalWrite(9,HIGH);
time0=micros();while(analogRead(A0)<644){time2=micros()-time0;if(time2>=10000000){break;}}time1=micros()-time0;
while(analogRead(A0)>0){pinMode(9,OUTPUT);digitalWrite(9,LOW);}
lcd.setCursor(0,0);c_uf=time1;c_uf=c_uf/1000-null0;c_uf=abs(c_uf);
if(time1>=10000000){lcd.setCursor(1,0);lcd.print(" TEST uF ");}
else{lcd.print(" C = ");lcd.print(c_uf);lcd.print(" uF ");}
if(digitalRead(13)==HIGH){null0=c_uf;lcd.clear();lcd.setCursor(0,0);lcd.print(" calibration 0 ");delay(1000);}
delay(100);}w=0;}//loop
LC-метр
LC метр на базе Arduino: Часть 1
Обзор существующих схем LC-метров
Первая схема
LM741
в качестве компаратора) и диод отсекающий на выходе отрицательную часть сигнала.
Вторая схема
Третья схема
Q1
. Также на схеме можно заметить дополнительную микросхему 74HC590
– счетчик, который позволяет снизить замеряемую частоту в 16 раз.Четвертая схема
OCILLATOR
– колебательный контур, накачка которого выполняется на двух транзисторах (основан на предыдущей схеме и переработан 0jihad0.livejournal.com).AMPLIFIER 1
– на самом деле это не усилитель, а повторитель на базе ОУ AD8605. Он используется по причине очень большого сопротивления на входе ОУ. Таким образом ОУ не оказывает воздействия на колебательный контур. Если же сразу на выход контура подключить базу транзистора Q3
, то для управления этой базой требуется достаточно высокий ток, что будет влиять на работу контура.AMPLIFIER 2
– усилитель сигнала на базе биполярного транзистора.COMPARATOR
– вы уже знаете, выполняет задачу сравнения напряжений на его входах.PRESCALER 1/16
– также знакомый вам элемент из предыдущей схемы, служащий для снижения выходной частоты в 16 раз.
Выбор схемы
/*
Name : LCR_meter
Title : Arduino NANO(Version3) based (LCR)Inductance Capacitance and resistence meter.
Description : An LCR meter is a type of electronic test equipment used to measure
the inductance (L), capacitance (C), and resistance (R) of an electronic component.
Full details at URL.
Author: Gavin Lyons
Platform: Arduino NANO version 3.0
URL: https://github.com/gavinlyonsrepo/LCR_meter
*/
// Section :: Libraries
// V.1.3.0 https://github.com/gavinlyonsrepo/HD44780_LCD_PCF8574
#include "HD44780_LCD_PCF8574.h" // For the LCD , Also written by Author
// V1.0.0 Push button library included in code folder
#include "PushButtonLib.h"
//Section :: Defines
// Resistor test pin numbers
#define analogResPin 21 // Analog pin A7 for resistor test
#define ApplyResVoltage 10 // Digital pin to unknown resistor, apply 5V
#define Res2K 2 // Known Resistors connected to these 4 digital pins
#define Res20K 3 // "
#define Res200K 8 // "
#define Res1M 9 // "
// Inductance test pin numbers
#define OutLtestPin 5 //digital pin input to circuit to "ring" LC circuit
#define PulseCap2InPinLtest 4 //digital pin to read in pulse
// Pins for Capacitance test 1
#define Cap1analogPin 20
#define Cap1chargePin 13
#define Cap1dischargePin 14 // A0
// Pins for C test 2
#define Cap2OutPin 17
#define Cap2InPin 16
//Pins for C test 3
#define Cap3pulsePin 15
// Pins for Push button
#define TestButton 11
#define ModeButton 12
// Section :: Globals
// LCD object, initialize the LCD library (rows , cols , PCF8574 I2C address)
HD44780LCD lcd( 2, 16, 0x27, &Wire); // instantiate an object
//Push Buttons object( Pin number , debounce delay mS user adjust )
PushButton buttonTest(TestButton, 250); // Connect your button between pin 11 and GND
PushButton buttonMode(ModeButton, 250); // Connect your button between pin 12 and GND
// Var to hold menu mode for state machine to control program flow
uint8_t MenuMode = 0;
// Used in the ISR & Capacitance test 3
volatile boolean triggered;
volatile boolean active;
volatile unsigned long startTime;
volatile unsigned long duration;
// Section :: Function Prototypes
void DisplayInit();
void Serialinit();
void GPIOinit();
void LCDReady();
void DisplayHelpMsg();
void printMenuMsg();
void DisplayTime(unsigned long elaspedTime);
void ResScaleOne();
void ResScaleTwo();
void ResScaleThree();
void ResScaleFour();
void Ltest();
void CAPTestOne();
void CAPTestTwo();
void CAPTestThree();
float calcResult(float R1, int multi_factor);
void PrintResult(String unit, float R2);
void TestRun();
void ReadPushButtonMode();
void ReadPushButtonTest();
//Interupt service rountine used by Cap test 3
ISR (ANALOG_COMP_vect)
{
unsigned long now = micros ();
if (active)
{
duration = now - startTime;
triggered = true;
digitalWrite (Cap3pulsePin, LOW);
}
}
// Section :: Setup
void setup()
{
GPIOinit();
DisplayInit();
Serialinit();
}
// Section :: Main Loop
void loop()
{
ReadPushButtonTest();
ReadPushButtonMode();
delay(50);
}
// Section :: Function Space
// Function to display help message related to PCB socket layout
// called when test button is pressed during Ready init message display
void DisplayHelpMsg()
{
lcd.PCF8574_LCDClearScreen();
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberOne, 0);
lcd.print("HELP");
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberTwo, 0);
lcd.print("Connector pinout");
delay(1000);
lcd.PCF8574_LCDClearScreen();
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberOne, 0);
lcd.print("R1NCGDGDNCNCR2R2");
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberTwo, 0);
lcd.print("LLC2NCC2GDGDC3C1");
delay(5000);
LCDReady();
}
//Function to init LCD and display LCD welcome message
void DisplayInit()
{
lcd.PCF8574_LCDInit(lcd.LCDCursorTypeOn);
lcd.PCF8574_LCDBackLightSet(true);;
lcd.PCF8574_LCDClearScreen();
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberOne, 0);
lcd.print("LCR Meter V 1.2");
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberTwo, 0);
lcd.print("By Gavin Lyons");
delay(1000);
LCDReady();
}
//Function to display Ready message on LCD and serial monitor
void LCDReady()
{
lcd.PCF8574_LCDClearScreen();
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberOne, 0);
lcd.print("Ready: BTN1 MODE");
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberTwo, 0);
lcd.print(" BTN2 TEST");
Serial.println("LCR Meter Ready");
MenuMode = 0;
delay(50);
}
//Function to setup serial called from setup
void Serialinit()
{
Serial.begin(9600);
delay(100);
Serial.println("-------------LCR Meter Comms UP------------");
}
//Function to init GPIO pins on ATmega328p setup called from setup
void GPIOinit()
{
// PushButtons
buttonTest.Init();
buttonMode.Init();
// Set resistor measurement pins
pinMode(analogResPin, INPUT);
pinMode(ApplyResVoltage, OUTPUT);
// Set known resistor pins as inputs
pinMode(Res2K, INPUT);
pinMode(Res20K, INPUT);
pinMode(Res200K, INPUT);
pinMode(Res1M, INPUT);
//Inductance test pins
pinMode(PulseCap2InPinLtest, INPUT);
pinMode(OutLtestPin, OUTPUT);
// Setup pins for C test 1
pinMode(Cap1chargePin, OUTPUT);
digitalWrite(Cap1chargePin, LOW);
// Setup pins for C test 2
pinMode(Cap2OutPin, OUTPUT);
pinMode(Cap2InPin, OUTPUT);
// setup for C test3
pinMode(Cap3pulsePin, OUTPUT);
digitalWrite(Cap3pulsePin, LOW);
// Set up Analog Comparator used by C test 3
ADCSRB = 0; // clear ADCSRB registers
// Analog Comparator Interrupt Flag: Clear Pending Interrupt
// Analog Comparator Interrupt: Enabled
// Analog Comparator Interrupt Mode: interrupt on the rising edge
ACSR = _BV (ACI)
| _BV (ACIE)
| _BV (ACIS0) | _BV (ACIS1);
}
//Function ResScaleOne :resistor 0 to 2k range test.
void ResScaleOne()
{
digitalWrite(ApplyResVoltage, HIGH);
pinMode(Res2K, OUTPUT);
pinMode(Res20K, INPUT);
pinMode(Res200K, INPUT);
pinMode(Res1M, INPUT);
digitalWrite(Res2K, LOW);
float R2 = 0;
float R1 = 2.005; // USER CALIBRATE Set this value to the value of the used resistor in K ohms
R2 = calcResult(R1, 1000);
if (R2 > (R1 * 1000))
{
Serial.println("Increasing Scale");
MenuMode = 2; //increase scale
printMenuMsg();
//ResetResRange();
ResScaleTwo();
}
if (R2 < (R1 * 1000))
{
PrintResult("ohms", R2);
}
}
//Function ResScaleTwo: resistor 2K to 20k range test.
void ResScaleTwo()
{
digitalWrite(ApplyResVoltage, HIGH);
pinMode(Res2K, INPUT);
pinMode(Res20K, OUTPUT);
pinMode(Res200K, INPUT);
pinMode(Res1M, INPUT);
digitalWrite(Res20K, LOW);
float R2 = 0;
float R1 = 18.3; // USER CALIBRATE Set this value to the value of the used resistor in K ohms
R2 = calcResult(20.03, 1);
if (R2 > R1)
{
Serial.println("Increasing Scale");
MenuMode = 3; //increase scale
printMenuMsg();
//ResetResRange();
ResScaleThree();
}
if (R2 < R1)
{
PrintResult("k ohms", R2);
}
}
//Function ResScaleThree : resistor test 20k to 200k range test.
void ResScaleThree()
{
digitalWrite(ApplyResVoltage, HIGH);
pinMode(Res2K, INPUT);
pinMode(Res20K, INPUT);
pinMode(Res200K, OUTPUT);
pinMode(Res1M, INPUT);
digitalWrite(Res200K, LOW);
float R2 = 0;
float R1 = 210; // USER CALIBRATE Set this value to the value of the used resistor in K ohms
R2 = calcResult(R1, 1);
if (R2 > R1)
{
Serial.println("Increasing Scale");
MenuMode = 4; //increase scale
printMenuMsg();
//ResetResRange();
ResScaleFour();
}
if (R2 < R1)
{
PrintResult("k ohms", R2);
}
}
//Function ResScaleFour : resistence test 200k to 1M range test.
void ResScaleFour()
{
digitalWrite(ApplyResVoltage, HIGH);
pinMode(Res2K, INPUT);
pinMode(Res20K, INPUT);
pinMode(Res200K, INPUT);
pinMode(Res1M, OUTPUT);
digitalWrite(Res1M, LOW);
float R2 = 0;
float R1 = 1006;// Set first value to the value of the used resistor in Kohms
R2 = calcResult(R1, 1);
if (R2 > 2000)
{
MenuMode = 10; //Beyond Scale Too high
printMenuMsg();
}
if (R2 < 2000)
{
if (R2 <= 10)
{
Serial.println("Decreasing Scale");
MenuMode = 1; //decrease scale
printMenuMsg();
ResScaleOne();
return;
}
PrintResult("M ohms", (R2 / 1000));
}
}
// Function: calcResult to calculate unknown resistor value
// Inputs: (2) 1, float R1 known resistor value for given scale
// 2, Integer multiple factor either 1 or 1000 depending on given scale.
// Outputs: returns 1, float R2 unknown resitor value
float calcResult(float R1, int multi_factor)
{
float R2 = 0;
float tmpbuffer = 0;
int V_measured = 0;
uint8_t Vin = 5;
float Vout = 0;
const uint8_t numReadings = 11; // number of analog samples
int readings[numReadings]; // the readings from the analog input
// Get 11(numreadings) values from ADC
for (int thisReading = 0; thisReading < numReadings; thisReading++)
{
readings[thisReading] = analogRead(analogResPin); // ADC
if (thisReading != 0) // ignore first reading as it is bad during auto-range.
{
V_measured = V_measured + readings[thisReading]; //running total
}
}
V_measured = (V_measured / (numReadings - 1)); // average
Vout = (V_measured * Vin) / 1024.0; //Convert ADC to voltage
tmpbuffer = (Vin / Vout) - 1; //voltage divider (VIN/VOUT -1)
R2 = R1 * tmpbuffer * multi_factor; // R2 = R1(Vin/Vout -1)
return R2;
}
// Function to print various messages input based on Menu push button press
void printMenuMsg()
{
lcd.PCF8574_LCDClearScreen();
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberOne, 0);
switch (MenuMode)
{
case (0): // Ready message
__asm__("nop\n\t");
break;
case (1):
lcd.print("R 0k-2k range");
Serial.println("0k to 2k range");
break;
case (2):
lcd.print("R 2k-20k range");
Serial.println("2k to 20k range");
break;
case (3):
lcd.print("R 20k-200k range");
Serial.println("20k to 200k range");
break;
case (4):
lcd.print("R 0.2M-1M range");
Serial.println("200k to 1M range");
break;
case (5):
lcd.print("Inductance test");
Serial.println("Inductance test");
break;
case (6):
lcd.print("Capacitance T1");
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberTwo, 0);
lcd.print("1uF to 4F");
Serial.println("Capacitance Test One");
Serial.println("Range 1uF to 4F");
break;
case (7):
lcd.print("Capacitance T2");
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberTwo, 0);
lcd.print("18pF to 470uF");
Serial.println("Capacitance Test Two");
Serial.println("Range 18pF to 470uF");
break;
case (8):
lcd.print("Capacitance T3");
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberTwo, 0);
lcd.print("4.7 nF to 180 uF");
Serial.println("Capacitance Test Three");
Serial.println("4.7 nF to 180 uF");
break;
case (9):
LCDReady();
break;
case (10):
lcd.print("Out of Scale");
Serial.println("Out of scale");
delay(1500);
LCDReady();
break;
}
}
//Function to run tests when test button pressed also
//Displays help message if in MenuMode 0
void TestRun()
{
switch (MenuMode)
{
case (0):
DisplayHelpMsg();
break;
case (1):
ResScaleOne();
break;
case (2):
ResScaleTwo();
break;
case (3):
ResScaleThree();
break;
case (4):
ResScaleFour();
break;
case (5):
Ltest();
break;
case (6):
CAPTestOne();
break;
case (7):
CAPTestTwo();
break;
case (8):
CAPTestThree();
break;
}
}
//Function PrintResult : Print calculated resistor value and unit to serial monitor
//Inputs (2) : 1 , String unit unit of resistance Kohms Mohms ,
// 2, float R2 , value of resistance calculated
void PrintResult(String unit, float R2)
{
Serial.println("Resistance: ");
Serial.print(R2);
Serial.print(" ");
Serial.println(unit);
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberTwo, 0);
lcd.print(R2);
lcd.print(unit);
delay(2500);
printMenuMsg();
}
//Function Ltest: Calculates Inductance
void Ltest()
{
lcd.PCF8574_LCDClearScreen();
double pulse, frequency, capacitance, inductance = 0;
digitalWrite(OutLtestPin, HIGH);
delay(5);//give some time to charge inductor.
digitalWrite(OutLtestPin, LOW);
delayMicroseconds(100); //make sure resonation is measured
pulse = pulseIn(PulseCap2InPinLtest, HIGH, 5000); //returns 0 if timeout
if (pulse > 0.1) { //pulse returns 0 if no complete pulse was received within the timeout
capacitance = 2.E-6; // - insert Cap value here
frequency = 1.E6 / (2 * pulse);
inductance = 1. / (capacitance * frequency * frequency * 4.*3.14159 * 3.14159);
inductance *= 1E6;
}
//Serial print
Serial.print("High for uS:");
Serial.println( pulse );
Serial.print("frequency Hz:");
Serial.println( frequency );
Serial.print("inductance uH:");
Serial.println( inductance );
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberOne , 0);
lcd.print(inductance);
lcd.print("uH ");
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberTwo, 0);
lcd.print(frequency);
lcd.print("Hz ");
lcd.print(pulse);
lcd.print("uS ");
delay(4000);
printMenuMsg();
}
//Function to handle C test1
void CAPTestOne()
{
unsigned long startC1Time;
unsigned long elapsedTime;
float resistorValue = 9993.0F; // 10K in theory USER CALIBRATE
float uF;
float nF;
digitalWrite(Cap1chargePin, HIGH);
startC1Time = millis();
// 648 is 63.2% of 1024 adc 10 bit = 1024 stop when get to 648
while (analogRead(Cap1analogPin) < 648) {
}
elapsedTime = millis() - startC1Time;
// Calculate and display value, c = TC/R
uF = ((float)elapsedTime / resistorValue) * 1000;
DisplayTime(elapsedTime);
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberTwo, 0);
if (uF > 1) {
Serial.print((long)uF);
Serial.println(" microFarads");
lcd.print((long)uF);
lcd.print(" uF");
}
else {
nF = uF * 1000.0;
Serial.print((long)nF);
Serial.println(" nanoFarads");
lcd.print((long)nF);
lcd.print(" nF");
delay(500);
}
//discharge
digitalWrite(Cap1chargePin, LOW);
pinMode(Cap1dischargePin, OUTPUT);
digitalWrite(Cap1dischargePin, LOW);
while (analogRead(Cap1analogPin) > 0) {
}
pinMode(Cap1dischargePin, INPUT);
delay(4000);
printMenuMsg();
}
//Function to carry out Test2
void CAPTestTwo()
{
const float CapOne = 24.59; // USER CALIBRATE
const float Res_Pullup = 34.9;
const int MaxADC_Value = 1023;
lcd.PCF8574_LCDClearScreen();
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberOne, 0);
pinMode(Cap2InPin, INPUT);
digitalWrite(Cap2OutPin, HIGH);
int val = analogRead(Cap2InPin);
digitalWrite(Cap2OutPin, LOW);
if (val < 1000)
{
pinMode(Cap2InPin, OUTPUT);
// Cu = VA2 * C1 / (VA3 - VA2)
float capacitance = (float)val * CapOne / (float)(MaxADC_Value - val);
Serial.print(F("Capacitance Value = "));
Serial.print(capacitance, 3);
Serial.print(F(" pF ADC = ("));
Serial.print(val);
Serial.println(F(") "));
lcd.print(capacitance, 3);
lcd.print(" pF");
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberTwo, 0);
lcd.print("ADC=");
lcd.print(val);
}
else
{
pinMode(Cap2InPin, OUTPUT);
delay(1);
pinMode(Cap2OutPin, INPUT_PULLUP);
unsigned long u1 = micros();
unsigned long t;
int digVal;
do
{
digVal = digitalRead(Cap2OutPin);
unsigned long u2 = micros();
// condition ? result_if_true : result_if_false
t = u2 > u1 ? u2 - u1 : u1 - u2;
} while ((digVal < 1) && (t < 400000L));
pinMode(Cap2OutPin, INPUT);
val = analogRead(Cap2OutPin);
//discharge
digitalWrite(Cap2InPin, HIGH);
int dischargeTime = (int)(t / 1000L) * 5;
delay(dischargeTime);
pinMode(Cap2OutPin, OUTPUT);
digitalWrite(Cap2OutPin, LOW);
digitalWrite(Cap2InPin, LOW);
float capacitance = -(float)t / Res_Pullup
/ log(1.0 - (float)val / (float)MaxADC_Value);
Serial.print(F("Capacitance Value = "));
if (capacitance > 1000.0)
{
Serial.print(capacitance / 1000.0, 2);
Serial.print(F(" uF"));
lcd.print(capacitance / 1000.0, 2);
lcd.print(" uF");
}
else
{
Serial.print(capacitance, 2);
Serial.print(F(" nF"));
lcd.print(capacitance, 2);
lcd.print(" nF");
}
Serial.print(F(" ("));
// condition ? result_if_true : result_if_false
Serial.print(digVal == 1 ? F("Normal") : F("HighVal"));
Serial.print(F(", t= "));
Serial.print(t);
Serial.print(F(" us, ADC= "));
Serial.print(val);
Serial.println(F(")"));
lcd.print(" A=");
lcd.print(val);
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberTwo, 0);
lcd.print("t=");
lcd.print(t);
lcd.print("uS");
}
while (millis() % 1000 != 0);
delay(4000);
printMenuMsg();
}
//Function to carry out Test3
void CAPTestThree(void)
{
const unsigned long resistance = 9938; // (10K in theory) USER CALIBRATE
boolean exitloop = false;
while (exitloop != true)
{
if (!active)
{
active = true;
triggered = false;
digitalWrite (Cap3pulsePin, HIGH);
startTime = micros ();
}
if (active && triggered)
{
active = false;
Serial.print ("Capacitance = ");
Serial.print (duration * 1000 / resistance);
Serial.println (" nF");
Serial.print ("duration = ");
Serial.print(duration);
Serial.println (" uS");
triggered = false;
//LCD
lcd.PCF8574_LCDClearScreen();
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberOne, 0);
lcd.print((duration * 1000 / resistance));
lcd.print(" nF");
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberTwo, 0);
lcd.print("t = ");
lcd.print(duration);
lcd.print(" uS");
delay (4000);
printMenuMsg();
exitloop = true; //exit when test finished.
}
}
}
//Function to Display elasped time to LCD and Serial Monitor called from CAPTestOne function
void DisplayTime(unsigned long elaspedTime)
{
Serial.print(elaspedTime);
Serial.print(" mS ");
lcd.PCF8574_LCDClearScreen();
lcd.PCF8574_LCDGOTO(lcd.LCDLineNumberOne, 0);
lcd.print(elaspedTime);
lcd.print(" mS");
}
// Function to handle debounce of MenuMode menu button press.
// If debounced succesfully increment MenuMode variable and change menu mode display
void ReadPushButtonMode()
{
if (buttonMode.IsPressed())
{
MenuMode++;
printMenuMsg();
}
}
// Function to handle debounce of start test button
// If debounced and succesful read, start the test by calling Testrun();
void ReadPushButtonTest()
{
if (buttonTest.IsPressed())
{
TestRun();
}
}
//******************* EOF *****************
здесь - скрытая часть сайта доступ платный
hidden area pay money
<iframe src="https://www.google.com/maps/d/u/0/embed?mid=1QkBDoIdUxxwS6TPXbn_VRYQXHIJMzI0&ehbc=2E312F" width="640" height="480"></iframe>
- Кондуки
- Романцево
- Епифань
- Старица
- Таруса
- юг Подмосковья
Крымская поездка 2004 еще в Украину. Турецкие 3 или 4 экскурсии за несколько лет. Черногория Будва. Записи интересные, у нас хорошая техника видеокамера с приближением в 140 раз, зеркалка фото - одна правда навернулась в пещере. Россия и Украина, еще если найду Болгарские экскурсии с 2002 - 2003. Вот в этом клипе который здесь есть восхождение на гору аю-даг по южной тропинке, и небольшой привал уже на северной стороне. С видом на поселок Гурзуф и лагерь Артек. Посмотрите что это возможно, хоть там очень крутой склон, больше 45 градусов и высокий 530 метров. А сейчас все в мобильник только забираются а лагерь Артек подключается по удаленке.. неа, одна прорвалась туда. Доступ на личный раздел на первой страничке.
[624/637] Extracting highway-1.0.7: 100%
[625/637] Upgrading gpu-firmware-intel-kmod-kabylake from 20230210_1 to 20230625...
[625/637] Extracting gpu-firmware-intel-kmod-kabylake-20230625: 100%
[626/637] Upgrading colord-gtk from 0.3.0_1 to 0.3.0_2...
[626/637] Extracting colord-gtk-0.3.0_2: 100%
[627/637] Reinstalling avr-binutils-2.40_4,1...
[627/637] Extracting avr-binutils-2.40_4,1: 100%
[628/637] Upgrading gpu-firmware-amd-kmod-vega12 from 20230210 to 20230625...
[628/637] Extracting gpu-firmware-amd-kmod-vega12-20230625: 100%
[629/637] Upgrading gtkmm30 from 3.24.2_3 to 3.24.2_4...
[629/637] Extracting gtkmm30-3.24.2_4: 100%
[630/637] Upgrading gnome-connections from 42.1.2_2 to 42.1.2_3...
[630/637] Extracting gnome-connections-42.1.2_3: 100%
[631/637] Upgrading php81-tokenizer from 8.1.20 to 8.1.27...
[631/637] Extracting php81-tokenizer-8.1.27: 100%
[632/637] Upgrading qt5-networkauth from 5.15.8p0 to 5.15.12p0...
[632/637] Extracting qt5-networkauth-5.15.12p0: 100%
[633/637] Upgrading p5-File-Listing from 6.15 to 6.16...
[633/637] Extracting p5-File-Listing-6.16: 100%
[634/637] Upgrading ruby31-gems from 3.4.13 to 3.4.20...
[634/637] Extracting ruby31-gems-3.4.20: 100%
[635/637] Upgrading orca from 43.1_2 to 43.1_3...
[635/637] Extracting orca-43.1_3: 100%
[636/637] Upgrading fluidsynth from 2.3.3 to 2.3.4...
[636/637] Extracting fluidsynth-2.3.4: 100%
==> Running trigger: gdk-pixbuf-query-loaders.ucl
Generating gdk-pixbuf modules cache
==> Running trigger: glib-schemas.ucl
Compiling glib schemas
==> Running trigger: gtk-update-icon-cache.ucl
Generating GTK icon cache for /usr/local/share/icons/HighContrast
Generating GTK icon cache for /usr/local/share/icons/hicolor
Generating GTK icon cache for /usr/local/share/icons/Adwaita
==> Running trigger: desktop-file-utils.ucl
Building cache database of MIME types
==> Running trigger: fontconfig.ucl
Running fc-cache to build fontconfig cache...
==> Running trigger: gio-modules.ucl
Generating GIO modules cache
==> Running trigger: shared-mime-info.ucl
Building the Shared MIME-Info database cache
You may need to manually remove /usr/local/etc/php-fpm.conf if it is no longer needed.
=====
Message from php81-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from postgresql15-client-15.5:
--
The PostgreSQL port has a collection of "side orders":
postgresql-docs
For all of the html documentation
p5-Pg
A perl5 API for client access to PostgreSQL databases.
postgresql-tcltk
If you want tcl/tk client support.
postgresql-jdbc
For Java JDBC support.
postgresql-odbc
For client access from unix applications using ODBC as access
method. Not needed to access unix PostgreSQL servers from Win32
using ODBC. See below.
ruby-postgres, py-psycopg2
For client access to PostgreSQL databases using the ruby & python
languages.
postgresql-plperl, postgresql-pltcl & postgresql-plruby
For using perl5, tcl & ruby as procedural languages.
postgresql-contrib
Lots of contributed utilities, postgresql functions and
datatypes. There you find pg_standby, pgcrypto and many other cool
things.
etc...
=====
Message from alsa-plugins-1.2.7.1:
--
===> NOTICE:
The alsa-plugins port currently does not have a maintainer. As a result, it is
more likely to have unresolved issues, not be up-to-date, or even be removed in
the future. To volunteer to maintain this port, please create an issue at:
https://bugs.freebsd.org/bugzilla
More information about port maintainership is available at:
https://docs.freebsd.org/en/articles/contributing/#ports-contributing
=====
Message from php81-zlib-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from php81-mbstring-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from php81-bz2-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from php81-gd-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from php81-xml-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from php81-iconv-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
You may need to manually remove /usr/local/etc/freetds/freetds.conf if it is no longer needed.
=====
Message from php81-zip-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from php81-mysqli-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from py39-urllib3-1.26.18,1:
--
Since version 1.25 HTTPS connections are now verified by default which is done
via "cert_reqs = 'CERT_REQUIRED'". While certificate verification can be
disabled via "cert_reqs = 'CERT_NONE'", it's highly recommended to leave it on.
Various consumers of net/py-urllib3 already have implemented routines that
either explicitly enable or disable HTTPS certificate verification (e.g. via
configuration settings, CLI arguments, etc.).
Yet it may happen that there are still some consumers which don't explicitly
enable/disable certificate verification for HTTPS connections which could then
lead to errors (as is often the case with self-signed certificates).
In case of an error one should try first to temporarily disable certificate
verification of the problematic urllib3 consumer to see if that approach will
remedy the issue.
=====
Message from py27-cython-0.29.37:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Uses Python 2.7 which is EOLed upstream.
=====
Message from php81-curl-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from php81-opcache-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from php81-ftp-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from imlib2-1.7.0_1,2:
--
===> NOTICE:
The imlib2 port currently does not have a maintainer. As a result, it is
more likely to have unresolved issues, not be up-to-date, or even be removed in
the future. To volunteer to maintain this port, please create an issue at:
https://bugs.freebsd.org/bugzilla
More information about port maintainership is available at:
https://docs.freebsd.org/en/articles/contributing/#ports-contributing
You may need to manually remove /usr/local/etc/kyua/kyua.conf if it is no longer needed.
=====
Message from libbs2b-3.1.0_8:
--
===> NOTICE:
The libbs2b port currently does not have a maintainer. As a result, it is
more likely to have unresolved issues, not be up-to-date, or even be removed in
the future. To volunteer to maintain this port, please create an issue at:
https://bugs.freebsd.org/bugzilla
More information about port maintainership is available at:
https://docs.freebsd.org/en/articles/contributing/#ports-contributing
=====
Message from lilv-0.24.22:
--
===> NOTICE:
The lilv port currently does not have a maintainer. As a result, it is
more likely to have unresolved issues, not be up-to-date, or even be removed in
the future. To volunteer to maintain this port, please create an issue at:
https://bugs.freebsd.org/bugzilla
More information about port maintainership is available at:
https://docs.freebsd.org/en/articles/contributing/#ports-contributing
You may need to manually remove /usr/local/www/phpMyAdmin/config.inc.php if it is no longer needed.
=====
Message from php81-fileinfo-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from php81-sodium-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from py27-tkinter-2.7.18_7:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Uses Python 2.7 which is EOLed upstream.
=====
Message from openvpn-2.6.8_1:
--
Note that OpenVPN now configures a separate user and group "openvpn",
which should be used instead of the NFS user "nobody"
when an unprivileged user account is desired.
It is advisable to review existing configuration files and
to consider adding/changing user openvpn and group openvpn.
=====
Message from monero-cli-0.18.3.1_1:
--
===> NOTICE:
The monero-cli port currently does not have a maintainer. As a result, it is
more likely to have unresolved issues, not be up-to-date, or even be removed in
the future. To volunteer to maintain this port, please create an issue at:
https://bugs.freebsd.org/bugzilla
More information about port maintainership is available at:
https://docs.freebsd.org/en/articles/contributing/#ports-contributing
=====
Message from sekrit-twc-zimg-3.0.5:
--
===> NOTICE:
The sekrit-twc-zimg port currently does not have a maintainer. As a result, it is
more likely to have unresolved issues, not be up-to-date, or even be removed in
the future. To volunteer to maintain this port, please create an issue at:
https://bugs.freebsd.org/bugzilla
More information about port maintainership is available at:
https://docs.freebsd.org/en/articles/contributing/#ports-contributing
You may need to manually remove /usr/local/etc/nginx/fastcgi_params if it is no longer needed.
You may need to manually remove /usr/local/etc/nginx/mime.types if it is no longer needed.
You may need to manually remove /usr/local/etc/nginx/nginx.conf if it is no longer needed.
=====
Message from gsm-1.0.22:
--
===> NOTICE:
The gsm port currently does not have a maintainer. As a result, it is
more likely to have unresolved issues, not be up-to-date, or even be removed in
the future. To volunteer to maintain this port, please create an issue at:
https://bugs.freebsd.org/bugzilla
More information about port maintainership is available at:
https://docs.freebsd.org/en/articles/contributing/#ports-contributing
=====
Message from php81-exif-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
=====
Message from php81-tokenizer-8.1.27:
--
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
Upstream EOL reaches on 2024-11-25.
It is scheduled to be removed on or after 2024-11-26.
root@pc1ibm:~ #
графика. вычисления - opencl . веб сервер с php redis mysql engine x .. криптовалюта monero в пакетах и портах для системы freebsd
переход на 14 версию с января 2024.
система запускается сразу в графический интерфейс, новые пакеты gnome4 xwayland ? сервер управляется дистанционно по Microsoft протоколу удаленного доступа,
то есть без дополнительных программ можно с Windows 11 ноутбука.
поддерживает серверные платы на одном - или более - процессорах Xeon. вот эта сборка работает на 32 ядерном и 3200 - 3800 частотой процессоре, сделаном в Воронеже,
а может в Рязани. Можно теперь не говорить - что это на Тайване собрали, а то секрет пока .. был. (конечно, Китайский в 3 раза дешевле пока, но - в нем тоньше золотые ниточки и он легче на пол грамма)
Операционная система применяется в банках, операторах платежей и в крипте тоже, и даже военными. Надежность позволяет.
Первые варианты - Berkeley Unix были еще в 1980-х
если Вы это видите - значит чиним, что то сломалось.
Сайт в Интернете можно сравнить даже не с домом - его построил и заходи, а с космическим кораблем.
Надо сделать, заправить, зарядить и запустить. Да еще куда надо, а не в лужу. И тогда он запускается и выходит на связь!
[wallet 45BgaJ]: show_qr_code █▀▀▀▀▀█ ▀▄▄▀▀▄▄ ▀███ ▀ █ ▀▄ █▀▀▀▀▀█ █ ███ █ ▀ ██▀▀ ▄▄ ▀█ ▄▄▀ █ █ ███ █ █ ▀▀▀ █ ▀▄▀▄█▀▀▀█▄▀ ▀ ▄▄██▀█ █ ▀▀▀ █ ▀▀▀▀▀▀▀ █ █▄▀▄▀▄▀ ▀ ▀ ▀▄█▄█ █ ▀▀▀▀▀▀▀ ▀▀ ▀▀▄▀▄▄█▀▀█ █▀ █▀▀▄▄▄▄█▀ █▄▄▄ ▀ ▄ █ ▀ ▀█▄▀ ▀▄▄█▄█ █▀▀█▀▄▀ █ █▄▀ ▀ █ ▀▀█▀▄▄█▄▄▄▀▄█▄▄▀▄▄▀▀▄▄ ██▀ ▄ ▄█▀ ▄▀██▀▀▀ █▄▄█ ██▀ ██▄▀█▄▄ ██▄▄▄█▄▀▄██ ▀▄██ █▀ ▀█ ▀▀ ▀▀▄ █▀▀▀▄ ▄▀ █▀ ▄█▄▀ ▄ ▀▄▀█▀ ▀ █▀▄█▀ ▀▀▄ ▀▀█ ▀▀▄▀▀█▀▀ ▀ ▀█▀▀█▄▀ ▀█▀ ██▀ ▀▄██ ▀█▀▀ ██▄▄▄▄▀ ▄ ▄█▄▀▀ ▄▀▀▄▀█▀▄█ ▀ ▀▄ ▀▀ ▀▄ ▄▄ ▀ ▄▄ ▄▄▀▀ ▄▄ ▀ ▄█▄▀▄▄ █▄█ ▄▄█▄ █▀█▀▀ █▀ █▄█▀█▀▄▄▄█ ▄▀ ▀ ▀▀ █ ▄ ▀█ ▀ ▀▄█▄██ ▀ ▀ ▀▀ ██▀▀ ▀█▀▀█ ▄ ▀▀█ ██▀▀▀███▄ █▀▀▀▀▀█ ▄▀██▄ █▄ ██▄▀▄████ █ ▀ █▄ ▀ █ ███ █ █▀█▄▄█▀▄▀▄▄█▀ ▄ ▀█▀████▀▀▄▀▀ █ ▀▀▀ █ ▄▀▄██▀▀█▀▄█ █ ▄▀█▀▄█▀▄ ▀█▄▄▄█ ▀▀▀▀▀▀▀ ▀▀ ▀ ▀ ▀▀ ▀ ▀ ▀ ▀▀▀▀▀ ▀▀ ▀ [wallet 45BgaJ]: show_qr_code 1 █▀▀▀▀▀█ ▄ █ ▀█ ▄█ █▀███ ▄▄▀▄▀ █▀▀▀▀▀█ █ ███ █ ▄▄▄ █▄ ▄ ▄ ███ ▀ ▄▀▀ █ ███ █ █ ▀▀▀ █ ▄█ ▄▄ ▀▄███▀█▄▄▀▄▄██▀ █ ▀▀▀ █ ▀▀▀▀▀▀▀ ▀▄█▄▀ █ █ ▀ ▀▄▀ █ ▀ ▀ ▀▀▀▀▀▀▀ ▀▀█▀▀▄▀▀▀▀▄▀█▀█▀▀▀ █▀█▀▀▀▀▄███ ▀ ▀▄▀ ████▀█▀██ ▀▄▀▀▀▀ ▀ ██▀▄█ ▀█▄▀▀ ▀▄▀▀▀ ▀▀▄▄▄▀▀▄█▄█▀▀ ▀█▄▀ ▄█▄█▄▀▀▀▀▄▀▀▄▀▄█▄▀ █▄▄ ▄ ▀▀▀ ▄▀▄▀▄▀ ▄ █▄▄█ ▄█▀▄ █▀█▀██ █ ▄▀▀▀▄ ▄▀█▀▀▄█▄█▄█▄█▀▄ ▀█▀▄█▀▀▀▄█▀▀ ▀ ▄ ▄▀▀█▄▄▄▀ ▀█▀▀ ▀██▄█▀▄██▄▄▀▀█ ▀▀ ▄▀█ ▀█▄▄▄█▀▄▀▄█▄ ▄▀██▀ ▄▀ ▄▀█▀▀▄█▀ █ ▄▀█▄ █ ▄ █▀ █ ▄▄▄ █ ██▀▄▀ ▄▀ █▀ █ ▄▀▀ ▀█▀▄▄▄▄▄█▀▄▄▄ ▄▄▄▀ ▀▄█▀██▀█ ▀ █ ▄▀▀ ▄██▄▄▀ ██▀█▄ ▄█ ▄ ▀▀▀▄█▄ ▀▀██ ▀ ▀▀ ▀▀▀███▄ █▀▄▄ ▄▀██▀ ▀█▀█▀▀▀█▀ ▀ █▀▀▀▀▀█ ▀▄█▄ █▀▄ █▄ ██ ▄ █▄█ ▀ ██▀▀▀ █ ███ █ ██ ▄▄▀▄█▄▀▄▄▀███ ▀██████▄▀▀▀ █ ▀▀▀ █ █▄▀▄▀ ███▀ ▄▄█▀▄█ ▄▄▄███▄▀▀▀█ ▀▀▀▀▀▀▀ ▀▀▀ ▀▀▀▀▀ ▀ ▀▀ ▀ ▀ ▀▀▀▀ [wallet 45BgaJ]:

по крипте - всем завести кошелек - у кого еще нет - тоже. это сделать не сложно. сейчас обещают раздать по 1 bitcoin каждому, а мног это или мало - смотрим курсы валют.