Съдържание:
- Стъпка 1: Критерии
- Стъпка 2: Корпус
- Стъпка 3: Електроника
- Стъпка 4: Приемач на сметки
- Стъпка 5: Тестване
- Стъпка 6: Електроника към корпуса
- Стъпка 7: Окончателно тестване
- Стъпка 8: Arduino код + връзки
Видео: Вендинг машина на базата на Arduino: 8 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Получихме идеята си от нашия учител по инженерство - всички мислехме, че би било добра идея да имаме вендинг машина за нашия клас и той каза - „готино, направи си едно“. Оказа се, че вендинг машина ще бъде страхотен старши проект и когато завърши, ще функционира като набиране на средства за нашата инженерна програма.
Той се нарича вендинг машина за 1 долар не защото струва 1 долар, а просто защото акцепторът е по -стар модел, който взема само 1 доларови банкноти:)
Стъпка 1: Критерии
Искахме вендинг машина, която да се побере върху бюрото и да не е твърде висока. Взехме размерите на ширината на масата, за да се уверим, че вендинг машината не виси от масата.
Стъпка 2: Корпус
Направихме нашата кутия с ширина 19 инча и дължина 17 инча и височина 25 инча. Използвахме машина с ЦПУ за рязане на дървесината. Използвахме солидни конструкции за проектиране на лицата и след това ги преобразувахме в типове файлове за рисуване за нашия софтуер с ЦПУ. Шлифовахме ръбовете и след това ги завинтвахме с 1 ¼”. Закрепихме предния панел с панти и използвахме screws “винтове, така че винтовете да не преминават от другата страна. Използвахме и акрилно стъкло, което изрязахме за рафтовете и предния панел.
Стъпка 3: Електроника
Arduino
Използвахме дъска Arduino Mega 2560. Използвахме и моторни платки Adafruit, за да могат да работят със стъпкови двигатели. Добавихме щифтове към adafruit, за да се свържат помежду си. Те бяха поставени един върху друг. Всеки може да работи с 2 двигателя. Също така имайте предвид, че джъмпера трябва да бъде свързан.
Захранване за настолни компютри
Захранване Bestek ATX с помощта на адаптер, за да поддържа захранването включено. Адаптерът е от sparkfun.com и осигурява различни напрежения.
Намотки в мотори
Направихме солидни модели, които да държат двигателя, да хванат намотката и да направляват намотката по рафта. Бяхме достигнали нашите намотки от ebay и ги нарязахме на размери. Също така трябваше да огънем 3 от тях, тъй като не получихме 6 с правите краища, за да се свържем с монтажа на бобината. След това ги отпечатахме 3D и ги прикрепихме към бобината и двигателя. Стъпковите двигатели, които имахме, поставихме в стойка. Той ще държи двигателя и ще води бобината по права пътека.
LCD и клавиатура
Използвахме клавиатура Arduino и LCD екран, свързани към 5V кабел на захранващия адаптер за захранване и след това към същата платка Arduino
Електрически инсталации
Препоръчваме използването на проводници от 18 габарита. В нашия случай трябваше да направим компромис с помощта на различни габарити, защото ни свършиха 18 габарита
LED лента
Използвахме LED лента, за да запалим машината. Свързахме го към 12V кабел на захранващия адаптер. LED лентата, която използвахме за щастие, имаше + и - върху нея, което улесни процеса на свързването му.
Стъпка 4: Приемач на сметки
Използвахме Coinco BA30B като наш акцептор. Той трябваше да бъде свързан директно към стената като източник на енергия. Комбинирахме го с 24-пинов адаптер от захранване atx, за да го включим и да позволи по-лесно окабеляване. Разпивките, които проследихме, се намират в следната връзка:
techvalleyprojects.blogspot.com/2011/07/ard…
В нашия случай трябваше да създадем монтиране, за да повдигнем акцептора на банкноти, защото в противен случай това би било твърде ниско за нашия корпус.
Стъпка 5: Тестване
Първо тествайте електрониката извън корпуса, за да се уверите, че компонентите работят. Всички възникнали проблеми трябва да бъдат отстранени, преди да се поставят в корпуса.
Стъпка 6: Електроника към корпуса
След като тествате електрониката и сте доволни от резултатите, започнете да ги поставяте в корпуса си. Регулирайте дължините на проводниците така, че да се вписват удобно вътре.
Стъпка 7: Окончателно тестване
Веднъж поставени в корпуса, тествайте всичко отново. Ако всичко работи както очаквате, поздравления! Направихте вендинг машина.
Стъпка 8: Arduino код + връзки
Изтегляния:
Кодът на Arduino
drive.google.com/drive/folders/1oC4MhOcMFy…
Папка SolidWorks с файлове с части и монтаж
drive.google.com/drive/folders/1amZoypiWcZ…
Само в случай, че нещо се е случило с връзката, ето кода на arduino, който е напълно показан. Код на Arduino <<
#include #include #include "Arduino.h" #include #include #include "utility/Adafruit_MS_PWMServoDriver.h" #include
const int stepsPerRevolution = 200; const байт ROWS = 4; // четири реда const байт COLS = 3; // три колони символни клавиши [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; void setup () {lcd.begin (16, 1); // задаваме lcd текстови координати lcd.print ("Вмъкване само на $ 1"); // Задаване на текст Serial.begin (9600); // Инициализиране на серийни портове за комуникация. Serial.println ("Stepper test!"); // Въведете Stepper Test в серийния монитор, така че да знаем кой стъпков двигател е натиснат. 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); // Pin настройки за валидатор на сметки и бутон pinMode (billValidator, INPUT); // Задава billaccepter
// Инициализиране на серийни портове за комуникация. Serial.begin (9600); Serial.println ("В очакване на долар …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Започва да търси дължината на импулса, получена от приемателя на банкноти, ако (продължителност> 12000) // Стойността, която трябва да надхвърли, за да бъде валидиран като обработен и автентичен долар {// Пребройте долар доларCounter ++; // Проверка за разбиране на Serial.print ("Открит долар. / N Общо:"); // Показване на нов брой долари Serial.println (dollarCounter); // цикъл, за да се изчака, докато бутонът бъде натиснат while (продължителност> 12000) {char key = keypad.getKey (); // свързва клавиатурния ключ и започва да вижда кой е натиснат, ако (ключ! = NO_KEY) {// ще търси натиснат клавиш Serial.println (ключ); // ни позволява да знаем кой е натиснат в серийния монитор} {if (key == '1') {// Ако е натиснат ключ 1, прави следното: int keyPressed = key - '1'; myMotor8-> стъпка (580, НАПРЕД, ДВОЙНО); // Стартира мотора и се завърта на 350 градуса в посока напред. myMotor8-> release (); // Освобождава двигателя от състоянието на задържане на място. връщане; // Връща се в началото на цикъла}
if (key == '2') {// Ако е натиснат Key 2, прави следното: int keyPressed = key - '2'; myMotor7-> стъпка (400, НАПРЕД, ДВОЙНО); // Стартира мотора и се завърта на 350 градуса в посока напред. myMotor7-> release (); // Освобождава двигателя от състоянието на задържане на място. връщане; // Връща се в началото на кода на цикъла} if (key == '3') {// Ако е натиснат Key 3, прави следното: int keyPressed = key - '3'; myMotor6-> стъпка (400, НАПРЕД, ДВОЙНО); // Стартира мотора и се завърта на 350 градуса в посока напред. myMotor6-> release (); // Освобождава двигателя от състоянието на задържане на място. връщане; // Връща се в началото на кода на цикъла} if (key == '4') {// Ако е натиснат клавиш 4, прави следното: int keyPressed = key - '4'; myMotor5-> стъпка (180, НАПРЕД, ДВОЙНО); // Стартира мотора и се завърта на 350 градуса в посока напред. myMotor5-> release (); // Освобождава двигателя от състоянието на задържане на място. връщане; // Връща се в началото на кода на цикъла} if (key == '5') {// Ако е натиснат клавиш 5, прави следното: int keyPressed = key - '5'; myMotor4-> стъпка (6900, НАПРЕД, ДВОЙНО); // Стартира мотора и се завърта на 350 градуса в посока напред. myMotor4-> release (); // Освобождава двигателя от състоянието на задържане на място. връщане; // Връща се в началото на кода на цикъла} if (key == '6') {// Ако е натиснат клавиш 6, прави следното: int keyPressed = key - '6'; myMotor3-> стъпка (400, НАПРЕД, ДВОЙНО); // Стартира мотора и се завърта на 350 градуса в посока напред. myMotor3-> release (); // Освобождава двигателя от състоянието на задържане на място. връщане; // Връща се в началото на кода на цикъла} if (key == '7') {// Ако е натиснат клавиш 7, прави следното: int keyPressed = key - '7'; myMotor7-> стъпка (400, НАПРЕД, ДВОЙНО); // Стартира мотора и се завърта на 350 градуса в посока напред. myMotor7-> release (); // Освобождава двигателя от състоянието на задържане на място. връщане; // Връща се в началото на кода на цикъла} if (key == '8') {// Ако е натиснат клавиш 8, прави следното: int keyPressed = key - '8'; myMotor8-> стъпка (400, НАПРЕД, ДВОЙНО); // Стартира мотора и се завърта на 350 градуса в посока напред. myMotor8-> release (); // Освобождава двигателя от състоянието на задържане на място. връщане; // Връща се в началото на цикъла}}}}}} >>
Препоръчано:
Вендинг машина "Направи си сам": 8 стъпки
Вендинг машина „Направи си сам“: Преди три години започнах да уча в електронен технически колеж. Един от фактите, които ме изненадаха по това време, беше броят на пушачите, защото по време на почивките половината от учениците напуснаха стените на училището, за да разтоварят емоциите си след
Вендинг машина с мащаб за потвърждаване на Itemdrop (Raspberry Pi): 5 стъпки
Вендинг машина с мащаб за потвърждение на Itemdrop (Raspberry Pi): Добре дошли колега производител, за училищен проект реших да направя вендинг машина за закуски. Нашата задача беше да създадем устройство за възстановяване, което да използва поне 3 сензора и 1 задвижващ механизъм. Отидох да направя вендинг машина отчасти защото имах достъп до някои
Мини вендинг машина с контролиран Arduino: 9 стъпки
Мини вендинг машина с контролиран Arduino: Това е нашата вендинг машина, тя продава три забавни бонбона Snickers. Общите размери са около 12 " x 6 " x 8 ". Тази вендинг машина се управлява от arduino, с макет и серво мотор
Детектор на лъжата+вендинг машина: С Arduino Leonardo: 6 стъпки
Детектор на лъжа+вендинг машина: С Arduino Leonardo: Този детектор на лъжата не е вашият нормален средностатистически детектор на лъжата, той е детектор на лъжата, към който има прикачен автомат. По принцип това е начинът, по който работи. В началото играчът ще натисне бутон, който ще стартира машината, а преди лъжата
Вендинг машина -- Дозатор за бонбони -- Arduino Bluetooth Controlled -- DIY: 11 стъпки (със снимки)
Вендинг машина || Дозатор за бонбони || Arduino Bluetooth Controlled || DIY: В тази инструкция ще ви покажа как да изградите вендинг машина с помощта на Arduino. КОМЕНТРИРАЙТЕ КАКВО МИСЛИТЕ ЗА ТОВА ИНСТРУКТИВНО, ЗА ДА СЪМ МОГА ДА ПОЛОЖИМ В ДОПЪЛНИТЕЛНИТЕ СИ ИНСТРУКЦИИ Разгледайте видео урока за по -добро разбиране на целия