Բովանդակություն:

Ինչպես հասնել ցանկացած դիմադրության/կարողության ՝ արդեն իսկ ունեցած բաղադրիչների միջոցով: 6 քայլ
Ինչպես հասնել ցանկացած դիմադրության/կարողության ՝ արդեն իսկ ունեցած բաղադրիչների միջոցով: 6 քայլ

Video: Ինչպես հասնել ցանկացած դիմադրության/կարողության ՝ արդեն իսկ ունեցած բաղադրիչների միջոցով: 6 քայլ

Video: Ինչպես հասնել ցանկացած դիմադրության/կարողության ՝ արդեն իսկ ունեցած բաղադրիչների միջոցով: 6 քայլ
Video: Մեր ժողովուրդների փոխգործակցությունն անխուսափելի է. ՉԺՀ-ի խորհրդարանի նախկին նախագահ Ախյադ Իդիգով 2024, Նոյեմբեր
Anonim
Ինչպես հասնել ցանկացած դիմադրության/հզորության ՝ արդեն իսկ ունեցած բաղադրիչների միջոցով
Ինչպես հասնել ցանկացած դիմադրության/հզորության ՝ արդեն իսկ ունեցած բաղադրիչների միջոցով

Սա ոչ միայն հերթական շարքի/զուգահեռ համարժեք դիմադրության հաշվիչ է: Այս ծրագիրը հաշվարկում է, թե ինչպես կարելի է համատեղել ներկայումս անհրաժեշտ ռեզիստորներ/կոնդենսատորներ `անհրաժեշտ թիրախային դիմադրության/հզորության արժեքի հասնելու համար:

Ձեզ երբևէ պե՞տք է եղել որևէ կոնկրետ դիմադրության կամ կոնդենսատորի, որը դուք չունեք կամ որը գոյություն չունի: Մի՛ վախեցեք: Դուք, հավանաբար, կարող եք կատարել այդ հատուկ դիմադրության կամ տարողունակության արժեքը ՝ օգտագործելով արդեն եղած բաղադրիչները: Միլիոնավոր տարբեր համակցություններով օպտիմալացման հսկայական բազմաֆունկցիոնալ խնդիր լուծելու փոխարեն օգտագործեք այս ծրագիրը:

Պարզապես ընտրեք դիմադրություն կամ կոնդենսատոր, մուտքագրեք նպատակային արժեքը, մուտքագրեք այն բաղադրիչների առավելագույն քանակը, որոնք կցանկանայիք օգտագործել, մուտքագրեք ձեր ունեցած բաղադրիչների արժեքների ցուցակը և կտտացրեք հաշվարկ: Րագիրը կթքի, թե ինչ բաղադրիչներ օգտագործել և ինչպես դրանք միացնել ՝ ձեր նպատակային արժեքին հասնելու համար:

Հաշվիչը փորձելու համար այցելեք այս վեբ ծրագիրը:

Աղբյուրի կոդը դիտելու համար այցելեք այս Github պահոցը:

Խնդրում եմ ինձ տեղյակ պահեք, եթե ունեք որևէ առաջարկ ՝ այս դիզայնի գործիքի օգտագործելիությունն ավելի բարելավելու համար:

Քայլ 1: Նախապատմություն

Նախապատմություն
Նախապատմություն

Այս վեբ ծրագիրը մշակվել է անհրաժեշտությունից ելնելով: Կան շատ տարբեր սխեմաներ, որոնք ես կառուցում եմ, որոնք պահանջում են շատ կոնկրետ ռեզիստոր կամ կոնդենսատոր: Շատ անգամներ, ես չունեմ այդ հատուկ արժեք ունեցող ռեզիստոր կամ կոնդենսատոր: Երբեմն նրանք նույնիսկ այդ յուրահատուկ արժեքով բաղադրիչ չեն կազմում: Փոխանակ հրաժարվելու կամ բավարարվելու ինչ -որ բանով, որն իդեալական չէ, ես որոշեցի գրել ծրագիր, որը կանդրադառնա ռեզիստորների յուրաքանչյուր հնարավոր համադրությանը (ամեն հնարավոր արժեքը և դրանք շարքով են, թե զուգահեռ) և կվերադարձնի լավագույն համադրությունը:

Իմ օրգանների համար սխեման նախագծելիս ՝ որպես Bands Instructable Project- ի մաս, ես պետք է փորձեի ձեռքով հաշվարկել կոնդենսատորների լավագույն համադրությունը `որոշակի հաճախականություն ստանալու համար: Այս գործընթացը աներևակայելի հոգնեցուցիչ էր, և ես, ի վերջո, պարզապես հանձնվեցի և գնացի կոնդենսատորների համակցություններով, որոնք արտադրում էին ցանկացած քանակությամբ լսելի հաճախականություն: Այժմ այս վեբ հավելվածի միջոցով ես կարող եմ ձևավորել իմ օրգանը որոշակի հաճախականության համար և այն համապատասխանեցնել ստեղնաշարի գրառումներին: Ստորև բերված հավասարումը օգտագործվում է հատուկ հաճախականությունը հաշվարկելու համար և քննարկվում է Instructables- ի մյուս նախագծում:

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

Օգտագործելով այս հավասարումը, որտեղ R1 = 100 kOhm և R2 = 10 kOhm, ես հաշվեցի, որ 27.33 nF կոնդենսատորը կարտադրի A4 նշում (հաճախականությունը 440 Հց): Օգտագործելով իմ ծրագիրը, ես կարողացա հաշվարկել համարժեք հզորության արժեքը: Ստացված արդյունքը և կազմաձևումը նկարագրված են ստորև: Ես այժմ ունակ եմ շատ ավելի արդյունավետ և արդյունավետ կարգավորել իմ օրգանը ստանդարտ նոտաների ճշգրիտ հաճախականություններին: Երանի ես դա անեի սկզբից: Երգեհոնի վրա իմ դեմո երգը, հավանաբար, շատ ավելի լավ կհնչեր:

Ամենամոտ արժեքը `27.329 nF Տարբերություն` 0.001 nFC կոնդենսատոր `կազմաձևում` C0 = 0.068 nF || C1 = 30 nF + C2 = 300 nF

Ռեզիստորային կոնդենսատորի համարժեքության հավասարումներ

Տեղեկատվության համար ստորև ներկայացված են սխեմայի մեջ ռեզիստորների և կոնդենսատորների համատեղման համարժեքության հավասարումները:

  • Սերիայի դիմադրողներ (R1 + R2). Req = R1 + R2
  • Parallelուգահեռ դիմադրություններ (R1 || R2). Req = 1/(1/R1 + 1/R2)
  • Շարքային կոնդենսատորներ (C1 + C2). Ceq = 1/(1/C1 + 1/C2)
  • Parallelուգահեռ կոնդենսատորներ (C1 || C2) ՝ Ceq = C1 + C2

Քայլ 2: Ներածումներ

Մուտքերը
Մուտքերը

Կան 4 մուտքագրումներ, որոնք դուք պետք է տրամադրեք.

  1. Անկախ նրանից, թե դուք հաշվարկում եք դիմադրության կամ կոնդենսատորի արժեքը:
  2. Թիրախային դիմադրության կամ հզորության արժեքը և միավորները:
  3. Բաղադրիչների առավելագույն քանակը, որոնք կցանկանայիք օգտագործել նպատակային արժեքին հասնելու համար (այսինքն ՝ ես չէի ցանկանա օգտագործել ավելի քան 3 դիմադրություն ՝ իմ նպատակային դիմադրության արժեքին հասնելու համար):
  4. Ձեր ներկայումս առկա ռեզիստորների/կոնդենսատորների արժեքների ցանկը: Այս արժեքները պետք է լինեն ձեր նպատակային արժեքի նույն միավորներով (այսինքն, եթե ձեր նպատակային արժեքը 110 nF էր, ձեր բոլոր արժեքները պետք է տրամադրվեն nF- ով):

Քայլ 3: Արդյունք

Արդյունք
Արդյունք

Ձեր արդյունքի համար կստանաք 3 արդյունք.

  1. Ամենամոտ արժեքը `դիմադրության/հզորության ամենամոտ արժեքը, որին կարողացել եք հասնել ձեր պարամետրերով:
  2. Տարբերություն. Որքան մոտ էր ձեր ամենամոտ արժեքը ձեր նպատակային արժեքից:
  3. Resistor/Capacitor Configuration - օգտագործվող դիմադրիչների/կոնդենսատորների արժեքների ցանկ և դրանց կազմաձևում:

Քայլ 4: Հասկանալով ձեր արդյունքը

Հասկանալով ձեր արդյունքը
Հասկանալով ձեր արդյունքը
Հասկանալով ձեր արդյունքը
Հասկանալով ձեր արդյունքը

Կազմաձևման ելքը օգտագործում է ստանդարտ նշում: «+» նշանակում է, որ բաղադրիչները շարքով են և «||» նշանակում է, որ բաղադրիչները զուգահեռ են: Օպերատորներն ունեն հավասար առաջնահերթություն և ձախից աջ ասոցիատիվ նշանակություն ունեն, ինչը նշանակում է, որ դուք տերմինները խմբավորում եք ձախից և շարժվում դեպի աջ:

Օրինակ, նայեք հետևյալ արդյունքին.

Ռեզիստորի կազմաձևում ՝ R0 = 15 Օմ + R1 = 470 Օմ || R2 = 3300 Օմ + R3 = 15000 Օմ

Եթե հետևեք վերը քննարկված ուղեցույցներին, կարող եք տեսնել, որ դա համարժեք է վերը նշված հետևյալ հավասարմանը և պատկերին:

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

Քայլ 5: Լրացուցիչ նախագծեր

Լրացուցիչ նախագծերի համար այցելեք իմ էջերը.

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

Քայլ 6: Աղբյուրի կոդ

Աղբյուրի կոդը դիտելու համար այցելեք այս Github պահոցը կամ տեսեք ներքևի JavaScript- ը:

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

/* r/c հաշվիչ սցենար*//* --------------------------------------- -------------------------*/ var ամենամոտ_վալ; // ամենամոտ արժեքը մինչ այժմ var closeest_diff = 1000000.00; // val of val և target var ամենամոտ = ; // մասերի մանրամասն արժեքների բաղադրիչներ var ser_par_config = ; // զանգված մանրամասող սերիական/զուգահեռ var outputStr = ""; function calculatorClick () {// ջնջել գլոբալ արժեքները յուրաքանչյուր նոր սեղմման համար ամենամոտ_val = 0; ամենամոտ_բաժան = 1000000.00; ամենամոտ = ; 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; // թիրախային արժեքի վերլուծության սխալ, եթե (isNaN (թիրախ)) {outputStr = "Սխալի ստուգում" Թիրախային արժեք "մուտքագրումը!"} // սխալ այլ բաղադրիչների վերլուծության մեջ, եթե (isNaN (numComp)) {outputStr = "Սխալի ստուգում 'Բաղադրիչների քանակի մուտքագրում! "} // այլ դեպքում, եթե թիրախում կամ numComp- ում սխալ չկա, եթե (! IsNaN (թիրախ) &&! IsNaN (numComp)) {while (compValsStr.indexOf (", ")! = -1) {var ստորակետ = compValsStr.indexOf (","); var newInt = parseFloat (compValsStr.substring (0, ստորակետ)); // բաղադրիչի արժեքների ցուցակի վերլուծության սխալ, դրոշակ դրեք if (isNaN (newInt)) {errFlag = 1; ընդմիջում; } compValsStr = compValsStr.substring (ստորակետ+1, compValsStr.length); compVals = newInt; i ++; } var newInt = parseFloat (compValsStr); // բաղադրիչի արժեքների ցուցակի վերլուծության սխալ, դրոշակ դրեք if (isNaN (newInt)) {errFlag = 1; } compVals = newInt; if (errFlag == 0) {if (document.getElementById («resRadio»). ստուգված է) {resistor (target, numComp, compVals); } else if (document.getElementById («capRadio»). ստուգված է) {capacitor (target, numComp, compVals); }} // սխալ բաղադրիչի արժեքների ցանկը վերլուծելիս {outputStr = "Սխալի ստուգում 'Բաղադրիչների արժեքների ցուցակի մուտքագրում!"}} calcOutput.innerHTML = outputStr; resultDisplay.style.display = "արգելափակում"; exampleDisplay.style.display = "ճկուն"; // ոլորել դեպի արդյունքի window.scrollTo (0, exampleDisplay.scrollHeight); } / * Առբերում և տպում է ռեզիստորի լավագույն կոնֆիգուրացիան * թիրախ - թիրախային դիմադրության արժեք * numComp - դիմադրիչների ընդհանուր թիվը, որոնք թույլատրվում են օգտագործել նպատակային val * compVals - դիմադրության արժեքների զանգված / գործառույթի դիմադրություն (թիրախ, numComp, compVals) { // դիմադրության արժեքների երկարություն var num_res = compVals.length; // գործարկել բոլոր հնարավոր թվով բաղադրիչների համար (var i = 1; i <= numComp; i ++) {var data = ; resCombination (compVals, num_res, i, 0, data, target); } var units = document.getElementById («ընտրված_ միավոր»). արժեքը; // արդյունքների տպում outputStr = "Ամենամոտ արժեքը." + ամենամոտ_վալ.to Հաստատուն (3) + "" + միավորներ ""; outputStr + = "Տարբերություն." + ամենամոտ_տարբ. դեպի ֆիքսված (3) + "" + միավոր + ""; outputStr += "Դիմադրության կոնֆիգուրացիա."; (var i = 0; i <numComp; i ++) {if (i <close.length) {outputStr + = "R" + i + "=" + ամենամոտ + "" + միավորներ + ""; if (i+1 <ամենամոտ. երկարություն) {if (ser_par_config [i+1]) outputStr+= "||"; else outputStr + = " +"; }} այլապես ընդմիջում; }} /* Հաշվում է ռեզիստորների լավագույն համադրությունը `նպատակային արժեքին հասնելու համար: * res - ռեզիստորային արժեքների մուտքային զանգված * num_res - ռեզիստորային արժեքների մուտքի զանգվածի չափս * num_comb - թույլատրելի դիմադրողների թիվը * ինդեքս - սանրանի ցուցիչ * սանր - ընթացիկ համադրության զանգված * թիրախ - նպատակային արժեք * Վերադարձի արժեք չկա. Ընթացիկ լավագույն համադրությունը փոխանցում է գլոբալ արժեքներին */ գործառույթ resCombination (res, num_res, num_comb, index, comb, target) {// ընթացիկ համադրությունը ամբողջական է, եթե (index == num_comb) {var ser_par_size = Math.pow (2, num_comb); // 2^(բաղադրիչների թիվը) var ser_par = ; // bool զանգված, որը սահմանում է սերիալ կամ զուգահեռ յուրաքանչյուր բաղադրիչի համար var calc; // համարժեք դիմադրության համարժեք արժեք // անցնել ընթացիկ համադրության յուրաքանչյուր հնարավոր սերիայի/զուգահեռ կարգավորման (var j = 0; j ժա) & 1; } // կատարեք համադրության հաշվարկներ ՝ հիմնված սերիայի/զուգահեռ համադրության վրա (var k = 0; k <num_comb; k ++) {// առաջին համարի վրա, պարզապես ավելացրեք if (k == 0) calc = comb [k]; // զրո նշանակում է սերիա, ավելացնել դիմադրության այլ արժեքներ, եթե (! ser_par [k]) calc += comb [k]; // մեկը նշանակում է զուգահեռ, հակառակ հակադարձ գումարների հակառակ դեպքում, եթե (ser_par [k]) calc = (calc*comb [k])/(calc+comb [k]); } // ստուգեք ՝ արդյոք տարբերությունն ավելի փոքր է, քան նախորդ լավագույնը, եթե (Math.abs (calc - target) <close_diff) {// այն ավելի քիչ է, ուստի թարմացրեք գլոբալ արժեքները closeest_val = calc; closeest_diff = Math.abs (հաշվարկ - թիրախ); // մաքրել զրոյի համար (var k = 0; k <num_comb; k ++) {ամենամոտ [k] = 0; } // թարմացնել ամենամոտ արժեքը & series/զուգահեռ զանգվածները (var k = 0; k <num_comb; k ++) {ամենամոտ [k] = սանր [k]; ser_par_config [k] = ser_par [k]; }}} վերադարձ 0; } // հետադարձաբար կանչել և փոխարինել ինդեքսը բոլոր հնարավոր արժեքներով (var i = 0; i = num_comb-index; i ++) {comb [index] = res ; resCombination (res, num_res, num_comb, index+1, comb, target); }} / * Առբերում և տպում է կոնդենսատորի լավագույն կոնֆիգուրացիան * նպատակ - նպատակային հզորության արժեք * numComp - կոնդենսատորների ընդհանուր քանակը, որոնք թույլատրվում են օգտագործել նպատակային val * compVals - կոնդենսատորի արժեքների զանգված / գործառական կոնդենսատոր (նպատակ, numComp, compVals) {// տարողունակության արժեքների երկարություն var num_cap = compVals.length; // անցնել բաղադրիչների բոլոր հնարավոր քանակով (var i = 1; i <= numComp; i ++) {var data = ; capCombination (compVals, num_cap, i, 0, data, target); } var units = document.getElementById («ընտրված_ միավոր»). արժեքը; // արդյունքների տպում outputStr = "Ամենամոտ արժեքը." + ամենամոտ_վալ.to Հաստատուն (3) + "" + միավորներ ""; outputStr + = "Տարբերություն." + ամենամոտ_տարբ. դեպի ֆիքսված (3) + "" + միավոր + ""; outputStr += "Կոնդենսատորի կազմաձևում."; for (var i = 0; i <numComp; i ++) {if (i <close.length) {outputStr + = "C" + i + "=" + ամենամոտ + "" + միավորներ + ""; if (i+1 <ամենամոտ. երկարություն) {if (ser_par_config [i+1]) outputStr+= "||"; else outputStr + = " +"; }} այլապես ընդմիջում; }} /* Հաշվում է կոնդենսատորների լավագույն համադրությունը `նպատակային արժեքին հասնելու համար: * cap - կոնդենսատորի արժեքների մուտքային զանգված * num_cap - կոնդենսատորի արժեքների մուտքի զանգվածի չափ * num_comb - թույլատրելի կոնդենսատորների քանակը * ինդեքս - սանրանի ցուցիչ * սանր - ընթացիկ համադրության զանգված * թիրախ - նպատակային արժեք * Վերադարձի արժեք չկա. Ընթացիկ լավագույն համադրությունը փոխանցում է գլոբալ արժեքներին */ գործառույթ cap Համակցում (գլխարկ, num_cap, num_comb, ինդեքս, սանր, թիրախ) {// ընթացիկ համադրությունը ամբողջական է, եթե (ինդեքս == num_comb) {var ser_par_size = Math.pow (2, num_comb); // 2^(բաղադրիչների թիվը) var ser_par = ; // bool զանգված, որը սահմանում է սերիալ կամ զուգահեռ յուրաքանչյուր բաղադրիչի համար var calc; // հաշվարկված համարժեք հզորության արժեքը // քայլ յուրաքանչյուր ընթացիկ շարքի/զուգահեռ ընթացիկ համադրության համար (var j = 0; j ժա) & 1; } // կատարեք համադրության համար հաշվարկներ ՝ հիմնված սերիայի/զուգահեռ համադրության վրա (var k = 0; k

Խորհուրդ ենք տալիս: