סולם שקילה דיגיטלי באמצעות תא עומס וארדואינו

נסה את הכלי שלנו לביטול בעיות





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

פוסט זה עוסק בשיטות מדידה ומשקל למדידה, ויישום השיטות במעגל שקילה מבוסס ארדוינו.



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

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



מהו משקל?

משקל הוא הכוח המופעל על מטוס. כמות הכוח המופעלת פרופורציונלית ישירות למסה של אובייקט, מה שאומר שמסה של האובייקט גבוהה יותר, כך הכוח שמופעל גבוה יותר.

מסה היא כמות החומר הפיזי הקיים באובייקט.

המשקל תלוי בגורם אחד נוסף: כוח המשיכה.

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

עכשיו אתה יודע מהו משקל ומה הגורמים שהופכים אובייקט לכבד.

מהו מד הזן:

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

איור של מד הזן:

חיישן מד זנים

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

כשאנחנו מרימים משקל או כוח על פני השטח הוא מתעוות וגם מד המתח מתעוות. העיוות של מד המתח גורם לשינוי ההתנגדות החשמלית של רדיד המתכת.

כעת שינוי מד המתח בהתנגדות הוא ביחס ישר למשקל או לכוח המופעל על פני השטח.

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

בואו לחקור מהו גשר ויטסטון בקצרה.

הבנת גשר וויטסטון:

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

אבן חיטה.

איור של מעגל גשר וויטסטון:

מעגל גשר וויטסטון

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

באמצעות גשר אבן חיטה נוכל למדוד התנגדות בטווח של מילי אוהם.

גשר אבן החיטה מורכב מ -4 נגדים, מתוך הארבעה, 3 ידועים בהתנגדות ואחד אינו התנגדות לא ידוע.

הפרש הפוטנציאל (מתח) מוחל על הנקודות 'A' ו- 'C' ומנקודות 'B' ו- 'D' מחובר מד מתח.

אם כל הנגדים שווים, לא יזרם זרם בנקודות 'B' ו- 'D' ומד המתח יקרא אפס. זה נקרא גשר מאוזן.

אם התנגדות הנגד שונה משלושת הנגדים האחרים, תהיה זרימת מתח בין הנקודות 'B' ו- 'D' ומד המתח יקרא ערך כלשהו פרופורציונאלי להתנגדות לא ידועה. זה נקרא גשר לא מאוזן.

כאן ההתנגדות הלא ידועה היא מד המתח, כאשר ההתנגדות משתנה, היא משקפת על מד המתח.

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

עכשיו בואו נדון כיצד הטמפרטורה משפיעה על ביצועי מד המתח.

השפעות טמפרטורה על מד המתח:

מד המתח רגיש לטמפרטורה והוא יכול להתעסק בקריאות משקל / כוח בפועל. כשיש שינוי בטמפרטורת הסביבה, רדיד המתכת נתון להרחבת מתכת, מה שמשפיע ישירות על ההתנגדות.

אנו יכולים לבטל את אפקט הטמפרטורה באמצעות גשר וויטסטון. בואו נראה כיצד נוכל לפצות את הטמפרטורה באמצעות גשר וויטסטון.

פיצוי טמפרטורה:

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

מהו תא עומס?

תא עומס הוא פרופיל אלומיניום עם מד מתח המתחבר לארבעה צדדים בתצורת גשר ויטסטון.

איור של תא עומס:

טען מכשיר תא

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

יש לו משקל מרבי המצוין בגליון הנתונים או בגופו, העולה על המפרט עלול לפגוע בתא העומס.

תאי גשר מלאים מורכבים מארבעה מסופים, כלומר E +, E-, שהם חוטי עירור שדרכם מוחל מתח האספקה. שני החוטים האחרים הם S + ו- S- שהם חוטי אות, מהם נמדד המתח.

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

מגבר תא עומס HX711:

איור של מודול מגבר תא עומס HX711:

מגבר תא עומס HX711

מגבר תאי העומס מבוסס על IC HX711 שהוא ממיר אנלוגי לדיגיטלי 24 סיביות שתוכנן במיוחד למדידת משקל. יש לו רווחים שונים הניתנים לבחירה 32, 64 ו- 128 והוא פועל על 2.6 עד 5.5 V.
לוח פריצה זה מסייע בזיהוי וריאציה זעירה בתא העומס. מודול זה מחייב את ספריית HX711.h כדי לעבוד איתו

ארדואינו או כל מיקרו-בקרים אחרים.

תא העומס יחובר למודול HX711 והמודול ינותק לממשק עם Arduino. צריך לפתח את מעגל מדידת המשקל באופן זה.

לסיכום, עכשיו אתה יודע מהו מד מתח, מהו גשר וויטסטון, השפעות הטמפרטורה על מד המתח, פיצוי טמפרטורה ומהו מגבר תא עומס.

הבנו באופן מקיף את החלק התיאורטי של תכנון משקל השקילה מהדיון לעיל, בואו נראה כיצד תא לואס עשוי לשמש לייצור מכונת משקולות פרקטית באמצעות ארדואינו.

תכנון מכונת שקילה דיגיטלית באמצעות ארדואינו

בדיונים הבאים נלמד כיצד לבנות מכונת משקל דיגיטלית באמצעות ארדואינו שיכולה למדוד משקלים מכמה גרם עד 40 ק'ג (תלוי במפרט תא העומס שלך) בדיוק סביר. נלמד על סיווג של תאי עומס בכיתה מדויקת ונכייל את המעגל המוצע ונשלים את מכונת סולם המשקל.

הערה: ייתכן שמעגל זה אינו תואם את הסטנדרטים הנדרשים ליישום מסחרי.

מכונות בקנה מידה למשקל משמשות בזנים שונים של עסקאות ומחקר שנע בין מיליגרם למספר טונות. הסולם המקסימלי של מכונת המשקל המוצעת תלוי במפרט תא העומס שלך. ישנם טווחים בין 500 גרם, 1 ק'ג, 5 ק'ג, 10 ק'ג, 20 ק'ג ו- 40 ק'ג וכו '.

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

סיווג מחלקת דיוק תאי עומס:

מחלקות הדיוק השונות מוגדרות עבור סוגים שונים של יישומים. הסיווג שלהלן הוא מהדיוק הנמוך ביותר לטווח הדיוק הגבוה ביותר.

תאי העומס עם דיוק נמוך יותר (אך מדויק למדי) מסווגים כ- D1, C1 ו- C2. זה מספיק לפרויקט זה. תאי עומס אלה משמשים למדידת משקל של חול, מלט או מים.

תא עומס בכיתה C3 משמש לאבטחת איכות כגון בדיקת משקל מיסבי כדור, חלקי קונסטרוקציית מכונות וכו '.

C4, C5, C6 הם הטובים ביותר ברמת הדיוק בכיתה, ציונים אלה של תאי עומס משמשים למדידה בגרמים עד מיקרוגרם. שיעורי ציון אלה משמשים בסולמות דלפקים בחנות, ניטור ייצור בקנה מידה גדול, אריזת מזון ושימוש במעבדה וכו '.

עכשיו בואו נצלול לפרטים טכניים של הפרויקט.

תרשים מעגל:

חיבור תא עומס HX711 לארדואינו ותא עומס.

חיבור תא עומס HX711 לארדואינו ותא עומס.

הפרויקט מורכב מלוח מגבר תאי עומס מסוג Arduino, תא עומס ו- HX711 ומחשב. ניתן לפקח על הפלט בצג הסידורי של Arduino IDE.

המוח של הפרויקט הוא כמו תמיד הארדואינו, אתה יכול להשתמש בכל מודל לוח ארדואינו. HX711 הוא ADC 24 סיביות, אשר יכול למצוא כיפוף זעיר ביותר בגלל משקל על תא העומס. הוא יכול לפעול בין 2.7 וולט ל -5 וולט. הכוח מסופק מלוח Arduino.

