Përmbajtje:

Si të arrini çdo rezistencë/kapacitet duke përdorur përbërës që keni tashmë !: 6 hapa
Si të arrini çdo rezistencë/kapacitet duke përdorur përbërës që keni tashmë !: 6 hapa

Video: Si të arrini çdo rezistencë/kapacitet duke përdorur përbërës që keni tashmë !: 6 hapa

Video: Si të arrini çdo rezistencë/kapacitet duke përdorur përbërës që keni tashmë !: 6 hapa
Video: Профилактика деменции: советы экспертов от врача! 2024, Nëntor
Anonim
Si të arrini çdo rezistencë/kapacitet duke përdorur përbërës që keni tashmë!
Si të arrini çdo rezistencë/kapacitet duke përdorur përbërës që keni tashmë!

Ky nuk është vetëm një kalkulator tjetër i rezistencës ekuivalente seri/paralele! Ky program llogarit se si të kombinoni rezistorët/kondensatorët që keni aktualisht për të arritur një vlerë të synuar të rezistencës/kapacitetit që ju nevojitet.

A keni pasur ndonjëherë nevojë për një rezistencë ose kondensator specifik që nuk e keni ose që nuk ekziston? Nuk kam frike! Ju ndoshta mund ta bëni atë vlerë të veçantë të rezistencës ose kapacitetit duke përdorur komponentët që keni tashmë. Në vend që të zgjidhni një problem të madh optimizimi me shumë ndryshore me miliona kombinime të ndryshme, përdorni këtë program!

Thjesht zgjidhni rezistencën ose kondensatorin, futni vlerën e synuar, futni numrin maksimal të përbërësve që dëshironi të përdorni, futni një listë të vlerave të përbërësve që keni dhe klikoni llogarit! Programi do të nxjerrë në pah se cilat përbërës duhet të përdorni dhe si t'i lidhni ato për të arritur vlerën tuaj të synuar.

Për të provuar kalkulatorin, vizitoni këtë aplikacion në internet.

Për të parë kodin burimor, vizitoni këtë depo Github.

Ju lutemi më tregoni nëse keni ndonjë sugjerim për të përmirësuar më tej përdorshmërinë e këtij mjeti të projektimit!

Hapi 1: Sfondi

Sfondi
Sfondi

Ky aplikacion në internet është zhvilluar nga nevoja. Ka shumë qarqe të ndryshme që unë ndërtoj që kërkojnë një rezistencë ose kondensator shumë specifik. Shumë herë, nuk kam një rezistencë ose kondensator me atë vlerë specifike. Ndonjëherë ata as nuk bëjnë një përbërës me atë vlerë unike! Në vend që të heq dorë ose të kënaqem me diçka që është më pak se ideale, vendosa të shkruaj një program për të parë çdo kombinim të mundshëm të rezistorëve (çdo vlerë të mundshme dhe nëse ato janë në seri apo paralele) dhe të kthej kombinimin më të mirë.

Kur hartoja qarkun për organin tim si pjesë e Projektit tim të Betejës së Bands Instructable, më duhej të përpiqesha të llogarisja kombinimin më të mirë të kondensatorëve për të arritur një frekuencë specifike. Ky proces ishte tepër i lodhshëm dhe unë përfundimisht hoqa dorë dhe shkova me kombinime kondensatorësh që prodhonin çdo sasi frekuence të dëgjueshme. Tani me këtë aplikacion në internet, unë mund të krijoj organin tim për një frekuencë të caktuar dhe ta akordoj atë në shënimet në një tastierë! Ekuacioni më poshtë përdoret për të llogaritur frekuencën specifike dhe diskutohet në projektin tjetër Instructables.

f = 1 / (0.693 × C × (R1 + 2 × R2))

Duke përdorur këtë ekuacion ku R1 = 100 kOhm dhe R2 = 10 kOhm, kam llogaritur që një kondensator 27.33 nF do të prodhojë një shënim A4 (frekuenca 440 Hz). Duke përdorur programin tim, unë kam qenë në gjendje të llogaris një vlerë ekuivalente të kapacitetit brenda.001 nF (shumë më pak se toleranca në një kondensator standard) që mund të krijoj duke përdorur kondensatorë që tashmë i kisha të shtrirë. Prodhimi dhe konfigurimi që rezulton përshkruhet më poshtë. Tani jam në gjendje të akordoj në mënyrë shumë më efikase dhe efektive organin tim me frekuencat e sakta të shënimeve standarde. Do të doja ta kisha bërë këtë për të filluar. Kënga ime demo në organ ndoshta do të dukej shumë më mirë.

Vlera më e afërt: 27.329 nF Diferenca: 0.001 nFC Konfigurimi i kondensatorit: C0 = 0.068 nF || C1 = 30 nF + C2 = 300 nF

Ekuacionet e Ekuivalencës së Kondensatorit Rezistor

Për referencë, më poshtë janë ekuacionet e ekuivalencës për kombinimin e rezistorëve dhe kondensatorëve në një qark.

  • Rezistentët në seri (R1 + R2): Req = R1 + R2
  • Rezistentët paralelisht (R1 || R2): Req = 1/(1/R1 + 1/R2)
  • Kondensatorët në seri (C1 + C2): Ceq = 1/(1/C1 + 1/C2)
  • Kondensatorët paralelisht (C1 || C2): Ceq = C1 + C2

Hapi 2: Hyrjet

Hyrjet
Hyrjet

Janë 4 hyrje që do t'ju duhet të siguroni:

  1. Nëse jeni duke llogaritur një vlerë për një rezistencë ose një kondensator.
  2. Rezistenca e synuar ose vlera e kapacitetit dhe njësitë.
  3. Numri maksimal i përbërësve që dëshironi të përdorni për të arritur vlerën e synuar (d.m.th. nuk do të doja të përdorja më shumë se 3 rezistorë për të arritur vlerën time të rezistencës së synuar).
  4. Lista e vlerave për rezistorët/kondensatorët që keni aktualisht. Këto vlera duhet të jenë në të njëjtat njësi me vlerën tuaj të synuar (p.sh. nëse vlera juaj e synuar ishte 110 nF, të gjitha vlerat tuaja duhet të jepen në nF).

Hapi 3: Rezultati

Rezultati
Rezultati

Do të merrni 3 rezultate për rezultatin tuaj:

  1. Vlera më e afërt - vlera më e afërt e rezistencës/kapacitetit që keni arritur të arrini me parametrat tuaj.
  2. Diferenca - sa larg ishte vlera juaj më e afërt nga vlera juaj e synuar.
  3. Konfigurimi i Rezistorit/Kondensatorit - një listë e vlerave të rezistorëve/kondensatorëve për t'u përdorur dhe konfigurimit të tyre.

Hapi 4: Kuptimi i Rezultatit tuaj

Kuptimi i Rezultatit tuaj
Kuptimi i Rezultatit tuaj
Kuptimi i Rezultatit tuaj
Kuptimi i Rezultatit tuaj

Dalja e konfigurimit përdor një shënim standard. "+" do të thotë që përbërësit janë në seri dhe "||" do të thotë që përbërësit janë paralel. Operatorët kanë përparësi të barabartë dhe janë asociative nga e majta në të djathtë që do të thotë që ju i gruponi termat së bashku duke filluar nga e majta dhe duke lëvizur në të djathtë.

Për shembull, hidhini një sy rezultatit të mëposhtëm:

Konfigurimi i rezistencës: R0 = 15 Ohms + R1 = 470 Ohms || R2 = 3300 Ohms + R3 = 15000 Ohms

Nëse ndiqni udhëzimet e diskutuara më lart, mund të shihni se kjo është ekuivalente me ekuacionin dhe figurën e mëposhtme më sipër.

((R0+R1) || R2)+R3

Hapi 5: Më shumë Projekte

Për më shumë projekte, vizitoni faqet e mia:

  • https://dargen.io/
  • https://github.com/mjdargen
  • https://www.instructables.com/member/mjdargen/

Hapi 6: Kodi Burimor

Për të parë kodin burimor, vizitoni këtë depo Github ose shihni JavaScript më poshtë.

/* --------------------------------------------------------------- */

/* skriptimi i kalkulatorit r/c*//* --------------------------------------- -------------------------*/ var më e afërta_val; // vlera më e afërt deri tani var closeest_diff = 1000000.00; // diferenca e val dhe objektivi var më i afërt = ; // grup vlerash që detajojnë përbërësit var ser_par_config = ; // vargu që detajon serial/paralel var outputStr = ""; funksioni calculatorClick () {// pastroni vlerat globale për çdo klik të ri më të afërt_val = 0; diferenca më e afërt = 1000000.00; më e afërta = ; ser_par_config = ; var resultDisplay = document.getElementById ("resultRow"); var exampleDisplay = document.getElementById ("exampleRow"); var calcOutput = document.getElementById ("calcOutput"); var targetTextObj = document.getElementById ('targetText'); var numCompTextObj = document.getElementById ('numCompText'); var compValsTextObj = document.getElementById ('compValsText'); var target = parseFloat (targetTextObj.value); var numComp = parseInt (numCompTextObj.vlera); var compValsStr = compValsTextObj.vlera; var compVals = ; compVals [0] = ""; var i = 0; var errFlag = 0; // gabim në analizimin e vlerës së synuar nëse (isNaN (target)) {outputStr = "Gabim kontrolloni hyrjen e 'Target Value'!"} // gabim në analizimin e numrit të komponentëve të tjerë nëse (isNaN (numComp)) {outputStr = "Kontrolli i gabimit 'Numri i hyrjeve të Komponentëve! "} // tjetër nëse nuk ka gabim në objektiv ose numComp tjetër nëse (! IsNaN (target) &&! IsNaN (numComp)) {ndërsa (compValsStr.indexOf (", ")! = -1) {var presje = compValsStr.indexOf (","); var newInt = parseFloat (compValsStr.substring (0, presje)); // gabim në analizimin e listës së vlerës së komponentëve, vendosni flamurin nëse (isNaN (newInt)) {errFlag = 1; pushim; } compValsStr = compValsStr.substring (presje+1, compValsStr.length); compVals = newInt; i ++; } var newInt = parseFloat (compValsStr); // gabim në analizimin e listës së vlerës së komponentëve, vendosni flamurin nëse (isNaN (newInt)) {errFlag = 1; } compVals = newInt; if (errFlag == 0) {if (document.getElementById ("resRadio"). kontrolluar) {resistor (target, numComp, compVals); } tjetër if (document.getElementById ("capRadio"). kontrolluar) {kondensator (target, numComp, compVals); }} // gabim në analizimin e listës së vlerave të komponentëve të tjerë {outputStr = "Kontrolloni gabimin në hyrjen e 'Listës së vlerave të komponentit'!"}} calcOutput.innerHTML = outputStr; resultDisplay.style.display = "bllok"; exampleDisplay.style.display = "përkul"; // shkoni poshtë në dritaren e rezultateve.scrollTo (0, exampleDisplay.scrollHeight); } / * Rinxjerr dhe printon konfigurimin më të mirë të rezistencës * objektivi - vlera e rezistencës së synuar * numComp - numri i përgjithshëm i rezistorëve që lejohen të përdoren për të arritur valvën e synuar * compVals - grup vlerash të rezistencës * / rezistencë funksioni (target, numComp, compVals) { // gjatësia e vlerave të rezistencës var num_res = compVals.length; // kaloni nëpër të gjithë numrin e mundshëm të përbërësve për (var i = 1; i <= numComp; i ++) {var të dhëna = ; resCombination (compVals, num_res, i, 0, data, target); } var njësitë = document.getElementById ("njësia e zgjedhur"). vlera; // printo rezultatet outputStr = "Vlera më e afërt:" + më e afërta_val.to Fikse (3) + "" + njësi + ""; outputStr + = "Diferenca:" + diferenca më e afërt.to Fikse (3) + "" + njësi + ""; outputStr += "Konfigurimi i rezistencës:"; për (var i = 0; i <numComp; i ++) {nëse (i <afërt.gjatësia) {outputStr + = "R" + i + "=" + më e afërta + "" + njësi + ""; nëse (i+1 <gjatësia më e afërt) {nëse (ser_par_config [i+1]) outputStr+= "||"; tjetër outputStr + = " +"; }} tjetër prishet; }} /* Llogarit kombinimin më të mirë të rezistorëve për të arritur një vlerë të synuar. * res - grupi hyrës i vlerave të rezistencës * num_res - madhësia e grupit hyrës të vlerave të rezistencës * num_comb - numri i rezistorëve të lejuar * indeksi - indeksi i krehës * krehër - grup i kombinimit aktual * objektiv - vlera e synuar * Pa vlerë kthimi - kalon kombinimin më të mirë aktual në vlerat globale */ funksioni resCombination (res, num_res, num_comb, index, comb, target) {// kombinimi aktual është i plotë nëse (indeksi == num_comb) {var ser_par_size = Math.pow (2, num_kombra); // 2^(numri i përbërësve) var ser_par = ; // array bool që specifikon serial ose paralel për secilin komponent var calc; // vlera e llogaritur ekuivalente e rezistencës // kaloni nëpër çdo seri të mundshme/konfigurim paralel të kombinimit aktual për (var j = 0; j k) & 1; } // bëni llogaritjet për kombinimin bazuar në serinë/kombinimin paralel për (var k = 0; k <num_comb; k ++) {// numrin e parë, thjesht shtoni nëse (k == 0) calc = krehër [k]; // zero do të thotë seri, shtoni vlera të rezistencës tjetër nëse (! ser_par [k]) calc += kreh [k]; // një do të thotë paralel, invers i shumës së reciprokeve tjetër nëse (ser_par [k]) calc = (calc*krehër [k])/(calc+krehër [k]); } // kontrolloni nëse dallimi është më i vogël se më i miri i mëparshëm nëse (Math.abs (calc - target) <close_diff) {// është më pak, kështu që përditësoni vlerat globale closeest_val = calc; closeest_diff = Math.abs (calc - target); // pastrohet në zero për (var k = 0; k <num_comb; k ++) {më e afërt [k] = 0; } // përditësoni vlerën më të afërt & seritë/vargjet paralele për (var k = 0; k <num_comb; k ++) {më të afërt [k] = krehër [k]; ser_par_config [k] = ser_par [k]; }}} kthimi 0; } // thërrisni dhe zëvendësoni indeksin me të gjitha vlerat e mundshme për (var i = 0; i = num_comb-index; i ++) {krehër [indeksi] = res ; resCombination (res, num_res, num_comb, index+1, krehër, target); }} / * Rikuperon dhe printon konfigurimin më të mirë të kondensatorit * target - vlera e kapacitetit të synuar * numComp - numri i përgjithshëm i kondensatorëve që lejohen të përdoren për të arritur valën e synuar * compVals - grup vlerash të kondensatorit * / kondensatori i funksionit (target, numComp, compVals) {// gjatësia e vlerave të kapacitetit var num_cap = compVals.length; // kaloni nëpër të gjithë numrin e mundshëm të përbërësve për (var i = 1; i <= numComp; i ++) {var të dhëna = ; capCombination (compVals, num_cap, i, 0, data, target); } var njësitë = document.getElementById ("njësia e zgjedhur"). vlera; // printo rezultatet outputStr = "Vlera më e afërt:" + më e afërta_val.to Fikse (3) + "" + njësi + ""; outputStr + = "Diferenca:" + diferenca më e afërt.to Fikse (3) + "" + njësi + ""; outputStr += "Konfigurimi i kondensatorit:"; për (var i = 0; i <numComp; i ++) {nëse (i <afërt.gjatësia) {outputStr + = "C" + i + "=" + më e afërta + "" + njësi + ""; nëse (i+1 <gjatësia më e afërt) {nëse (ser_par_config [i+1]) outputStr+= "||"; tjetër outputStr + = " +"; }} tjetër prishet; }} /* Llogarit kombinimin më të mirë të kondensatorëve për të arritur një vlerë të synuar. * cap - grupi hyrës i vlerave të kondensatorit * num_cap - madhësia e grupit hyrës të vlerave të kondensatorit * num_comb - numri i kondensatorëve të lejuar * indeksi - indeksi i krehës * krehër - grupi i kombinimit aktual * objektivi - vlera e synuar * Asnjë vlerë kthimi - kalon kombinimin më të mirë aktual në vlerat globale */ funksioni kapak Kombinimi (kapak, num_cap, num_comb, indeks, krehër, objektiv) {// kombinimi aktual është i plotë nëse (indeksi == num_comb) {var ser_par_size = Math.pow (2, krehër num_); // 2^(numri i përbërësve) var ser_par = ; // array bool që specifikon serial ose paralel për secilin komponent var calc; // vlera e llogaritur e kapacitetit ekuivalent // kaloni nëpër çdo seri të mundshme/konfigurim paralel të kombinimit aktual për (var j = 0; j k) & 1; } // bëni llogaritjet për kombinimin bazuar në serinë/kombinimin paralel për (var k = 0; k

Recommended: