SpacePowerMeter: Difference between revisions

From RevSpace
Jump to navigation Jump to search
(Created page with " Since we use quite a bit of power in the space, and this costs a boatload of moneys... it would be handy to have some insight into the powerusage. In the beginning of july, we...")
 
mNo edit summary
Line 1: Line 1:
Since we use quite a bit of power in the space, and this costs a boatload of moneys... it would be handy to have some insight into the powerusage.
Since we use quite a bit of power in the space, and this costs a boatload of moneys... it would be handy to have some insight into the powerusage.


Line 14: Line 12:
== Some Observations ==
== Some Observations ==


{|
| *PPM* | *Watts* | *Situation* |
| *PPM* | *Watts* | *Situation* |
|-
| 3-4 | 600 | Space closed (so only servers, emergency light, cooling, other permanent infra |
| 3-4 | 600 | Space closed (so only servers, emergency light, cooling, other permanent infra |
|-
| 8 | 1200 | Background usage, space open, lights on in handwerklokaal |
| 8 | 1200 | Background usage, space open, lights on in handwerklokaal |
|-
| 16 | 2400 | Space open, lights on in lounge, hallway and handwerklokaal |
| 16 | 2400 | Space open, lights on in lounge, hallway and handwerklokaal |
|}


== Code for the attiny85 ==
== Code for the attiny85 ==
Line 23: Line 26:
The code for the attiny85 was written using arduino-tiny (arduino addon for attiny family).
The code for the attiny85 was written using arduino-tiny (arduino addon for attiny family).


<verbatim class="c">
<pre>
   /*
   /*
   Analog input, serial output
   Analog input, serial output
Line 94: Line 97:
         }
         }
}
}
</verbatim>
</pre>

Revision as of 08:30, 18 October 2011

Since we use quite a bit of power in the space, and this costs a boatload of moneys... it would be handy to have some insight into the powerusage.

In the beginning of july, we received a new power meter in the space, which is of the more modern 'blinky' kind, as opposed to the spinning wheel. By measuring the amount of blinks from the led, we can electronically read-out the amount of power used.

A ATtiny85 is connected to the ttyUSB0 of gateway, and measures the led-blinks coming from the [httphttp://www.ineprometering.com/products-of-inepro-metering-manufacturer-of-electricity-and-water-meters/inepro-metering-standard-line-electricity-meters.html DRM370A] 3-phase power meter using a LDR. The ATtiny will send 'PULSE' over a 9600 baud serial connection every time the led on the powermeter flashes.

The powermeter flashes it's led 400 times per kWh, so with this information we can calculate our power usage. (We need to figure out X here, one specsheet says 160, the other 400, the other 800, it should be on the meter itself, google-screenshot says 400)

On gateway, a perl-script monitors the serial port, and logs the amount of received pulses in a logfile... later this will also go to rrdtool or something

Some Observations

*Watts* | *Situation* |
600 | Space closed (so only servers, emergency light, cooling, other permanent infra |
1200 | Background usage, space open, lights on in handwerklokaal |
2400 | Space open, lights on in lounge, hallway and handwerklokaal |

Code for the attiny85

The code for the attiny85 was written using arduino-tiny (arduino addon for attiny family).

  /*
  Analog input, serial output
 Reads an analog input pin, prints the results to the serial monitor.
 */
 
#define SAMPLECOUNT 40
#define DEBOUNCE 40
#define SAMPLEDELAY 20

void setup() {
        Serial.begin(9600); 
}
 
void loop()
{
        unsigned int c = 0;             // Sample counter
        int value;              // Last value read
        int high = 980;
        int low = 850;
        int last;
        int ignore = 0;
        
        while( 1 == 1)
        {
                c++;
                // read the analog input into a variable:
                value = analogRead(A2);

                // print the result:
                if ( value > high )
                {
                    last = 1;
                    ignore = c;
//                  Serial.print( "Debug high: " );
//                  Serial.println(value); 
                }
                else if( value < low )
                {
//                  if ( last == 1 )
//                  {
//                    Serial.println( "High to low transition..." ); 
//                  }
//                  Serial.print( "Debug LOW: " );
//                  Serial.println(value);
                  if ( c > ignore )
                  {
                    Serial.println( "PULSE" );
                    ignore = c + DEBOUNCE;
                  }
//                  else
//                  {
//                    Serial.println( "Still in debounce..." );
//                  }
                  last = 0;
                }
//                else
//                {
//                  Serial.print( "DEBUG... MIDDLE VALUE ?!?!?!?!");
//                  Serial.println( value );
//                }
 
                // wait X milliseconds for the analog-to-digital converter
                // to settle after the last reading:
                delay(SAMPLEDELAY);
                if ( c > 65500 )
                {
                  c = 0;
                }
        }
}