בתא העומס יש בדרך כלל ארבעה חוטים, שהם הפלט ממד המתח המוגדר בגשר וויטסטון.

החוט האדום הוא E +, החוט השחור הוא E-, החוט הירוק הוא A והחוט הלבן הוא A +. חלק ממודולי HX711 מציינים את שם מסופי תא העומס וחלקם מודולי HX711 מציינים את צבעי החוטים, מודל כזה מתואר בתרשים המעגל.

סיכת DATA של HX711 מחוברת לסיכה מס '3 של ארדואינו וסיכת שעון של HX711 מחוברת לסיכה מס' 2 של ארדואינו.

כיצד להתקין את תא העומס:

כיצד להתקין תא מטען עם

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

ניתן להשתמש בעץ דק או בפלטה דקה להחזקת משקל המדידה כפי שמודגם לעיל.

לכן כאשר אתה שם משקל, תא העומס מתכופף כך גם מד המתח ומשנה את התנגדותו שנמדדת על ידי מודול HX711 ומוזנת לארדואינו.

לאחר השלמת הגדרת החומרה, בואו נטען את הקוד ונכייל.

כיול המעגל:

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

גורם הכיול קובע את דיוק מדידת המשקל.

הורד את ספריית HX711 כאן: github.com/bogde/HX711

כיול קוד תוכנית:

//-------------------- --------------------//
#include
const int out = 3
const int clck = 2
HX711 scale(out, clck)
float CalibrationFactor = -96550
char var
void setup()
{
Serial.begin(9600)
Serial.println('------------- Weight Scale Calibration --------------')
Serial.println('Press Q,W,E,R or q,w,e,r to increase calibration factor by 10,100,1000,10000 respectively')
Serial.println('Press A,S,D,F or a,s,d,f to decrease calibration factor by 10,100,1000,10000 respectively')
Serial.println('Press 'T' or 't' for tare')
scale.set_scale()
scale.tare()
long zero_factor = scale.read_average()
Serial.print('Zero factor: ')
Serial.println(zero_factor)
}
void loop()
{
scale.set_scale(CalibrationFactor)
Serial.print('Reading: ')
Serial.print(scale.get_units(), 3)
Serial.println(' Kilogram')
Serial.print('Calibration Factor is: ')
Serial.println(CalibrationFactor)
Serial.println('--------------------------------------------')
if (Serial.available())
{
var = Serial.read()
if (var == 'q')
{
CalibrationFactor = CalibrationFactor + 10
}
else if (var == 'a')
{
CalibrationFactor = CalibrationFactor - 10
}
else if (var == 'w')
{
CalibrationFactor = CalibrationFactor + 100
}
else if (var == 's')
{
CalibrationFactor = CalibrationFactor - 100
}
else if (var == 'e')
{
CalibrationFactor = CalibrationFactor + 1000
}
else if (var == 'd')
{
CalibrationFactor = CalibrationFactor - 1000
}
else if (var == 'r')
{
CalibrationFactor = CalibrationFactor + 10000
}
else if (var == 'f')
{
CalibrationFactor = CalibrationFactor - 10000
}
else if (var == 'Q')
{
CalibrationFactor = CalibrationFactor + 10
}
else if (var == 'A')
{
CalibrationFactor = CalibrationFactor - 10
}
else if (var == 'W')
{
CalibrationFactor = CalibrationFactor + 100
}
else if (var == 'S')
{
CalibrationFactor = CalibrationFactor - 100
}
else if (var == 'E')
{
CalibrationFactor = CalibrationFactor + 1000
}
else if (var == 'D')
{
CalibrationFactor = CalibrationFactor - 1000
}
else if (var == 'R')
{
CalibrationFactor = CalibrationFactor + 10000
}
else if (var == 'F')
{
CalibrationFactor = CalibrationFactor - 10000
}
else if (var == 't')
{
scale.tare()
}
else if (var == 'T')
{
scale.tare()
}
}
}
//-------------------- --------------------//

כיצד לכייל:

  • עם הגדרת החומרה שהושלמה העלה את הקוד לעיל.
  • הסר את הלוח הדק או העץ המשמש לאחיזת המשקל כולל שני הברגים (יש לקבע את הצד השני של תא העומס לבסיס)
  • פתח את הצג הסידורי.
  • הנח משקל ידוע על תא העומס ישירות, 100 גרם (נניח).
  • ללחוץ Q, W, E, R. להגדיל את גורם הכיול ב- 10,100,1000,10000 בהתאמה.
  • ללחוץ A, S, D, F כדי להקטין את גורם הכיול ב- 10,100,1000,10000 בהתאמה.
  • לחץ על 'Enter' לאחר כל הגדלה או הקטנה של גורם הכיול.
  • הגדל או הקטן את גורם הכיול עד להופעת המשקל הנכון של חומר המשקל הידוע.
  • פונקציית הטרה היא להגדיר את סולם המשקל לאפס, זה שימושי כאשר רוצים למדוד משקל מים (נניח) ללא משקל הקערה. מניחים תחילה את הקערה, לוחצים על טרה ויוצקים את המים.
  • שימו לב לגורם הכיול ורשמו אותו לאחר הופעת משקל הידע.

עכשיו זה יכול למדוד משקלים לא ידועים.

קוד תכנית למדידת משקל:

//---------------- ----------------//
#include
const int out = 3
const int clck = 2
HX711 scale(out, clck)
float CalibrationFactor = -12000 // Replace -12000 the calibration factor.
void setup()
{
Serial.begin(9600)
Serial.println('Press 'T' or 't' to tare')
scale.set_scale(CalibrationFactor)
scale.tare()
}
void loop()
{
Serial.print('Weight: ')
Serial.print(scale.get_units(), 3)
Serial.println(' Kilogram')
if (Serial.available())
{
char var = Serial.read()
if (var == 't')
{
scale.tare()
}
if (var == 'T')
{
scale.tare()
}
}
}
//---------------- ----------------//

float CalibrationFactor = -12000

החלף את -12000 בגורם הכיול שמצאת. זה יכול להיות מספר שלילי או מספר חיובי.

העלה את הקוד שלעיל עם הגדרת החומרה המלאה שלך ומכונת סולם המשקל שלך מוכנה.

מכונת קנה מידה במשקל באמצעות צג LCD

המאמר לעיל הסביר מערכת קנה מידה שקילה מבוססת Arduino באמצעות המחשב האישי שלך, בסעיף הבא ננסה לבנות גרסה מעשית של מכונת קנה מידה במשקל על ידי הוספת צג LCD בגודל 16x2, כך שלא נהיה תלויים במחשב בזמן המדידה משקולות. בהודעה זו מוצעות שתי גרסאות, אחת עם 'I2C' 16 x 2 LCD ואחת ללא 'I2C' 16 x 2 LCD תצוגה.

כאן ניתנות שתי אפשרויות כך שהקוראים יוכלו לבחור את העיצוב בהתאם לנוח שלהם. ההבדל העיקרי בין השניים הוא חיבורי חוטים עם מודול מתאם I2C רק 4 חוטים (Vcc, GND, SCL ו- SDA) נדרשים לתפקוד של תצוגת LCD, ואילו ללא מתאם I2C אתה זקוק למספר חוטים כדי לחבר בין תצוגת ה- Arduino ו- LCD.

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

בואו נסתכל על עיצוב ה- LCD המקובל:

תרשים מעגל:

arduino, צג LCD 16x2 ופוטנציומטר 10K להתאמת ניגודיות תצוגת LCD

בתרשים הנ'ל יש לנו את ארדואינו, צג LCD 16x2 ופוטנציומטר 10K להתאמת ניגודיות תצוגת LCD.

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

זה רק חיבור בין LCD לארדואינו, החיבור בין תא עומס למגבר תא עומס לארדואינו מוצג בסעיף הקודם.

קוד למכונת קנה מידה במשקל LCD:

// -------- Program developed by R.GIRISH -------//
#include
#include
const int rs = 10
const int en = 9
const int d4 = 8
const int d5 = 7
const int d6 = 6
const int d7 = 5
LiquidCrystal lcd(rs, en, d4, d5, d6, d7)
const int out = 3
const int clck = 2
const int Tare = 4
HX711 scale(out, clck)
float CalibrationFactor = -12000 // Replace -12000 the calibration factor.
void setup()
{
lcd.begin(16, 2)
pinMode(Tare, INPUT)
digitalWrite(Tare, HIGH)
lcd.setCursor(0, 0)
lcd.print(' Weight Scale')
lcd.setCursor(0, 1)
lcd.print(' Machine')
delay(2000)
scale.set_scale(CalibrationFactor)
scale.tare()
}
void loop()
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Weight:')
lcd.print(scale.get_units(), 3)
lcd.print(' Kg')
delay(200)
if (digitalRead(Tare) == LOW)
{
scale.tare()
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Tare ......')
lcd.setCursor(0, 1)
lcd.print('Setting to 0 Kg.')
delay(1000)
}
}
// -------- Program developed by R.GIRISH -------//

עכשיו בואו נראה כיצד להשתמש במכונה בקנה מידה משקל זה עם תצוגת LCD מבוססת מתאם I2C.

תרשים מעגלים Arduino ותצוגת LCD עם מתאם I2C:

תצוגת Arduino ו- LCD עם מתאם I2C

כאן פשוט יש לנו תצוגת Arduino ו- LCD עם מתאם I2C מאחור. כעת חיבורי החוטים פשוטים וישרים קדימה.

איור של מודול I2C:

מודול I2C

ניתן להלחין מודול זה ישירות על גב תצוגת LCD רגילה בגודל 16x2 או אפילו 20x4 ופעל לפי התרשים הסכימטי.

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

הורד את הספרייה הבאה עבור I2C מבוסס:

github.com/marcoschwartz/LiquidCrystal_I2C

github.com/PaulStoffregen/Wire

קוד למעגל סולם משקל מבוסס I2C:

// -------- Program developed by R.GIRISH -------//
#include
#include
#include
const int out = 3
const int clck = 2
const int Tare = 4
HX711 scale(out, clck)
float CalibrationFactor = -12000 // Replace -12000 the calibration factor.
LiquidCrystal_I2C lcd(0x27, 16, 2)
void setup()
{
lcd.init()
lcd.backlight()
pinMode(Tare, INPUT)
digitalWrite(Tare, HIGH)
lcd.setCursor(0,0)
lcd.print(' Weight Scale')
lcd.setCursor(0,1)
lcd.print(' Machine')
delay(2000)
scale.set_scale(CalibrationFactor)
scale.tare()
}
void loop()
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Weight:')
lcd.print(scale.get_units(), 3)
lcd.print(' Kg')
delay(200)
if (digitalRead(Tare) == LOW)
{
scale.tare()
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Tare ......')
lcd.setCursor(0,1)
lcd.print('Setting to 0 Kg.')
delay(1000)
}
}
// -------- Program developed by R.GIRISH -------//

פתק:

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

float CalibrationFactor = -12000

השגת גורם כיול מוסברת באחד מהסעיפים הקודמים לעיל.

פונקציית טרה:

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

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

אם יש לך שאלות הנוגעות למעגל מכונות בקנה מידה שקילה LCD מבוסס ארדואינו, אנא הביע בסעיף ההערה שאתה עשוי לקבל תשובה מהירה.




קודם: מעגל מגע מוצק למשאבות מנוע הבא: כיצד להכין רובוטריקים מדורגים