Power Supply Calculator

by skibulk

HTML

<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script>
<form id="io-data">
  <label for="5v-current">5V Current</label>
  <select name="5v-current" id="5v-current">
    <option value="0.00">0.00 A</option>
    <option value="0.25">0.25 A</option>
    <option value="0.50">0.50 A</option>
    <option value="0.75">0.75 A</option>
    <option value="1.00" selected>1.00 A</option>
    <option value="1.25">1.25 A</option>
    <option value="1.50">1.50 A</option>
    <option value="1.75">1.75 A</option>
    <option value="2.00">2.00 A</option>
  </select>
  <br>
  <label for="12v-current">12V Current</label>
  <select name="12v-current" id="12v-current">
    <option value="0.00" selected>0.00 A</option>
    <option value="0.25">0.25 A</option>
    <option value="0.50">0.50 A</option>
    <option value="0.75">0.75 A</option>
    <option value="1.00">1.00 A</option>
    <option value="1.25">1.25 A</option>
    <option value="1.50">1.50 A</option>
    <option value="1.75">1.75 A</option>
    <option value="2.00">2.00 A</option>
  </select>
  <br>
  <label for="capacitors">Capacitors</label>
  <select name="capacitors" id="capacitors">
    <option value="5.4,50">2.7V 100F (x2)</option>
    <option value="8.1,33.33" selected>2.7V 100F (x3)</option>
    <option value="5.4,250">2.7V 500F (x2)</option>
    <option value="8.1,166.66">2.7V 500F (x3)</option>
  </select>
</form>
<p>Seconds: <span id="seconds"></span></p>

JavaScript

(function($) {

	function renderData(event) {
    var j5 = 5*$("#5v-current option:selected").val();
    var j12 = 12*$("#12v-current option:selected").val();
    var capacitors = $("#capacitors option:selected").val();
    var capV = parseFloat(capacitors.split(',')[0]);
    var capF = parseFloat(capacitors.split(',')[1]);
    var capVMin = 3;
    var capEffy = 0.8;
    // http://www.electronics2000.co.uk/calc/capacitor-charge-calculator.php
    var capJ = 0.5 * (capV - capVMin) * (capV - capVMin) * capF;
    var t = (capJ * capEffy) / (j5 + j12);
    $("#seconds").html(Math.round(t * 10) / 10);
    //console.log(j5, j12, capV, capF, capJ, t);
  }
  
  renderData();
  $("#io-data").change(renderData);

})(jQuery);