added SWR, PWR sensor

This commit is contained in:
phdlee 2019-04-11 22:37:24 +09:00
parent aee410fd19
commit 02c0066df4

View File

@ -1,6 +1,8 @@
/*
FFT, CW Decode for uBITX
KD8CEC, Ian Lee
Version : 0.8
-----------------------------------------------------------------------
License : See fftfunctions.cpp for FFT and CW Decode.
**********************************************************************/
@ -177,7 +179,7 @@ void SendCommandStr(char varIndex, char* sendValue)
SWSerial_Write(0xFF);
}
char softBuff1Num[14] = {'p', 'm', '.', 'c', '0', '.', 'v', 'a', 'l', '=', 0, 0xFF, 0xFF, 0xFF};
unsigned char softBuff1Num[14] = {'p', 'm', '.', 'c', '0', '.', 'v', 'a', 'l', '=', 0, 0xFF, 0xFF, 0xFF};
void SendCommand1Num(char varType, char sendValue) //0~9 : Mode, nowDisp, ActiveVFO, IsDialLock, IsTxtType, IsSplitType
{
softBuff1Num[4] = varType;
@ -472,58 +474,6 @@ int ForwardData(void)
}
}
/*
int SendMeterData(uint8_t isSend)
{
int newScaledSMeter = 0;
if (ADC_DIFF > 11)
{
newScaledSMeter = 8;
}
else if (ADC_DIFF > 9)
{
newScaledSMeter = 7;
}
else if (ADC_DIFF > 8)
{
newScaledSMeter = 6;
}
else if (ADC_DIFF > 7)
{
newScaledSMeter = 5;
}
else if (ADC_DIFF > 6)
{
newScaledSMeter = 4;
}
else if (ADC_DIFF > 5)
{
newScaledSMeter = 3;
}
else if (ADC_DIFF > 4)
{
newScaledSMeter = 2;
}
else if (ADC_DIFF > 3)
{
newScaledSMeter = 1;
}
else
{
newScaledSMeter = 0;
}
scaledSMeter = newScaledSMeter;
if (isSend == 1)
{
if (L_scaledSMeter != scaledSMeter)
{
L_scaledSMeter = scaledSMeter;
SendCommand1Num(CMD_SMETER, L_scaledSMeter);
}
}
}
*/
int SendMeterData(uint8_t isSend)
{
//basic : 1.5Khz
@ -788,7 +738,14 @@ extern double coeff;
#define LAST_TIME_INTERVAL 159
int SWRAdcValue = 0;
//int SWRAdcValue = 0;
float adcFWD = 0;
float adcRWD = 0;
uint16_t adjustPower = 230;
float swrMeasured;
int clcCount = 0;
//for boot Delay, a alot of data transfer
//Delay 2.5 Sec
@ -817,6 +774,7 @@ void loop()
//===========================================
if (TXStatus == 1) //TX Mode
{
/*
int readedValue = 0;
SMeterToUartIdleCount++;
if (SMeterToUartIdleCount > 130) //SWR
@ -834,9 +792,94 @@ void loop()
SendCommand1Num('m',2);
//PWR Send
}
*/
//************************************************
//Read FWD and RWD
adcFWD = adcFWD * 0.8 + analogRead(A2) * 0.2;
adcRWD = adcRWD * 0.8 + analogRead(A3) * 0.2;
if (adcRWD > adcFWD)
{
adcRWD = adcFWD;
}
//for Realtime LCD Display
ForwardData();
delay(5);
if (clcCount++ > 10)
{
//Calculated Power and swr and Send Information
clcCount = 0;
//Calc PWR
float PWR = pow(adcFWD, 2);
PWR = PWR / adjustPower / 100;
//Calc SWR
float Vratio = adcRWD / adcFWD;
if (adcRWD < 0.05 && adcFWD < 0.05)
{
//No signal
swrMeasured = 0;
}
else if (Vratio > 0.99)
{
swrMeasured = 1999;
}
else
{
swrMeasured = ((1 + Vratio)/ (1 - Vratio));
}
//For Version 0.8
//Send SWR Information using Receive Signal Meter Protocol
scaledSMeter = (int)(swrMeasured + 0.5);
if (scaledSMeter > 9)
{
scaledSMeter = 9;
}
if (L_scaledSMeter != scaledSMeter)
{
L_scaledSMeter = scaledSMeter;
SendCommand1Num(CMD_SMETER, L_scaledSMeter);
}
//For Version 1.0
//need mod uBITX firmware and Nextion LCD and add Power adjust value option (uBITX Manager)
//Send Information
//SWR Send
//SendCommandL('m', SWRAdcValue);
//SendCommand1Num('m', 3);
//SMeterToUartIdleCount = 0;
//Send Power Information
int readedValue = (int)(PWR * 100);
SendCommandL('m', readedValue);
SendCommand1Num('m',2);
//Delay 250msec ~ 500msec for Nextion LCD Processing (using m protocol)
for (int i = 0; i < 10; i++)
{
ForwardData();
if (TXStatus != 1) //if TX -> RX break
{
break;
}
delay(25);
} //end of delay time
//Send SWR
readedValue = (int)(swrMeasured * 100);
SendCommandL('m', readedValue);
SendCommand1Num('m', 3);
//delay(50);
//return;
}
delay(30);
return; //Do not processing ADC, FFT, Decode Morse or RTTY, only Power and SWR Data Return
}
@ -969,5 +1012,3 @@ void loop()
Decode_Morse(magnitude);
} //enf of if
} //end of main