From 7ef7d25693e6d8b9d7273d0437eceb8a89a2ba7f Mon Sep 17 00:00:00 2001 From: Joerg Lehmann Date: Tue, 21 Jul 2020 10:33:14 +0200 Subject: [PATCH] try some nau7802 settings because of rare wrong readings --- mini_beieli_node.h | 2 +- mini_beieli_node_nau7802.h | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/mini_beieli_node.h b/mini_beieli_node.h index 811066f..1b16681 100644 --- a/mini_beieli_node.h +++ b/mini_beieli_node.h @@ -56,7 +56,7 @@ enum { | \****************************************************************************/ -static const int32_t fwVersion = 20200714; +static const int32_t fwVersion = 20200721; static const byte INIT_PACKAGE_INTERVAL = 100; // send an init package every 100 packages; static const byte MAX_VALUES_TO_SEND = 8; diff --git a/mini_beieli_node_nau7802.h b/mini_beieli_node_nau7802.h index f6039f8..52549c6 100644 --- a/mini_beieli_node_nau7802.h +++ b/mini_beieli_node_nau7802.h @@ -33,8 +33,9 @@ bool InitializeScales() result &= myScale.setSampleRate(NAU7802_SPS_40); //Set samples per second to 40 result &= myScale.setRegister(NAU7802_ADC, 0x30); //Turn off CLK_CHP. From 9.1 power on sequencing. result &= myScale.clearBit(NAU7802_PGA_PWR_PGA_CAP_EN, NAU7802_PGA_PWR); - //result &= myScale.setRegister(NAU7802_OTP_B1, 0x30); - //result &= myScale.setRegister(NAU7802_PGA, NAU7802_PGA_OUT_EN | NAU7802_PGA_CHP_DIS); + // https://electronics.stackexchange.com/questions/91151/weird-reading-from-nau7802-adc + result &= myScale.setRegister(NAU7802_OTP_B1, 0x30); + result &= myScale.setRegister(NAU7802_PGA, NAU7802_PGA_OUT_EN | NAU7802_PGA_CHP_DIS); result &= myScale.calibrateAFE(); //Re-cal analog front end when we change gain, sample rate, or channel @@ -93,7 +94,7 @@ long ReadScale(char channel) int const num_scale_readings = SAMPLES; // number of instantaneous scale readings to calculate the median // we use the median, not the average, see https://community.particle.io/t/boron-gpio-provides-less-current-than-electrons-gpio/46647/13 - long readings[num_scale_readings]; // create arry to hold readings + long readings[num_scale_readings]; // create array to hold readings for (int i = 0; i < num_scale_readings; i++) { //while (digitalRead(interruptPin) == LOW) { unsigned long mytimer = millis();