Measuring Air-to-Air Heatpump RPM - pulse counting ... ???

The output of modern heatpump can be measured fairly easily with temperature difference between inlet and outlet and multiplied with fan speed.

heat output = dT (out - in) * rpm * airflow constant

In many of the air-to-air heatpumps the fan speed is controlled internally to keep the fan output constant. for that purpose the motor has two wires that output the rpm. this is used internally used by the heatpump to keep the speed constant but its also handy for us who want to measure the heat produced.

I have succesfully used an one wire counter circuit but now when moving the one wire network to open energy monitor environment I have started to look for different possibilities. (The old circuit was just isolating the output from heatpump with an optocoupler:

Questions popping into the mind are e.g. :

- There is a pulse input on the circuit board, but as the rpm varies between 700-1400rpm the amount of interrupts may interefere with the power calculation logic ? (recall vaguely that the pulse output is 4 x rpm in my heatpump, but may remember incorrectly)

- Could I use arduino frequency measurement library, e.g. [url][/url]?

- Does the 1-wire library support pulse counter if can not use the pulse input of emonTX ?

... so ...

Has anyone else implemented a heatpump RPM counter on emonTX board or anyting alike to measure frequencies in the range of 700-6000Hz ? ... any recommendations for this ... ?


Edit - just fixed a broken link as referenced this text on another forum.



stuart's picture

Re: Measuring Air-to-Air Heatpump RPM - pulse counting ... ???

You could use a binary counter chip on the pulse to reduce/scale down the number of times it calls the interrupt, down by 16 and it would be called about 44 times a minute, easily readable by the chip without delaying the readings to much.

Petrik's picture

Re: Measuring Air-to-Air Heatpump RPM - pulse counting ... ???

Implemented the rpm pulse counter using the following algo, seems to be working 
at desktop without a need for pulse divider. Shall see when connect it to the 
heatpump fan, either using a hal sensor or direct output from the DC motor 
speed control pulse.

void onPulse() {rpmcount++;}

void loop() {
    // Calculate rpm by using how many times the interrupt has been called
    if ((rpmcount >= rpm_resolution) || (rpmcount == rpmcountold))                                                                                     // then calculate the rpm
     rpm = ((rpmcount * 1200)/(timenew - timeold)) * 50; // milliseconds to RPM with 50rpm resolution
     timeold = timenew;
     emontx.rpmhp = rpm;
    rpmcountold = rpmcount;

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.