Mundarija:

Sizda mavjud bo'lgan komponentlardan foydalangan holda qarshilikka/sig'imga qanday erishish mumkin: 6 qadam
Sizda mavjud bo'lgan komponentlardan foydalangan holda qarshilikka/sig'imga qanday erishish mumkin: 6 qadam

Video: Sizda mavjud bo'lgan komponentlardan foydalangan holda qarshilikka/sig'imga qanday erishish mumkin: 6 qadam

Video: Sizda mavjud bo'lgan komponentlardan foydalangan holda qarshilikka/sig'imga qanday erishish mumkin: 6 qadam
Video: DOOGEE T20 - yaxshi byudjet planshetini ko'rib chiqish va sinovlari 2024, Noyabr
Anonim
Sizda mavjud bo'lgan komponentlardan foydalanib, qandaydir qarshilikka/sig'imga qanday erishish mumkin!
Sizda mavjud bo'lgan komponentlardan foydalanib, qandaydir qarshilikka/sig'imga qanday erishish mumkin!

Bu boshqa ketma -ket/parallel ekvivalent qarshilik kalkulyatori emas! Ushbu dastur sizga kerak bo'lgan qarshilik/sig'imning maqsadli qiymatiga erishish uchun kerak bo'lgan rezistorlar/kondansatkichlarni qanday birlashtirishni hisoblab chiqadi.

Sizga hech qachon mavjud bo'lmagan yoki yo'q bo'lgan maxsus rezistor yoki kondansatör kerak bo'lganmi? Qo'rqma! Ehtimol, sizda mavjud bo'lgan komponentlar yordamida aniq qarshilik yoki sig'im qiymatini yaratishingiz mumkin. Millionlab turli kombinatsiyalar bilan ulkan ko'p o'zgaruvchan optimallashtirish muammosini hal qilishning o'rniga, ushbu dasturdan foydalaning!

Rezistor yoki kondansatkichni tanlang, maqsadli qiymatni kiriting, ishlatmoqchi bo'lgan komponentlarning maksimal sonini kiriting, komponentlar qiymatlari ro'yxatini kiriting va hisobni bosing! Dastur maqsadli qiymatga erishish uchun qanday komponentlardan foydalanishni va ularni qanday ulashni ko'rsatib beradi.

Kalkulyatorni sinab ko'rish uchun ushbu veb -ilovaga tashrif buyuring.

Manba kodini ko'rish uchun ushbu Github omboriga tashrif buyuring.

Iltimos, ushbu dizayn vositasidan foydalanish imkoniyatlarini yanada yaxshilash bo'yicha takliflaringiz bo'lsa, menga xabar bering!

1 -qadam: Fon

Fon
Fon

