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

מכונת ממכר אוטומטית מבוססת ארדואינו $ 1: 8 שלבים
מכונת ממכר אוטומטית מבוססת ארדואינו $ 1: 8 שלבים

וִידֵאוֹ: מכונת ממכר אוטומטית מבוססת ארדואינו $ 1: 8 שלבים

וִידֵאוֹ: מכונת ממכר אוטומטית מבוססת ארדואינו $ 1: 8 שלבים
וִידֵאוֹ: מכונת שתייה אוטומטית 2024, יולי
Anonim
Image
Image
מַעֲטֶפֶת
מַעֲטֶפֶת

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

היא נקראת מכונה אוטומטית בסך $ 1 לא בגלל שהיא עולה 1 $, אלא פשוט כיוון שמקבל החשבונות הוא דגם ישן שלוקח שטרות של $ 1 בלבד:)

שלב 1: קריטריונים

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

שלב 2: מעטפת

מַעֲטֶפֶת
מַעֲטֶפֶת
מַעֲטֶפֶת
מַעֲטֶפֶת
מַעֲטֶפֶת
מַעֲטֶפֶת

הכנו את הקופסה שלנו ברוחב 19 אינץ 'על 17 אינץ' בגובה 25 ס"מ. השתמשנו במכונת CNC לחיתוך העץ שלנו. השתמשנו ב- solidworks לעיצוב הפנים ולאחר מכן הפכנו אותם לסוגי קבצי ציור עבור תוכנת ה- CNC שלנו. שיפשפנו את הקצוות ואז הברגנו אותם עם 1 אינץ '". חיברנו את הלוח הקדמי עם ציר והשתמשנו בברגי ¼ “, כך שהברגים לא יעברו לצד השני. השתמשנו גם בזכוכית אקרילית אותה חתכנו למדפים ולפנל הקדמי.

שלב 3: אלקטרוניקה

מכשירי חשמל
מכשירי חשמל
מכשירי חשמל
מכשירי חשמל
מכשירי חשמל
מכשירי חשמל
מכשירי חשמל
מכשירי חשמל

ארדואינו

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

ספק כוח שולחני

אספקת החשמל של Bestek ATX באמצעות מתאם לשמירה על אספקת החשמל. המתאם הוא מבית sparkfun.com ומספק מתחים שונים.

סלילים לתוך מנועים

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

LCD ומקלדת

השתמשנו בלוח מקשים של Arduino ומסך LCD המחובר למתאם 5V במתאם ספק הכוח לצורך הספק ולאחר מכן לאותו לוח Arduino.

תִיוּל

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

רצועת לד

השתמשנו ברצועת LED כדי להאיר את המכונה. חיברנו אותו למתאם 12V במתאם ספק הכוח. ברצועת הלד בה השתמשנו למרבה המזל הייתה עליה + ו - מה שהקל על תהליך החיבור שלה.

שלב 4: מקבל ביל

מקבל ביל
מקבל ביל
מקבל ביל
מקבל ביל
מקבל ביל
מקבל ביל
מקבל ביל
מקבל ביל

השתמשנו ב- Coinco BA30B כמקבל חשבונות שלנו. זה היה צריך להיות מחובר ישירות לקיר כמקור כוח. שילבנו אותו עם מתאם 24 פינים מאספקת אטקס לחיבור לחשמל ומאפשר חיווט קל יותר. הסימפטומים שבהם עקבנו נמצאים בקישור הבא:

techvalleyprojects.blogspot.com/2011/07/ard…

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

שלב 5: בדיקה

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

שלב 6: אלקטרוניקה למארז

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

שלב 7: בדיקה אחרונה

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

שלב 8: קוד Arduino + קישורים

הורדות:

קוד ארדואינו

drive.google.com/drive/folders/1oC4MhOcMFy…

תיקיית SolidWorks עם קבצי חלקים והרכבה

drive.google.com/drive/folders/1amZoypiWcZ…

למקרה שקרה משהו לקישור, הנה קוד הארדואינו המוצג במלואו. קוד ארדואינו <<

#include #include #include "Arduino.h" #include #include #include "/Adafruit_MS_PWMServoDriver.h" #include

const int stepsPerRevolution = 200; שורות const byte = 4; // ארבע שורות const byte COLS = 3; // שלוש עמודות מפתחות char [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; בתים rowPins [ROWS] = {5, 6, 7, 8}; // להתחבר לשורות החריפות של בייט המקשים colPins [COLS] = {2, 3, 4}; // התחבר לסיבוכי העמודות של לוח המקשים לוח מקשים = לוח מקשים (makeKeymap (מקשים), rowPins, colPins, ROWS, COLS); Adafruit_MotorShield AFMS1 = Adafruit_MotorShield (); Adafruit_StepperMotor *myMotor1 = AFMS1.getStepper (-200, 1); Adafruit_StepperMotor *myMotor2 = AFMS1.getStepper (-200, 2); Adafruit_MotorShield AFMS2 = Adafruit_MotorShield (0x61); Adafruit_StepperMotor *myMotor3 = AFMS2.getStepper (-200, 1); Adafruit_StepperMotor *myMotor4 = AFMS2.getStepper (-200, 2); Adafruit_MotorShield AFMS3 = Adafruit_MotorShield (0x62); Adafruit_StepperMotor *myMotor5 = AFMS3.getStepper (-200, 1); Adafruit_StepperMotor *myMotor6 = AFMS3.getStepper (-200, 2); Adafruit_MotorShield AFMS4 = Adafruit_MotorShield (0x63); Adafruit_StepperMotor *myMotor7 = AFMS4.getStepper (-200, 1); Adafruit_StepperMotor *myMotor8 = AFMS4.getStepper (-200, 2); LiquidCrystal lcd (1, 11, 9, 10, 12, 13); // פינים דיגיטליים שה- lcd מחובר אליהם // קבועים // // סיכה לאשראי (-) קו const int billValidator = 22;

// משתנים /

/ רישום משך הדופק (מילי שניות) משך זמן לא חתום;

// החזקת סך כל הדולרים שנרשמו int dollarCounter = 0; הגדרת חלל () {lcd.begin (16, 1); // הגדר קואורדינטות טקסט lcd lcd.print ("הכנס $ 1 בלבד"); // הגדר טקסט Serial.begin (9600); // אתחל יציאות טוריות לתקשורת. Serial.println ("מבחן צעדים!"); // הקלד את מבחן המדרגה במסך הטורי כך שנדע על איזה מנוע צעד נלחץ. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // הגדר את מהירות המנוע שבה יפעילו myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // הגדרות סיכה לאימות החשבון ולחצן pinMode (billValidator, INPUT); // מגדיר את החוט

// אתחל יציאות טוריות לתקשורת. Serial.begin (9600); Serial.println ("מחכה לדולר …"); } לולאת חלל () {{duration = pulseIn (billValidator, HIGH); // מתחיל לחפש את אורך הדופק המתקבל ממקבל החשבון אם (משך> 12000) // ערך שעליו לעלות על מנת לאמת אותו כדולר מעובד ואותנטי {// Count dollar dollarCounter ++; // בודק אם הבנת Serial.print ("זיהה דולר. / N סה"כ:"); // הצגת ספירת דולר חדשה Serial.println (dollarCounter); // לולאה על מנת לחכות עד לחיצה על כפתור בזמן (משך> 12000) {char key = keypad.getKey (); // מחבר את מקש המקלדת ומתחיל לראות איזה מהם נלחץ אם (מקש! = NO_KEY) {// יחפש את המקש Serial.println (מקש); // מודיע לנו על מי נלחץ במסך הטורי} {if (key == '1') {// אם מקש 1 נלחץ, האם הפעולות הבאות: int keyPressed = key - '1'; myMotor8-> שלב (580, קדימה, כפולה); // מניע את המנוע וסובב 350 מעלות בכיוון קדימה. myMotor8-> שחרור (); // משחרר את המנוע מהמצב של החזקת עצמו במקומו. לַחֲזוֹר; // חוזר לתחילת קוד הלולאה}

if (key == '2') {// אם לוחצים על מקש 2, האם הפעולות הבאות: int keyPressed = key - '2'; myMotor7-> שלב (400, קדימה, כפולה); // מניע את המנוע וסובב 350 מעלות בכיוון קדימה. myMotor7-> שחרור (); // משחרר את המנוע מהמצב של החזקת עצמו במקומו. לַחֲזוֹר; // חוזר לתחילת קוד הלולאה} if (key == '3') {// אם לוחצים על מקש 3, האם הפעולות הבאות: int keyPressed = key - '3'; myMotor6-> שלב (400, קדימה, כפולה); // מניע את המנוע ומסתובב 350 מעלות בכיוון קדימה. myMotor6-> שחרור (); // משחרר את המנוע מהמצב של החזקת עצמו במקומו. לַחֲזוֹר; // חוזר לתחילת קוד הלולאה} if (key == '4') {// אם לוחצים על מקש 4, עושה את הפעולות הבאות: int keyPressed = key - '4'; myMotor5-> שלב (180, קדימה, כפולה); // מניע את המנוע וסובב 350 מעלות בכיוון קדימה. myMotor5-> שחרור (); // משחרר את המנוע מהמצב של החזקת עצמו במקומו. לַחֲזוֹר; // חוזר לתחילת קוד הלולאה} if (key == '5') {// אם לוחצים על מקש 5, האם הפעולות הבאות: int keyPressed = key - '5'; myMotor4-> שלב (6900, קדימה, כפולה); // מניע את המנוע ומסתובב 350 מעלות בכיוון קדימה. myMotor4-> שחרור (); // משחרר את המנוע מהמצב של החזקת עצמו במקומו. לַחֲזוֹר; // חוזר לתחילת קוד הלולאה} if (key == '6') {// אם לוחצים על מקש 6, האם הפעולות הבאות: int keyPressed = key - '6'; myMotor3-> שלב (400, קדימה, כפולה); // מניע את המנוע ומסתובב 350 מעלות בכיוון קדימה. myMotor3-> שחרור (); // משחרר את המנוע מהמצב של החזקת עצמו במקומו. לַחֲזוֹר; // חוזר לתחילת קוד הלולאה} if (key == '7') {// אם לוחצים על מקש 7, האם הפעולות הבאות: int keyPressed = key - '7'; myMotor7-> שלב (400, קדימה, כפולה); // מניע את המנוע וסובב 350 מעלות בכיוון קדימה. myMotor7-> שחרור (); // משחרר את המנוע מהמצב של החזקת עצמו במקומו. לַחֲזוֹר; // חוזר לתחילת קוד הלולאה} if (key == '8') {// אם לוחצים על מקש 8, עושה את הפעולות הבאות: int keyPressed = key - '8'; myMotor8-> שלב (400, קדימה, כפולה); // מניע את המנוע וסובב 350 מעלות בכיוון קדימה. myMotor8-> שחרור (); // משחרר את המנוע מהמצב של החזקת עצמו במקומו. לַחֲזוֹר; // חוזר לתחילת קוד הלולאה}}}}}} >>

מוּמלָץ: