Interrupt code trouble

You bet. Your non-interrupt code is basically measuring the number of Dbounce long intervals that fPin is low in a second. The higher Dbounce's value, the fewer intervals your code will read.

But what is it you want to measure? The amount of time fPin is low in a second, or the number of times it makes a HIGH to LOW transition?

I want to measure transitions(pulses). I need to be able to calculate flow rate.

Then your interrupt code is correct and your non-interrupt code is completely not.

I assumed it was all good since it matched the calibraiton number. I know I'm buying Chinese sensors that are extremely cheap, but do you think the calibration constant could be that far off?

As you would expect given the flow rate it was displaying (.28) vs measured, it was counting 3 pulses per second

I have no knowledge whatsoever about your sensor. I couldn't even begin to guess.

If you want to change your non-interrupt code to count transitions rather than time low, something like the (untested) below would do the job:

bool pinJustWentLow(uint8_t inPin) {
   bool currentPinState;
   static bool lastPinState = HIGH;
   static bool pinState = HIGH;
   static unsigned long pinDebouncing = 0;
   const unsigned pinDebounceDelay = 5;   // 5ms debounce
   bool result = false;
      
   currentPinState = digitalRead(inPin);

   if( currentPinState != lastPinState ) {
      pinDebouncing = millis();
   }

   if( pinDebouncing && millis() - pinDebouncing > pinDebounceDelay ) {
      if( currentPinState != pinState ) {
         pinState = currentPinState;
         // return true when pin is low and debounced
         result = pinState == LOW;
       }
       pinDebouncing = 0;
   }
   lastPinState = currentPinState;
   
   return result;
}

And in your loop() you'd do something like:

   if( pinJustWentLow(fPin) ) {
      ++fCount;
   }

I will play with that tomorrow, thanks for the input. At this pointI am inclined to just change that calibraiton formula.

Here's a question: what does a a LOW pulse on your sensor actually measure, exactly? What value does it correspond to? Is (for example) 1 LOW pulse equal to 11 ml of liquid passing by it?

My understanding is that the "normal" state of the sensor is HIGH. being a hall sensor, the signal wire is pulled low when triggered. If that answers your question.

No, it doesn't.

What does a single LOW pulse measure? What quantity?

Ah, 11 pulses per second = 1 liter per minute is what it should be according to the documentation.

So 11 pulses/second = 1 liter/minute. So your interrupt version is working just fine. It gets a count of 11 in a second and you divide by 11 to get 1 liter/minute.

So what's the problem then?

I am not getting that with the interrupt. I am getting 3hz. (.28 l/min the dispaly).

Just for the halibut, add pinMode(fPin, INPUT_PULLUP); to your setup().

Will that create any issue if I already have a pullup inline?

Not at all. And a pullup should not be inline; that's a series resistance and will not help in the least. It should go from the input pin to 5V.

And what value was the resistor?

Sorry, my nomencalture is wrong, that's how it is wired, form input to 5v.

And the value was? (this is like pulling teeth!)

10kohm

Oh, I know. At one point, I tore all the wiring out and redid it all with shielded wire to make sure that wasnt the issue.