Sensors are now functioning more-or-less correctly. Calibration isn't quite right, but the basics are correct.

This commit is contained in:
Rob French 2021-02-02 08:54:27 -06:00
parent ba744f5b7a
commit 04d5f3ba12

View File

@ -172,11 +172,15 @@ class TrailingAverage {
* The new element/value to incorporate into the average.
*/
inline void add(T val) {
int last = (current - 1) % N;
average -= data[last];
current = (current + 1) % N;
data[current] = val;
average += data[current] / divisor;
//int last = (current - 1) % N;
//average -= data[last];
//current = (current + 1) % N;
//data[current] = val / divisor;
//average += data[current];
average -= data[current];
data[current] = val / divisor;
average += data[current];
current = (current + 1) % N;
}
/*!
@ -237,7 +241,11 @@ class UBitxSensors {
* measurements by reading the associated ADC pin.
*/
void updatePower() {
ADC::Sync_result value = adc.analogSyncRead(fwdPwrPin, revPwrPin);
static elapsedMillis sincelast = 0;
ADC::Sync_result value = adc.analogSyncRead(revPwrPin, fwdPwrPin);
//value.result_adc0 = adc.analogRead(fwdPwrPin);
//value.result_adc1 = adc.analogRead(revPwrPin);
float fwdV = HF::adcIn(value.result_adc0);
float revV = HF::adcIn(value.result_adc1);
@ -248,6 +256,15 @@ class UBitxSensors {
revV = HF::divIn(revV, uBitxSensorsRevPwrR1, uBitxSensorsRevPwrR2);
revV = HF::bridgeFwd(revV);
if (sincelast > 1000) {
sincelast = 0;
Serial.print("POWER: ");
Serial.print(value.result_adc0); Serial.print(" / ");
Serial.print(value.result_adc1); Serial.print(" / ");
Serial.print(fwdV, 2); Serial.print(" / ");
Serial.println(revV, 2);
}
fwdPwr.add(HF::P(fwdV));
revPwr.add(HF::P(revV));
vswr.add(HF::VSWR(fwdV, revV));
@ -278,7 +295,7 @@ class UBitxSensors {
* @return Scaled S-Meter reading.
*/
int sMeterScaled() {
float sig = sMeter.read();
int sig = sMeter.read() >> 2;
// small number of elements; just doing a linear search
for (int i = uBitxSensorsSMeterLevels; i > 0; i--) {
if (sig > uBitxSensorsSMeterValues[i - 1]) {