Агуулгын хүснэгт:

Танд байгаа бүрэлдэхүүн хэсгүүдийг ашиглан эсэргүүцэл/багтаамжийг хэрхэн яаж олж авах вэ ?: 6 алхам
Танд байгаа бүрэлдэхүүн хэсгүүдийг ашиглан эсэргүүцэл/багтаамжийг хэрхэн яаж олж авах вэ ?: 6 алхам

Видео: Танд байгаа бүрэлдэхүүн хэсгүүдийг ашиглан эсэргүүцэл/багтаамжийг хэрхэн яаж олж авах вэ ?: 6 алхам

Видео: Танд байгаа бүрэлдэхүүн хэсгүүдийг ашиглан эсэргүүцэл/багтаамжийг хэрхэн яаж олж авах вэ ?: 6 алхам
Видео: Как сделать автоматический самодельный инкубатор для яиц, легко, шаг за шагом, дешево и быстро 2024, Арваннэгдүгээр
Anonim
Танд байгаа бүрэлдэхүүн хэсгүүдийг ашиглан эсэргүүцэл/багтаамжийг хэрхэн яаж олж авах вэ!
Танд байгаа бүрэлдэхүүн хэсгүүдийг ашиглан эсэргүүцэл/багтаамжийг хэрхэн яаж олж авах вэ!

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

Танд байхгүй эсвэл байхгүй тодорхой резистор эсвэл конденсатор хэрэгтэй байсан уу? Айх хэрэггүй! Та тодорхой бүрэлдэхүүн хэсгүүдийг ашиглан эсэргүүцэл эсвэл багтаамжийн тодорхой утгыг гаргаж магадгүй юм. Сая сая өөр өөр хослол бүхий олон талт оновчлолын асар том асуудлыг шийдэхийн оронд энэ програмыг ашиглаарай!

Зүгээр л резистор эсвэл конденсаторыг сонгож, зорилтот утгыг оруулна уу, ашиглахыг хүссэн бүрэлдэхүүн хэсгүүдийнхээ тоог оруулна уу, өөрт байгаа бүрэлдэхүүн хэсгүүдийн утгын жагсаалтыг оруулаад тооцоолох дээр дарна уу! Хөтөлбөр нь зорилтот үнэ цэнээ олж авахын тулд ямар бүрэлдэхүүн хэсгүүдийг ашиглах, тэдгээрийг хэрхэн холбохыг нухацтай авч үзэх болно.

Тооцоологчийг туршиж үзэхийн тулд энэ вэб аппликэйшнд зочилно уу.

Эх кодыг үзэхийн тулд энэхүү Github репозиторт зочилно уу.

Энэхүү дизайны хэрэгслийг ашиглах боломжийг сайжруулах талаар санал байвал надад мэдэгдээрэй!

Алхам 1: Арын дэвсгэр

Арын дэвсгэр
Арын дэвсгэр

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

Хамтлагуудын тулалдааны зааварчилгааны төслийн нэг хэсэг болох эрхтнийхээ хэлхээг зохион бүтээхдээ тодорхой давтамжийг олж авахын тулд конденсаторын хамгийн сайн хослолыг гараар тооцоолохыг хичээх хэрэгтэй болсон. Энэ процесс үнэхээр уйтгартай байсан бөгөөд би эцэст нь зүгээр л бууж өгч, ямар ч хэмжээний дуу чимээ гаргадаг конденсаторын хослолыг ашигласан. Одоо энэ вэб програмын тусламжтайгаар би эрхтэнээ тодорхой давтамжтайгаар зохиож, гар дээрх тэмдэглэлд тааруулж чадна! Доорх тэгшитгэлийг тодорхой давтамжийг тооцоолоход ашигладаг бөгөөд бусад зааварчилгааны төсөлд хэлэлцдэг.

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

R1 = 100 kOhm ба R2 = 10 kOhm гэсэн тэгшитгэлийг ашиглан 27.33 nF конденсатор нь A4 тэмдэглэл (440 Гц давтамж) гаргана гэж тооцоолсон. Хөтөлбөрөө ашиглан би өмнө нь хэвтэж байсан конденсаторыг ашиглан үүсгэж болох.001 nF (стандарт конденсаторын хүлцэлээс хамаагүй бага) багтаамжтай багтаамжийн утгыг тооцоолж чадсан. Үр дүн, тохиргоог доор тайлбарлав. Би одоо эрхтэнээ стандарт нотны давтамжид илүү үр дүнтэй, үр дүнтэй тааруулах боломжтой боллоо. Үүнийг эхлүүлэхийн тулд би үүнийг хийсэн болоосой гэж хүсч байна. Миний эрхтэн дээрх миний демо дуу хамаагүй сайн сонсогдох байсан байх.

Хамгийн ойрын утга: 27.329 nF ялгаа: 0.001 nFC конденсаторын тохиргоо: C0 = 0.068 nF || C1 = 30 nF + C2 = 300 nF

Резисторын конденсаторын эквивалент тэгшитгэл

Лавлахын тулд резистор ба конденсаторыг хэлхээнд нэгтгэх эквивалент тэгшитгэлийг доор харуулав.

  • Цуврал резистор (R1 + R2): Req = R1 + R2
  • Зэрэгцээ резистор (R1 || R2): Рек = 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 байсан бол таны бүх утгыг 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 = ""; function 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)) if зорилтот утгыг задлахад алдаа гарлаа {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; би ++; } var newInt = parseFloat (compValsStr); // бүрэлдэхүүн хэсгийн утгын жагсаалтыг задлахад алдаа гарсан тохиолдолд тугийг тохируулна уу (isNaN (newInt)) {errFlag = 1; } compVals = newInt; if (errFlag == 0) {if (document.getElementById ("resRadio"). шалгасан) {эсэргүүцэл (target, numComp, compVals); } if if (document.getElementById ("capRadio"). шалгасан) {конденсатор (зорилтот, numComp, compVals); }} // бүрэлдэхүүн хэсгийн утгын жагсаалтыг задлахад алдаа гарлаа {outputStr = "'Бүрэлдэхүүн хэсгүүдийн утгуудын жагсаалт' оруулгыг шалгахад алдаа гарав!"}} calcOutput.innerHTML = outputStr; resultDisplay.style.display = "блок"; exampleDisplay.style.display = "flex"; // үр дүнгийн цонх руу гүйлгэх.scrollTo (0, exampleDisplay.scrollHeight); } / * Хамгийн сайн эсэргүүцлийн тохиргоог олж, хэвлэдэг // эсэргүүцлийн утгуудын урт var num_res = compVals.length; // (var i = 1; i <= numComp; i ++) {var data = ; resCombination (compVals, num_res, i, 0, data, target); } var unit = document.getElementById ("selected_unit"). утга; // үр дүнг хэвлэх outputStr = "Хамгийн ойрын утга:" + хамгийн ойр_вал.тоФиксэд (3) + "" + нэгж + ""; outputStr + = "Ялгаа:" + хамгийн ойр_диф.тодорхой (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, сам, зорилтот) {// (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 = сам [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, сам, зорилтот); }} / * Хамгийн сайн конденсаторын тохиргоог олж, хэвлэдэг {// багтаамжийн утгуудын урт 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 = "Хамгийн ойрын утга:" + хамгийн ойр_вал.тоФиксэд (3) + "" + нэгж + ""; outputStr + = "Ялгаа:" + хамгийн ойр_диф.тодорхой (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, сам, 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

Зөвлөмж болгож буй: