- מכונת שקילה של Arduino עובדת
- רכיבים נדרשים למכונת שקילה מבוססת Arduino
- מכונת שקילה מבוססת ארדואינו - דיאגרמת מעגלים
- הכנת המעגל על גבי לוח perfected מנוקד
- בניית מתחם למכונת שקילה מבוססת ארדואינו
- מכונת שקילה של ארדואינו - קוד
מאזני עומס דיגיטליים הם עוד נס של הנדסה ועיצוב מודרניים. כן, אנחנו מדברים על סולם השקילה שאנו רואים לעיתים קרובות ברוב חנויות המכולת ובמקומות אחרים, אך האם תהיתם פעם כיצד עובד סולם משקל? כדי לענות על שאלה זו, בפרויקט זה, אנו נסתכל על תא העומס ועל פעולתו. לבסוף, אנו בונים סולם עומס נייד מבוסס Arduino עם חיישן המשקל HX711, שיכול למדוד משקולות עד 10 ק"ג.
זו מכונית במשקל מושלם עבור חנויות מקומיות, שבו הם אורזים פריטים בכמות בתפזורת. כמו מוצרים מסחריים, בסולם המשקל שלנו יהיה כפתור אפס שמאפס את הסולם. כמו כן, יש לו אפשרות לקבוע משקל למדידה, כאשר משקל המדידה מגיע למשקל שנקבע, זמזם מצפצף במהירות ועוצר כאשר המשקל המוגדר שווה למשקל המדידה. בדרך זו, המשתמש יכול לארוז אותו רק על ידי שמיעת הצליל ולא יצטרך להסתכל בתצוגה. מכיוון שמדובר בפרויקט פשוט מאוד, אנו נבנה את זה בקלות רבה באמצעות רכיבים כמו Arduino ותא עומס מד מתח. לכן, ללא דיחוי נוסף, בואו ניכנס לזה.
במאמר הקודם, ביצענו פרויקטים כמו חיישן משקל מבוסס פטל Pi ומכל IoT חכם עם התראת דוא"ל וניטור רשת באמצעות מודול מגבר תא העומס הפופולרי HX711. אז, בדוק זאת אם זו הדרישה שלך.
מכונת שקילה של Arduino עובדת
המרכיב העיקרי של הפרויקט הזה הוא תא עומס ואת מודול מגבר תא HX711 עומס. כפי שאתה יכול לראות, צד אחד מסומן בעשרה קילוגרמים. כמו כן, ניתן להבחין באיזשהו דבק מגן לבן מעל תא העומס וארבעה צבעים שונים של חוטים יוצאים החוצה, ויחשוף את הסוד שמתחת לדבק המגן הלבן ואת תפקידם של חוטי ארבעה צבעים אלה בהמשך המאמר.
תא עומס הוא מתמר ההופך כוח או לחץ ליציאה חשמלית. יש לו שני צדדים, נניח את הצד הימני והצד השמאלי, והוא עשוי מבלוקים מאלומיניום. כפי שאתה יכול לראות באמצע החומר מדולל על ידי הצבת חור גדול. לכן זו הנקודה הסובלת מעיוות כאשר עומס מונח על צד ההר. עכשיו דמיין שהתא בצד ימין מותקן לבסיס והצד השמאלי הוא המקום בו העומס ממוקם, תצורה זו מעוותת את תא העומס של מד המתח בגלל החור הענק באמצע.
כאשר מניחים עומס בצד העומס של תא העומס, החלק העליון יסבול ממתח, והחלק התחתון יסבול מכווץ. לכן מוט האלומיניום מתכופף כלפי מטה בצד שמאל. אם נמדוד את העיוות הזה, נוכל למדוד את הכוח שהופעל על גוש האלומיניום וזה בדיוק מה שנעשה.
כעת נותרה השאלה מה יש בתוך דבק המגן הלבן? בתוך דבק מגן זה, נמצא מרכיב אלסטי דק מאוד הנקרא מד מתח. מד זנים הוא רכיב המשמש למדידת זן. אם נסתכל מקרוב על רכיב זה, נוכל לראות שתי רפידות חיבור, ואז יש לנו דפוס חוט מוליך עם סטיות חוזרות. לחוט מוליך זה יש התנגדות מוגדרת. כאשר אנו מכופפים אותו, ערך ההתנגדות ישתנה? לכן, צד אחד של מד המתח מותקן ומקובע במקום, אם נציב משקל בצד השני של מוט האלומיניום, זה יאלץ את מד המתח להתכופף, מה שיגרום לשינוי בהתנגדות. איך זה קורה בעצם? הדפוס המוליך של מד המתח עשוי מנחושת, חוט זה יהיה בעל שטח ואורך מסוים, כך ששתי היחידות הללו יתנו את התנגדות החוט. ההתנגדות של חוט מנוגדת לזרימת הזרם. עכשיו ברור שאם שטח החוט הזה קטן יותר,פחות אלקטרונים יכולים לעבור כלומר זרם נמוך יותר. עכשיו אם נגדיל את השטח, זה יגביר את ההתנגדות של מוליך. אם מופעל כוח כלשהו על חוט זה, זה ימתח את השטח והוא יקטן במקביל, ההתנגדות תגדל. אך וריאציה ההתנגדות הזו נמוכה מאוד. אם נמתח את מד המתח, ההתנגדות תגדל ואם נדחוס אותו ההתנגדות תרד. כדי למדוד את הכוח, עלינו למדוד את ההתנגדות. מדידת ההתנגדות באופן ישיר אינה תמיד מעשית מכיוון שהשינוי הוא קטן מאוד. אז במקום למדוד התנגדות, אנו יכולים למדוד מתח בקלות. לכן, במקרה זה, עלינו להמיר את תפוקת המידה מערכי התנגדות לערכי מתח.אם מופעל כוח כלשהו על חוט זה, זה ימתח את השטח והוא יקטן במקביל, ההתנגדות תגדל. אך וריאציה ההתנגדות הזו נמוכה מאוד. אם נמתח את מד המתח, ההתנגדות תגדל ואם נדחוס אותו ההתנגדות תרד. כדי למדוד את הכוח, עלינו למדוד את ההתנגדות. מדידת ההתנגדות באופן ישיר אינה תמיד מעשית מכיוון שהשינוי הוא קטן מאוד. אז במקום למדוד התנגדות, אנו יכולים למדוד מתח בקלות. לכן, במקרה זה, עלינו להמיר את תפוקת המידה מערכי התנגדות לערכי מתח.אם מופעל כוח כלשהו על חוט זה, זה ימתח את השטח והוא יקטן במקביל, ההתנגדות תגדל. אך וריאציה ההתנגדות הזו נמוכה מאוד. אם נמתח את מד המתח, ההתנגדות תגדל ואם נדחוס אותו ההתנגדות תרד. כדי למדוד את הכוח, עלינו למדוד את ההתנגדות. מדידת ההתנגדות באופן ישיר אינה תמיד מעשית מכיוון שהשינוי הוא קטן מאוד. אז במקום למדוד התנגדות, אנו יכולים למדוד מתח בקלות. לכן, במקרה זה, עלינו להמיר את תפוקת המידה מערכי התנגדות לערכי מתח.ההתנגדות תרד. כדי למדוד את הכוח, עלינו למדוד את ההתנגדות. מדידת ההתנגדות באופן ישיר אינה תמיד מעשית מכיוון שהשינוי הוא קטן מאוד. אז במקום למדוד התנגדות, אנו יכולים למדוד מתח בקלות. לכן, במקרה זה, עלינו להמיר את תפוקת המידה מערכי התנגדות לערכי מתח.ההתנגדות תרד. כדי למדוד את הכוח, עלינו למדוד את ההתנגדות. מדידת ההתנגדות באופן ישיר אינה תמיד מעשית מכיוון שהשינוי הוא קטן מאוד. אז במקום למדוד התנגדות, אנו יכולים למדוד מתח בקלות. לכן, במקרה זה, עלינו להמיר את תפוקת המידה מערכי התנגדות לערכי מתח.
אנחנו יכולים לעשות זאת בעזרת גשר וויטסטון. אנו ממקמים את מד המתח בגשר וויטסטון אם הגשר מאוזן, המתח בנקודת האמצע צריך להיות אפס (בעבר בנינו פרויקט בו תיארנו כיצד עובד גשר וויטסטון, תוכלו לבדוק זאת אם תרצו לדעת יותר על הנושא). כאשר מד המתח משנה את התנגדותו, הוא יאזן את האיזון בין הגשר, והמתח ישתנה גם הוא. אז, כך גשר וויטסטון ממיר וריאציות התנגדות לערכי מתח.
אבל שינוי המתח הזה עדיין קטן מאוד, אז כדי להגדיל את זה, עלינו להשתמש במודול HX711. HX711 הוא ADC דיפרנציאלי של 24 סיביות, באופן זה נוכל למדוד שינויי מתח קטנים מאוד. זה ייתן ערכים בין 0 ל -2 מעריכי 24.
רכיבים נדרשים למכונת שקילה מבוססת Arduino
כדי להפוך את הפרויקט לפשוט ככל האפשר, השתמשנו ברכיבים כלליים מאוד שתוכלו למצוא בכל חנות תחביבים מקומית. התמונה למטה תתן לך מושג לגבי הרכיבים. יתר על כן, יש לנו את שטר החומרים (BOM) המפורטים להלן.
- תא עומס (אנו משתמשים בתא עומס של 10 ק"ג)
- מודול מגבר HX 711
- ארדואינו ננו
- I2C LCD 16X2 - תואם I2C
- נגד 1k -2 מס '
- נוריות -2
- זַמזָם
- PCB נפוץ
- 7.4V סוללה (אם אתה רוצה את זה נייד)
- וסת מתח LM7805
מכונת שקילה מבוססת ארדואינו - דיאגרמת מעגלים
בתא העומס יש ארבעה חוטים שהם אדום, שחור, ירוק ולבן. צבע זה עשוי להשתנות בהתאם ליצרנים, ולכן עדיף להתייחס לגליון הנתונים. חבר אדום ל- E + בלוח HX711, חבר שחור ל- E-, חבר לבן ל- A +, וחבר ירוק ל- A-, Dout ושעון הלוח התחבר ל- D4 ו- D5 בהתאמה. חבר קצה אחד של כפתורי הלחיצה ל- D3, D8, D9 וקצוות אחרים לקרקע. יש לנו I2C LCD, אז חבר SDA ל- A4 ו- SCL ל- A5. חבר את הקרקע של LCD, HX711 ו- Arduino לקרקע, חבר גם VCCs ל- 5Vpin של Arduino. כל המודולים עובדים על 5 וולט, לכן הוספנו וסת מתח LM7805. אם אתה לא רוצה את זה כנייד, אתה יכול להפעיל ישירות את Arduino באמצעות כבל USB.
הכנת המעגל על גבי לוח perfected מנוקד
מולחמנו את כל הרכיבים על גבי לוח perfection משותף מנוקד. השתמשנו בכותרות נקבה כדי להלחין את Arduino ו- ADC עם המעגל, כמו כן השתמשנו בחוטים לחיבור כל כפתורי הלחצנים והנוריות. לאחר סיום כל תהליך ההלחמה, וידאנו שיוצא 5V תקין מה- LM7805. לבסוף, העברנו מתג להפעלה / כיבוי של המעגל. לאחר שכולנו סיימנו, זה נראה כמו התמונה למטה.
בניית מתחם למכונת שקילה מבוססת ארדואינו
כפי שאתה יכול לראות, לתא העומס יש כמה חוטי בורג, כך שנוכל להרכיב אותו על לוח בסיס. נשתמש בלוח PVC לבסיס הסקאלה שלנו, לשם כך חותכים תחילה 20 * 20 ס"מ מרובע וארבעה 20 * 5 מלבנים מלוח ה- PVC. ואז השתמשנו בדבק קשה, הדבקנו כל חלק ויצרנו מתחם קטן.
זכרו, לא תיקנו צד אחד, מכיוון שעלינו להניח עליו את כפתורי הלחיצה, נוריות ה- LED וה- LCD. ואז השתמשנו בלוח פלסטיק בחלק העליון של הסקאלה. לפני שאנחנו הופכים את ההתקנה לקבועה, עלינו לוודא שיש לנו מספיק מקום מהקרקע לתא העומס, כך שהוא יוכל להתכופף, אז הנחנו בורג ואומים בין תא העומס לבסיס, כמו כן הוספנו כמה מרווחי פלסטיק בין תא העומס לחלק העליון. השתמשנו ביריעת פלסטיק עגולה כחכמה העליונה של איזון.
ואז הנחנו את LCD, נוריות, ועל שכיבות כפתורים על הפאנל הקדמי, וכל הקשור חוט מבודד ארוך. לאחר שסיימנו את תהליך החיווט, הדבקנו את הלוח הקדמי לבסיס הראשי עם נטייה מסוימת, כך שנוכל לקרוא את הערכים מ- LCD בקלות רבה. לבסוף, חיברנו את המתג הראשי לצד המאזן וזהו. כך עשינו את הגוף לסולם המשקל שלנו .
אתה יכול לעצב עם הרעיונות שלך אבל זכור למקם את תא העומס כמו בתמונה.
מכונת שקילה של ארדואינו - קוד
מכיוון שכעת סיימנו בתהליך הבנייה לסולם הדיגיטלי שלנו, נוכל לעבור לחלק התכנותי. לצורך תכנות קל, אנו הולכים להשתמש בספריית HX711, בספריית EEPROM ובספריית LiquidCrystal. אתה יכול להוריד את ספריית HX711 מהמאגר הרשמי של GitHub, או ללכת לכלים > לכלול ספרייה > לנהל ספרייה, ואז לחפש בספרייה באמצעות מילת המפתח HX711, לאחר שהורדת את הספרייה, התקן אותה ב- Arduino ide.
ראשית, עלינו לכייל את תא העומס ולאחסן את הערך ב- EEPROM, לשם כך, עבור לקובץ> דוגמאות> HX 711_ADC, ואז בחר את קוד הכיול. לפני העלאת הקוד, הניחו את האיזון על משטח מישורי יציב. לאחר מכן העלה את הקוד לארדואינו ופתח את המסך הטורי. ואז שנה את קצב השידור ל 572600. עכשיו צג בקש לקחת את המשקל, לשם כך עלינו ללחוץ על t ולהיכנס.
עכשיו, עלינו לשים את המשקל הידוע על המאזן, במקרה שלי, זה 194 גרם. לאחר הצבת המשקל הידוע, הקלד משקל על הצג הסדרתי והקש על Enter.
כעת, המוניטור הסדרתי שואל אותך אם ברצונך לשמור את הערך ב- EEPROM או לא, אז הקלד Y לבחירת כן. כעת אנו יכולים לראות את המשקל על הצג הסדרתי.
הקוד העיקרי של פרויקט זה, שפיתחנו מתוך סקיצה לדוגמה של ספריית HX711. תוכלו להוריד את הקוד של פרויקט זה מלמטה.
בסעיף קידוד, ראשית, הוספנו את כל שלוש הספריות. ספריית HX711 מיועדת לקיחת ערכי תא העומס. EEPROM היא הספרייה המובנית של Arduino ide, המשמשת לאחסון ערכים ב- EEPROM וספריית LiquidCrystal מיועדת למודול LCD l2C.
#לִכלוֹל
לאחר מכן הגדירו מספרים שלמים עבור סיכות שונות וערכים שהוקצו. פונקציית תא העומס HX711_ADC מיועדת להגדרת סיכת השעון והסיכה .
const int HX711_dout = 4; const int HX711_sck = 5; int tpin = 3; HX711_ADC LoadCell (HX711_dout, HX711_sck); const int calVal_eepromAdress = 0; ארוך t; const int Up_buttonPin = 9; const int Down_buttonPin = 8; button floatPushCounter = 0; צף up_buttonState = 0; צף up_lastButtonState = 0; צף down_buttonState = 0; צף down_lastButtonState = 0;
בחלק ההתקנה, ראשית, התחלנו את המסך הטורי, זה רק לצורך ניפוי באגים בלבד. ואז הגדרנו את מצבי הסיכה, כל כפתורי הלחיצה מוגדרים כקלט. בעזרת פונקציית PULL UP של Arduino, אנו מכוונים את הסיכות לגובה הגיוני כרגיל. לכן, איננו רוצים להשתמש בנגדים חיצוניים לשם כך.
pinMode (tpin, INPUT_PULLUP); pinMode (6, OUTPUT); pinMode (12, OUTPUT); pinMode (Up_buttonPin, INPUT_PULLUP); pinMode (Down_buttonPin, INPUT_PULLUP);
שורות הקוד הבאות מיועדות להגדרת I2C LCD. ראשית, הצגנו את טקסט הברכה באמצעות פונקציית LCD.print () , לאחר שתי שניות, פינינו את התצוגה באמצעות lcd.clear () . כלומר, בהתחלה, התצוגה מציגה את ARDUINO BALANCE כטקסט קבלת פנים, ולאחר שתי שניות היא תנקה ותציג את משקולות המדידה.
lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("ARDUINO BALANCE"); lcd.setCursor (0, 1); lcd.print ("בוא נמדוד"); עיכוב (2000); lcd.clear ();
ואז התחיל לקרוא את הערכים מ- loadcell באמצעות פונקציית loadCell.begin () , לאחר מכן, קראנו את ה- EEPROM עבור הערכים המכוילים , אנו עושים זאת באמצעות הפונקציה EEPROM.get () . כלומר, כבר אחסנו את הערך באמצעות שרטוט כיול בכתובת EEPROM, אנחנו פשוט לוקחים מחדש את הערך הזה.
LoadCell.begin (); EEPROM.get (calVal_eepromAdress, calibrationValue);
בסעיף הלולאה, ראשית, אנו בודקים אם נתונים כלשהם מתא תא העומס זמינים באמצעות LoadCell.update (), אם הם זמינים, אנו קוראים ומאחסנים את הנתונים הללו, לשם כך אנו משתמשים ב- LoadCell.getData () . לאחר מכן, עלינו להציג את הערך המאוחסן ב- LCD. לשם כך השתמשנו בפונקציה LCD.print () . כמו כן, אנו מדפיסים את המשקל שנקבע. משקל מוגדר נקבע בעזרת דלפק הלחצנים. זה הוסבר בחלק האחרון.
אם (LoadCell.update ()) newDataReady = true; if (newDataReady) { if (millis ()> t + serialPrintInterval) { float i = LoadCell.getData (); lcd.setCursor (0, 0); lcd.print ("set wei:"); lcd.setCursor (9, 0); lcd.print (buttonPushCounter); lcd.setCursor (14, 0); lcd.print ("GM"); lcd.setCursor (0, 1); lcd.print ("משקל:"); lcd.setCursor (9, 1); lcd.print (i); lcd.setCursor (14, 1); lcd.print ("GM");
לאחר מכן, אנו קובעים את ערך הטרה, לשם כך, ראשית, אנו קוראים את מצבו של לחצן הטארה באמצעות הפונקציה digitalRead () , אם המצב נמוך, אנו מתייחסים למשקל זה לאפס. פונקציית הטרה של סולם משקל זה היא להביא את הקריאות לאפס. לדוגמא, אם יש לנו קערה בה הדברים נטענים, אז המשקל הנקי יהיה משקל הקערה + משקל הדברים. אם נלחץ על כפתור הטארה עם הקערה על תא העומס לפני העמסת החפצים, משקל הסל יישלל ונוכל למדוד את משקל הדברים לבד.
אם (digitalRead (tpin) == LOW) { LoadCell.tareNoDelay ();
כעת עלינו לקבוע את התנאים לאינדיקציות שונות כמו הגדרת עיכוב הזמזם ומצב הוביל. עשינו זאת באמצעות תנאים אם יש לנו בסך הכל שלושה תנאים. ראשית, אנו מחשבים את ההבדל בין משקל מוגדר למשקל מדידה, ואז שומרים את הערך במשתנה k.
לצוף k = buttonPushCounter-i;
1. אם ההבדל בין משקל מוגדר למשקל מדידה גדול או שווה ל 50 גרם, הבאזר מצפצף בעיכוב של 200 אלפיות השנייה (לאט).
אם (k> = 50) { digitalWrite (6, HIGH); עיכוב (200); digitalWrite (6, LOW); עיכוב (200); }
2. אם ההבדל בין משקל מוגדר למשקל מדידה נמוך מ- 50 וגדול מ- 1 גרם, הבאזר מצפצף בעיכוב של 50 אלפיות השנייה (מהר יותר).
אם (k <50 && k> 1) { digitalWrite (6, HIGH); עיכוב (50); digitalWrite (6, LOW); עיכוב (50); }
3. כאשר משקל המדידה שווה או גדול מהערך שנקבע, פעולה זו תדליק את הנורית הירוקה וכבה את הבאזר והאדום.
אם (i> = buttonPushCounter) { digitalWrite (6, LOW); digitalWrite (12, HIGH); }
יש לנו שתי פונקציות ריקות נוספות () לקביעת המשקל המוגדר (לספירת לחיצת הכפתור).
הפונקציה המגדילה את הערך שנקבע ב -10 גרם לכל לחיצה. זה נעשה על ידי שימוש בפונקציה digitalRead של Arduino אם הסיכה נמוכה כלומר הלחצן נלחץ וזה יגדיל את הערך ב -10 גרם.
up_buttonState = digitalRead (Up_buttonPin); אם (up_buttonState! = up_lastButtonState) { if (up_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter + 10; }
באופן דומה, צ'ק-אאוט מיועד להפחתת הערך שנקבע ב -10 גרם לכל לחיצה.
down_buttonState = digitalRead (Down_buttonPin); אם (down_buttonState! = down_lastButtonState) { if (down_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter - 10; }
זה מסמן את סוף החלק התכנותי.
סולם אלקטרוני מבוסס ארדואינו זה מושלם למדידת משקולות עד 10 ק"ג (אנו יכולים להגדיל מגבלה זו באמצעות תא עומס בעל דירוג גבוה יותר). זה מדויק ב 99% למדידות מקוריות.
אם יש לך שאלות בנוגע למעגל מכונת איזון משקל LCD מבוסס Arduino, אנא פרסם אותו בסעיף ההערות, תודה!