Mündəricat:

Əlinizdə olan Komponentlərdən İstifadə edərək Hər hansı Bir Müqavimət/Kapasitansa Necə nail ola bilərsiniz ?: 6 Addım
Əlinizdə olan Komponentlərdən İstifadə edərək Hər hansı Bir Müqavimət/Kapasitansa Necə nail ola bilərsiniz ?: 6 Addım

Video: Əlinizdə olan Komponentlərdən İstifadə edərək Hər hansı Bir Müqavimət/Kapasitansa Necə nail ola bilərsiniz ?: 6 Addım

Video: Əlinizdə olan Komponentlərdən İstifadə edərək Hər hansı Bir Müqavimət/Kapasitansa Necə nail ola bilərsiniz ?: 6 Addım
Video: Qadınlar yataqda nədən razı qalır? (Xanımlar izləməsin) 2024, Noyabr
Anonim
Əlinizdə olan Komponentlərdən İstifadə edərək İstənilən Müqavimətə/Kapasitansa Necə nail ola bilərsiniz!
Əlinizdə olan Komponentlərdən İstifadə edərək İstənilən Müqavimətə/Kapasitansa Necə nail ola bilərsiniz!

Bu başqa bir seriya/paralel ekvivalent müqavimət kalkulyatoru deyil! Bu proqram, ehtiyac duyduğunuz hədəf müqavimət/tutum dəyərinə çatmaq üçün lazım olan rezistorları/kondansatörləri necə birləşdirəcəyinizi hesablayır.

Heç olmadığınız və ya olmayan xüsusi bir rezistora və ya kondansatörə ehtiyacınız olubmu? Qorxma! Yəqin ki, artıq malik olduğunuz komponentlərdən istifadə edərək bu xüsusi müqavimət və ya tutum dəyərini edə bilərsiniz. Milyonlarla fərqli birləşmə ilə nəhəng çox dəyişənli optimallaşdırma problemini həll etmək əvəzinə bu proqramı istifadə edin!

Sadəcə rezistor və ya kondansatör seçin, hədəf dəyərini daxil edin, istifadə etmək istədiyiniz komponentlərin maksimum sayını daxil edin, malik olduğunuz komponentlərin dəyərlərinin siyahısını daxil edin və hesablayın! Proqram, hədəf dəyərinizə çatmaq üçün hansı komponentlərdən istifadə edəcəyinizi və onları necə bağlayacağınızı tüpürəcək.

Kalkulyatoru sınamaq üçün bu veb tətbiqini ziyarət edin.

Mənbə kodunu görmək üçün bu Github deposunu ziyarət edin.

Bu dizayn vasitəsinin istifadəsini daha da yaxşılaşdırmaq üçün təklifləriniz varsa mənə bildirin!

Addım 1: Arxa plan

Fon
Fon

Bu veb tətbiqi ehtiyac üzündən hazırlanmışdır. Çox spesifik bir rezistor və ya kondansatör tələb edən bir çox fərqli sxem var. Çox vaxt bu xüsusi dəyəri olan bir rezistor və ya kondansatörüm yoxdur. Bəzən bu unikal dəyəri olan bir komponent belə yaratmırlar! İdeal olmayan bir şeydən vaz keçmək və ya qərar vermək əvəzinə, mümkün olan hər bir rezistor birləşməsinə baxmaq üçün bir proqram yazmaq qərarına gəldim (mümkün olan hər bir dəyər və bunların ardıcıl və ya paralel olması).

Bantlar Döyüşü Təlim Edilə bilən Layihəmin bir hissəsi olaraq orqanımın sxemini tərtib edərkən, müəyyən bir tezliyə nail olmaq üçün kondansatörlərin ən yaxşı birləşməsini əllə hesablamağa çalışmalı oldum. Bu proses inanılmaz dərəcədə yorucu idi və nəticədə təslim oldum və istənilən miqdarda səsli tezlik istehsal edən kondansatör birləşmələri ilə getdim. İndi bu veb tətbiqi ilə orqanımı müəyyən bir tezlik üçün dizayn edə və klaviaturadakı qeydlərə uyğunlaşdıra bilərəm! Aşağıdakı tənlik xüsusi tezliyi hesablamaq üçün istifadə olunur və digər Instructables layihəsində müzakirə olunur.

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

R1 = 100 kOhm və R2 = 10 kOhm olduğu bu tənliyi istifadə edərək 27.33 nF kondansatörün A4 notu (440 Hz tezliyi) istehsal edəcəyini hesabladım. Proqramı istifadə edərək, artıq yatdığım kondansatörlərdən istifadə edərək yarada biləcəyim.001 nF (standart kondansatörün tolerantlığından çox az) daxilində ekvivalent bir kapasitans dəyərini hesablaya bildim. Yaranan çıxış və konfiqurasiya aşağıda təsvir edilmişdir. İndi orqanımı standart notların dəqiq tezliklərinə daha səmərəli və təsirli şəkildə kökləyə bilirəm. Kaş ki bunu başlamaq üçün edərdim. Organdakı demo mahnım yəqin ki, daha yaxşı səslənərdi.

Ən yaxın dəyər: 27.329 nF Fərq: 0.001 nFC Kapasitör Konfiqurasiyası: C0 = 0.068 nF || C1 = 30 nF + C2 = 300 nF

Rezistor kondansatör ekvivalent tənlikləri

Sened üçün, rezistorları və kondansatörleri bir dövrədə birləşdirmək üçün ekvivalent tənliklərdir.

  • Seriyalı rezistorlar (R1 + R2): Req = R1 + R2
  • Paralel rezistorlar (R1 || R2): Req = 1/(1/R1 + 1/R2)
  • Seriyalı kondansatörler (C1 + C2): Ceq = 1/(1/C1 + 1/C2)
  • Paralel olaraq kondansatörler (C1 || C2): Ceq = C1 + C2

Addım 2: Girişlər

Girişlər
Girişlər

Təmin etməyiniz lazım olan 4 giriş var:

  1. Bir rezistor və ya bir kondansatör üçün bir dəyər hesablayırsınız.
  2. Hədəf müqavimət və ya kapasitans dəyəri və vahidlər.
  3. Hədəf dəyərinə çatmaq üçün istifadə etmək istədiyiniz maksimum komponent sayı (yəni hədəf müqavimət dəyərimə çatmaq üçün 3 -dən çox rezistor istifadə etmək istəməzdim).
  4. Rezistorlar/kondansatörlər üçün dəyərlərin siyahısı. Bu dəyərlər, hədəf dəyərinizlə eyni vahidlərdə olmalıdır (yəni hədəf dəyəriniz 110 nF idi, bütün dəyərləriniz nF -də verilməlidir).

Addım 3: Nəticə

Nəticə
Nəticə

Nəticəniz üçün 3 nəticə əldə edəcəksiniz:

  1. Ən yaxın dəyər - parametrlərinizlə əldə edə biləcəyiniz ən yaxın müqavimət/kapasitans dəyəri.
  2. Fərq - ən yaxın dəyərinizin hədəf dəyərinizdən nə qədər uzaq olması.
  3. Rezistor/Kondansatör Konfiqurasiyası - istifadə ediləcək rezistorların/kondansatörlərin dəyərlərinin siyahısı və onların konfiqurasiyası.

Addım 4: Nəticənizi anlayın

Nəticənizi başa düşmək
Nəticənizi başa düşmək
Nəticənizi başa düşmək
Nəticənizi başa düşmək

Konfiqurasiya çıxışı standart bir işarədən istifadə edir. "+", komponentlərin ardıcıl olduğunu və "||" deməkdir. komponentlərin paralel olması deməkdir. Operatorlar bərabər üstünlüklərə malikdirlər və soldan sağa assosiativdirlər, yəni terminləri soldan başlayaraq sağa hərəkət edirsiniz.

Məsələn, aşağıdakı nəticəyə baxın:

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

Yuxarıda müzakirə olunan qaydalara əməl etsəniz, bunun yuxarıdakı tənliyə və görüntüyə bərabər olduğunu görə bilərsiniz.

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

Addım 5: Daha çox layihə

Daha çox layihə üçün səhifələrimə daxil olun:

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

Addım 6: Mənbə Kodu

Mənbə kodunu görmək üçün bu Github deposunu ziyarət edin və ya aşağıdakı JavaScript -ə baxın.

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

/* r/c kalkulyator skriptləri*//* --------------------------------------- -------------------------*/ var closest_val; // indiyə qədər ən yaxın dəyər var closest_diff = 1000000.00; // val və hədəf fərqi var ən yaxın = ; // komponentlərin dəyərlərini izah edən bir sıra var ser_par_config = ; // serial/paralel detalları izah edən sıra outputStr = ""; function calculatorClick () {// hər yeni klik üçün qlobal dəyərləri təmizləyin closest_val = 0; yaxın_diff = 1000000.00; ən yaxın = ; 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; // əgər (isNaN (hədəf)) olarsa hədəf dəyərinin ayrılmasında səhv {outputStr = "'Hədəf Dəyəri' girişini yoxlayın!"} // başqa komponentlərin sayını təhlil edərkən səhv (isNaN (numComp)) {outputStr = "Xətanın yoxlanılması 'Komponentlərin sayı' girişi! "} // başqa halda hədəfdə heç bir səhv yoxsa numComp başqa olarsa (! İsNaN (hədəf) &&! İsNaN (numComp)) {while (compValsStr.indexOf (", ")! = -1) {var virgül = compValsStr.indexOf (","); var newInt = parseFloat (compValsStr.substring (0, virgül)); // komponent dəyərlərinin siyahısını təhlil edərkən səhv, əgər (isNaN (newInt)) {errFlag = 1; fasilə; } compValsStr = compValsStr.substring (virgül+1, compValsStr.length); compVals = newInt; i ++; } var newInt = parseFloat (compValsStr); // komponent dəyərlərinin siyahısını təhlil edərkən səhv, əgər (isNaN (newInt)) {errFlag = 1; } compVals = newInt; if (errFlag == 0) {if (document.getElementById ("resRadio"). yoxlanılır) {müqavimət (hədəf, numComp, compVals); } else if (document.getElementById ("capRadio"). yoxlanılır) {capacitor (target, numComp, compVals); }} // başqa komponent dəyərləri siyahısını təhlil edərkən səhv {outputStr = "'Komponent Dəyərləri Siyahısı' girişini yoxlayın!}}} calcOutput.innerHTML = outputStr; resultDisplay.style.display = "blok"; exampleDisplay.style.display = "flex"; // nəticə əldə etmək üçün aşağı diyirləyin.scrollTo (0, exampleDisplay.scrollHeight); } / * Ən yaxşı müqavimət konfiqurasiyasını əldə edir və çap edir * hədəf - hədəf müqavimət dəyəri * numComp - hədəf val * compVals - müqavimət dəyərləri dizisi * / funksiya rezistoru (hədəf, numComp, compVals) { // müqavimət dəyərlərinin uzunluğu var num_res = compVals.length; // (var i = 1; i <= numComp; i ++) {var data = ; resCombination (compVals, num_res, i, 0, data, target); } var ədədləri = document.getElementById ("selected_unit"). dəyər; // print results outputStr = "Ən yaxın dəyər:" + closest_val.toFixed (3) + "" + ədəd + ""; outputStr + = "Fərq:" + closest_diff.toFixed (3) + "" + ədəd + ""; outputStr += "Rezistor Konfiqurasiyası:"; for (var i = 0; i <numComp; i ++) {əgər (i <ən yaxın.length) {outputStr + = "R" + i + "=" + ən yaxın + "" + ədəd + ""; if (i+1 <ən yaxın. uzunluq) {if (ser_par_config [i+1]) outputStr+= "||"; başqa çıxışStr + = " +"; }} başqa fasilə; }} /* Hədəf dəyərinə çatmaq üçün ən yaxşı müqavimət birləşməsini hesablayır. * res - müqavimət dəyərlərinin giriş sırası * num_res - müqavimət dəyərlərinin giriş massivinin ölçüsü * num_comb - icazə verilən müqavimətlərin sayı * indeks - tarak indeksi * tarak - cari birləşmə dizisi * hədəf - hədəf dəyər * Dönüş dəyəri yoxdur - cari ən yaxşı birləşməni qlobal dəyərlərə keçir */ funksiyası resCombination (res, num_res, num_comb, index, tarak, target) {// cari birləşmə tamamlanırsa (index == num_comb) {var ser_par_size = Math.pow (2, ədəd_dərgisi); // 2^(komponentlərin sayı) var ser_par = ; // hər bir komponent üçün serial və ya paralel təyin edən bool array var calc; // hesablanmış ekvivalent müqavimət dəyəri // (var j = 0; j k) & 1; } // (var k = 0; k <num_comb; k ++) {// ilk ədəd üçün seriya/paralel kombinə əsaslanan birləşmə üçün hesablamalar aparın, yalnız əlavə edin (k == 0) calc = taraq [k]; // sıfır seriya deməkdir, başqa müqavimət dəyərləri əlavə edin (! ser_par [k]) calc += taraq [k]; // biri paralel deməkdir, əks halda qarşılıqlı cəminin əksinə (ser_par [k]) calc = (calc*tarak [k])/(calc+taraq [k]); } // fərqin əvvəlkindən daha yaxşı olub olmadığını yoxlayın (Math.abs (calc - target) <closest_diff) {// daha azdır, buna görə global dəyərləri yaxınlaşdırın_val = calc; closest_diff = Math.abs (hesablama - hədəf); // sıfıra qədər sil (var k = 0; k <num_comb; k ++) {ən yaxın [k] = 0; } // ən yaxın dəyəri və seriya/paralel diziləri yeniləyin (var k = 0; k <num_comb; k ++) {ən yaxın [k] = taraq [k]; ser_par_config [k] = ser_par [k]; }}} 0 qaytar; } // rekursiv olaraq zəng edin və indeksi bütün mümkün dəyərlərlə əvəz edin (var i = 0; i = num_comb-index; i ++) {comb [index] = res ; resCombination (res, num_res, num_comb, index+1, tarak, hədəf); }} / * Ən yaxşı kondansatör konfiqurasiyasını əldə edir və çap edir * hədəf - hədəf tutum qabiliyyəti dəyəri * numComp - hədəf dəyərinə çatmaq üçün icazə verilən ümumi kondansatör sayı * compVals - kondansatör dəyərləri * / funksional kondansatör (hədəf, numComp, compVals) {// kapasitans dəyərlərinin uzunluğu var num_cap = compVals.length; // (var i = 1; i <= numComp; i ++) {var data = ; capCombination (compVals, num_cap, i, 0, data, target); } var ədədləri = document.getElementById ("selected_unit"). dəyər; // print results outputStr = "Ən yaxın dəyər:" + closest_val.toFixed (3) + "" + ədəd + ""; outputStr + = "Fərq:" + closest_diff.toFixed (3) + "" + ədəd + ""; outputStr += "Kondansatör Konfiqurasiyası:"; for (var i = 0; i <numComp; i ++) {əgər (i <ən yaxın.length) {outputStr + = "C" + i + "=" + ən yaxın + "" + ədəd + ""; if (i+1 <ən yaxın. uzunluq) {if (ser_par_config [i+1]) outputStr+= "||"; başqa çıxışStr + = " +"; }} başqa fasilə; }} /* Hədəf dəyərinə çatmaq üçün kondansatörlərin ən yaxşı birləşməsini hesablayır. * cap - kondansatör dəyərlərinin giriş sırası * num_cap - kondansatör dəyərlərinin giriş massivinin ölçüsü * num_comb - icazə verilən kondansatör sayı * indeks - tarak indeksi * tarak - cari birləşmə dizisi * hədəf - hədəf dəyər * Dönüş dəyəri yoxdur - cari ən yaxşı birləşməni qlobal dəyərlərə keçir */ function capCombination (cap, num_cap, num_comb, index, tarak, target) {// cari birləşmə (indeks == num_comb) {var ser_par_size = Math.pow (2, ədəd_dərgisi); // 2^(komponentlərin sayı) var ser_par = ; // hər bir komponent üçün serial və ya paralel təyin edən bool array var calc; // hesablanmış ekvivalent kapasitans dəyəri // (var j = 0; j k) & 1; } // (var k = 0; k

Tövsiyə: