Data logging in a SD card, You can see my new instructable ARDUINO MPPT SOLAR CHARGE CONTROLLER ( Version-3.0), You can also see my other instructables on, ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0), ARDUINO SOLAR CHARGE CONTROLLER (Version-1), 1. One, the utility company tends to frown upon unauthorized equipment attached to their meters.
When I went solar, though, my new net meter only has a pulse in debug mode.
The pulse output may be a flashing LED or a switching relay (usually solid state) or both. After facing lot of hardships the project was successful. Inside the meter, there is a switch possibly a reed relay but more likely an optically isolated transistor. I wish to made this, but I have some questions about this project. D2 -> Arduino - Not Connected 10. The internal pull-up might not be strong enough, and in that case a 1 k resistor must be connected between the 3.3 V terminal and the pulse input to provide adequate current. These LDR/Photo-diode based solution were suggested as a possible solution. I will add your link to the page, thanks.
These cookies do not store any personal information. 1 Wh = 3600J http://www.blackanddecker.com/energy/PowerMonitorCompatibility.htm?WT.mc http://blog.richard.parker.name/2009/04/25/how-to-build-a-web-connected- http://sustburbia.blogspot.com/2009/11/using-arduino-to-monitor-gas.html. I used a Fairchild QSE156 photodetector to drive it, it's all nice and self-contained. Save my name, email, and website in this browser for the next time I comment. Interesting to hear about the rotating magnet type used in some water meters, didnt know about those and thanks for the links I will add those to the page.
Due to this problem I designed a solar system for my home on a experimental basis. Sending a rolling pulse count gave tolerance of lost messages and allowed the frequency of messages to be throttled, and the measurement of the interval between pulses allowed for accurate instantaneous usage readings.
Its value will be determined by the pulse width and maximum pulse rate, 100 nF would be a good starting value. Powered by Discourse, best viewed with JavaScript enabled. Did you make this project? I have used a 330 ohm as a load, however, I am not able to get any current reading, can you please guide me on this matter?Thank You. Forum has moved to: https://community.openenergymonitor.org. Vout is the meter output created by toggling an internal solid state relay (like a switch between Vin and Vout). Even the tightest polling loop is many times longer than that, so interrupt is the way to go to capture the most events (events closer together than the max resolution are read as one event. Thanks to Jerry for the links and comment below. BREAD BOARD ( Amazon ), Power : Power is product of voltage (volt) and current (Amp) P=VxI Unit of power is Watt or KWEnergy: Energy is product of power (watt) and time (Hour) E= Pxt Unit of Energy is Watt Hour or Kilowatt Hour (kWh) From the above formula it is clear that to measure Energy we need three parameters 1.
Other meter types with rotating dials often have a magnet embedded in one of the dial shafts, which might be detectable as it spins around. carrying a photo-diode and a two-transistor amplifier-driver circuit: The circuit generally works well, but has a few shortcomings: it is susceptible to ambient light, so it should be shielded from bright lights; the green LED does not accurately reflect the state of the output, so there can be a logic high output without the green LED lighting. I used a 16x2 character LCD to display all the results obtained in the previous steps.For schematics see the bread board circuit shown above.Connect LCD with ARDUINO as given bellow :LCD -> Arduino 1. Some utility companies do share meter data with all their customers, although it might be a daily total instead of the hourly or more frequent readings they actually have. While its written for the Radiation Watch detector, you can work it by putting a switch between pin 2 and ground. and it can be use it with 200W solar panel. For really fast counting of pulses (up to f/2 so 4 MHz for an 8 MHz system) you can use a counter, and have no overhead to speak of. Many meters have a wired pulse output. I figured that attachInterrupt() is merely a convenience function to set the correct registers for you, after which it can get out of the way.
Straight polling yields 62kHz, with every optimization I could muster. From what I understand, 24V is a fairly standard supply for such meter systems, but other voltages can usually be used. Submitted by Guest (not verified) on Sun, 13/11/2011 - 23:24. Vin is provided by an external power supply. That way I'm not having to touch anything inside the meter - which apart from being a little hazardous (!) It is mandatory to procure user consent prior to running these cookies on your website. Choose a username, password, set your address. Question There are only two interrupt pins on the Arduino, if you wish to count pulses from more than two sources then please read on! The operating voltage must be supplied by the emonTx or emonPi. Calculating Power the Elster A100c) each pulse usually equals one Wh (1000 pulses per kWh). A few utilities make the data they have available for specific customers through services like Google Powermeter or Microsoft Hohm. Many meters also have wired / switched pulse outputs. D6 -> Arduino pin 3 14. There is also information here on how to interface with wired / switched pulse outputs. In reality, every hardware situation calls for unique code. You can find all of my projects on : https://www.opengreenenergy.com/, Feature: Energy monitoring by 1.LCD display 2. via internet (Xively upload) 3. Huge List of tutorials & Components based resources, Arduino Complete Projects List PDF Downloadable, Arduino Mega 2560 projects list in PDF offline downloadable, Arduino UNO Projects List in PDF offline downloadable, Arduino Proteus Projects List for Download, esp8266 arduino projects list in pdf offline downloadable, Android based arduino Projects List Download PDF, Arduino Nano Projects List in PDF offline downloadable, Arduino Tutorial Online Courses Video Training, Power Quality Meter ( PQ Monitor) using Arduino, Wii Nunchuk Controlled Model Train using Arduino, Pachube Client using Strings with Arduino, Resistor Color Code Calculator with Arduino, Make A Digital Clock From Scratch using arduino, Beginners guide to building Arduino robots with Bluetooth and Android, http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1276096046, Single optical pulse counting using a JeeNode board and a Hope RFM12 RF module, Application instructions energy meter Topic: S0-pulse interface. A -> Arduino Pin 13 + Resistor (Backlight power) 16. someone please send me complete code for this projectrsreekanth28@gmail.com. The TLS261 photo diode was also tested. I have an amicisense 6 in 1 energy meter which shows AC parameters. Apart from Electronics I love 3D printing, Woodworking and to make crafts from used , //////////////////////////////////////////print power and energy to a LCD////////////////////////////////////////////////, ARDUINO MPPT SOLAR CHARGE CONTROLLER ( Version-3.0), Arduino Robotic Arm Controlled by Touch Interface. I actually did a lot of experimenting with a function generator while writing this code. Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. If I were to count pulses in the ISR, I would need 3 volatile variables instead of 1, slowing the detection code down by (in my 8MHz device) more than a microsecond. D4 -> Arduino pin 5 12. ThanksJerry for the info and taking the time to write! Some meters have one of the pulse output connectors connected to neutral. The photodiode/transitor method is certainly something I would like to try sometime. I've used a PIC, photo diode and RF transmitter with good success for flashing LED power measurement. We also use third-party cookies that help us analyze and understand how you use this website. 4 years ago. Your email address will not be published. I did something like this, see http://sandeen.net/wordpress/?p=227 - I used an interrupt-driven sketch, it's on that blog post, and probably has some bugs. Thirdly, in many cases the utility company already has data in sufficient detail for many purposes, but perhaps just won't share it. Many electricity meters do not have pulse output connections or the connections are not accessible due to restrictions imposed by the utility company. Bear in mind: this program is just a generic shell. For more detail: Reading pulses from meters with pulse outputs..
I dont have an arduino shield at the moment, but i have a rapsberry-pi 3B.
I am trying to apply this deba168 energy meter to my simple off grid PV system. All modern meters have an optical pulse output LED. It looks like a lot more registers are saved with attachInterrupt() than ISR(). ACS 712 CURRENT SENSOR ( Amazon )4. The time between the pulses T_low is what indicates the power measured by the meter. This is supplied complete with a RJ45 plug to give an easy connection to the pulse input of an emonTx or emonPi. Often, this will be labelled or described in the documentation as S0. This is the code I used as the basis of a radiation counter. 2: this project can be use Arduino Nano instead of Uno. D5 -> Arduino pin 4 13. 10K POTENTIOMETER ( Amazon )6. Hi, I'm trying to measure output voltage and current from a solar panel, you mentioned the actual load for current sensing is different. Using an Arduino to measure gas consumption. Required fields are marked *. On Nick Gammon's Interrupts page he's got the assembly listing of the ISR() method and attachInterrupt() (scroll about a quarter of the way down the page, it's titled "How long does it take to execute an ISR?") I've actually thought about switching to a commercial tariff just to get access to the data. So the 5V supply from an Arduino could be used. To detect the pulses from the LED, you need a light sensor, such as [link to shop page]. Live wire proximity:The pulse outputs are usually very close to live wires, so watch out for those too! My hardware beeps instead of clicks if counts overlap.). For the A100c pulse output meter T_high is 50ms.
Watch out for mains connected pulse outputs:Make sure your meters pulse output is not connected to the high voltage mains (within the meter). Main problem is choosing the right resistors to withstand 10A current flowing in the circuit.
E -> Arduino pin 6 7.
3 years ago. But opting out of some of these cookies may affect your browsing experience. I'm having troubles with putting it all together. Their field staff has no way of knowing whether your sensor will interfere with the meter or is some attempt to defraud the utility. These are available for under $100. Thank you. Similarly for digitalRead(), but that one at least still has to translate pin numbers to port numbers and so, so a bit of overhead is expected upon each call. Development of Internet browser enabled electrical quantities meter for any appliance.The readings would be voltage, current, frequency, average power, apparent power, power factorsir please help me in this project,. You also have the option to opt-out of these cookies. An independent reading of usage, for example with a Wattnode or Brultech ECM-1240 for electricity, can be more flexible and provide verification of meter and billing accuracy. See, for example, http://www.btinternet.com/~jon00/electmon.shtml and http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1276096046 . The pulse output may be a flashing LED or a switching relay (usually solid state) or both. RS -> Arduino pin 8 5. Inside the sensor is a small p.c.b. Share it with us! All modern meters have an optical pulse output LED.
Some electric meters don't emit readable pulses. therefore, instantaneous power P = 3600 / T where T is the time between the falling edge of each pulse. See http://www.edcheung.com/automa/water.htm. This website uses cookies to improve your experience while you navigate through the website. /** Energy monitoring data upload to xively **/ #include #include #include #include #define API_KEY "xxxxxxxx" // Enter your Xively API key #define FEED_ID xxxxxxxxx // Enter your Xively feed ID // MAC address for your Ethernet shield byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Analog pin which we're monitoring (0 and 1 are used by the Ethernet shield) int sensorPin = 2; unsigned long lastConnectionTime = 0; // last time we connected to Cosm const unsigned long connectionInterval = 15000; // delay between connecting to Cosm in milliseconds // Initialize the Cosm library // Define the string for our datastream ID char sensorId[] = "POWER"; char sensorId2[] = "ENERGY"; XivelyDatastream datastreams[] = { XivelyDatastream(sensorId, strlen(sensorId), DATASTREAM_FLOAT), XivelyDatastream(sensorId2, strlen(sensorId2), DATASTREAM_FLOAT), DATASTREAM_FLOAT), }; // Wrap the datastream into a feed XivelyFeed feed(FEED_ID, datastreams, 2 /* number of datastreams */); EthernetClient client; XivelyClient xivelyclient(client); void setup() { Serial.begin(9600); Serial.println("Initializing network"); while (Ethernet.begin(mac) != 1) { Serial.println("Error getting IP address via DHCP, trying again"); delay(15000); } Serial.println("Network initialized"); Serial.println(); } void loop() { if (millis() - lastConnectionTime > connectionInterval) { sendData(); // send data to xively getData(); // read the datastream back from xively lastConnectionTime = millis(); // update connection time so we wait before connecting again } } void sendData() { int sensor1 = watt; int sensor2 = energy; datastreams[0].setFloat(sensor1); // power value datastreams[1].setFloat(sensor2); // energy value Serial.print("Read power "); Serial.println(datastreams[0].getFloat()); Serial.print("Read energy "); Serial.println(datastreams[1].getFloat()); Serial.println("Uploading to Xively"); int ret = xivelyclient.put(feed, API_KEY); Serial.print("PUT return code: "); Serial.println(ret); Serial.println(); } // get the value of the datastream from xively, printing out the value we received void getData() { Serial.println("Reading data from Xively"); int ret = xivelyclient.get(feed, API_KEY); Serial.print("GET return code: "); Serial.println(ret); if (ret > 0) { Serial.print("Datastream is: "); Serial.println(feed[0]); Serial.print("Power value is: "); Serial.println(feed[0].getFloat()); Serial.print("Datastream is: "); Serial.println(feed[1]); Serial.print("Energy value is: "); Serial.println(feed[1].getFloat()); } Serial.println(); For data storing in a SD card you have to import the SD libraryFor tutorial click hereTo know more about the SD library click hereThe code for storing data in to a SD card is written separately as I don't have sufficient memory in my ARDUINO UNO after writing code for LCD display and data uploading xively.com.