// potential divider functions // copyright Simon Carter 2001 // Please contact me via www.electronics2000.co.uk if you wish to use these // and ensure this header block remains intact function findv2 (obj) { HideTip("tipbox_1"); if(obj.res1_1.value=="" || obj.res2_1.value=="" || obj.volts1_1.value=="") { SetText("volts2_1","?"); return 0; } with (Math){ r1=abs(calculatemult1(obj.res1mult_1.selectedIndex,eval(obj.res1_1.value))); r2=abs(calculatemult1(obj.res2mult_1.selectedIndex,eval(obj.res2_1.value))); v1=calculatemult2(obj.volts1mult_1.selectedIndex,v1=eval(obj.volts1_1.value)); } v2 = (r2 / (r1 + r2)) * v1; SetText("volts2_1", format(v2) + " Volts"); } function findres (obj) { HideTip("tipbox_2"); if(obj.volts1_2.value=="" || obj.volts2_2.value=="" || obj.rest_2.value=="") { SetText("res1_2", "?"); SetText("res2_2", "?"); SetText("prefres1_2", "?"); SetText("prefres2_2", "?"); return 0; } with (Math){ rt=abs(calculatemult1(obj.restmult_2.selectedIndex,eval(obj.rest_2.value))); v1=calculatemult2(obj.volts1mult_2.selectedIndex,eval(obj.volts1_2.value)); v2=calculatemult2(obj.volts2mult_2.selectedIndex,eval(obj.volts2_2.value)); } if ((v2 < 0 && v1 > 0) || (v2 > 0 && v1 < 0)) { ShowErrorTip("tipbox_2", "volts2mult_2", "V1 and V2 must either both be positive, or both negative!"); SetText("res1_2", "?"); SetText("res2_2", "?"); SetText("prefres1_2", "?"); SetText("prefres2_2", "?"); } else if((v1 > 0 && v2 >= v1) || (v1 < 0 && v2 <= v1)) { SetText("res1_2", "?"); SetText("res2_2", "?"); SetText("prefres1_2", "?"); SetText("prefres2_2", "?"); ShowErrorTip("tipbox_2","volts2mult_2","The input voltage, V1, must be greater than the output voltage, V2!"); } else if(rt <= 0) { ShowErrorTip("tipbox_2","restmult_2","The total resistance must be greater than 0!"); SetText("res1_2", "?"); SetText("res2_2", "?"); SetText("prefres1_2", "?"); SetText("prefres2_2", "?"); } else{ if (rt < 1000) ShowInfoTip("tipbox_2","restmult_2","The total resistance should be as large as possible to reduce power dissipation."); v1 = Math.abs(v1); v2 = Math.abs(v2); r2 = (v2 / v1) * rt; r1 = rt - r2; prefr1 = format((GetPrefRes(r1, getCheckedValue(obj.prefseries)))); prefr2 = format((GetPrefRes(r2, getCheckedValue(obj.prefseries)))); r1 = format(r1); r2 = format(r2); SetText("res1_2", r1 + " Ohms"); SetText("res2_2", r2 + " Ohms"); SetText("prefres1_2", prefr1 + " Ohms"); SetText("prefres2_2", prefr2 + " Ohms"); } } function findr1 (obj) { HideTip("tipbox_3"); if (obj.res2_3.value =="" || obj.volts1_3.value =="" || obj.volts2_3.value =="") { SetText("prefres1_3", "?"); SetText("res1_3", "?"); return 0; } with (Math) { r2 = abs(calculatemult1(obj.res2mult_3.selectedIndex,eval(obj.res2_3.value))); v1 = calculatemult2(obj.volts1mult_3.selectedIndex,eval(obj.volts1_3.value)); v2 = calculatemult2(obj.volts2mult_3.selectedIndex,eval(obj.volts2_3.value)); } if (v1 == 0) { ShowErrorTip("tipbox_3", "volts1mult_3", "V1 cannot be 0!"); SetText("res1_3", "?"); SetText("prefres1_3", "?"); } else if (v2 == 0) { ShowErrorTip("tipbox_3", "volts2mult_3", "V2 cannot be 0!"); SetText("res1_3", "?"); SetText("prefres1_3", "?"); } else if ((v2 < 0 && v1 > 0) || (v2 > 0 && v1 < 0)) { ShowErrorTip("tipbox_3", "volts2mult_3", "V1 and V2 must either both be positive, or both negative!"); SetText("res1_3", "?"); SetText("prefres1_3", "?"); } else if(v2 > v1) { ShowErrorTip("tipbox_3", "volts2mult_3", "V1 must be greater than V2!"); SetText("res1_3", "?"); SetText("prefres1_3", "?"); } else { v1 = Math.abs(v1); v2 = Math.abs(v2); r1 = ((v1 / v2) * r2) - r2; var prefr1 = format((GetPrefRes(r1, getCheckedValue(obj.prefseries)))); r1 = format(r1); SetText("res1_3", r1 + " Ohms"); SetText("prefres1_3", prefr1 + " Ohms"); } }