Это загрузить код, чтобы получить ток C через NodeMcu Esp8266 + ACS712 с библиотекой фильтров - PullRequest
0 голосов
/ 03 марта 2020

Я обнаружил, что библиотека фильтров предоставила пользовательский метод для получения правильного значения на датчике ACS712. Я подключил Arduino Uno к ACS 712 20A и использую библиотеку фильтров для кодирования. Это было успешно. Это как это видео здесь

#include <FilterDerivative.h>
        #include <FilterOnePole.h>
        #include <Filters.h>
        #include <FilterTwoPole.h>
        #include <FloatDefine.h>
        #include <RunningStatistics.h>
        #include <Filters.h>                      //This library does a massive work check it's .cpp file

        #define ACS_Pin A0                        //Sensor data pin on A0 analog input

        float ACS_Value;                              //Here we keep the raw data valuess
        float testFrequency = 50;                    // 
        float windowLength = 40.0/testFrequency;     // how long to average the signal, for statistist



        float intercept = 0; // to be adjusted based on calibration testing
        float slope =0.04458 ; // to be adjusted based on calibration testing 0.0752 /test2 0.04458 


        float Amps_TRMS; // estimated actual current in amps

        unsigned long printPeriod = 5000; // in milliseconds It should be not shorten than this value
        // Track time in milliseconds since last reading 
        unsigned long previousMillis = 0;

        void setup() {
          Serial.begin( 115200 );    // Start the serial port
          pinMode(ACS_Pin,INPUT);  //Define the pin mode
        }

        void loop() {
          RunningStatistics inputStats;                 // create statistics to look at the raw test signal
          inputStats.setWindowSecs( windowLength );     //Set the window length

          while( true ) {   
            ACS_Value = analogRead(ACS_Pin);  // read the analog in value:
            inputStats.input(ACS_Value);  // log to Stats function

            if((unsigned long)(millis() - previousMillis) >= printPeriod) { //every second we do the calculation
              previousMillis = millis();   // update time

              Amps_TRMS = intercept + slope * inputStats.sigma();
              Serial.print( "\t Amps: " ); 
              Serial.print( Amps_TRMS/2 );
              Serial.println();

            }
          }

        }

Однако, когда я использую этот код для загрузки на плату NodeMcu ESP8266 и датчик ACS712-20A. Не работает Как мне отредактировать этот код, чтобы он работал нормально? Спасибо

Примечание. Если я использую другой код без библиотеки фильтров. Они оба хорошо работают

...