Sadržaj:

Automat za prodaju na bazi Arduina: 8 koraka
Automat za prodaju na bazi Arduina: 8 koraka

Video: Automat za prodaju na bazi Arduina: 8 koraka

Video: Automat za prodaju na bazi Arduina: 8 koraka
Video: Опасно 2024, Juli
Anonim
Image
Image
Kućište
Kućište

Ideju smo dobili od našeg učitelja inženjeringa - svi smo mislili da bi bilo dobro imati automat za prodaju za naš razred, a on je rekao - "cool, make one". Ispostavilo se da bi automat za prodaju bio odličan stariji projekt i kada bi bio dovršen funkcionirao bi kao prikupljač sredstava za naš inženjerski program.

Naziva se automat za prodaju od 1 USD ne zato što izrada košta 1 USD, već jednostavno zato što je akceptor stariji model koji uzima samo novčanice od 1 USD:)

Korak 1: Kriterijumi

Htjeli smo automat za prodaju koji bi stajao na vrhu stola i ne bi bio previsok. Uzeli smo dimenzije širine stola kako bismo bili sigurni da automat nije visio sa stola.

Korak 2: Kućište

Kućište
Kućište
Kućište
Kućište
Kućište
Kućište

Našu kutiju smo napravili širine 19 inča, dužine 17 inča i visine 25 inča. Za rezanje drva koristili smo CNC stroj. Koristili smo solidworks za oblikovanje lica, a zatim ih pretvorili u datoteke za crtanje za naš CNC softver. Brusili smo rubove, a zatim ih zavrnuli sa 1 ¼”. Prednju ploču smo pričvrstili šarkama i upotrijebili vijke ¼ “, kako vijci ne bi prošli na drugu stranu. Koristili smo i akrilno staklo koje smo izrezali za police i prednju ploču.

Korak 3: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Arduino

Koristili smo Arduino Mega 2560 ploču. Koristili smo i Adafruit motorne ploče kako bi mogle pokretati koračne motore. Dodali smo pribadače adafruitima kako bi se međusobno povezali. Umetali su ih jedan na drugi. Svaki može pokrenuti 2 motora. Takođe, imajte na umu da kratkospojnik mora biti povezan.

Stono napajanje

Bestek ATX napajanje pomoću adaptera za uključivanje napajanja. Adapter je sa sparkfun.com i pruža različite napone.

Zamotani u motore

Napravili smo čvrste modele za držanje motora, hvatanje zavojnice i vođenje zavojnice uz policu. Dobili smo naše zavojnice s ebaya i izrezali ih na dimenziju. Također smo morali saviti 3 od njih jer nismo dobili 6 ravnih krajeva za spajanje na držač zavojnice. Zatim smo ih 3D štampali i pričvrstili na zavojnicu i motor. Stepper motore koje smo imali stavili smo u nosač. Držao bi motor i vodio zavojnicu ravnom stazom.

LCD i tastatura

Za napajanje smo koristili Arduino tastaturu i LCD ekran spojen na 5V kabl na adapteru za napajanje, a zatim na istu Arduino ploču

Ožičenje

Preporučujemo upotrebu žica promjera 18. U našem slučaju morali smo napraviti kompromis koristeći različite mjerače jer nam je ponestalo 18 mjerača

LED traka

Za osvjetljavanje mašine koristili smo LED traku. Spojili smo ga na 12V kabel na adapteru za napajanje. LED traka koju smo koristili na sreću je imala + i - na sebi što je olakšalo proces povezivanja.

Korak 4: Prihvatatelj računa

Bill Acceptor
Bill Acceptor
Bill Acceptor
Bill Acceptor
Bill Acceptor
Bill Acceptor
Bill Acceptor
Bill Acceptor

Koristili smo Coinco BA30B za prihvatanje računa. Morao je biti spojen direktno na zid kao izvor energije. Kombinirali smo ga s 24-pinskim adapterom iz atx napajanja kako bismo ga priključili i omogućili lakše ožičenje. Ispisi koje smo pratili nalaze se na sljedećoj poveznici:

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

U našem slučaju morali smo stvoriti nosač za podizanje akceptora jer bi u protivnom to bilo prenisko za naše kućište.

Korak 5: Testiranje

Prvo testirajte elektroniku izvan kućišta kako biste bili sigurni da komponente rade. Bilo koji problem koji se pojavi treba riješiti prije nego što ga postavite u kućište.

Korak 6: Elektronika do kućišta

Nakon što isprobate elektroniku i budete zadovoljni rezultatima, počnite je stavljati u kućište. Podesite dužine žice tako da udobno stanu unutra.

Korak 7: Završno testiranje

Nakon postavljanja u kućište, sve ponovo testirajte. Ako sve radi kako ste očekivali, čestitamo! Napravili ste automat za prodaju.

Korak 8: Arduino kod + veze

Preuzimanja:

Arduino kod

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

Mapa SolidWorks sa datotekama dijelova i sklopom

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

U slučaju da se nešto dogodilo s vezom, evo arduino koda u potpunosti prikazanog. Arduino kod <<

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

const int stepsPerRevolution = 200; const bajt ROWS = 4; // četiri reda const byte COLS = 3; // tri stupca char ključevi [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; bajtovi rowPins [ROWS] = {5, 6, 7, 8}; // povezivanje sa pinout -ovima reda bajta tastature colPins [COLS] = {2, 3, 4}; // povezivanje sa pinout -ovima kolone tastature Tastatura tastature = tastatura (makeKeymap (tasteri), 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); // Digitalni pinovi na koje je LCD povezan // Konstante // // pin za kredit kreditora (-) linije const int billValidator = 22;

// Varijable /

/ snimanje trajanja impulsa (milisekunde) nepotpisanog dugog trajanja;

// držanje ukupnih dolara zabilježenih int dollarCounter = 0; void setup () {lcd.begin (16, 1); // postavlja lcd tekstualne koordinate lcd.print ("Umetni samo 1 USD"); // Postavljanje teksta Serial.begin (9600); // Pokretanje serijskih portova za komunikaciju. Serial.println ("Stepper test!"); // Otkucajte Stepper Test u serijskom monitoru tako da znamo koji je stepper motor pritisnut. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Postavljanje brzine motora pri kojoj će pokretati myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Pin postavke za validator računa i dugme pinMode (billValidator, INPUT); // Postavlja billaccepter

// Pokretanje serijskih portova za komunikaciju. Serial.begin (9600); Serial.println ("Čekanje na dolar …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Počinje tražiti dužinu impulsa primljenu od akceptora ako (trajanje> 12000) // Vrijednost koju mora premašiti kako bi se potvrdio kao obrađen i autentičan dolar {// Broji dolar dollarCounter ++; // Provjera razumijevanja Serial.print ("Dollar otkriven. / N Ukupno:"); // Prikaz novog broja dolara Serial.println (dollarCounter); // petlja kako bi se čekalo dok se dugme ne pritisne while (trajanje> 12000) {char key = keypad.getKey (); // povezuje tipkovnicu i počinje vidjeti koja je pritisnuta ako (tipka! = NO_KEY) {// će tražiti pritisnutu tipku Serial.println (tipka); // omogućava nam da znamo koji je pritisnut u serijskom monitoru} {if (key == '1') {// Ako je pritisnut taster 1, radi sledeće: int keyPressed = key - '1'; myMotor8-> korak (580, NAPRIJED, DVOJNO); // Pokreće motor i okreće se 350 stupnjeva u smjeru prema naprijed. myMotor8-> release (); // Oslobađa motor iz stanja da se drži na mjestu. return; // Vraća se na početak koda petlje}

if (key == '2') {// Ako je taster 2 pritisnut, radi sledeće: int keyPressed = key - '2'; myMotor7-> korak (400, NAPRIJED, DVOJNO); // Pokreće motor i okreće se 350 stupnjeva u smjeru prema naprijed. myMotor7-> release (); // Oslobađa motor iz stanja da se drži na mjestu. return; // Vraća se na početak koda petlje} if (key == '3') {// Ako je tipka 3 pritisnuta, čini sljedeće: int keyPressed = key - '3'; myMotor6-> korak (400, NAPRIJED, DVOJNO); // Pokreće motor i okreće se 350 stupnjeva u smjeru prema naprijed. myMotor6-> release (); // Oslobađa motor iz stanja da se drži na mjestu. return; // Vraća se na početak koda petlje} if (key == '4') {// Ako je tipka 4 pritisnuta, radi sljedeće: int keyPressed = key - '4'; myMotor5-> korak (180, NAPRIJED, DVOJNO); // Pokreće motor i okreće se 350 stupnjeva u smjeru prema naprijed. myMotor5-> release (); // Oslobađa motor iz stanja da se drži na mjestu. return; // Vraća se na početak koda petlje} if (key == '5') {// Ako je tipka 5 pritisnuta, radi sljedeće: int keyPressed = key - '5'; myMotor4-> korak (6900, NAPRIJED, DVOJNO); // Pokreće motor i okreće se 350 stupnjeva u smjeru prema naprijed. myMotor4-> release (); // Oslobađa motor iz stanja da se drži na mjestu. return; // Vraća se na početak koda petlje} if (key == '6') {// Ako je tipka 6 pritisnuta, radi sljedeće: int keyPressed = key - '6'; myMotor3-> korak (400, NAPRIJED, DVOJNO); // Pokreće motor i okreće se 350 stupnjeva u smjeru prema naprijed. myMotor3-> release (); // Oslobađa motor iz stanja da se drži na mjestu. return; // Vraća se na početak koda petlje} if (key == '7') {// Ako je tipka 7 pritisnuta, radi sljedeće: int keyPressed = key - '7'; myMotor7-> korak (400, NAPRIJED, DVOJNO); // Pokreće motor i okreće se 350 stupnjeva u smjeru prema naprijed. myMotor7-> release (); // Oslobađa motor iz stanja da se drži na mjestu. return; // Vraća se na početak koda petlje} if (key == '8') {// Ako je tipka 8 pritisnuta, radi sljedeće: int keyPressed = key - '8'; myMotor8-> korak (400, NAPRIJED, DVOJNO); // Pokreće motor i okreće se 350 stupnjeva u smjeru prema naprijed. myMotor8-> release (); // Oslobađa motor iz stanja da se drži na mjestu. return; // Vraća se na početak koda petlje}}}}}} >>

Preporučuje se: