Мазмуну:

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

Video: Сизде болгон компоненттерди колдонуу менен каршылыкка/сыйымдуулукка кантип жетүү керек ?: 6 кадам

Video: Сизде болгон компоненттерди колдонуу менен каршылыкка/сыйымдуулукка кантип жетүү керек ?: 6 кадам
Video: КҮЙӨӨСҮН ТОГОТПОГОН АЯЛГА НАСЫЙКАТ. Шейх Чубак ажы 2024, Ноябрь
Anonim
Сизде болгон компоненттерди колдонуу менен каршылыкка/сыйымдуулукка кантип жетүү керек!
Сизде болгон компоненттерди колдонуу менен каршылыкка/сыйымдуулукка кантип жетүү керек!

Бул жөн эле башка серия/параллель эквиваленттүү каршылык калькулятору эмес! Бул программа сизге керектүү болгон каршылыктын/сыйымдуулуктун маанисине жетүү үчүн керек болгон резисторлорду/конденсаторлорду кантип бириктирүүнү эсептейт.

Сизде жок же жок болгон белгилүү бир резисторго же конденсаторго муктаж белеңиз? Коркпоңуз! Балким, сизде бар болгон компоненттерди колдонуп, бул каршылыкты же сыйымдуулукту жасай аласыз. Миллиондогон ар кандай айкалыштар менен эбегейсиз көп оптималдаштыруу маселесин чечүүнүн ордуна, бул программаны колдонуңуз!

Жөн эле резистор же конденсатор тандаңыз, максаттуу маанини киргизиңиз, колдонууну каалаган компоненттердин максималдуу санын киргизиңиз, сиздеги компоненттердин баалуулуктарынын тизмесин киргизиңиз жана эсептөөнү басыңыз! Программа кайсы компоненттерди колдонуу керектигин жана максаттуу баалуулукка жетүү үчүн аларды кантип туташтыруу керек экенин көрсөтөт.

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

Булак кодун көрүү үчүн, бул Github репозиторийине баш багыңыз.

Сураныч, эгерде сизде бул дизайн инструментинин колдонулушун жакшыртуу боюнча кандайдыр бир сунуштар болсо, мага кабарлаңыз!

1 -кадам: Фон

Фон
Фон

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

Бандар тобунун инструктивдүү долбоорунун бир бөлүгү катары менин органымдын схемасын иштеп чыгууда, мен белгилүү бир жыштыкка жетүү үчүн конденсаторлордун мыкты комбинациясын эсептеп көрүүгө туура келди. Бул процесс укмуштуудай түйшүктүү болду, мен акыры жөн эле баш тарттым жана ар кандай көлөмдөгү үн жыштыгын чыгарган конденсаторлордун айкалыштары менен кеттим. Эми бул веб -тиркеме менен мен органды белгилүү бир жыштыкка ылайыктап, клавиатурадагы ноталарга тууралай алам! Төмөндөгү теңдеме белгилүү бир жыштыкты эсептөө үчүн колдонулат жана башка Instructables долбоорунда талкууланат.

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

Бул теңдемени колдонуп, R1 = 100 кОм жана R2 = 10 кОм, мен 27.33 nF конденсатору 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 жана максаттын айырмасы var closest = ; // компоненттердин баалуулуктарын деталдаштыруучу массив var ser_par_config = ; // катар/параллелди деталдаштырган массив var outputStr = ""; function calculatorClick () {// ар бир жаңы чыкылдатуу үчүн глобалдык баалуулуктарды тазалаңыз closest_val = 0; closest_diff = 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 (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"). check) {resistor (target, numComp, compVals); } else if (document.getElementById ("capRadio"). текшерилген) {конденсатор (максаттуу, numComp, compVals); }} // башка компоненттердин баалуулуктар тизмесин талдоодо ката {outputStr = "'Компоненттердин баалуулуктар тизмесин' киргизүүнү текшерүү катасы!"}} calcOutput.innerHTML = outputStr; resultDisplay.style.display = "блок"; exampleDisplay.style.display = "flex"; // натыйжа терезесине ылдый жылыңыз.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 бирдиктери = document.getElementById ("тандалган_бирик"). мааниси; // басып чыгаруу жыйынтыктары outputStr = "Эң Жакын Мааниси:" + closest_val.toFixed (3) + "" + бирдиктери + ""; outputStr + = "Айырмасы:" + closest_diff.toFixed (3) + "" + бирдиктери + ""; outputStr += "Резистордун конфигурациясы:"; for (var i = 0; i <numComp; i ++) {if (i <near.length) {outputStr + = "R" + i + "=" + жакыныраак + "" + бирдиктери + ""; if (i+1 <near.length) {if (ser_par_config [i+1]) outputStr+= "||"; else outputStr + = " +"; }} else break; }} /* Максаттуу мааниге жетүү үчүн резисторлордун мыкты айкалышын эсептейт. * res - каршылыктын маанилеринин кириш массиви * num_res - каршылыктын маанилеринин кириш массивинин өлчөмү * num_comb - уруксат берилген резисторлордун саны * индекс - тарактын индекси * тарак - учурдагы айкалыштын массиви * максаттуу - максаттуу мааниси * Кайтаруу мааниси жок - учурдагы эң мыкты комбинацияны глобалдык баалуулуктарга өткөрөт */ function resCombination (res, num_res, num_comb, index, тарак, target) {// учурдагы комбинация толук болсо, эгерде (index == num_comb) {var ser_par_size = Math.pow (2, num_comb); // 2^(компоненттердин саны) var ser_par = ; // bool массиви, ар бир компонент үчүн сериялык же параллель көрсөтөт var calc; // эсептелген эквиваленттүү каршылыктын мааниси // учурдагы комбинациянын мүмкүн болгон серияларын/параллел конфигурациясын (var j = 0; j k) & 1; } // комбинация үчүн эсептөөлөрдү серия/параллель комбина боюнча жасаңыз (var k = 0; k <num_comb; k ++) {// биринчи сан, жөн гана if (k == 0) calc = comb [k]; // нөл катар дегенди билдирет, эгерде каршылык маанилерин кошсо (! ser_par [k]) calc += тарак [k]; // бири параллелди билдирет, эгерде (ser_par [k]) calc = (calc*тарак [k])/(calc+тарак [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, index+1, тарак, бута); }} / * Мыкты конденсатор конфигурациясын алат жана басып чыгарат * максаттуу - максаттуу сыйымдуулуктун мааниси * 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 бирдиктери = document.getElementById ("тандалган_бирик"). мааниси; // басып чыгаруу жыйынтыктары outputStr = "Эң Жакын Мааниси:" + closest_val.toFixed (3) + "" + бирдиктери + ""; outputStr + = "Айырмасы:" + closest_diff.toFixed (3) + "" + бирдиктери + ""; outputStr += "Конденсатордун конфигурациясы:"; for (var i = 0; i <numComp; i ++) {if (i <near.length) {outputStr + = "C" + i + "=" + жакыныраак + "" + бирдиктери + ""; if (i+1 <near.length) {if (ser_par_config [i+1]) outputStr+= "||"; else outputStr + = " +"; }} else break; }} /* Максаттуу мааниге жетүү үчүн конденсаторлордун эң мыкты комбинациясын эсептейт. * капкак - конденсатордук маанилердин кириш массиви * num_cap - конденсатордун маанилеринин кириш массивинин өлчөмү * num_comb - уруксат берилген конденсаторлордун саны * индекс - тарактын индекси * тарак - учурдагы айкалыштардын массиви * максаттуу - максаттуу мааниси * Кайтаруу мааниси жок - учурдагы эң мыкты комбинацияны глобалдык баалуулуктарга өткөрөт */ function capCombination (cap, num_cap, num_comb, index, тарак, target) {// учурдагы комбинация толук болсо, эгерде (index == num_comb) {var ser_par_size = Math.pow (2, num_comb); // 2^(компоненттердин саны) var ser_par = ; // bool массиви ар бир компонент үчүн сериялык же параллелдүү көрсөтөт var calc; // эсептелген эквиваленттүү сыйымдуулуктун мааниси // учурдагы комбинациянын мүмкүн болгон серияларын/параллел конфигурациясын (var j = 0; j k) & 1; } // комбинация үчүн эсептөөлөрдү серия/параллель комбонун негизинде жасаңыз (var k = 0; k

Сунушталууда: