Daftar Isi:

Cara Mencapai Resistansi / Kapasitansi Menggunakan Komponen yang Sudah Anda Miliki!: 6 Langkah
Cara Mencapai Resistansi / Kapasitansi Menggunakan Komponen yang Sudah Anda Miliki!: 6 Langkah

Video: Cara Mencapai Resistansi / Kapasitansi Menggunakan Komponen yang Sudah Anda Miliki!: 6 Langkah

Video: Cara Mencapai Resistansi / Kapasitansi Menggunakan Komponen yang Sudah Anda Miliki!: 6 Langkah
Video: Mengenal Komponen Elektronika Part#1-4 (Cuplikan), Belajar elektronika part1-4 2024, November
Anonim
Cara Mencapai Resistansi / Kapasitansi Menggunakan Komponen yang Sudah Anda Miliki!
Cara Mencapai Resistansi / Kapasitansi Menggunakan Komponen yang Sudah Anda Miliki!

Ini bukan sekadar kalkulator resistansi setara seri/paralel! Program ini menghitung bagaimana menggabungkan resistor/kapasitor yang Anda miliki saat ini untuk mencapai nilai resistansi/kapasitansi target yang Anda butuhkan.

Pernahkah Anda membutuhkan resistor atau kapasitor tertentu yang tidak Anda miliki atau tidak ada? Jangan takut! Anda mungkin dapat membuat nilai resistansi atau kapasitansi tertentu menggunakan komponen yang sudah Anda miliki. Alih-alih memecahkan masalah pengoptimalan multivariabel yang sangat besar dengan jutaan kombinasi berbeda, gunakan program ini!

Cukup pilih resistor atau kapasitor, masukkan nilai target, masukkan jumlah maksimum komponen yang ingin Anda gunakan, masukkan daftar nilai komponen yang Anda miliki, dan klik hitung! Program akan mengeluarkan komponen apa yang digunakan dan bagaimana menghubungkannya untuk mencapai nilai target Anda.

Untuk mencoba kalkulator, kunjungi aplikasi web ini.

Untuk melihat kode sumber, kunjungi repositori Github ini.

Tolong beri tahu saya jika Anda memiliki saran untuk lebih meningkatkan kegunaan alat desain ini!

Langkah 1: Latar Belakang

Latar belakang
Latar belakang

Aplikasi web ini dikembangkan karena kebutuhan. Ada banyak rangkaian berbeda yang saya buat yang membutuhkan resistor atau kapasitor yang sangat spesifik. Sering kali, saya tidak memiliki resistor atau kapasitor dengan nilai spesifik itu. Terkadang mereka bahkan tidak membuat komponen dengan nilai unik itu! Alih-alih menyerah atau menerima sesuatu yang kurang ideal, saya memutuskan untuk menulis sebuah program untuk melihat setiap kemungkinan kombinasi resistor (setiap nilai yang mungkin dan apakah mereka seri atau paralel) dan mengembalikan kombinasi terbaik.

Ketika merancang sirkuit untuk organ saya sebagai bagian dari Proyek Instructable Battle of the Bands saya, saya harus mencoba menghitung kombinasi kapasitor terbaik untuk mencapai frekuensi tertentu. Proses ini sangat membosankan dan akhirnya saya menyerah begitu saja dan menggunakan kombinasi kapasitor yang menghasilkan sejumlah frekuensi yang dapat didengar. Sekarang dengan aplikasi web ini, saya dapat mendesain organ saya untuk frekuensi tertentu dan menyetelnya ke nada pada keyboard! Persamaan di bawah ini digunakan untuk menghitung frekuensi spesifik dan dibahas dalam proyek Instructables lainnya.

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

Menggunakan persamaan ini di mana R1 = 100 kOhm dan R2 = 10 kOhm, saya menghitung bahwa kapasitor 27,33 nF akan menghasilkan nada A4 (frekuensi 440 Hz). Dengan menggunakan program saya, saya dapat menghitung nilai kapasitansi setara dalam 0,001 nF (jauh lebih kecil dari toleransi pada kapasitor standar) yang dapat saya buat menggunakan kapasitor yang sudah saya miliki. Output dan konfigurasi yang dihasilkan dijelaskan di bawah ini. Sekarang saya dapat menyetel organ saya dengan lebih efisien dan efektif ke frekuensi nada standar yang tepat. Saya berharap saya telah melakukan ini untuk memulai. Lagu demo saya di organ mungkin akan terdengar jauh lebih baik.

Nilai Terdekat: 27,329 nF Selisih: 0,001 nFC Konfigurasi kapasitor: C0=0,068 nF || C1=30 nF + C2=300 nF

Persamaan Persamaan Kapasitor Resistor

Untuk referensi, di bawah ini adalah persamaan ekivalensi untuk menggabungkan resistor dan kapasitor dalam suatu rangkaian.

  • Resistor seri (R1 + R2): Req = R1 + R2
  • Resistor paralel (R1 || R2): Req = 1 / (1/R1 + 1/R2)
  • Kapasitor seri (C1 + C2): Ceq = 1 / (1/C1 + 1/C2)
  • Kapasitor paralel (C1 || C2): Ceq = C1 + C2

Langkah 2: Masukan

Masukan
Masukan

Ada 4 input yang perlu Anda berikan:

  1. Apakah Anda menghitung nilai resistor atau kapasitor.
  2. Nilai resistansi atau kapasitansi target dan satuannya.
  3. Jumlah maksimum komponen yang ingin Anda gunakan untuk mencapai nilai target (yaitu saya tidak ingin menggunakan lebih dari 3 resistor untuk mencapai nilai resistansi target saya).
  4. Daftar nilai untuk resistor/kapasitor yang Anda miliki saat ini. Nilai-nilai ini harus dalam satuan yang sama dengan nilai target Anda (yaitu jika nilai target Anda adalah 110 nF, semua nilai Anda harus diberikan dalam nF).

Langkah 3: Hasil

Hasil
Hasil

Anda akan mendapatkan 3 output untuk hasil Anda:

  1. Nilai Terdekat - nilai resistansi/kapasitansi terdekat yang dapat Anda capai dengan parameter Anda.
  2. Selisih - seberapa jauh nilai terdekat Anda dari nilai target Anda.
  3. Konfigurasi Resistor/Kapasitor - daftar nilai resistor/kapasitor yang akan digunakan dan konfigurasinya.

Langkah 4: Memahami Hasil Anda

Memahami Hasil Anda
Memahami Hasil Anda
Memahami Hasil Anda
Memahami Hasil Anda

Output konfigurasi menggunakan notasi standar. "+" berarti komponen-komponennya seri dan "||" berarti komponen-komponennya paralel. Operator memiliki prioritas yang sama dan asosiatif kiri-ke-kanan yang berarti Anda mengelompokkan istilah bersama-sama mulai dari kiri dan bergerak ke kanan.

Sebagai contoh, lihat hasil berikut:

Konfigurasi Resistor: R0=15 Ohm + R1=470 Ohm || R2=3300 Ohm + R3=15000 Ohm

Jika Anda mengikuti panduan yang dibahas di atas, Anda dapat melihat bahwa ini setara dengan persamaan dan gambar berikut di atas.

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

Langkah 5: Lebih Banyak Proyek

Untuk proyek lainnya, kunjungi halaman saya:

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

Langkah 6: Kode Sumber

Untuk melihat kode sumber, kunjungi repositori Github ini atau lihat JavaScript di bawah.

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

/* skrip kalkulator r/c */ /* -------------------------------------------------- -------------------------*/ var terdekat_val; // nilai terdekat sejauh ini var terdekat_diff = 1000000.00; // perbedaan val dan target var terdekat = ; // array merinci nilai komponen var ser_par_config = ; // array yang merinci serial/paralel var outputStr = ""; function calculatorClick() { // menghapus nilai global untuk setiap klik baru terdekat_val = 0; terdekat_diff = 1000000.00; terdekat = ; 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 saya = 0; var errFlag = 0; // error dalam mengurai nilai target if (isNaN(target)) { outputStr = "Error check 'Target Value' input! " } // error dalam mengurai jumlah komponen else if (isNaN(numComp)){ outputStr = "Error check Input 'Jumlah Komponen'! " } // else jika tidak ada kesalahan pada target atau numComp else if (!isNaN(target) && !isNaN(numComp)) { while (compValsStr.indexOf(", ") != -1) { var koma = compValsStr.indexOf(", "); var newInt = parseFloat(compValsStr.substring(0, koma)); // kesalahan dalam mengurai daftar nilai komponen, atur flag if (isNaN(newInt)) { errFlag = 1; merusak; } compValsStr = compValsStr.substring(koma+1, compValsStr.length); compVals = newInt; saya++; } var newInt = parseFloat(compValsStr); // kesalahan dalam mengurai daftar nilai komponen, atur flag if (isNaN(newInt)) { errFlag = 1; } compVals = newInt; if (errFlag == 0) { if (document.getElementById("resRadio").checked) { resistor(target, numComp, compVals); } else if (document.getElementById("capRadio").checked) { kapasitor(target, numComp, compVals); } } // kesalahan dalam mengurai daftar nilai komponen else { outputStr = "Kesalahan periksa input 'Daftar Nilai Komponen'!" } } calcOutput.innerHTML = outputStr; resultDisplay.style.display = "blok"; exampleDisplay.style.display = "fleksibel"; // gulir ke bawah ke jendela hasil.scrollTo(0, exampleDisplay.scrollHeight); } /* Mengambil dan mencetak konfigurasi resistor terbaik * target - nilai resistansi target * numComp - jumlah total resistor yang diizinkan untuk digunakan untuk mencapai target val * compVals - array nilai resistor */ function resistor(target, numComp, compVals) { // panjang nilai resistansi var num_res = compVals.length; // jalankan semua kemungkinan jumlah komponen untuk (var i=1; i<=numComp; i++) { var data = ; resCombination(compVals, num_res, i, 0, data, target); } var unit = document.getElementById("selected_unit").value; // print hasil outputStr = "Nilai Terdekat: " + terdekat_val.toFixed(3) + " " + unit + " "; outputStr += "Perbedaan: " + terdekat_diff.toFixed(3) + " " + unit + " "; outputStr += "Konfigurasi Resistor: "; for (var i=0; i<numComp; i++) { if (i<closest.length) { outputStr += "R" + i + "=" + terdekat + " " + unit + " "; if (i+1<panjang terdekat) { if (ser_par_config[i+1]) outputStr += "|| "; lain outputStr += "+ "; } } lain istirahat; } } /* Menghitung kombinasi resistor terbaik untuk mencapai nilai target. * res - array input nilai resistor * num_res - ukuran array input nilai resistor * num_comb - jumlah resistor yang diizinkan * indeks - indeks sisir * sisir - array kombinasi saat ini * target - nilai target * Tidak ada nilai balik - meneruskan kombinasi terbaik saat ini ke nilai global */ function resCombination(res, num_res, num_comb, index, comb, target) { // kombinasi saat ini selesai jika (indeks == num_comb) { var ser_par_size = Math.pow (2, num_comb); // 2^(jumlah komponen) var ser_par = ; // array bool yang menentukan serial atau paralel untuk setiap komponen var calc; // menghitung nilai resistansi ekivalen // melangkah melalui setiap konfigurasi seri/paralel yang mungkin dari kombinasi saat ini untuk (var j=0; j k) & 1; } // lakukan perhitungan untuk kombinasi berdasarkan kombo seri/paralel untuk (var k=0; k<num_comb; k++) { // bilangan pertama, tambahkan saja if (k==0) calc = comb[k]; // nol berarti seri, tambahkan nilai resistansi lain jika (!ser_par[k]) calc += comb[k]; // one berarti paralel, kebalikan dari jumlah kebalikan else if (ser_par[k]) calc = (calc*comb[k])/(calc+comb[k]); } // periksa untuk melihat apakah perbedaannya kurang dari yang terbaik sebelumnya if (Math.abs(calc - target) < terdekat_diff) { // lebih kecil, jadi perbarui nilai global terdekat_val = calc; terdekat_diff = Math.abs(calc - target); // hapus ke nol untuk (var k=0; k<num_comb; k++) { terdekat[k] = 0; } // perbarui nilai terdekat & larik seri/paralel untuk (var k=0; k<num_comb; k++) { terdekat[k] = sisir[k]; ser_par_config[k] = ser_par[k]; } } } kembalikan 0; } // memanggil dan mengganti indeks secara rekursif dengan semua nilai yang mungkin untuk (var i=0; i= num_comb-index; i++) { comb[index] = res; resCombination(res, num_res, num_comb, indeks+1, sisir, target); } } /* Mengambil dan mencetak konfigurasi kapasitor terbaik * target - nilai kapasitansi target * numComp - jumlah total kapasitor yang diizinkan untuk digunakan untuk mencapai target val * compVals - array nilai kapasitor */ function kapasitor(target, numComp, compVals) { // panjang nilai kapasitansi var num_cap = compVals.length; // jalankan semua kemungkinan jumlah komponen untuk (var i=1; i<=numComp; i++) { var data = ; capCombination(compVals, num_cap, i, 0, data, target); } var unit = document.getElementById("selected_unit").value; // print hasil outputStr = "Nilai Terdekat: " + terdekat_val.toFixed(3) + " " + unit + " "; outputStr += "Perbedaan: " + terdekat_diff.toFixed(3) + " " + unit + " "; outputStr += "Konfigurasi Kapasitor: "; for (var i=0; i<numComp; i++) { if (i<closest.length) { outputStr += "C" + i + "=" + terdekat + " " + unit + " "; if (i+1<panjang terdekat) { if (ser_par_config[i+1]) outputStr += "|| "; lain outputStr += "+ "; } } lain istirahat; } } /* Menghitung kombinasi kapasitor terbaik untuk mencapai nilai target. * cap - array input nilai kapasitor * num_cap - ukuran array input nilai kapasitor * num_comb - jumlah kapasitor yang diizinkan * indeks - indeks sisir * sisir - array kombinasi saat ini * target - nilai target * Tidak ada nilai balik - meneruskan kombinasi terbaik saat ini ke nilai global */ function capCombination(cap, num_cap, num_comb, index, comb, target) { // kombinasi saat ini selesai jika (indeks == num_comb) { var ser_par_size = Math.pow (2, num_comb); // 2^(jumlah komponen) var ser_par = ; // array bool yang menentukan serial atau paralel untuk setiap komponen var calc; // menghitung nilai kapasitansi ekivalen // menelusuri setiap konfigurasi seri/paralel yang mungkin dari kombinasi saat ini untuk (var j=0; j k) & 1; } // lakukan perhitungan kombinasi berdasarkan kombo seri/paralel untuk (var k=0; k

Direkomendasikan: