Мазмұны:

Сізде бар компоненттерді қолдана отырып, кез келген қарсылыққа/сыйымдылыққа қалай жетуге болады ?: 6 қадам
Сізде бар компоненттерді қолдана отырып, кез келген қарсылыққа/сыйымдылыққа қалай жетуге болады ?: 6 қадам

Бейне: Сізде бар компоненттерді қолдана отырып, кез келген қарсылыққа/сыйымдылыққа қалай жетуге болады ?: 6 қадам

Бейне: Сізде бар компоненттерді қолдана отырып, кез келген қарсылыққа/сыйымдылыққа қалай жетуге болады ?: 6 қадам
Бейне: Автоматты түрде үйде жұмыртқа инкубаторын қалай жасауға болады, оңай, біртіндеп, арзан және жылдам 2024, Қараша
Anonim
Сізде бар компоненттерді қолдана отырып, кез келген қарсылыққа/сыйымдылыққа қалай жетуге болады!
Сізде бар компоненттерді қолдана отырып, кез келген қарсылыққа/сыйымдылыққа қалай жетуге болады!

Бұл басқа сериялы/параллель балама қарсылық калькуляторы емес! Бұл бағдарлама сізге қажет қарсылық/сыйымдылық мәніне жету үшін қажет резисторларды/конденсаторларды қалай біріктіру керектігін есептейді.

Сізге белгілі бір резистор немесе конденсатор қажет болды ма? Қорықпа! Сізде бар компоненттерді қолдана отырып, белгілі бір қарсылықты немесе сыйымдылықты жасай аласыз. Миллиондаған әр түрлі комбинациялармен үлкен өзгермелі оңтайландыру мәселесін шешудің орнына, осы бағдарламаны қолданыңыз!

Тек резисторды немесе конденсаторды таңдаңыз, мақсатты мәнді енгізіңіз, пайдаланғыңыз келетін компоненттердің максималды санын енгізіңіз, сізде бар компоненттердің мәндерінің тізімін енгізіңіз және есептеуді басыңыз! Бағдарлама сіздің мақсатты мәнге жету үшін қандай компоненттерді және оларды қалай қосу керектігін көрсетеді.

Калькуляторды сынап көру үшін мына веб -қосымшаға кіріңіз.

Бастапқы кодты көру үшін осы Github репозиторийіне кіріңіз.

Егер сізде осы дизайнерлік құралдың қолданылуын одан әрі жақсарту бойынша ұсыныстарыңыз болса, маған хабарлаңыз!

1 -қадам: Фон

Фон
Фон

Бұл веб -қосымша қажеттіліктен жасалған. Мен құрастыратын көптеген схемалар бар, олар нақты резисторды немесе конденсаторды қажет етеді. Көбінесе менде нақты мәні бар резистор немесе конденсатор жоқ. Кейде олар бірегей құндылығы бар компонент жасамайды! Идеалдылықтан төмен нәрседен бас тартудың немесе шешудің орнына мен резисторлардың барлық мүмкін болатын комбинациясын (мүмкін болатын кез келген мәнді және олар қатарлы немесе параллельді) қарастыратын және ең жақсы комбинацияны қайтаратын бағдарлама жазуды шештім.

«Battle of Bands Instructable Project» жобасының бөлігі ретінде менің органның схемасын жасаған кезде, мен белгілі бір жиілікке жету үшін конденсаторлардың ең жақсы комбинациясын есептеуге тырысуға тура келді. Бұл процесс өте қиын болды, мен ақырында кез келген дыбыстық жиілікті шығаратын конденсаторлардың комбинациясынан бас тарттым. Енді бұл веб -қосымшаның көмегімен мен өз органымды белгілі бір жиілікке қарай жобалай аламын және оны пернетақтадағы жазбаларға баптай аламын! Төмендегі теңдеу нақты жиілікті есептеу үшін қолданылады және Instructables басқа жобасында талқыланады.

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

R1 = 100 кОм және R2 = 10 кОм болатын осы теңдеуді қолдана отырып, мен 27.33 нФ конденсатор A4 нотасын шығаратынын есептедім (жиілігі 440 Гц). Мен өз бағдарламамды қолдана отырып, мен бұрыннан бар конденсаторлардың көмегімен жасай алатын.001 nF (стандартты конденсатордағы төзімділікке қарағанда) сыйымдылықтың баламалы мәнін есептей алдым. Алынған нәтиже мен конфигурация төменде сипатталған. Мен енді өз органымды стандартты ноталардың жиілігіне дәлірек және тиімді түрде баптай аламын. Мен мұны бастау үшін жасағанды қалаймын. Менің органдағы демо әнім әлдеқайда жақсы шығар еді.

Ең жақын мән: 27.329 nF Айырмашылық: 0.001 nFC Capacitor конфигурациясы: C0 = 0.068 nF || C1 = 30 nF + C2 = 300 nF

Резисторлық конденсатордың эквиваленттік теңдеулері

Анықтама үшін төменде тізбектегі резисторлар мен конденсаторларды біріктірудің эквиваленттік теңдеулері берілген.

  • Резисторлар тізбектей (R1 + R2): Req = R1 + R2
  • Параллель резисторлар (R1 || R2): Req = 1/(1/R1 + 1/R2)
  • Сериялы конденсаторлар (C1 + C2): Ceq = 1/(1/C1 + 1/C2)
  • Параллель конденсаторлар (C1 || C2): Ceq = C1 + C2

2 -қадам: кірістер

Кірістер
Кірістер

Сізге 4 кіріс қажет:

  1. Сіз резистордың немесе конденсатордың мәнін есептейсіз бе.
  2. Мақсатты қарсылық немесе сыйымдылық мәні және бірліктер.
  3. Мақсатты мәнге жету үшін пайдаланғыңыз келетін компоненттердің максималды саны (яғни мен мақсатты қарсылық мәніне жету үшін 3 резисторды қолданғым келмейді).
  4. Сізде бар резисторлар/конденсаторлар мәндерінің тізімі. Бұл мәндер сіздің мақсатты мәніңізбен бірдей бірліктерде болуы керек (яғни, егер сіздің мақсатты мәніңіз 110 нФ болса, барлық мәндеріңіз nF -те берілуі керек).

3 -қадам: Нәтиже

Нәтиже
Нәтиже

Нәтиже үшін сіз 3 нәтиже аласыз:

  1. Ең жақын мән - сіз параметрлермен қол жеткізе алатын ең жақын қарсылық/сыйымдылық мәні.
  2. Айырмашылық - сіздің жақын мәніңіз мақсатты мәннен қаншалықты алыс.
  3. Резистор/конденсатор конфигурациясы - қолданылатын резисторлардың/конденсаторлардың мәндерінің тізімі және олардың конфигурациясы.

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 closest_val; // әзірге ең жақын мән var closest_diff = 1000000.00; // val мен target дифференциациясы var closest = ; // компоненттердің мәндерін нақтылайтын массив var ser_par_config = ; // сериялық/параллельді егжей -тегжейлі сипаттайтын массив var outputStr = «»; calculatorClick функциясы () {// әрбір жаңа басу үшін жаһандық мәндерді өшіру closest_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 (target)) {outputStr = «» Мақсатты мән «енгізілуін тексеруде қате!»} мақсатты мәнді талдаудағы қате} «(isNaN (numComp)) басқа компоненттер санын талдауда қате {outputStr =» Қатені тексеру 'Компоненттердің енгізілу саны! «} // әйтпесе, егер мақсатта қате болмаса немесе numComp болмаса, (! IsNaN (target) &&! IsNaN (numComp)) {while (compValsStr.indexOf (», «)! = -1) {var comma = compValsStr.indexOf («,»); var newInt = parseFloat (compValsStr.substring (0, үтір)); // компонент мәндерінің тізімін талдауда қате, жалаушаны орнатыңыз, егер (isNaN (newInt)) {errFlag = 1; үзіліс; } compValsStr = compValsStr.substring (үтір+1, compValsStr.length); compVals = newInt; i ++; } var newInt = parseFloat (compValsStr); // компонент мәндерінің тізімін талдауда қате, егер (isNaN (newInt)) жалаушаны орнатыңыз {errFlag = 1; } compVals = newInt; if (errFlag == 0) {if (document.getElementById («resRadio»). тексерілген) {резистор (target, numComp, compVals); } else if (document.getElementById («capRadio»). тексерілген) {конденсатор (target, numComp, compVals); }} // басқа компонент мәндерінің тізімін талдаудағы қате {outputStr = «» Компоненттер мәндерінің тізімі «енгізілуін қатені тексеріңіз!»}} calcOutput.innerHTML = outputStr; resultDisplay.style.display = «блок»; exampleDisplay.style.display = «flex»; // нәтиже терезесі үшін төмен жылжыңыз.scrollTo (0, exampleDisplay.scrollHeight); } / * Резистордың ең жақсы конфигурациясын шығарады және басып шығарады * мақсат - қарсылықтың мақсатты мәні * numComp - мақсатты валға қол жеткізу үшін рұқсат етілген резисторлардың жалпы саны * compVals - резистор мәндерінің массиві * / функция резисторы (target, numComp, compVals) { // қарсылық мәндерінің ұзындығы var num_res = compVals.length; // (var i = 1; i <= numComp; i ++) үшін барлық мүмкін болатын компоненттер санын іске қосыңыз {var data = ; resCombination (compVals, num_res, i, 0, деректер, мақсат); } var unit = document.getElementById («selected_unit»). мән; // басып шығару нәтижелері outputStr = «Ең жақын мән:» + closest_val.toFixed (3) + «» + бірліктер + «»; outputStr + = «Айырмашылығы:» + +estest_diff.toFixed (3) + «» + бірліктер + «»; outputStr += «Резистор конфигурациясы:»; for (var i = 0; i <numComp; i ++) {if (i <ең жақын.ұзындық) {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, tarak, target) {// ағымдағы комбинация аяқталған болса (index == num_comb) {var ser_par_size = Math.pow (2, сан_комб); // 2^(компоненттер саны) var ser_par = ; // bool массиві әрбір компонент үшін сериялық немесе параллельді көрсетеді var calc; // есептелген эквиваленттік қарсылық мәні // (var j = 0; j үшін ағымдағы комбинацияның барлық мүмкін сериялары/параллель конфигурациясы k) & 1; } // (var k = 0; k <num_comb; k ++) {// бірінші сан үшін сериялы/параллельді комбинацияға негізделген комбинация үшін есептеулерді жасаңыз, тек егер қоссаңыз (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) <closest_diff) {// ол аз, сондықтан жаһандық мәндерді closest_val = calc жаңартыңыз; closest_diff = Math.abs (calc - мақсатты); // нөлге дейін тазарту (var k = 0; k <num_comb; k ++) {ең жақын [k] = 0; } // (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, индекс+1, тарақ, мақсат); }} / * Конденсатордың ең жақсы конфигурациясын шығарады және басып шығарады * мақсат - сыйымдылықтың мақсатты мәні * numComp - мақсатты валға жету үшін пайдалануға рұқсат етілген конденсаторлардың жалпы саны * compVals - конденсатор мәндерінің массиві * / функционалды конденсатор (target, numComp, compVals) {// сыйымдылық мәндерінің ұзындығы var num_cap = compVals.length; // (var i = 1; i <= numComp; i ++) үшін барлық мүмкін болатын компоненттер санын іске қосыңыз {var data = ; capCombination (compVals, num_cap, i, 0, деректер, мақсат); } var unit = document.getElementById («selected_unit»). мән; // басып шығару нәтижелері outputStr = «Ең жақын мән:» + closest_val.toFixed (3) + «» + бірліктер + «»; outputStr + = «Айырмашылығы:» + +estest_diff.toFixed (3) + «» + бірліктер + «»; outputStr += «Конденсатор конфигурациясы:»; for (var i = 0; i <numComp; i ++) {if (i <ең жақын.ұзындық) {outputStr + = «C» + i + «=» + ең жақын + «» + бірліктері + «»; if (i+1 <ең жақын. ұзындық) {if (ser_par_config [i+1]) outputStr+= «||»; else outputStr + = « +»; }} басқа үзіліс; }} /* Мақсатты мәнге жету үшін конденсаторлардың ең жақсы комбинациясын есептейді. * cap - конденсатор мәндерінің кіріс жиыны * num_cap - конденсатор мәндерінің кіріс массивінің өлшемі * num_comb - рұқсат етілген конденсаторлар саны * индекс - тарақ индексі * тарақ - ағымдағы комбинация массиві * мақсат - мақсатты мән * Қайтарылатын мән жоқ - ағымдағы ең жақсы комбинацияны жаһандық мәндерге өткізеді */ function capCombination (cap, num_cap, num_comb, index, tarak, target) {// ағымдағы комбинация аяқталған болса (index == num_comb) {var ser_par_size = Math.pow (2, сан_комб); // 2^(компоненттер саны) var ser_par = ; // bool массиві әрбір компонент үшін сериялық немесе параллельді көрсетеді var calc; // сыйымдылықтың есептелген эквиваленттік мәні // (var j = 0; j k) & 1; } // (var k = 0; k үшін сериялы/параллель комбинацияға негізделген комбинация үшін есептеулер жүргізіңіз

Ұсынылған: