Mục lục:

Làm thế nào để đạt được bất kỳ điện trở / điện dung nào bằng cách sử dụng các thành phần bạn đã có!: 6 bước
Làm thế nào để đạt được bất kỳ điện trở / điện dung nào bằng cách sử dụng các thành phần bạn đã có!: 6 bước

Video: Làm thế nào để đạt được bất kỳ điện trở / điện dung nào bằng cách sử dụng các thành phần bạn đã có!: 6 bước

Video: Làm thế nào để đạt được bất kỳ điện trở / điện dung nào bằng cách sử dụng các thành phần bạn đã có!: 6 bước
Video: đo các loại với 1 cách duy nhất và DỄ NHỚ 2024, Tháng mười một
Anonim
Làm thế nào để đạt được bất kỳ điện trở / điện dung nào bằng cách sử dụng các thành phần bạn đã có!
Làm thế nào để đạt được bất kỳ điện trở / điện dung nào bằng cách sử dụng các thành phần bạn đã có!

Đây không chỉ là một máy tính điện trở tương đương loạt / song song khác! Chương trình này tính toán cách kết hợp các điện trở / tụ điện mà bạn hiện có để đạt được giá trị điện trở / điện dung mục tiêu mà bạn cần.

Bạn đã bao giờ cần một điện trở hoặc tụ điện cụ thể mà bạn không có hoặc không tồn tại chưa? Đừng sợ! Bạn có thể tạo giá trị điện trở hoặc điện dung cụ thể đó bằng cách sử dụng các thành phần bạn đã có. Thay vì giải quyết một bài toán tối ưu hóa đa biến khổng lồ với hàng triệu kết hợp khác nhau, hãy sử dụng chương trình này!

Chỉ cần chọn điện trở hoặc tụ điện, nhập giá trị mục tiêu, nhập số lượng linh kiện tối đa bạn muốn sử dụng, nhập danh sách các giá trị của các thành phần bạn có và nhấp vào tính toán! Chương trình sẽ chỉ ra những thành phần cần sử dụng và cách kết nối chúng để đạt được giá trị mục tiêu của bạn.

Để dùng thử máy tính, hãy truy cập ứng dụng web này.

Để xem mã nguồn, hãy truy cập kho lưu trữ Github này.

Vui lòng cho tôi biết nếu bạn có bất kỳ đề xuất nào để cải thiện hơn nữa khả năng sử dụng của công cụ thiết kế này!

Bước 1: Bối cảnh

Tiểu sử
Tiểu sử

Ứng dụng web này được phát triển không cần thiết. Có nhiều mạch khác nhau mà tôi xây dựng yêu cầu một điện trở hoặc tụ điện rất cụ thể. Rất nhiều lần, tôi không có một điện trở hoặc tụ điện với giá trị cụ thể đó. Đôi khi họ thậm chí không tạo ra một thành phần với giá trị duy nhất đó! Thay vì từ bỏ hoặc giải quyết cho một thứ gì đó kém lý tưởng hơn, tôi quyết định viết một chương trình để xem xét mọi kết hợp có thể có của các điện trở (mọi giá trị có thể và liệu chúng mắc nối tiếp hay song song) và trả về kết hợp tốt nhất.

Khi thiết kế mạch điện cho đàn organ của tôi như một phần của Dự án có thể giảng dạy về các ban nhạc, tôi đã phải cố gắng tính toán bằng tay sự kết hợp tốt nhất của các tụ điện để đạt được một tần số cụ thể. Quá trình này cực kỳ tẻ nhạt và cuối cùng tôi đã từ bỏ và sử dụng các kết hợp tụ điện tạo ra bất kỳ tần số âm thanh nào. Giờ đây với ứng dụng web này, tôi có thể thiết kế đàn organ của mình cho một tần số cụ thể và điều chỉnh nó theo các nốt trên bàn phím! Phương trình dưới đây được sử dụng để tính toán tần suất cụ thể và được thảo luận trong dự án Có thể hướng dẫn khác.

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

Sử dụng phương trình này trong đó R1 = 100 kOhm và R2 = 10 kOhm, tôi đã tính toán rằng một tụ điện 27,33 nF sẽ tạo ra một nốt A4 (tần số 440 Hz). Bằng cách sử dụng chương trình của mình, tôi đã có thể tính toán giá trị điện dung tương đương trong phạm vi 0,001 nF (nhỏ hơn nhiều so với dung sai trên tụ điện tiêu chuẩn) mà tôi có thể tạo ra bằng cách sử dụng các tụ điện mà tôi đã có sẵn. Kết quả đầu ra và cấu hình được mô tả bên dưới. Giờ đây, tôi có thể điều chỉnh đàn organ của mình theo tần số chính xác của các nốt chuẩn một cách hiệu quả và hiệu quả hơn nhiều. Tôi ước tôi đã làm điều này để bắt đầu. Bài hát demo của tôi trên đàn organ có lẽ sẽ nghe hay hơn nhiều.

Giá trị gần nhất: 27,329 nF Chênh lệch: 0,001 n Cấu hình tụ điện: C0 = 0,068 nF || C1 = 30 nF + C2 = 300 nF

Phương trình tương đương tụ điện trở

Để tham khảo, dưới đây là các phương trình tương đương để kết hợp điện trở và tụ điện trong một mạch.

  • Điện trở mắc nối tiếp (R1 + R2): Req = R1 + R2
  • Các điện trở mắc song song (R1 || R2): Req = 1 / (1 / R1 + 1 / R2)
  • Tụ điện mắc nối tiếp (C1 + C2): Ceq = 1 / (1 / C1 + 1 / C2)
  • Tụ điện mắc song song (C1 || C2): Ceq = C1 + C2

Bước 2: Đầu vào

Đầu vào
Đầu vào

Có 4 đầu vào bạn sẽ cần cung cấp:

  1. Cho dù bạn đang tính toán một giá trị cho một điện trở hoặc một tụ điện.
  2. Giá trị điện trở hoặc điện dung mục tiêu và các đơn vị.
  3. Số lượng linh kiện tối đa bạn muốn sử dụng để đạt được giá trị mục tiêu (tức là tôi không muốn sử dụng nhiều hơn 3 điện trở để đạt được giá trị điện trở mục tiêu của mình).
  4. Danh sách các giá trị của điện trở / tụ điện mà bạn hiện có. Các giá trị này phải có cùng đơn vị với giá trị mục tiêu của bạn (nghĩa là nếu giá trị mục tiêu của bạn là 110 nF, thì tất cả các giá trị của bạn phải được cung cấp bằng nF).

Bước 3: Kết quả

Kết quả
Kết quả

Bạn sẽ nhận được 3 đầu ra cho kết quả của mình:

  1. Giá trị gần nhất - giá trị điện trở / điện dung gần nhất mà bạn có thể đạt được với các thông số của mình.
  2. Sự khác biệt - giá trị gần nhất của bạn chênh lệch bao xa so với giá trị mục tiêu.
  3. Cấu hình điện trở / tụ điện - danh sách các giá trị của điện trở / tụ điện sẽ sử dụng và cấu hình của chúng.

Bước 4: Hiểu kết quả của bạn

Hiểu kết quả của bạn
Hiểu kết quả của bạn
Hiểu kết quả của bạn
Hiểu kết quả của bạn

Đầu ra cấu hình sử dụng ký hiệu chuẩn. "+" có nghĩa là các thành phần nằm trong chuỗi và "||" có nghĩa là các thành phần được song song với nhau. Các toán tử có mức độ ưu tiên ngang nhau và được kết hợp từ trái sang phải nghĩa là bạn nhóm các thuật ngữ lại với nhau bắt đầu từ bên trái và di chuyển sang bên phải.

Ví dụ, hãy xem kết quả sau:

Cấu hình điện trở: R0 = 15 Ohms + R1 = 470 Ohms || R2 = 3300 Ohms + R3 = 15000 Ohms

Nếu bạn làm theo các hướng dẫn được thảo luận ở trên, bạn có thể thấy rằng điều này tương đương với phương trình sau và hình ảnh ở trên.

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

Bước 5: Dự án khác

Để biết thêm các dự án khác, hãy truy cập các trang của tôi:

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

Bước 6: Mã nguồn

Để xem mã nguồn, hãy truy cập kho lưu trữ Github này hoặc xem JavaScript bên dưới.

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

/ * kịch bản máy tính r / c * / / * --------------------------------------- ------------------------- * / var near_val; // giá trị gần nhất cho đến thời điểm này var near_diff = 1000000.00; // diff của val và target var gần nhất = ; // mảng chi tiết giá trị của các thành phần var ser_par_config = ; // mảng mô tả chi tiết nối tiếp / song song var outputStr = ""; function CalculatorClick () {// xóa các giá trị toàn cục cho mỗi lần nhấp mới near_val = 0; gần nhất = 1000000,00; gần nhất = ; 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; // lỗi phân tích cú pháp giá trị đích if (isNaN (target)) {outputStr = "Lỗi kiểm tra đầu vào 'Giá trị mục tiêu'!"} // lỗi phân tích cú pháp số thành phần khác if (isNaN (numComp)) {outputStr = "Kiểm tra lỗi Đầu vào 'Number of Components'! "} // else nếu không có lỗi trong target hoặc numComp else if (! IsNaN (target) &&! IsNaN (numComp)) {while (compValsStr.indexOf (", ")! = -1) {var comma = compValsStr.indexOf (","); var newInt = parseFloat (compValsStr.substring (0, dấu phẩy)); // lỗi phân tích cú pháp danh sách giá trị thành phần, đặt cờ if (isNaN (newInt)) {errFlag = 1; nghỉ; } compValsStr = compValsStr.substring (dấu phẩy + 1, compValsStr.length); compVals = newInt; i ++; } var newInt = parseFloat (compValsStr); // lỗi phân tích cú pháp danh sách giá trị thành phần, đặt cờ if (isNaN (newInt)) {errFlag = 1; } compVals = newInt; if (errFlag == 0) {if (document.getElementById ("resRadio"). đã kiểm tra) {return (target, numComp, compVals); } else if (document.getElementById ("capRadio"). đã kiểm tra) {tụ (target, numComp, compVals); }} // lỗi trong phân tích cú pháp danh sách giá trị thành phần else {outputStr = "Kiểm tra lỗi đầu vào 'Danh sách giá trị thành phần'!"}} calcOutput.innerHTML = outputStr; resultDisplay.style.display = "khối"; exampleDisplay.style.display = "flex"; // cuộn xuống kết quả window.scrollTo (0, exampleDisplay.scrollHeight); } / * Truy xuất và in cấu hình điện trở tốt nhất * target - giá trị điện trở mục tiêu * numComp - tổng số điện trở được phép sử dụng để đạt được mục tiêu val * compVals - mảng giá trị điện trở * / hàm điện trở (target, numComp, compVals) { // độ dài của các giá trị kháng var num_res = compVals.length; // chạy qua tất cả số thành phần có thể có for (var i = 1; i <= numComp; i ++) {var data = ; resCombination (compVals, num_res, i, 0, data, target); } var units = document.getElementById ("select_unit"). value; // in kết quả ra outputStr = "Giá trị gần nhất:" + near_val.toFixed (3) + "" + đơn vị + ""; outputStr + = "Sự khác biệt:" + near_diff.toFixed (3) + "" + đơn vị + ""; outputStr + = "Cấu hình điện trở:"; for (var i = 0; i <numComp; i ++) {if (i <near.length) {outputStr + = "R" + i + "=" + gần nhất + "" + đơn vị + ""; if (i + 1 <near.length) {if (ser_par_config [i + 1]) outputStr + = "||"; else outputStr + = "+"; }} khác phá vỡ; }} / * Tính toán sự kết hợp tốt nhất của các điện trở để đạt được giá trị mục tiêu. * res - mảng đầu vào các giá trị điện trở * num_res - kích thước của mảng đầu vào các giá trị điện trở * num_comb - số điện trở được phép * chỉ số - chỉ số của comb * comb - mảng kết hợp hiện tại * target - giá trị đích * Không có giá trị trả về - chuyển kết hợp tốt nhất hiện tại thành giá trị chung * / function resCombination (res, num_res, num_comb, index, comb, target) {// kết hợp hiện tại đã hoàn tất nếu (index == num_comb) {var ser_par_size = Math.pow (2, num_comb); // 2 ^ (số thành phần) var ser_par = ; // mảng bool xác định nối tiếp hoặc song song cho mỗi thành phần var calc; // giá trị điện trở tương đương được tính toán // bước qua mọi cấu hình chuỗi / song song có thể có của kết hợp hiện tại cho (var j = 0; j k) & 1; } // thực hiện các phép tính cho tổ hợp dựa trên tổ hợp chuỗi / song song for (var k = 0; k <num_comb; k ++) {// số đầu tiên, chỉ cần thêm if (k == 0) calc = comb [k]; // zero nghĩa là chuỗi, thêm giá trị điện trở else if (! ser_par [k]) calc + = comb [k]; // một có nghĩa là song song, nghịch đảo của tổng các nghịch đảo else if (ser_par [k]) calc = (calc * comb [k]) / (calc + comb [k]); } // kiểm tra xem sự khác biệt có nhỏ hơn so với giá trị trước đó hay không if (Math.abs (calc - target) <near_diff) {// nó nhỏ hơn, vì vậy hãy cập nhật các giá trị toàn cục near_val = calc; near_diff = Math.abs (calc - target); // xóa thành 0 for (var k = 0; k <num_comb; k ++) {gần nhất [k] = 0; } // cập nhật giá trị gần nhất & dãy / mảng song song for (var k = 0; k <num_comb; k ++) {near [k] = comb [k]; ser_par_config [k] = ser_par [k]; }}} trả về 0; } // gọi đệ quy và thay thế chỉ mục bằng tất cả các giá trị có thể cho (var i = 0; i = num_comb-index; i ++) {comb [index] = res ; resCombination (res, num_res, num_comb, index + 1, comb, target); }} / * Truy xuất và in cấu hình tụ điện tốt nhất * đích - giá trị điện dung mục tiêu * numComp - tổng số tụ điện được phép sử dụng để đạt được mục tiêu val * compVals - mảng giá trị tụ điện * / hàm tụ điện (target, numComp, compVals) {// độ dài của các giá trị điện dung var num_cap = compVals.length; // chạy qua tất cả số thành phần có thể có for (var i = 1; i <= numComp; i ++) {var data = ; capCombination (compVals, num_cap, i, 0, data, target); } var units = document.getElementById ("select_unit"). value; // in kết quả ra outputStr = "Giá trị gần nhất:" + near_val.toFixed (3) + "" + đơn vị + ""; outputStr + = "Sự khác biệt:" + near_diff.toFixed (3) + "" + đơn vị + ""; outputStr + = "Cấu hình tụ điện:"; for (var i = 0; i <numComp; i ++) {if (i <near.length) {outputStr + = "C" + i + "=" + gần nhất + "" + đơn vị + ""; if (i + 1 <near.length) {if (ser_par_config [i + 1]) outputStr + = "||"; else outputStr + = "+"; }} khác phá vỡ; }} / * Tính toán sự kết hợp tốt nhất của các tụ điện để đạt được giá trị mục tiêu. * cap - mảng giá trị đầu vào của tụ điện * num_cap - kích thước của mảng giá trị đầu vào của tụ điện * num_comb - số lượng tụ điện được phép * chỉ số - chỉ số của lược * comb - mảng kết hợp dòng điện * đích - giá trị đích * Không có giá trị trả về - chuyển kết hợp tốt nhất hiện tại thành giá trị chung * / function capCombination (cap, num_cap, num_comb, index, comb, target) {// kết hợp hiện tại đã hoàn tất nếu (index == num_comb) {var ser_par_size = Math.pow (2, num_comb); // 2 ^ (số thành phần) var ser_par = ; // mảng bool xác định nối tiếp hoặc song song cho mỗi thành phần var calc; // giá trị điện dung tương đương được tính toán // bước qua mọi cấu hình nối tiếp / song song có thể có của tổ hợp dòng điện cho (var j = 0; j k) & 1; } // thực hiện các phép tính cho kết hợp dựa trên kết hợp chuỗi / song song for (var k = 0; k

Đề xuất: