فهرست مطالب:

چگونه می توان با استفاده از مonلفه هایی که در حال حاضر به هرگونه مقاومت/ظرفیت دست یافته اید!: 6 مرحله
چگونه می توان با استفاده از مonلفه هایی که در حال حاضر به هرگونه مقاومت/ظرفیت دست یافته اید!: 6 مرحله

تصویری: چگونه می توان با استفاده از مonلفه هایی که در حال حاضر به هرگونه مقاومت/ظرفیت دست یافته اید!: 6 مرحله

تصویری: چگونه می توان با استفاده از مonلفه هایی که در حال حاضر به هرگونه مقاومت/ظرفیت دست یافته اید!: 6 مرحله
تصویری: cuidados de suculentas experiencia 2024, نوامبر
Anonim
چگونه می توان با استفاده از قطعاتی که در حال حاضر دارید به هرگونه مقاومت/ظرفیت دست پیدا کنید!
چگونه می توان با استفاده از قطعاتی که در حال حاضر دارید به هرگونه مقاومت/ظرفیت دست پیدا کنید!

این فقط یک سری دیگر/موازی مقاومت معادل دیگر نیست! این برنامه نحوه ترکیب مقاومت ها/خازن هایی را که در حال حاضر برای دستیابی به مقاومت و ظرفیت خازنی مورد نیاز خود محاسبه می کنید ، محاسبه می کند.

آیا تا به حال به مقاومت یا خازنی خاص احتیاج داشته اید که ندارید یا وجود ندارد؟ نترس! احتمالاً می توانید با استفاده از قطعاتی که در حال حاضر دارید ، آن مقاومت یا مقدار خازنی خاص را ایجاد کنید. به جای حل یک مشکل بزرگ بهینه سازی چند متغیره با میلیون ها ترکیب مختلف ، از این برنامه استفاده کنید!

فقط مقاومت یا خازن را انتخاب کنید ، مقدار هدف را وارد کنید ، حداکثر تعداد قطعاتی را که می خواهید استفاده کنید وارد کنید ، لیستی از مقادیر اجزایی که دارید وارد کنید و روی محاسبه کلیک کنید! این برنامه به تفکیک اجزای مورد استفاده و نحوه اتصال آنها برای دستیابی به ارزش مورد نظر خود می پردازد.

برای آزمایش ماشین حساب ، از این برنامه وب دیدن کنید.

برای مشاهده کد منبع ، از این مخزن Github دیدن کنید.

لطفاً اگر پیشنهادی برای بهبود بیشتر قابلیت استفاده از این ابزار طراحی دارید ، به من اطلاع دهید!

مرحله 1: پیش زمینه

زمینه
زمینه

این برنامه وب به دلیل ضرورت توسعه یافته است. مدارهای مختلفی وجود دارد که من نیاز به مقاومت یا خازن خاصی دارم. در بسیاری از مواقع ، من مقاومت یا خازنی با آن مقدار خاص ندارم. گاهی اوقات حتی یک جزء با آن ارزش منحصر به فرد نمی سازند! به جای تسلیم شدن یا رضایت از چیزی که کمتر از ایده آل است ، تصمیم گرفتم برنامه ای بنویسم تا به ترکیب احتمالی مقاومت ها (هر مقدار ممکن و سری یا موازی) نگاه کنم و بهترین ترکیب را بازگردانم.

هنگام طراحی مدار برای اندام من به عنوان بخشی از پروژه آموزشی نبرد گروهها ، مجبور شدم سعی کنم بهترین ترکیب خازن ها را برای دستیابی به فرکانس خاصی محاسبه کنم. این روند فوق العاده خسته کننده بود و من در نهایت فقط تسلیم شدم و با ترکیب خازنی که هر مقدار فرکانس قابل شنیدن را تولید می کرد ، رفتم. اکنون با استفاده از این برنامه وب ، می توانم اندام خود را برای یک فرکانس خاص طراحی کنم و آن را با یادداشت های روی صفحه کلید تنظیم کنم! معادله زیر برای محاسبه فرکانس خاص مورد استفاده قرار می گیرد و در پروژه Instructables دیگر مورد بحث قرار گرفته است.

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

با استفاده از این معادله که R1 = 100 کیلو اهم و R2 = 10 کیلو اهم است ، من محاسبه کردم که یک خازن 27.33 nF یک نت A4 (فرکانس 440 هرتز) تولید می کند. با استفاده از برنامه خود ، من توانستم مقدار خازنی معادل در.001 nF (بسیار کمتر از تلرانس در یک خازن استاندارد) را که می توانم با استفاده از خازن هایی که قبلاً در اطراف آنها قرار داشتم ایجاد کنم ، محاسبه کنم. خروجی و پیکربندی حاصله در زیر شرح داده شده است. اکنون می توانم اندام خود را بسیار کارآمدتر و م effectivelyثرتر با فرکانس دقیق نت های استاندارد تنظیم کنم. ای کاش این کار را برای شروع انجام می دادم. آهنگ نمایشی من روی ارگ احتمالاً بسیار بهتر به نظر می رسید.

نزدیکترین مقدار: 27.329 nF تفاوت: 0.001 nFC پیکربندی خازن: 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. حداکثر تعداد م componentsلفه هایی که می خواهید برای دستیابی به مقدار مورد نظر استفاده کنید (یعنی من مایل نیستم از بیش از 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 دیدن کنید یا جاوا اسکریپت زیر را ببینید.

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

/* r/c ماشین حساب برنامه نویسی*//* --------------------------------------- -------------------------*/ var closeest_val؛ // نزدیکترین مقدار تا کنون var closeest_diff = 1000000.00؛ // تفاوت val و target var closeest = ؛ // مقادیر جزئیات آرایه اجزای var ser_par_config = ؛ // آرایه با جزئیات سریال/موازی var outputStr = ""؛ تابع calculatorClick () {// پاک کردن مقادیر جهانی برای هر کلیک جدید closeest_val = 0؛ closeest_diff = 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؛ // خطا در تجزیه مقدار هدف if (isNaN (target)) {outputStr = "خطا در ورودی" Target Value "بررسی شود!"} // خطا در تجزیه تعداد اجزای دیگر if (isNaN (numComp)) {outputStr = "بررسی خطا 'تعداد اجزای ورودی!' {var کاما = compValsStr.indexOf ("،") ؛ var newInt = parseFloat (compValsStr.substring (0 ، کاما)) ؛ // خطا در تجزیه لیست ارزش اجزا ، تعیین پرچم if (isNaN (newInt)) {errFlag = 1؛ زنگ تفريح؛ } compValsStr = compValsStr.substring (کاما +1 ، compValsStr.length) ؛ compVals = newInt؛ من ++ ؛ } var newInt = parseFloat (compValsStr)؛ // خطا در تجزیه لیست ارزش اجزا ، تعیین پرچم if (isNaN (newInt)) {errFlag = 1؛ } compVals = newInt؛ if (errFlag == 0) {if (document.getElementById ("resRadio"). علامت زده شده) {resistor (target، numComp، compVals) ؛ } else if (document.getElementById ("capRadio"). بررسی شده) {capacitor (target، numComp، compVals)؛ }} // خطا در تجزیه لیست ارزش جزء دیگر {outputStr = "خطا در" ورودی لیست مقادیر قطعه "بررسی شود!"}} calcOutput.innerHTML = outputStr؛ resultDisplay.style.display = "مسدود"؛ exampleDisplay.style.display = "flex"؛ // پایین بروید تا نتیجه window.scrollTo (0 ، exampleDisplay.scrollHeight) ؛ } / * بازیابی و چاپ بهترین پیکربندی مقاومت * هدف - مقدار مقاومت هدف * numComp - تعداد کل مقاومت هایی که می توان برای دستیابی به مقصد val * compVals استفاده کرد - آرایه مقادیر مقاومت * / مقاومت مقاومت (target، numComp، compVals) { // طول مقادیر مقاومت var num_res = compVals.length؛ // تمام اجزای ممکن برای (var i = 1؛ i <= numComp؛ i ++) {var data = ؛ resCombination (compVals ، num_res ، i ، 0 ، data ، target) ؛ } واحدهای var = document.getElementById ("واحد_انتخاب شده"). ارزش ؛ // print results outputStr = "Closest Value:" + closeest_val.to ثابت (3) + "" + واحد + ""؛ outputStr + = "Difference:" + closeest_diff.to ثابت (3) + "" + واحدها + ""؛ outputStr += "پیکربندی مقاومت:"؛ برای (var i = 0؛ i <numComp؛ i ++) {if (i <close.length) {outputStr + = "R" + i + "=" + نزدیکترین + "" + واحدها + ""؛ if (i+1 <close.length) {if (ser_par_config [i+1]) outputStr+= "||" ؛ else outputStr + = " +"؛ }} else break؛ }} /* بهترین ترکیب مقاومتها را برای دستیابی به مقدار هدف محاسبه می کند. * res - آرایه ورودی مقادیر مقاومت * num_res - اندازه آرایه ورودی مقادیر مقاومت * num_comb - تعداد مقاومت مجاز * شاخص - شاخص شانه * شانه - آرایه ترکیب فعلی * هدف - مقدار هدف * بدون مقدار بازگشت - بهترین ترکیب فعلی را به مقادیر جهانی منتقل می کند */ تابع resCombination (res، num_res، num_comb، index، comb، target) {// ترکیب فعلی در صورت کامل بودن (index == num_comb) {var ser_par_size = Math.pow (2 ، num_comb) ؛ // 2^(تعداد اجزا) var ser_par = ؛ // آرایه bool که سریال یا موازی برای هر جزء var calc را مشخص می کند. // مقدار مقاومت معادل محاسبه شده // در هر سری ممکن/پیکربندی موازی ترکیب فعلی برای (var j = 0 ؛ j k) & 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) <closeest_diff) {// کمتر است ، بنابراین مقادیر جهانی closeest_val = calc را به روز کنید ؛ closeest_diff = Math.abs (calc - target)؛ // برای صفر برای (var k = 0؛ k <num_comb؛ k ++) {closeest [k] = 0؛ } // آرایه های نزدیکترین مقدار و سری/موازی را برای (var k = 0؛ k <num_comb؛ k ++) {closeest [k] = comb [k]؛ ser_par_config [k] = ser_par [k]؛ }}} بازگشت 0؛ } // به صورت بازگشتی شاخص را با همه مقادیر ممکن برای (var i = 0 ؛ i = num_comb-index ؛ i ++) {comb [index] = res ؛ resCombination (res ، num_res ، num_comb ، index+1 ، شانه ، هدف) ؛ }} / * بازیابی و چاپ بهترین پیکربندی خازن * هدف - مقدار خازن هدف * numComp - تعداد کل خازنهایی که برای دستیابی به مقصد val * compVals - آرایه مقادیر خازن * / عملکرد خازن (target ، numComp ، compVals) قابل بازیابی و چاپ است {// طول مقادیر خازنی var num_cap = compVals.length؛ // تمام اجزای ممکن برای (var i = 1؛ i <= numComp؛ i ++) {var data = ؛ capCombination (compVals ، num_cap ، i ، 0 ، data ، target) ؛ } واحدهای var = document.getElementById ("واحد_انتخاب شده"). ارزش ؛ // print results outputStr = "Closest Value:" + closeest_val.to ثابت (3) + "" + واحد + ""؛ outputStr + = "Difference:" + closeest_diff.to ثابت (3) + "" + واحدها + ""؛ outputStr += "پیکربندی خازن:"؛ برای (var i = 0؛ i <numComp؛ i ++) {if (i <close.length) {outputStr + = "C" + i + "=" + نزدیکترین + "" + واحدها + ""؛ if (i+1 <close.length) {if (ser_par_config [i+1]) outputStr+= "||" ؛ else outputStr + = " +"؛ }} else break؛ }} /* بهترین ترکیب خازن ها را برای دستیابی به مقدار هدف محاسبه می کند. * cap - آرایه ورودی مقادیر خازن * num_cap - اندازه آرایه ورودی مقادیر خازن * num_comb - تعداد خازن های مجاز * فهرست - شاخص شانه * شانه - آرایه ترکیب فعلی * هدف - مقدار هدف * بدون مقدار برگشتی - بهترین ترکیب فعلی را به مقادیر جهانی منتقل می کند */ cap cap ترکیب (cap ، num_cap ، num_comb ، index ، comb ، target) {// ترکیب فعلی در صورت کامل بودن (index == num_comb) {var ser_par_size = Math.pow (2 ، num_comb) ؛ // 2^(تعداد اجزا) var ser_par = ؛ // آرایه bool که سریال یا موازی برای هر جزء var calc را مشخص می کند. // مقدار خازن معادل محاسبه شده/از طریق هر سری ممکن/پیکربندی موازی ترکیب فعلی برای (var j = 0؛ j k) & 1؛ } // محاسبه ترکیب بر اساس ترکیب/ترکیب موازی برای (var k = 0؛ k

توصیه شده: