جدول المحتويات:

كيف تحقق أي مقاومة / سعة باستخدام مكونات لديك بالفعل: 6 خطوات
كيف تحقق أي مقاومة / سعة باستخدام مكونات لديك بالفعل: 6 خطوات

فيديو: كيف تحقق أي مقاومة / سعة باستخدام مكونات لديك بالفعل: 6 خطوات

فيديو: كيف تحقق أي مقاومة / سعة باستخدام مكونات لديك بالفعل: 6 خطوات
فيديو: لما كنت سمينه بدكن تعرفو كيف نحفت!!؟ 2024, يوليو
Anonim
كيف تحقق أي مقاومة / سعة باستخدام مكونات لديك بالفعل!
كيف تحقق أي مقاومة / سعة باستخدام مكونات لديك بالفعل!

هذه ليست مجرد حاسبة مقاومة مكافئة متسلسلة / موازية أخرى! يحسب هذا البرنامج كيفية الجمع بين المقاومات / المكثفات التي تحتاجها حاليًا لتحقيق المقاومة / قيمة السعة المستهدفة التي تحتاجها.

هل احتجت يومًا إلى مقاوم أو مكثف معين ليس لديك أو غير موجود؟ لا تخف! يمكنك على الأرجح تحديد قيمة المقاومة أو السعة المحددة باستخدام مكونات لديك بالفعل. بدلاً من حل مشكلة تحسين ضخمة متعددة المتغيرات بملايين التركيبات المختلفة ، استخدم هذا البرنامج!

ما عليك سوى تحديد المقاوم أو المكثف ، وإدخال القيمة المستهدفة ، وإدخال الحد الأقصى لعدد المكونات التي ترغب في استخدامها ، وإدخال قائمة بقيم المكونات التي لديك ، والنقر فوق حساب! سيقوم البرنامج بصق المكونات التي يجب استخدامها وكيفية توصيلها لتحقيق القيمة المستهدفة.

لتجربة الآلة الحاسبة ، قم بزيارة تطبيق الويب هذا.

لعرض الكود المصدري ، قم بزيارة مستودع جيثب هذا.

يرجى إعلامي إذا كان لديك أي اقتراحات لتحسين إمكانية استخدام أداة التصميم هذه!

الخطوة 1: الخلفية

خلفية
خلفية

تم تطوير تطبيق الويب هذا بدافع الضرورة. هناك العديد من الدوائر المختلفة التي أقوم بإنشائها والتي تتطلب مقاومة أو مكثفًا محددًا جدًا. في كثير من الأحيان ، ليس لدي مقاومة أو مكثف بهذه القيمة المحددة. في بعض الأحيان لا يصنعون مكونًا بهذه القيمة الفريدة! بدلاً من الاستسلام أو القبول بشيء أقل من مثالي ، قررت أن أكتب برنامجًا للنظر في كل مجموعة ممكنة من المقاومات (كل قيمة ممكنة وما إذا كانت متسلسلة أو متوازية) وإرجاع أفضل تركيبة.

عند تصميم الدائرة لأعضائي كجزء من مشروع Battle of the Bands Instructable الخاص بي ، كان علي أن أحاول تسليم أفضل مجموعة من المكثفات لتحقيق تردد معين. كانت هذه العملية مملة بشكل لا يصدق ، وفي النهاية استسلمت للتو وذهبت مع مجموعات المكثفات التي أنتجت أي كمية من التردد المسموع. الآن باستخدام تطبيق الويب هذا ، يمكنني تصميم أعضائي لتردد معين وضبطه على الملاحظات الموجودة على لوحة المفاتيح! تُستخدم المعادلة أدناه لحساب التردد المحدد وتتم مناقشتها في مشروع Instructables الآخر.

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 nFCapacitor التكوين: C0 = 0.068 nF || C1 = 30 nF + C2 = 300 nF

معادلات تكافؤ مكثف المقاوم

كمرجع ، فيما يلي معادلات التكافؤ للجمع بين المقاومات والمكثفات في الدائرة.

  • المقاومات على التوالي (R1 + R2): Req = R1 + R2
  • المقاومات على التوازي (R1 || R2): Req = 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 الأقرب؛ // أقرب قيمة حتى الآن var الأقرب = 1000000.00 ؛ // فرق val والهدف var الأقرب = ؛ // مصفوفة توضح قيم المكونات var ser_par_config = ؛ // مصفوفة تفصل المسلسل / المتوازي var outputStr = ""؛ function calculatorClick () {// امسح القيم العامة لكل نقرة جديدة أقرب_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 (الهدف)) {outputStr = "تحقق من الخطأ" إدخال القيمة الهدف "!"} // خطأ في تحليل عدد المكونات الأخرى إذا (isNaN (numComp)) {outputStr = "تحقق من الخطأ 'Number of Components' input! "} // else إذا لم يكن هناك خطأ في الهدف أو numComp else if (! 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 ؛ إذا (errFlag == 0) {if (document.getElementById ("resRadio"). محددًا) {المقاوم (الهدف ، numComp ، compVals) ؛ } else if (document.getElementById ("capRadio"). check) {capacitor (target، numComp، compVals)؛ }} // خطأ في تحليل قائمة قيم المكون else {outputStr = "تحقق من الخطأ" إدخال قائمة قيم المكونات! "}} calcOutput.innerHTML = outputStr؛ resultDisplay.style.display = "block" ؛ exampleDisplay.style.display = "flex" ؛ // قم بالتمرير لأسفل إلى نافذة النتائج. } / * يسترجع ويطبع أفضل تكوين للمقاوم * الهدف - قيمة المقاومة المستهدفة * numComp - إجمالي عدد المقاومات المسموح باستخدامها لتحقيق الهدف * compVals - صفيف قيم المقاوم * / وظيفة المقاوم (الهدف ، numComp ، compVals) { // طول قيم المقاومة var num_res = compVals.length ؛ // قم بتشغيل كل عدد ممكن من المكونات لـ (var i = 1؛ i <= numComp؛ i ++) {var data = ؛ إعادة التركيب (compVals، num_res، i، 0، data، target) ؛ } وحدات var = document.getElementById ("selected_unit"). value ؛ // إخراج نتائج الطباعةStr = "أقرب قيمة:" + الأقرب إلى القيمة (3) + "" + الوحدات + "" ؛ outputStr + = "الفرق:" + الأقرب_الفرق.toFixed (3) + "" + الوحدات + "" ؛ outputStr + = "تكوين المقاوم:" ؛ لـ (var i = 0؛ i <numComp؛ i ++) {if (i <الأقرب طول) {outputStr + = "R" + i + "=" + الأقرب + "" + الوحدات + "" ؛ إذا (i + 1 <الأقرب.الطول) {if (ser_par_config [i + 1]) outputStr + = "||" ؛ آخر outputStr + = "+" ؛ }} آخر كسر ؛ }} / * حساب أفضل توليفة من المقاومات لتحقيق القيمة المستهدفة. * الدقة - مصفوفة الإدخال لقيم المقاوم * عدد_العدد - حجم مصفوفة الإدخال لقيم المقاوم * عدد_كومب - عدد المقاومات المسموح بها * الفهرس - فهرس المشط * المشط - مصفوفة المجموعة الحالية * الهدف - القيمة المستهدفة * لا توجد قيمة مرتجعة - لتمرير أفضل تركيبة حالية إلى القيم العامة * / إعادة دمج الوظيفة (res ، num_res ، num_comb ، index ، comb ، target) {// المجموعة الحالية مكتملة إذا (index == num_comb) {var ser_par_size = Math.pow (2 ، num_comb) ؛ // 2 ^ (عدد المكونات) var ser_par = ؛ // مجموعة منطقية تحدد التسلسلي أو المتوازي لكل مكون var calc ؛ // قيمة مقاومة مكافئة محسوبة // خطوة خلال كل تكوين متسلسل / متوازي ممكن للمجموعة الحالية من أجل (var j = 0 ؛ j ك) & 1 ؛ } // قم بإجراء العمليات الحسابية للجمع بناءً على مجموعة متسلسلة / متوازية من أجل (var k = 0؛ k <num_comb؛ k ++) {// الرقم الأول ، فقط أضف if (k == 0) calc = comb [k]؛ // صفر يعني سلسلة ، أضف قيم مقاومة وإلا إذا (! ser_par [k]) calc + = comb [k]؛ // واحد يعني متوازي ، معكوس مجموع المبادلات وإلا إذا (ser_par [k]) calc = (calc * comb [k]) / (calc + comb [k]) ؛ } // تحقق لمعرفة ما إذا كان الاختلاف أقل من الأفضل سابقًا إذا (Math.abs (calc - target) <الأقرب_الفرق) {// هو أقل ، لذا قم بتحديث القيم العامة الأقرب_val = calc؛ close_diff = Math.abs (احسب - الهدف) ؛ // مسح إلى صفر لـ (var k = 0؛ k <num_comb؛ k ++) {الأقرب [k] = 0 ؛ } // تحديث أقرب قيمة & سلسلة / مصفوفات متوازية لـ (var k = 0؛ k <num_comb؛ k ++) {أقرب [k] = comb [k]؛ ser_par_config [k] = ser_par [k] ؛ }}} إرجاع 0؛ } // استدعاء واستبدال الفهرس بشكل متكرر بكل القيم الممكنة لـ (var i = 0؛ i = num_comb-index؛ i ++) {comb [index] = res ؛ إعادة التركيب (الدقة ، العدد ، العدد ، الفهرس + 1 ، المشط ، الهدف) ؛ }} / * يسترجع ويطبع أفضل تكوين للمكثف * الهدف - قيمة السعة المستهدفة * numComp - إجمالي عدد المكثفات المسموح باستخدامها لتحقيق القيمة المستهدفة * compVals - مجموعة قيم المكثف * / مكثف الوظيفة (الهدف ، numComp ، compVals) {// طول قيم السعة var num_cap = compVals.length ؛ // قم بتشغيل كل عدد ممكن من المكونات لـ (var i = 1؛ i <= numComp؛ i ++) {var data = ؛ capCombination (compVals ، num_cap ، i ، 0 ، بيانات ، هدف) ؛ } وحدات var = document.getElementById ("selected_unit"). value ؛ // إخراج نتائج الطباعةStr = "أقرب قيمة:" + الأقرب إلى القيمة (3) + "" + الوحدات + "" ؛ outputStr + = "الفرق:" + الأقرب_الفرق.toFixed (3) + "" + الوحدات + "" ؛ outputStr + = "تكوين المكثف:" ؛ لـ (var i = 0؛ i <numComp؛ i ++) {if (i <الأقرب طول) {outputStr + = "C" + i + "=" + الأقرب + "" + الوحدات + "" ؛ إذا (i + 1 <الأقرب.الطول) {if (ser_par_config [i + 1]) outputStr + = "||" ؛ آخر outputStr + = "+" ؛ }} آخر كسر ؛ }} / * حساب أفضل مجموعة مكثفات لتحقيق القيمة المستهدفة. * cap - مصفوفة الإدخال لقيم المكثف * num_cap - حجم مصفوفة الإدخال لقيم المكثف * num_comb - عدد المكثفات المسموح بها * مؤشر - فهرس المشط * comb - مصفوفة المجموعة الحالية * الهدف - القيمة المستهدفة * لا توجد قيمة مرتجعة - لتمرير أفضل تركيبة حالية إلى القيم العامة * / دالة capCombination (cap، num_cap، num_comb، index، comb، target) {// المجموعة الحالية مكتملة إذا (index == num_comb) {var ser_par_size = Math.pow (2 ، num_comb) ؛ // 2 ^ (عدد المكونات) var ser_par = ؛ // مجموعة منطقية تحدد التسلسلي أو المتوازي لكل مكون var calc ؛ // قيمة السعة المكافئة المحسوبة // خطوة خلال كل تكوين متسلسل / متوازي ممكن لتوليفة التيار من أجل (var j = 0 ؛ j ك) & 1 ؛ } // قم بإجراء العمليات الحسابية للجمع بناءً على مجموعة متسلسلة / متوازية من أجل (var k = 0؛ k

موصى به: