תוכן עניינים:

כיצד להשיג כל התנגדות/קיבול באמצעות רכיבים שכבר יש לך !: 6 שלבים
כיצד להשיג כל התנגדות/קיבול באמצעות רכיבים שכבר יש לך !: 6 שלבים

וִידֵאוֹ: כיצד להשיג כל התנגדות/קיבול באמצעות רכיבים שכבר יש לך !: 6 שלבים

וִידֵאוֹ: כיצד להשיג כל התנגדות/קיבול באמצעות רכיבים שכבר יש לך !: 6 שלבים
וִידֵאוֹ: Part 3 - The War of the Worlds Audiobook by H. G. Wells (Book 2 - Chs 1-10) 2024, יולי
Anonim
כיצד להשיג כל התנגדות/קיבול באמצעות רכיבים שכבר יש לך!
כיצד להשיג כל התנגדות/קיבול באמצעות רכיבים שכבר יש לך!

זו לא סתם עוד מחשבון התנגדות של סדרה/מקבילה מקבילה! תוכנית זו מחשבת כיצד לשלב נגדים/קבלים שיש לך כרגע כדי להשיג ערך התנגדות/ערך קיבול שאתה צריך.

האם אי פעם היית צריך נגד או קבל ספציפי שאין לך או שאינו קיים? אל תפחד! אתה כנראה יכול להפוך את ערך ההתנגדות או הערך הקיבול הספציפי הזה באמצעות רכיבים שכבר יש לך. במקום לפתור בעיית אופטימיזציה ענקית רב משתנה עם מיליוני שילובים שונים, השתמש בתוכנית זו!

פשוט בחר נגד או קבל, הזן את ערך היעד, הזן את המספר המרבי של הרכיבים בהם תרצה להשתמש, הזן רשימה של ערכי הרכיבים שיש לך ולחץ על חישוב! התוכנית תירק באילו רכיבים להשתמש וכיצד לחבר אותם להשגת ערך היעד שלך.

כדי לנסות את המחשבון, בקר ביישום אינטרנט זה.

כדי לצפות בקוד המקור, בקר במאגר Github זה.

אנא יידע אותי אם יש לך הצעות נוספות לשיפור השימושיות של כלי עיצוב זה!

שלב 1: רקע

רקע כללי
רקע כללי

יישום אינטרנט זה פותח מתוך צורך. יש הרבה מעגלים שונים שאני בונה שדורשים נגד או קבלים ספציפיים מאוד. הרבה פעמים, אין לי נגד או קבל עם ערך ספציפי זה. לפעמים הם אפילו לא יוצרים רכיב בעל ערך ייחודי זה! במקום לוותר או להסתפק במשהו שהוא פחות מאידיאלי, החלטתי לכתוב תוכנית שתסתכל על כל שילוב נגדים אפשרי (כל ערך אפשרי והאם הם בסדרה או במקביל) ולהחזיר את השילוב הטוב ביותר.

כאשר תכננתי את המעגל עבור האיבר שלי כחלק מפרויקט הקרב על הלהקות שלי, הייתי צריך לנסות לחשב ביד את השילוב הטוב ביותר של קבלים כדי להשיג תדר ספציפי. התהליך הזה היה מייגע להפליא ובסופו של דבר פשוט ויתרתי והלכתי עם שילובי קבלים שהניבו כל תדר נשמע. עכשיו עם יישום האינטרנט הזה, אני יכול לעצב את האיבר שלי בתדירות מסוימת ולכוון אותו לתווים במקלדת! המשוואה שלהלן משמשת לחישוב התדירות הספציפית ונדונה בפרויקט 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 nFC תצורת מכשיר: C0 = 0.068 nF || C1 = 30 nF + C2 = 300 nF

משוואות שקילות של קבלים הנגד

לעיון, להלן משוואות השקילות לשילוב נגדים וקבלים במעגל.

  • נגדים בסדרה (R1 + R2): דרישה = R1 + R2
  • נגדים במקביל (R1 || R2): דרישה = 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 ו- target 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 = "בדיקת שגיאה 'קלט מספר רכיבים! "} // else אם אין שגיאה ביעד או ב- numComp אחר אם (! IsNaN (יעד) &&! 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; i ++; } var newInt = parseFloat (compValsStr); // שגיאה בניתוח רשימת ערכי רכיבים, הגדר דגל אם (isNaN (newInt)) {errFlag = 1; } compVals = newInt; if (errFlag == 0) {if (document.getElementById ("resRadio"). מסומן) {resistor (target, numComp, compVals); } אחרת אם (document.getElementById ("capRadio"). מסומן) {קבלים (target, numComp, compVals); }}} // שגיאה בניתוח רשימת ערכי רכיבים אחרת {outputStr = "בדוק שגיאה קלט 'רשימת ערכי רכיבים'!}}} calcOutput.innerHTML = outputStr; resultDisplay.style.display = "חסום"; exampleDisplay.style.display = "flex"; // גלול מטה לתוצאה window.scrollTo (0, exampleDisplay.scrollHeight); } / * מאחזר ומדפיס את תצורת הנגד הטובה ביותר * יעד - ערך התנגדות מטרה * numComp - המספר הכולל של נגדים שמותר להשתמש בהם כדי להשיג val 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 units = document.getElementById ("select_unit"). ערך; // print results outputStr = "הערך הקרוב ביותר:" + הקרוב_val.toFixed (3) + "" + יחידות + ""; outputStr + = "Difference:" + close_diff.toFixed (3) + "" + יחידות + ""; outputStr += "תצורת הנגד:"; for (var i = 0; i <numComp; i ++) {if (i <close.length) {outputStr + = "R" + i + "=" + הקרוב + "" + יחידות + ""; if (i+1 <הכי קרוב.אורך) {if (ser_par_config [i+1]) outputStr+= "||"; else outputStr + = " +"; }} הפסקה אחרת; }} /* מחשבת את השילוב הטוב ביותר של נגדים להשגת ערך יעד. * res - מערך קלט של ערכי הנגד * num_res - גודל מערך הקלט של ערכי הנגד * num_comb - מספר הנגדים המותר * אינדקס - אינדקס המסרק * מסרק - מערך השילוב הנוכחי * היעד - ערך היעד * אין ערך החזרה - מעביר את השילוב הטוב ביותר הנוכחי לערכים גלובליים */ function 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 ++) {// מספר ראשון, פשוט הוסיפו אם (k == 0) calc = מסרק [k]; // אפס פירושו סדרה, הוסף ערכי התנגדות אחרת אם (! ser_par [k]) calc += מסרק [k]; // אחד פירושו מקביל, הפוך מסך ההדדיות אחרת אם (ser_par [k]) calc = (calc*מסרק [k])/(calc+מסרק [k]); } // בדוק אם ההבדל קטן מהקודם הטוב ביותר אם (Math.abs (calc - target) <קרוב_דיף) {// הוא פחות, אז עדכן את הערכים הגלובליים הקרובים ביותר_val = calc; close_diff = Math.abs (calc - יעד); // ברור עד אפס עבור (var k = 0; k <num_comb; k ++) {הקרוב ביותר [k] = 0; } // עדכן את הערך הקרוב ביותר וסדרות/מערכים מקבילים עבור (var k = 0; k <num_comb; k ++) {קרוב [k] = מסרק [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 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 units = document.getElementById ("selected_unit"). ערך; // print results outputStr = "הערך הקרוב ביותר:" + הקרוב_val.toFixed (3) + "" + יחידות + ""; outputStr + = "Difference:" + close_diff.toFixed (3) + "" + יחידות + ""; outputStr += "תצורת קבלים:"; for (var i = 0; i <numComp; i ++) {if (i <close.length) {outputStr + = "C" + i + "=" + הקרוב + "" + יחידות + ""; if (i+1 <הכי קרוב.אורך) {if (ser_par_config [i+1]) outputStr+= "||"; else outputStr + = " +"; }} הפסקה אחרת; }} /* מחשבת את השילוב הטוב ביותר של קבלים להשגת ערך יעד. * כובע - מערך קלט של ערכי קבלים * num_cap - גודל מערך הקלט של ערכי הקבלים * num_comb - מספר הקבלים המותר * אינדקס - אינדקס של מסרק * מסרק - מערך הצירוף הנוכחי * יעד - ערך היעד * אין ערך החזרה - מעביר את השילוב הטוב ביותר הנוכחי לערכים גלובליים */ function 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 = ; // מערך bool המציין סדרתי או מקביל לכל רכיב var calc; // ערך קיבול שווה ערך מחושב // עברו בכל סדרה אפשרית/תצורה מקבילה של השילוב הנוכחי עבור (var j = 0; j k) & 1; } // עשו את החישובים עבור השילוב על סמך שילוב סדרות/מקבילות עבור (var k = 0; k

מוּמלָץ: