User Tools

Site Tools


projects:blinker:work_logs:6_power_consumption_testing

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
projects:blinker:work_logs:6_power_consumption_testing [2022/03/06 22:57] tjhowseprojects:blinker:work_logs:6_power_consumption_testing [2022/03/07 04:47] (current) tjhowse
Line 26: Line 26:
 ===== The Results ===== ===== The Results =====
  
-====== Unoptimised code vs passive losses ======+==== Unoptimised code vs passive losses ====
  
 As of running these tests the blinker has only one 25 farad supercap installed. The final design allows for six 40 farad caps, so it currently has around 10% of the design energy capacity. As of running these tests the blinker has only one 25 farad supercap installed. The final design allows for six 40 farad caps, so it currently has around 10% of the design energy capacity.
Line 42: Line 42:
 At T=20000s the voltages were 1.4723v and 1.5933v from a starting voltage of 2.258v. This gives us a voltage drop of 0.7857v and 0.6647v. 0.121v / 0.6647 = 18%. This means that 82% of the energy in the system was lost to supercapacitor self-discharge and leakage across the zener. This sets the upper bounds of power savings we can hope to achieve with clever code improvements. At T=20000s the voltages were 1.4723v and 1.5933v from a starting voltage of 2.258v. This gives us a voltage drop of 0.7857v and 0.6647v. 0.121v / 0.6647 = 18%. This means that 82% of the energy in the system was lost to supercapacitor self-discharge and leakage across the zener. This sets the upper bounds of power savings we can hope to achieve with clever code improvements.
  
-====== Optimised code vs passive losses ======+==== Optimised code vs passive losses ====
  
 {{:projects:blinker:work_logs:pasted:20220227-120757.png}} {{:projects:blinker:work_logs:pasted:20220227-120757.png}}
Line 48: Line 48:
 After optimising the code to disable unused peripherals and enter deep sleep between blinks, using the watchdog timer to wake to process the next frame, I was able to reduce power consumption to very close to the passive drain of the system. This represents roughly a 95% improvement in energy efficiency over the naive approach. After optimising the code to disable unused peripherals and enter deep sleep between blinks, using the watchdog timer to wake to process the next frame, I was able to reduce power consumption to very close to the passive drain of the system. This represents roughly a 95% improvement in energy efficiency over the naive approach.
  
-====== Isolating sources of lost energy ======+==== Isolating sources of lost energy ====
  
 I wanted to confirm the source of my passive losses. I suspect the voltage limiting Zener diode. It's sized to handle sinking a reasonable amount of current (around 100mA) to ground to avoid overcharging the capacitors. The bigger the Zener, the more leakage. The datasheet of the one I'm using (MM1Z2V4, I think. JLC part C96629 isn't in their catalogue anymore and I didn't store the actual part number anywhere...) specifies a 120µA leakage current at 1V, which is in the right ballpark. I re-ran the passive discharge test but with a supercap charged directly from my benchtop supply and got a big surprise: I wanted to confirm the source of my passive losses. I suspect the voltage limiting Zener diode. It's sized to handle sinking a reasonable amount of current (around 100mA) to ground to avoid overcharging the capacitors. The bigger the Zener, the more leakage. The datasheet of the one I'm using (MM1Z2V4, I think. JLC part C96629 isn't in their catalogue anymore and I didn't store the actual part number anywhere...) specifies a 120µA leakage current at 1V, which is in the right ballpark. I re-ran the passive discharge test but with a supercap charged directly from my benchtop supply and got a big surprise:
Line 67: Line 67:
  
 These tests gave me a good idea of what the runtime of the final device will be. They also confirmed that the power consumption of the microcontroller and LED is less than the leakage across the Zener, but more than the self-discharge of the supercaps. The result is that I can scale up the number of supercaps and be confident that the runtime will increase more or less linearly. These tests gave me a good idea of what the runtime of the final device will be. They also confirmed that the power consumption of the microcontroller and LED is less than the leakage across the Zener, but more than the self-discharge of the supercaps. The result is that I can scale up the number of supercaps and be confident that the runtime will increase more or less linearly.
 +
 +<code>
 +def calcEnergy(farads, deltaVolts):
 +    return (farads/2)*pow(deltaVolts, 2)
 +</code>
 +
 +With 25 Farads capacity, and a deltaVolts of 0.75v (started at 2.25v, ended at 1.5v), we get a stored energy of 7 joules.
 +
 +<code>
 +def calcWatts(joules, seconds):
 +    return joules/seconds
 +</code>
 +
 +Over 30000 seconds we get 233µW. At an average of 1.875v that gives us 124µA. The rated leakage current of the Zener is 120µA at 1v, so this seems reasonable. Once the full compliment of six 40-Farad caps are installed we should get a runtime of around 6 days. These numbers are all very rough, and treat a pretty non-linear curve as linear, but they should be approximately close.
  
 ===== Video ===== ===== Video =====
Line 76: Line 90:
 ===== Next Time ===== ===== Next Time =====
  
-I don't think there's much point in trying to further improve energy efficiency of the code. The next steps might be adding features like multiple message sequences, and/or improving the space efficiency to fit more/longer messages.+I don't think there's much point in trying to further improve energy efficiency of the code. The next steps might be adding features like multiple message sequences, and/or improving the space efficiency to fit more/longer messages. I may investigate alternative means of regulating the voltage from the solar cells. I need to find a replacement Zener, as JLC seems to have disappeared the one I used for the first batch of PCBs.
  
 [<6>] [<6>]
  
projects/blinker/work_logs/6_power_consumption_testing.1646607453.txt.gz · Last modified: 2022/03/06 22:57 by tjhowse