The world is currently going through a crisis due to Corona Virus (CoViD-19). India is on a lock-down which means all industries, except essential services, have been temporarily closed. People are advised to stay at home and not venture outside unnecessarily. Electrical Power is one of the essential services and hence all the Power System Engineers are on duty even during the lock-down. But 5th April 9pm activity posed a serious threat to the National Grid, if not managed properly. As per the PM’s address to the nation, people were advised to switch off their lights (not all appliances) and light candles, diyas or flashlights from their balcony. This activity is timed for 9 minutes after which all the lights have to be switched on. What this means from Power system point of view is a sudden load removal of around 32GW all over India (as per the data given after the event) in a short span of 3-4 minutes and then load increase by almost the same amount in almost the same time. Whats even more challenging is that the 32GW value wasn’t known beforehand and preparations had to be done based on some estimates which predicted around 12GW change but reality is stranger than estimates.
This event was different from normal days. You might wonder that people anyways switch off the lights when going to sleep and switch on the lights in the evening. But the difference here is the synchronization. People normally switch off/on their lights or other loads at quite random times which reduces the steepness of this surge. There is a difference between reducing say 10GW in 20 mins and between reducing the same 10GW demand in 3 minutes. This steep slope needs action from some peak load plants like Hydro, Gas, Diesel etc where demand can be matched in a matter of seconds. Some base load plants like Coal Thermal plants, Nuclear plants or Solar/Wind plants do not offer such flexibility. Since this was a planned event, the engineers were already mapping out a plan to stabilize the grid. Adding to these troubles, the shutdown of most Industrial loads during lock-down also meant that the lighting load is quite significant part of the total load. Otherwise, Industrial loads overpower domestic loads.
Entire India forms a big connected grid running at a nominal frequency of 50Hz. The frequency has to be maintained between a small tolerance band of 49.5Hz to 50.5Hz (or 1%). If frequency changes too much it will start affecting every appliance like the speed of your fan or the motors in the industries. This frequency is directly linked with the speed of the turbine-generator set in the Power plants across the country. If the load demand decreases, the Power plants are generating more energy than needed, so the generator starts running at faster speed and hence the frequency rises. If the load is more than the generation, then the generators slow down and hence the frequency falls. And such speed changes are happening to these highly massive mechanical structures hence even small changes means a lot. In this particular case, the transients were of concern.
I made a setup to log the frequency and the peak voltage for each cycle from the Plug point. The setup can be divided into 3 parts:
- Data capturing
- Data Logging
For this part, I designed a simple circuit on the breadboard.The circuit diagram is shown for reference.
Let us go step by step. The first step is rectification and attenuation. For this I used a 1N4007 Diode followed by a potential divider of 2.2Mohm and 27kOhm. This approximately attenuates the voltage by a factor of approximately 0.01x which means that a 500V peak would be converted to 5V peak which is perfect for our electronic circuit. Also the negative voltage part is clipped by the diode to 0V. The waveform after this step is like this (note that y axis has been scaled appropriately):
Half Wave Rectified Sine wave
The next part is a Schmitt trigger circuit that converts the Half Sine wave into rectangular pulses. This eases our frequency calculation process. The OPAMP used is LM358. I have used this design for single supply OPAMP: https://electronics.stackexchange.com/a/109285 I used the calculator suggested in this link and got the following results:
The calculations for resistor value for desired triggering voltages
This is an inverted Schmitt trigger. As soon as the attenuated waveform goes below 0.19V, the Schmitt trigger sets the output High. Now the trigger point is changed to 1.05V and hence some minor noise will not produce any troubles. Now the waveform has to rise above 1.05V, then the Schmitt trigger output goes Low, and again the new trigger point now becomes 0.19V. The actual results were plotted and were satisfactory:
Actual working Schmitt trigger plot
So now we just need to find the frequency of this pulse. For doing this, the pulse is given to Digital pin 2 of the Arduino Nano and in the program a RISING interrupt is set-up. On every positive edge of the pulse, the time in microseconds is noted and previously noted (for previous edge) time value is subtracted. Then 1000000/t gives us the frequency in Hz.
The next part is to capture the peak. So I supplied the Attenuated voltage output of potential divider to the Analog Read pin A0 of the Arduino Board. The ADC on the Arduino is a 10 bit ADC which means that 5V corresponds to 1023 reading on the Arduino. A factor of (5/1024)*Reading*(2227/27)=0.4027 must be multiplied with the reading to get actual voltage value. Due to tolerances in resistance value and loading effect, I had to calibrate the setup to get the correct value which was 0.4275. So reading*0.4275 gives the actual voltage value. The calibration was done by reading RMS value on a standard Multimeter and then calculating the peak value using a factor of sqrt(2) for sine wave and comparing it with the ADC output. As seen in this figure the factor gives good results:
The multimeter gives the RMS value as 252V, Arduino calculates peak of 351V. Since 252*sqrt(2)=356V Peak, the result is very close.
Peak is calculated by comparing the new reading to previously calculated peak value. Initial value is set as 0 for the start of each cycle (in the ISR for frequency calculation)
The complete capturing setup
The Frequency and Peak for each cycle is sent via Serial communication to the laptop. This data is logged and saved in the form of a CSV file. A Python script was setup to start capturing the data at exactly 8:55pm and stop at 9:15pm. The current time is also logged corresponding to each reading. Even after 9:15 the data is logged until the user intervenes but it is saved in a different file. Total 60165 points were logged in 20 minutes.
The data was plotted using Google Sheets. A smooth line graph was made to observe the trend.
The result were great thanks to all the people working across the country to achieve the stability.
Looking at the frequency graph, we can observe that the Grid was initially running at rock bottom frequency of around 49.8 Hz. This was done by reducing the generation so that as soon as lighting load is removed at 9pm, the frequency rise is within safe limits and offers enough time for proper control. As seen from the graph the maximum frequency went to about 50.3 Hz for a very short time, and more or less was contained below 50.25Hz. At around 9:10pm we see a decrease in frequency. This is due to addition of lighting load back to the system, and at this time the generation would have been ramped up to meet the demand. That is why the frequency remains very close to 50Hz.
The Peak voltage also rises as the loads are removed and falls again when they are added back. It also remains within safe limits of 322V to 334V.