Сообщение от
Integral
В результате из 10 измерений в U1 и U2 мы получим максимальное значение.
добавил отображение максимального значения в числовом отображении
PWR=1472W
градусник к этой процедуре не удалось прицепить,
Код:
...
// измерение мощности и КСВ
// устанавливаем курсор в колонку 10, строку 1
lcd.setCursor(0, 1);
// считываем показания с аналогового входа A6 A7
//int pwr1 = analogRead(A6);
//int pwr2 = analogRead(A7);
int pwr1=0,pwr2=0; //назначаем переменные прямой и обратной волны
const int COUNT = 10; //назначаем константу кол-во измерений
for (byte i=0; ++i<COUNT;){ //включаем цикл измерения
int pwr1temp = analogRead(A6); //суммируем значения pwr1 с порта А6
int pwr2temp = analogRead(A7); //суммируем значения pwr2 с порта А7
if (pwr1temp>=pwr1){pwr1=pwr1temp;} //получаем максимальное значение pwr1
if (pwr2temp>=pwr2){pwr2=pwr2temp;}} //получаем максимальное значение pwr2
// pwr1 = pwr1 / COUNT; //усредняем значение pwr1
// pwr2 = pwr2 / COUNT; //усредняем значение pwr2
// переводим значения с АЦП A6 A7 в вольты
float U1 = pwr1 * (5.0 / 73.0);
float U2 = pwr2 * (5.0 / 73.0);
// переводим вольты в мощность и КСВ
int pwr11 = ((U1*U1)/50) * 15; // тут правим коэффициент для мощности 1472 Вт
int swr12 = ((U1+U2)/(U1-U2)) * 100;
//ограничиваем значение КСВ на уровне 9.99
// выводим результат на дисплей
lcd.print("PWR=");
// устанавливаем курсор в колонку 4, строку 1
lcd.setCursor(4, 1);
lcd.print(pwr11);
lcd.print("W ");
...
также добавил усреднение анодного напряжения :
Код:
...
// измерение анодного напряжения
// устанавливаем курсор в колонку 0, строку 2
lcd.setCursor(0, 2);
// считываем показания с аналогового входа A0
// int anodU = analogRead(A0);
int anodU=0; //назначаем переменные прямой и обратной волны
for (byte i=0; i<10; i++){ //включаем цикл измерения
anodU += analogRead(A0);} //суммируем значения anodU с порта А0
anodU = anodU / 10; //усредняем значение anodU
// переводим значения с АЦП A0 в вольты
float sensorVoltage = anodU * (5.0 / 120.0); // тут правим коэффициент для другого верхнего значения напряжения
// переводим вольты в напряжение
int anodV = sensorVoltage * 100;
// выводим результат на дисплей
lcd.print("Ua=");
// устанавливаем курсор в колонку 3, строку 2
// на самом деле это третья строка, т.к. нумерация начинается с нуля
lcd.setCursor(3, 2);
lcd.print(anodV);
lcd.print("V ");
...
скетч текущей версии :
LcdBarGraph_21_11_2019_I2C_1660.rar
на УМ еще не опробован.
.