Bu veb -ilova zarurat tufayli ishlab chiqilgan. Men quradigan juda ko'p turli xil sxemalar mavjud, ular o'ziga xos rezistor yoki kondansatör talab qiladi. Ko'pincha, menda bu qiymatga ega qarshilik yoki kondansatör yo'q. Ba'zan ular hatto bu noyob qiymatga ega komponentni ham yaratmaydilar! Ideal bo'lmagan narsadan voz kechish yoki o'rnini bosishning o'rniga, men rezistorlarning har qanday kombinatsiyasini (har qanday qiymat va ular ketma -ket yoki parallel bo'ladimi) ko'rib chiqish va eng yaxshi kombinatsiyani qaytarish uchun dastur yozishga qaror qildim.

"Bantlar jangi" ko'rsatma loyihasining bir qismi sifatida mening organim sxemasini loyihalashda, ma'lum chastotaga erishish uchun kondensatorlarning eng yaxshi kombinatsiyasini qo'lda hisoblashga harakat qilishim kerak edi. Bu jarayon nihoyatda zerikarli edi va men oxir -oqibat taslim bo'ldim va har qanday tovushli chastotani ishlab chiqaradigan kondansatör kombinatsiyalaridan voz kechdim. Endi bu veb -ilova yordamida men o'z organimni ma'lum chastotaga moslab, klaviaturadagi yozuvlarga moslashtira olaman! Quyidagi tenglama ma'lum chastotani hisoblash uchun ishlatiladi va boshqa Instructables loyihasida muhokama qilinadi.

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

R1 = 100 kOhm va R2 = 10 kOm bo'lgan bu tenglamadan foydalanib, men 27,33 nF kondansatör A4 yozuvini (chastotasi 440 Gts) ishlab chiqarishini hisobladim. Men o'z dasturimdan foydalanib, men o'zim yotib qolgan kondansatkichlar yordamida yaratishim mumkin bo'lgan.001 nF (standart kondansatordagi tolerantlikdan ancha past) ichida ekvivalent sig'im qiymatini hisoblay oldim. Olingan chiqish va konfiguratsiya quyida tasvirlangan. Men endi o'z organimni standart notalarning aniq chastotalariga ko'ra ancha samarali va samarali sozlashim mumkin. Men buni boshidanoq qilganimda edi. Mening organdagi demo qo'shig'im, ehtimol, ancha yaxshi eshitilgan bo'lardi.

Eng yaqin qiymat: 27.329 nF Farqi: 0.001 nFC Capacitor Konfiguratsiyasi: C0 = 0.068 nF || C1 = 30 nF + C2 = 300 nF

Rezistor kondansatör ekvivalent tenglamalari

Ma'lumot uchun, quyida rezistorlar va kondansatkichlarni kontaktlarning zanglashiga olib keladigan ekvivalentlik tenglamalari keltirilgan.

  • Rezistorlar ketma -ket (R1 + R2): Req = R1 + R2
  • Rezistorlar parallel (R1 || R2): Req = 1/(1/R1 + 1/R2)
  • Kondensatorlar ketma -ket (C1 + C2): Ceq = 1/(1/C1 + 1/C2)
  • Kondensatorlar parallel (C1 || C2): Ceq = C1 + C2

2 -qadam: kirish

Kirishlar
Kirishlar

Siz kiritishingiz kerak bo'lgan 4 ta kirish mavjud:

  1. Rezistor yoki kondansatör uchun qiymatni hisoblayapsizmi.
  2. Maqsadli qarshilik yoki sig'im qiymati va birliklar.
  3. Maqsadli qiymatga erishish uchun foydalanmoqchi bo'lgan komponentlarning maksimal soni (ya'ni, maqsadli qarshilik qiymatiga erishish uchun 3 dan ortiq rezistorni ishlatishni xohlamayman).
  4. Sizda mavjud bo'lgan rezistorlar/kondansatörler uchun qiymatlar ro'yxati. Bu qiymatlar sizning maqsadli qiymatingiz bilan bir xil bo'lishi kerak (ya'ni, agar sizning maqsadli qiymatingiz 110 nF bo'lsa, barcha qiymatlaringiz nFda ko'rsatilishi kerak).

3 -qadam: Natija

Natija
Natija

Sizning natijangiz uchun 3 ta natijaga ega bo'lasiz:

  1. Eng yaqin qiymat - siz parametrlar yordamida erisha olgan eng yaqin qarshilik/sig'im qiymati.
  2. Farq - sizning eng yaqin qiymatingiz maqsadli qiymatdan qanchalik uzoqda edi.
  3. Rezistor/kondansatör konfiguratsiyasi - ishlatiladigan rezistorlar/kondansatörlarning qiymatlari ro'yxati va ularning konfiguratsiyasi.

4 -qadam: Natijangizni tushunish

Sizning natijangizni tushunish
Sizning natijangizni tushunish
Sizning natijangizni tushunish
Sizning natijangizni tushunish

Konfiguratsiya chiqishi standart belgidan foydalanadi. "+" komponentlarning ketma -ketligini bildiradi va "||" komponentlar parallel ekanligini bildiradi. Operatorlar bir xil ustunlikka ega va chapdan o'ngga assotsiativ, ya'ni siz atamalarni chapdan o'ngga siljitasiz.

Masalan, quyidagi natijaga qarang:

Rezistor konfiguratsiyasi: R0 = 15 Ohm + R1 = 470 Ohm || R2 = 3300 Ohm + R3 = 15000 Ohm

Agar siz yuqorida muhokama qilingan ko'rsatmalarga amal qilsangiz, bu yuqoridagi tenglama va tasvirga teng ekanligini ko'rishingiz mumkin.

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

5 -qadam: Boshqa loyihalar

Boshqa loyihalar uchun sahifalarimga tashrif buyuring:

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

6 -qadam: Manba kodi

Manba kodini ko'rish uchun ushbu Github omboriga tashrif buyuring yoki quyida JavaScript -ni ko'ring.

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

/* r/c kalkulyatori skriptlari*//* --------------------------------------- -------------------------*/ var eng yaqin_val; // hozirgacha eng yaqin qiymat var closest_diff = 1000000.00; // val va maqsadning farqi var closest = ; // komponentlar qiymatlarini batafsil tavsiflovchi var ser_par_config = ; // ketma -ket/parallel var detallarini batafsil ko'rsatuvchi qator outputStr = ""; function calculatorClick () {// har bir yangi bosish uchun global qiymatlarni o'chirish closest_val = 0; eng yaqin_diff = 1000000.00; eng yaqin = ; 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; // agar maqsad (isNaN (target)) bo'lsa {targetStr = "" Maqsadli qiymat "kiritilishini tekshirishda xato!"} // boshqa komponentlar sonini ajratishda xato (isNaN (numComp)) {outputStr = "Xato tekshiruvi 'Komponentlar soni kiritish! "} // aks holda, agar maqsadda xato bo'lmasa yoki numComp boshqa bo'lsa (! IsNaN (maqsad) &&! IsNaN (numComp)) {while (compValsStr.indexOf (", ")! = -1) {var vergul = compValsStr.indexOf (","); var newInt = parseFloat (compValsStr.substring (0, vergul)); // komponentlar qiymatlari ro'yxatini tahlil qilishda xato, if (isNaN (newInt)) {errFlag = 1; tanaffus; } compValsStr = compValsStr.substring (vergul+1, compValsStr.length); compVals = newInt; i ++; } var newInt = parseFloat (compValsStr); // komponentlar qiymatlari ro'yxatini tahlil qilishda xato, if (isNaN (newInt)) {errFlag = 1; } compVals = newInt; if (errFlag == 0) {if (document.getElementById ("resRadio"). tekshirilgan) {qarshilik (target, numComp, compVals); } if if (document.getElementById ("capRadio"). tekshirilgan) {kondansatör (target, numComp, compVals); }} // boshqa komponentlar ro'yxatini tahlil qilishda xato {outputStr = "" Komponentlar qiymatlari ro'yxati "ni kiritishda xato!"}} calcOutput.innerHTML = outputStr; resultDisplay.style.display = "blokirovka"; exampleDisplay.style.display = "egilish"; // natija oynasini pastga aylantiring.scrollTo (0, exampleDisplay.scrollHeight); } / * Eng yaxshi qarshilik konfiguratsiyasini oladi va chop etadi * maqsad - maqsadli qarshilik qiymati * numComp - maqsadli val * compVals - qarshilik qiymatlari majmui * / funktsiyali qarshilik (maqsad, numComp, compVals) ga erishish uchun ruxsat berilgan qarshiliklarning umumiy soni { // qarshilik qiymatlarining uzunligi var num_res = compVals.length; // (var i = 1; i <= numComp; i ++) {var data = ; resCombination (compVals, num_res, i, 0, ma'lumotlar, maqsad); } var birliklari = document.getElementById ("selected_unit"). qiymati; // natijalarni chop etish outputStr = "Eng yaqin qiymat:" + closest_val.toFixed (3) + "" + birliklar + ""; outputStr + = "Farqi:" + closest_diff.toFixed (3) + "" + birliklari + ""; outputStr += "Rezistor konfiguratsiyasi:"; uchun (var i = 0; i <numComp; i ++) {if (i <eng yaqin.uzunlik) {outputStr + = "R" + i + "=" + eng yaqin + "" + birliklari + ""; if (i+1 <eng yaqin. uzunlik) {if (ser_par_config [i+1]) outputStr+= "||"; else outputStr + = " +"; }} boshqa tanaffus; }} /* Maqsadli qiymatga erishish uchun rezistorlarning eng yaxshi kombinatsiyasini hisoblab chiqadi. * res - qarshilik qiymatlarining kirish massivi * num_res - qarshilik qiymatlarining kirish massivining o'lchami * num_comb - ruxsat etilgan rezistorlar soni * indeks - taroq indeksi * taroq - joriy kombinatsiya qatori * maqsad - maqsadli qiymat * Qaytish qiymati yo'q - hozirgi eng yaxshi kombinatsiyani global qiymatlarga o'tkazadi */ resCombination (res, num_res, num_comb, index, tarak, maqsad) {// agar indeks == num_comb {var ser_par_size = Math.pow (2, son_kombi); // 2^(komponentlar soni) var ser_par = ; // har bir komponent uchun ketma -ket yoki parallel ko'rsatuvchi bool massivi var calc; // hisoblangan ekvivalent qarshilik qiymati k) & 1; } // kombinatsiya uchun hisob -kitoblarni ketma -ket/parallel kombinatsiyaga asoslangan holda bajaring (var k = 0; k <num_comb; k ++) {// birinchi raqam, faqat agar qo'shing (k == 0) calc = taroq [k]; // nol ketma -ketlikni bildiradi, agar qarshilik qiymatlarini qo'shing, agar (! ser_par [k]) calc += taroq [k]; // biri parallel degan ma'noni anglatadi, aks holda o'zaro yig'indisiga teskari, agar (ser_par [k]) calc = (calc*tarak [k])/(calc+taroq [k]); } // farq avvalgisidan yaxshiroq ekanligini tekshiring, agar (Math.abs (calc - target) <closest_diff) {// u kamroq bo'lsa, global qiymatlarni yangilang closest_val = calc; closest_diff = Math.abs (hisob - maqsad); // nolgacha aniq (var k = 0; k <num_comb; k ++) {eng yaqin [k] = 0; } // eng yaqin qiymat va ketma -ket/parallel massivlarni yangilang (var k = 0; k <num_comb; k ++) {eng yaqin [k] = taroq [k]; ser_par_config [k] = ser_par [k]; }}} qaytarish 0; } // rekursiv ravishda qo'ng'iroq qiling va indeksni barcha mumkin bo'lgan qiymatlar bilan almashtiring (var i = 0; i = num_comb-index; i ++) {comb [index] = res ; resCombination (res, num_res, num_comb, index+1, taroq, maqsad); }} / * Eng yaxshi kondansatör konfiguratsiyasini oladi va chop etadi * maqsad - maqsadli sig'im qiymati * numComp - maqsadli val * compVals - kondansatör qiymatlari majmui * / funktsiyali kondansatör (maqsad, numComp, compVals) {// sig'im qiymatlari uzunligi var num_cap = compVals.length; // (var i = 1; i <= numComp; i ++) uchun barcha mumkin bo'lgan komponentlar sonini ishlating {var data = ; capCombination (compVals, num_cap, i, 0, ma'lumotlar, maqsad); } var birliklari = document.getElementById ("selected_unit"). qiymati; // natijalarni chop etish outputStr = "Eng yaqin qiymat:" + closest_val.toFixed (3) + "" + birliklar + ""; outputStr + = "Farqi:" + closest_diff.toFixed (3) + "" + birliklari + ""; outputStr += "Kondensator konfiguratsiyasi:"; uchun (var i = 0; i <numComp; i ++) {if (i <eng yaqin.uzunlik) {outputStr + = "C" + i + "=" + eng yaqin + "" + birliklari + ""; if (i+1 <yaqin. uzunlik) {if (ser_par_config [i+1]) outputStr+= "||"; else outputStr + = " +"; }} boshqa tanaffus; }} /* Maqsadli qiymatga erishish uchun kondensatorlarning eng yaxshi kombinatsiyasini hisoblab chiqadi. * cap - kondansatör qiymatlarining kirish massivi * num_cap - kondansatör qiymatlarining kirish massivining o'lchami * num_comb - ruxsat berilgan kondansatkichlar soni * indeks - taroq indeksi * taroq - joriy kombinatsiya qatori * maqsad - maqsadli qiymat * Qaytish qiymati yo'q - hozirgi eng yaxshi kombinatsiyani global qiymatlarga o'tkazadi */ function capCombination (cap, num_cap, num_comb, index, tarak, maqsad) {// agar indeks == num_comb {var ser_par_size = Math.pow (2, son_kombi); // 2^(komponentlar soni) var ser_par = ; // har bir komponent uchun ketma -ket yoki parallel ko'rsatuvchi bool massivi var calc; // hisoblangan ekvivalent sig'im qiymati // har bir mumkin bo'lgan ketma -ketlik/joriy kombinatsiyaning parallel konfiguratsiyasi (var j = 0; j k) & 1; } // birikmalar uchun hisoblarni ketma -ket/parallel kombinatsiyaga asoslangan holda bajaring (var k = 0; k

Tavsiya: