Innehållsförteckning:

$ 1 Arduino-baserad varuautomat: 8 steg
$ 1 Arduino-baserad varuautomat: 8 steg

Video: $ 1 Arduino-baserad varuautomat: 8 steg

Video: $ 1 Arduino-baserad varuautomat: 8 steg
Video: M#1: Настройка ПЛК Outseal Mega с отладочной платой ATmega128 | Аутсил Дев. ПЛК Мега 2024, Juli
Anonim
Image
Image
Hölje
Hölje

Vi fick vår idé från vår ingenjörslärare - vi trodde alla att det skulle vara en bra idé att ha en varuautomat till vår klass och han sa - "cool, make one". Det visade sig att en varuautomat skulle vara ett bra seniorprojekt och när den var klar skulle fungera som en insamling för vårt ingenjörsprogram.

Det kallas en varuautomat på $ 1, inte för att det kostar $ 1 att göra, utan helt enkelt för att räkningsacceptören är en äldre modell som bara tar $ 1 räkningar:)

Steg 1: Kriterier

Vi ville ha en varuautomat som skulle passa ovanpå ett skrivbord och inte vara för hög. Vi tog måtten på bordets bredd för att se till att vi inte hade automaten hängande från bordet.

Steg 2: Hölje

Hölje
Hölje
Hölje
Hölje
Hölje
Hölje

Vi gjorde vår låda 19 tum bred och 17 tum lång och 25 tum lång. Vi använde en CNC -maskin för att skära vårt trä. Vi använde solidworks för att designa ansikten och konverterade dem sedan till ritfiltyper för vår CNC -programvara. Vi slipade kanterna och skruvade sedan in dem med 1 ¼”. Vi fäst frontpanelen med ett gångjärn och använde ¼ “skruvar, så att skruvarna inte skulle gå igenom till andra sidan. Vi använde också akrylglas som vi klippte till hyllorna och frontpanelen.

Steg 3: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik

Arduino

Vi använde en Arduino Mega 2560 Board. Vi använde också Adafruit Motor Boards så att de kan köra stegmotorerna. Vi lade till nålar på adafruiten för att de skulle kunna ansluta till varandra. De sattes in ovanpå varandra. Var och en kan köra 2 motorer. Observera också att bygeln måste vara ansluten.

Stationär strömförsörjning

Bestek ATX -strömförsörjning med hjälp av en adapter för att hålla strömförsörjningen påslagen. Adaptern är från sparkfun.com och ger olika spänningar.

Spolar in i motorer

Vi gjorde solidworks -modeller för att hålla motorn, ta tag i spolen och styra spolen längs hyllan. Vi hade uppnått våra spolar från ebay och klippt dem till dimension. Vi var också tvungna att böja 3 av dem eftersom vi inte fick 6 med de raka ändarna för att ansluta till spolfästet. Vi skrev sedan ut dem i 3D och fäst dem på spolen och motorn. Stegmotorerna vi hade satte vi i ett fäste. Det skulle hålla motorn och leda spolen längs en rak väg.

LCD och knappsats

Vi använde en Arduino -knappsats och en LCD -skärm ansluten till en 5V -kabel på nätadaptern för ström och sedan till samma Arduino -kort

Kabeldragning

Vi rekommenderar användning av 18 gauge -trådar. I vårt fall var vi tvungna att kompromissa genom att använda olika mätare eftersom vi fick slut på 18 mätare

LED -remsa

Vi använde en LED -remsa för att tända maskinen. Vi kopplade den till en 12V -kabel på nätadaptern. LED -remsan som vi använde hade tack och lov en + och - på den vilket gjorde processen att ansluta den enklare.

Steg 4: Bill Acceptor

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

Vi använde en Coinco BA30B som vår fakturaacceptor. Den måste anslutas direkt till väggen som en strömkälla. Vi kombinerade den med en 24-polig adapter från en atx-strömförsörjning för att ansluta och möjliggöra enklare kabeldragning. Pinouts vi följde finns i följande länk:

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

I vårt fall var vi tvungna att skapa ett fäste för att höja räkningsacceptorn eftersom det annars skulle vara för lågt för vårt hölje.

Steg 5: Testning

Testa först elektroniken utanför höljet för att säkerställa att komponenterna fungerar. Alla problem som uppstår bör åtgärdas innan de placeras i höljet.

Steg 6: Elektronik till hölje

När du har testat elektroniken och är nöjd med deras resultat, börja placera dem i ditt hölje. Justera trådlängderna så att de sitter bekvämt inuti.

Steg 7: Slutprovning

När du har placerat det i höljet, testa allt igen. Om allt fungerar som du förväntat dig, grattis! Du gjorde en varuautomat.

Steg 8: Arduino -kod + länkar

Nedladdningar:

Arduino -kod

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

SolidWorks -mapp med delfiler och montering

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

Bara om något har hänt med länken, här är arduino -koden som visas helt. Arduino -kod <<

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

const int stepsPerRevolution = 200; const byte RADER = 4; // fyra rader const byte COLS = 3; // tre kolumner char nycklar [RADER] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 6, 7, 8}; // ansluta till radnålarna för knappsatsens byte colPins [COLS] = {2, 3, 4}; // Anslut till knapparna i knapparna på knappsatsen Knappsatsens knappsats = Knappsats (makeKeymap (tangenter), 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); // Digitala stift som LCD-skärmen är ansluten till // Konstanter // // pin för räknevaliderarens kredit (-) rad const int billValidator = 22;

// Variabler /

/ registrering av pulsens varaktighet (millisekunder) osignerad lång varaktighet;

// håller den totala dollarn registrerad int dollarCounter = 0; void setup () {lcd.begin (16, 1); // ange lcd -textkoordinater lcd.print ("Infoga endast $ 1"); // Ställ in text Serial.begin (9600); // Initiera seriella portar för kommunikation. Serial.println ("Stepper test!"); // Skriv ut Stepper Test i seriemonitorn så att vi vet vilken stegmotor som trycks in. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Ställ in motorhastigheten med vilken de ska köra myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Pin -inställningar för bill validator och knapp pinMode (billValidator, INPUT); // Ställer billacceptern

// Initiera seriella portar för kommunikation. Serial.begin (9600); Serial.println ("Väntar på dollar …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Börjar leta efter pulslängden som tas emot från räkningsacceptorn om (varaktighet> 12000) // Värdet som den måste överstiga för att kunna valideras som en bearbetad och autentisk dollar {// Count dollar dollarCounter ++; // Kontrollerar om Serial.print förstår ("Dollar upptäckt. / N Totalt:"); // Visa nytt dollarantal Serial.println (dollarCounter); // loop för att vänta tills en knapp trycks medan (varaktighet> 12000) {char key = keypad.getKey (); // får tangentlänken ansluten och börjar se vilken som trycks om (key! = NO_KEY) {// kommer att leta efter tangenttryckt Serial.println (key); // låter oss veta vilken som trycktes i seriell bildskärm} {if (key == '1') {// Om tangent 1 trycks in, gör följande: int keyPressed = key - '1'; myMotor8-> steg (580, FRAM, DUBBEL); // Startar motorn och roterar 350 grader i riktning framåt. myMotor8-> release (); // Släpper motorn från att hålla sig på plats. lämna tillbaka; // Går tillbaka till början av loop -koden}

if (key == '2') {// Om tangent 2 trycks in, gör följande: int keyPressed = key - '2'; myMotor7-> steg (400, FRAMÅT, DUBBELT); // Startar motorn och roterar 350 grader i riktning framåt. myMotor7-> release (); // Släpper motorn från att hålla sig på plats. lämna tillbaka; // Går tillbaka till början av loop -koden} if (key == '3') {// Om tangent 3 trycks, gör följande: int keyPressed = key - '3'; myMotor6-> steg (400, FRAMÅT, DOBBELT); // Startar motorn och roterar 350 grader i riktning framåt. myMotor6-> release (); // Släpper motorn från att hålla sig på plats. lämna tillbaka; // Går tillbaka till början av loop -koden} if (key == '4') {// Om tangent 4 trycks, gör följande: int keyPressed = key - '4'; myMotor5-> steg (180, FRAM, DUBBEL); // Startar motorn och roterar 350 grader i riktning framåt. myMotor5-> release (); // Släpper motorn från att hålla sig på plats. lämna tillbaka; // Går tillbaka till början av loopkoden} if (key == '5') {// Om tangent 5 trycks in, gör följande: int keyPressed = key - '5'; myMotor4-> steg (6900, FRAMÅT, DOBBELT); // Startar motorn och roterar 350 grader i riktning framåt. myMotor4-> release (); // Släpper motorn från att hålla sig på plats. lämna tillbaka; // Går tillbaka till början av loop -koden} if (key == '6') {// Om tangent 6 trycks, gör följande: int keyPressed = key - '6'; myMotor3-> steg (400, FRAMÅT, DUBBELT); // Startar motorn och roterar 350 grader framåt. myMotor3-> release (); // Släpper motorn från att hålla sig på plats. lämna tillbaka; // Går tillbaka till början av loop -koden} if (key == '7') {// Om tangent 7 trycks in, gör följande: int keyPressed = key - '7'; myMotor7-> steg (400, FRAMÅT, DUBBELT); // Startar motorn och roterar 350 grader i riktning framåt. myMotor7-> release (); // Släpper motorn från att hålla sig på plats. lämna tillbaka; // Går tillbaka till början av loop -koden} if (key == '8') {// Om tangent 8 trycks in, gör följande: int keyPressed = key - '8'; myMotor8-> steg (400, FRAMÅT, DOBBELT); // Startar motorn och roterar 350 grader i riktning framåt. myMotor8-> release (); // Släpper motorn från att hålla sig på plats. lämna tillbaka; // Går tillbaka till början av loop -koden}}}}}} >>

Rekommenderad: