Съдържание:

Вендинг машина на базата на Arduino: 8 стъпки
Вендинг машина на базата на Arduino: 8 стъпки

Видео: Вендинг машина на базата на Arduino: 8 стъпки

Видео: Вендинг машина на базата на Arduino: 8 стъпки
Видео: Миллиард за 2 года! Бизнес без иллюзий - Выпуск № 1. Бизнес идеи и секреты с нуля! 18+ 2024, Може
Anonim
Image
Image
Корпус
Корпус

Получихме идеята си от нашия учител по инженерство - всички мислехме, че би било добра идея да имаме вендинг машина за нашия клас и той каза - „готино, направи си едно“. Оказа се, че вендинг машина ще бъде страхотен старши проект и когато завърши, ще функционира като набиране на средства за нашата инженерна програма.

Той се нарича вендинг машина за 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 (); // Освобождава двигателя от състоянието на задържане на място. връщане; // Връща се в началото на цикъла}}}}}} >>

Препоръчано: