جدول المحتويات:
فيديو: كيف تحقق أي مقاومة / سعة باستخدام مكونات لديك بالفعل: 6 خطوات
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
هذه ليست مجرد حاسبة مقاومة مكافئة متسلسلة / موازية أخرى! يحسب هذا البرنامج كيفية الجمع بين المقاومات / المكثفات التي تحتاجها حاليًا لتحقيق المقاومة / قيمة السعة المستهدفة التي تحتاجها.
هل احتجت يومًا إلى مقاوم أو مكثف معين ليس لديك أو غير موجود؟ لا تخف! يمكنك على الأرجح تحديد قيمة المقاومة أو السعة المحددة باستخدام مكونات لديك بالفعل. بدلاً من حل مشكلة تحسين ضخمة متعددة المتغيرات بملايين التركيبات المختلفة ، استخدم هذا البرنامج!
ما عليك سوى تحديد المقاوم أو المكثف ، وإدخال القيمة المستهدفة ، وإدخال الحد الأقصى لعدد المكونات التي ترغب في استخدامها ، وإدخال قائمة بقيم المكونات التي لديك ، والنقر فوق حساب! سيقوم البرنامج بصق المكونات التي يجب استخدامها وكيفية توصيلها لتحقيق القيمة المستهدفة.
لتجربة الآلة الحاسبة ، قم بزيارة تطبيق الويب هذا.
لعرض الكود المصدري ، قم بزيارة مستودع جيثب هذا.
يرجى إعلامي إذا كان لديك أي اقتراحات لتحسين إمكانية استخدام أداة التصميم هذه!
الخطوة 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 مدخلات ستحتاج إلى تقديمها:
- سواء كنت تحسب قيمة لمقاوم أو مكثف.
- المقاومة المستهدفة أو قيمة السعة والوحدات.
- الحد الأقصى لعدد المكونات التي ترغب في استخدامها لتحقيق القيمة المستهدفة (أي لا أرغب في استخدام أكثر من 3 مقاومات لتحقيق قيمة المقاومة المستهدفة).
- قائمة قيم المقاومات / المكثفات التي لديك حاليًا. يجب أن تكون هذه القيم في نفس الوحدات مثل القيمة المستهدفة (على سبيل المثال ، إذا كانت القيمة المستهدفة الخاصة بك هي 110 nF ، يجب تقديم جميع القيم الخاصة بك في nF).
الخطوة 3: النتيجة
ستحصل على 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