Obsah:

Ako dosiahnuť akýkoľvek odpor/kapacitu pomocou komponentov, ktoré už máte!: 6 krokov
Ako dosiahnuť akýkoľvek odpor/kapacitu pomocou komponentov, ktoré už máte!: 6 krokov

Video: Ako dosiahnuť akýkoľvek odpor/kapacitu pomocou komponentov, ktoré už máte!: 6 krokov

Video: Ako dosiahnuť akýkoľvek odpor/kapacitu pomocou komponentov, ktoré už máte!: 6 krokov
Video: БОЛИ В ПОЯСНИЦЕ И МЕТАБОЛИЧЕСКИЙ СИНДРОМ 3 день 2024, November
Anonim
Ako dosiahnuť akýkoľvek odpor/kapacitu pomocou komponentov, ktoré už máte!
Ako dosiahnuť akýkoľvek odpor/kapacitu pomocou komponentov, ktoré už máte!

Toto nie je len ďalšia kalkulačka odporu sériového/paralelného ekvivalentu! Tento program vypočítava, ako kombinovať odpory/kondenzátory, ktoré v súčasnej dobe máte, aby ste dosiahli cieľovú hodnotu odporu/kapacity, ktorú potrebujete.

Potrebovali ste niekedy konkrétny odpor alebo kondenzátor, ktorý nemáte alebo ktorý neexistuje? Nemať strach! Tento špecifický odpor alebo hodnotu kapacity môžete pravdepodobne dosiahnuť pomocou komponentov, ktoré už máte. Namiesto riešenia obrovského problému s optimalizáciou viacerých premenných pomocou miliónov rôznych kombinácií použite tento program!

Stačí vybrať odpor alebo kondenzátor, zadať cieľovú hodnotu, zadať maximálny počet komponentov, ktoré by ste chceli použiť, zadať zoznam hodnôt komponentov, ktoré vlastníte, a kliknúť na vypočítať! Program vypľuje, ktoré komponenty použiť a ako ich pripojiť, aby ste dosiahli cieľovú hodnotu.

Ak si chcete kalkulačku vyskúšať, navštívte túto webovú aplikáciu.

Ak chcete zobraziť zdrojový kód, navštívte toto úložisko Github.

Ak máte nejaké návrhy na ďalšie zlepšenie použiteľnosti tohto návrhového nástroja, dajte nám vedieť!

Krok 1: Pozadie

Pozadie
Pozadie

Táto webová aplikácia bola vyvinutá z nutnosti. Existuje mnoho rôznych obvodov, ktoré konštruujem a ktoré vyžadujú veľmi špecifický odpor alebo kondenzátor. Mnohokrát nemám odpor alebo kondenzátor s touto konkrétnou hodnotou. Niekedy nevyrobia ani súčiastku s touto jedinečnou hodnotou! Namiesto toho, aby som to vzdal alebo sa uspokojil s niečím, čo je menej ako ideálne, rozhodol som sa napísať program, ktorý sa zameria na každú možnú kombináciu odporov (každú možnú hodnotu a či sú v sérii alebo paralelne) a vráti najlepšiu kombináciu.

Pri navrhovaní obvodu pre môj orgán ako súčasť projektu Instructable Battle of the Bands som sa musel pokúsiť ručne vypočítať najlepšiu kombináciu kondenzátorov na dosiahnutie konkrétnej frekvencie. Tento proces bol neuveriteľne únavný a nakoniec som to jednoducho vzdal a išiel som s kombináciou kondenzátorov, ktoré produkovali akékoľvek množstvo počuteľnej frekvencie. Teraz s touto webovou aplikáciou môžem navrhnúť svoj organ na konkrétnu frekvenciu a naladiť ho na poznámky na klávesnici! Nasledujúca rovnica sa používa na výpočet konkrétnej frekvencie a je prediskutovaná v inom projekte Instructables.

f = 1 / (0,693 × C × (R1 + 2 × R2))

Použitím tejto rovnice, kde R1 = 100 kOhm a R2 = 10 kOhm, som vypočítal, že 27,33 nF kondenzátor vytvorí notu A4 (frekvencia 440 Hz). Pomocou svojho programu som bol schopný vypočítať ekvivalentnú hodnotu kapacity v rozsahu 0,001 nF (oveľa menšiu ako tolerancia na štandardnom kondenzátore), ktorú môžem vytvoriť pomocou kondenzátorov, ktoré som už ležal. Výsledný výstup a konfigurácia sú popísané nižšie. Teraz som schopný oveľa efektívnejšie a efektívnejšie naladiť svoj orgán na presné frekvencie štandardných nôt. Prial by som si, aby som to urobil od začiatku. Moja demo pieseň na organe by zrejme znela oveľa lepšie.

Najbližšia hodnota: 27,329 nF Rozdiel: 0,001 nFC Konfigurácia kondenzátora: C0 = 0,068 nF || C1 = 30 nF + C2 = 300 nF

Rovnice ekvivalencie rezistora a kondenzátora

Nasledujú referenčné rovnice ekvivalencie pre kombináciu odporov a kondenzátorov v obvode.

  • Rezistory v sérii (R1 + R2): Požiadavka = R1 + R2
  • Paralelné odpory (R1 || R2): Požiadavka = 1/(1/R1 + 1/R2)
  • Kondenzátory v sérii (C1 + C2): Ceq = 1/(1/C1 + 1/C2)
  • Paralelné kondenzátory (C1 || C2): Ceq = C1 + C2

Krok 2: Vstupy

Vstupy
Vstupy

Budete musieť zadať 4 vstupy:

  1. Či už počítate hodnotu pre odpor alebo kondenzátor.
  2. Cieľový odpor alebo hodnota kapacity a jednotky.
  3. Maximálny počet komponentov, ktoré by ste chceli použiť na dosiahnutie cieľovej hodnoty (t.j. nechcel by som použiť viac ako 3 odpory na dosiahnutie cieľovej hodnoty odporu).
  4. Zoznam hodnôt pre rezistory/kondenzátory, ktoré v súčasnosti máte. Tieto hodnoty by mali byť v rovnakých jednotkách ako cieľová hodnota (t. J. Ak bola vaša cieľová hodnota 110 nF, všetky vaše hodnoty by mali byť uvedené v nF).

Krok 3: Výsledok

Výsledok
Výsledok

Za svoj výsledok získate 3 výstupy:

  1. Najbližšia hodnota - najbližšia hodnota odporu/kapacity, ktorú ste mohli dosiahnuť svojimi parametrami.
  2. Rozdiel - ako ďaleko bola vaša najbližšia hodnota od cieľovej hodnoty.
  3. Konfigurácia rezistora/kondenzátora - zoznam hodnôt odporov/kondenzátorov, ktoré sa majú použiť, a ich konfigurácia.

Krok 4: Pochopenie vášho výsledku

Pochopenie vášho výsledku
Pochopenie vášho výsledku
Pochopenie vášho výsledku
Pochopenie vášho výsledku

Konfiguračný výstup používa štandardný zápis. „+“znamená, že súčasti sú v sérii a „||“znamená, že súčasti sú paralelné. Operátory majú rovnakú prednosť a sú asociatívne zľava doprava, čo znamená, že zoskupujete výrazy dohromady zľava a pohybujete sa doprava.

Pozrite sa napríklad na nasledujúci výsledok:

Konfigurácia rezistora: R0 = 15 ohmov + R1 = 470 ohmov || R2 = 3300 ohmov + R3 = 15 000 ohmov

Ak budete postupovať podľa vyššie uvedených pokynov, môžete vidieť, že je to ekvivalent k nasledujúcej rovnici a obrázku vyššie.

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

Krok 5: Viac projektov

Viac projektov nájdete na mojich stránkach:

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

Krok 6: Zdrojový kód

Ak chcete zobraziť zdrojový kód, navštívte toto úložisko Github alebo si pozrite nižšie uvedený JavaScript.

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

/* skriptovanie kalkulačky r/c*//* --------------------------------------- -------------------------*/ var najbližší_val; // doteraz najblizsia hodnota var nejblizsia_dif = 1000000,00; // rozdiel hodnoty val a cieľ var najbližšie = ; // hodnoty podrobností poľa komponentov ser ser_par_config = ; // pole s podrobnosťami o sériovom/paralelnom var outputStr = ""; kalkulačka funkciíClick () {// vymazanie globálnych hodnôt pre každé nové kliknutie nearest_val = 0; najbližší rozdiel = 10 000 000,00; najbližšie = ; 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.value); var compValsStr = compValsTextObj.value; var compVals = ; compVals [0] = ""; var i = 0; var errFlag = 0; // chyba pri analýze cieľovej hodnoty if (isNaN (cieľ)) {outputStr = "Chyba pri kontrole vstupu" Cieľová hodnota "!}} // chyba pri analýze počtu ďalších komponentov if (isNaN (numComp)) {outputStr =" Kontrola chýb Vstup „Počet komponentov“!}} // else if no error in target or numComp else if (! IsNaN (target) &&! IsNaN (numComp)) {while (compValsStr.indexOf (",")! = -1) {var comma = compValsStr.indexOf (","); var newInt = parseFloat (compValsStr.substring (0, čiarka)); // chyba pri analýze zoznamu hodnôt komponentov, nastavte príznak, ak (isNaN (newInt)) {errFlag = 1; prestávka; } compValsStr = compValsStr.substring (čiarka+1, compValsStr.length); compVals = newInt; i ++; } var newInt = parseFloat (compValsStr); // chyba pri analýze zoznamu hodnôt komponentov, nastavte príznak, ak (isNaN (newInt)) {errFlag = 1; } compVals = newInt; if (errFlag == 0) {if (document.getElementById ("resRadio"). zaškrtnuté) {odpor (cieľ, numComp, compVals); } else if (document.getElementById ("capRadio"). zaškrtnuté) {kondenzátor (cieľ, numComp, compVals); }} // chyba pri analýze zoznamu hodnôt súčiastok else {outputStr = "Chyba pri kontrole vstupu 'Zoznam hodnôt komponentov'!}}} calcOutput.innerHTML = outputStr; resultDisplay.style.display = "block"; exampleDisplay.style.display = "flex"; // posuňte sa nadol k výsledku window.scrollTo (0, exampleDisplay.scrollHeight); } / * Načíta a vytlačí najlepšiu konfiguráciu rezistora * cieľ - hodnota cieľového odporu * numComp - celkový počet rezistorov, ktoré je možné použiť na dosiahnutie cieľového val * compVals - pole hodnôt rezistorov * / funkčný odpor (cieľ, numComp, compVals) { // dĺžka hodnôt odporu var num_res = compVals.length; // prebehne všetok možný počet komponentov pre (var i = 1; i <= numComp; i ++) {var data = ; resCombination (compVals, num_res, i, 0, data, target); } var units = document.getElementById ("selected_unit"). hodnota; // výsledky tlače outputStr = "Najbližšia hodnota:" + nejbližší_val.toFixed (3) + "" + jednotky + ""; outputStr + = "Rozdiel:" + nearest_diff.toFixed (3) + "" + jednotky + ""; outputStr += "Konfigurácia rezistora:"; pre (var i = 0; i <numComp; i ++) {if (i <najbližšia.dĺžka) {outputStr + = "R" + i + "=" + najbližšie + "" + jednotky + ""; if (i+1 <najbližšia.dĺžka) {if (ser_par_config [i+1]) outputStr+= "||"; else outputStr + = " +"; }} else break; }} /* Vypočíta najlepšiu kombináciu odporov na dosiahnutie cieľovej hodnoty. * res - vstupné pole hodnôt rezistorov * num_res - veľkosť vstupného poľa hodnôt rezistorov * num_comb - počet povolených rezistorov * index - index hrebeňa * hrebeň - pole aktuálnej kombinácie * cieľ - cieľová hodnota * Žiadna návratová hodnota - odovzdáva aktuálnu najlepšiu kombináciu globálnym hodnotám */ funkcia resCombination (res, num_res, num_comb, index, hrebeň, cieľ) {// aktuálna kombinácia je úplná, ak (index == num_comb) {var ser_par_size = Math.pow (2, num_comb); // 2^(počet komponentov) var ser_par = ; // pole bool určujúce sériové alebo paralelné pre každý komponent var calc; // vypočítaná hodnota ekvivalentného odporu // krok cez každú možnú sériu/paralelnú konfiguráciu aktuálnej kombinácie pre (var j = 0; j k) & 1; } // vykonajte výpočty pre kombináciu založenú na kombinácii rad/paralel pre (var k = 0; k <num_comb; k ++) {// prvé číslo, stačí pridať if (k == 0) calc = hrebeň [k]; // nula znamená sériu, pridajte hodnoty odporu inak, ak (! ser_par [k]) calc += comb [k]; // jeden znamená paralelný, inverzný k súčtu recipročných hodnôt else if (ser_par [k]) calc = (calc*comb [k])/(calc+comb [k]); } // skontrolujte, či je rozdiel menší ako predchádzajúci best if (Math.abs (calc - target) <nearest_diff) {// je menší, preto aktualizujte globálne hodnoty nearest_val = calc; nearest_diff = Math.abs (calc - target); // vymazanie na nulu pre (var k = 0; k <num_comb; k ++) {najbližšie [k] = 0; } // aktualizácia najbližších hodnôt a sérií/paralelných polí pre (var k = 0; k <num_comb; k ++) {najbližšie [k] = hrebeň [k]; ser_par_config [k] = ser_par [k]; }}} vrátiť 0; } // rekurzívne zavolajte a nahraďte index všetkými možnými hodnotami pre (var i = 0; i = num_comb-index; i ++) {comb [index] = res ; resCombination (res, num_res, num_comb, index+1, hrebeň, cieľ); }} / * Načíta a vytlačí najlepšiu konfiguráciu kondenzátora * cieľ - cieľová hodnota kapacity * numComp - celkový počet kondenzátorov, ktoré je možné použiť na dosiahnutie cieľovej hodnoty * compVals - množstvo hodnôt kondenzátora * / funkčný kondenzátor (cieľ, numComp, compVals) {// dĺžka hodnôt kapacity var num_cap = compVals.length; // prebehne všetok možný počet komponentov pre (var i = 1; i <= numComp; i ++) {var data = ; capCombination (compVals, num_cap, i, 0, data, target); } var units = document.getElementById ("selected_unit"). hodnota; // výsledky tlače outputStr = "Najbližšia hodnota:" + nejbližší_val.toFixed (3) + "" + jednotky + ""; outputStr + = "Rozdiel:" + nearest_diff.toFixed (3) + "" + jednotky + ""; outputStr += "Konfigurácia kondenzátora:"; pre (var i = 0; i <numComp; i ++) {if (i <najbližšia.dĺžka) {outputStr + = "C" + i + "=" + najbližšie + "" + jednotky + ""; if (i+1 <najbližšia.dĺžka) {if (ser_par_config [i+1]) outputStr+= "||"; else outputStr + = " +"; }} else break; }} /* Vypočíta najlepšiu kombináciu kondenzátorov na dosiahnutie cieľovej hodnoty. * cap - vstupné pole hodnôt kondenzátora * num_cap - veľkosť vstupného poľa hodnôt kondenzátora * num_comb - počet povolených kondenzátorov * index - index hrebeňa * hrebeň - pole aktuálnej kombinácie * cieľ - cieľová hodnota * Žiadna návratová hodnota - odovzdáva aktuálnu najlepšiu kombináciu globálnym hodnotám */ funkcia capCombination (cap, num_cap, num_comb, index, hrebeň, cieľ) {// aktuálna kombinácia je úplná, ak (index == num_comb) {var ser_par_size = Math.pow (2, num_comb); // 2^(počet komponentov) var ser_par = ; // pole bool určujúce sériové alebo paralelné pre každý komponent var calc; // vypočítaná hodnota ekvivalentnej kapacity // krok cez každú možnú sériu/paralelnú konfiguráciu aktuálnej kombinácie pre (var j = 0; j k) & 1; } // vykonajte výpočty pre kombináciu na základe série/paralelného komba pre (var k = 0; k

Odporúča: