Indholdsfortegnelse:

$ 1 Arduino-baseret automat: 8 trin
$ 1 Arduino-baseret automat: 8 trin

Video: $ 1 Arduino-baseret automat: 8 trin

Video: $ 1 Arduino-baseret automat: 8 trin
Video: 8x8x8 LED CUBE WITH ARDUINO UNO 2024, November
Anonim
Image
Image
Kabinet
Kabinet

Vi fik vores idé fra vores ingeniørlærer - vi troede alle, at det ville være en god idé at have en automat til vores klasse, og han sagde - "sejt, lav en". Det viste sig, at en automat ville være et godt seniorprojekt, og når den var færdig, ville fungere som en fundraiser til vores ingeniørprogram.

Det kaldes en automat til $ 1, ikke fordi det koster $ 1 at lave, men simpelthen fordi regningsacceptoren er en ældre model, der kun tager $ 1 regninger:)

Trin 1: Kriterier

Vi ville have en automat, der ville passe oven på et skrivebord og ikke være for høj. Vi tog dimensionerne på bordets bredde for at sikre, at vi ikke havde automaten hængende fra bordet.

Trin 2: Kabinet

Kabinet
Kabinet
Kabinet
Kabinet
Kabinet
Kabinet

Vi lavede vores kasse 19 tommer bred med 17 centimeter lang med 25 centimeter høj. Vi brugte en CNC -maskine til at skære vores træ. Vi brugte solidworks til at designe ansigterne og konverterede dem derefter til tegnefiltyper til vores CNC -software. Vi slibede kanterne og skruede dem derefter ind med 1 ¼”. Vi fastgjorde frontpanelet med et hængsel og brugte ¼ “skruer, så skruerne ikke gik igennem til den anden side. Vi brugte også akrylglas, som vi skar til hylderne og frontpanelet.

Trin 3: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik

Arduino

Vi brugte et Arduino Mega 2560 Board. Vi brugte også Adafruit Motor Boards, så de kan køre trinmotorer. Vi tilføjede stifter til adafrugten, så de kunne oprette forbindelse til hinanden. De blev indsat dem oven på hinanden. Hver enkelt kan køre 2 motorer. Bemærk også, at jumperen skal tilsluttes.

Desktop strømforsyning

Bestek ATX strømforsyning ved hjælp af en adapter til at holde strømforsyningen tændt. Adapteren er fra sparkfun.com og giver forskellige spændinger.

Spoler ind i motorer

Vi lavede solidworks -modeller til at holde motoren, tage fat i spolen og lede spolen langs hylden. Vi havde opnået vores spoler fra ebay og skåret dem til dimension. Vi var også nødt til at bøje 3 af dem, da vi ikke fik 6 med de lige ender til at forbinde til spolemonteringen. Vi printede dem derefter 3D og fastgjorde dem til spolen og motoren. De steppermotorer, vi havde, satte vi i en holder. Det ville holde motoren og lede spolen langs en lige sti.

LCD og tastatur

Vi brugte et Arduino -tastatur og en LCD -skærm tilsluttet en 5V -ledning på strømforsyningsadapteren til strøm og derefter til det samme Arduino -kort

Ledninger

Vi anbefaler brug af 18 gauge ledninger. I vores tilfælde måtte vi gå på kompromis ved at bruge forskellige målere, fordi vi løb tør for 18 målere

LED Strip

Vi brugte en LED -strimmel til at tænde maskinen. Vi sluttede det til en 12V -ledning på strømforsyningsadapteren. LED -båndet, vi brugte, havde heldigvis et + og - på, hvilket gjorde processen med at forbinde det lettere.

Trin 4: Bill Acceptor

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

Vi brugte en Coinco BA30B som vores regningsacceptor. Den skulle forbindes direkte til væggen som en strømkilde. Vi kombinerede det med en 24-benet adapter fra en atx-strømforsyning til at tilslutte og muliggøre lettere ledningsføring. Pinouts vi fulgte findes i følgende link:

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

I vores tilfælde var vi nødt til at oprette en holder til at hæve regningsacceptoren, fordi det ellers ville være for lavt til vores kabinet.

Trin 5: Test

Test først elektronikken uden for kabinettet for at sikre, at komponenterne fungerer. Eventuelle problemer, der opstår, bør løses, inden de placeres i kabinettet.

Trin 6: Elektronik til kabinet

Når du har testet elektronikken og er tilfreds med deres resultater, skal du begynde at placere dem i dit kabinet. Juster trådlængderne til, så de sidder behageligt inde.

Trin 7: Afsluttende test

Når det er placeret i kabinettet, skal du teste alt igen. Hvis alt fungerer som du havde forventet, tillykke! Du lavede en automat.

Trin 8: Arduino -kode + links

Downloads:

Arduino kode

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

SolidWorks -mappe med delfiler og samling

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

Bare hvis der er sket noget med linket, er her arduino -koden vist fuldt ud. Arduino -kode <<

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

const int stepsPerRevolution = 200; const byte Rækker = 4; // fire rækker const byte COLS = 3; // tre kolonner tegnetaster [RÆKKER] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 6, 7, 8}; // opret forbindelse til rækkeudklipningerne i tastaturets byte colPins [COLS] = {2, 3, 4}; // opret forbindelse til kolonnens pinouts på tastaturet Tastatur tastatur = Tastatur (makeKeymap (nøgler), 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); // Digitale stifter, lcd'en er forbundet til // Konstanter // // pin til regningsvalidatorens kredit (-) linje const int billValidator = 22;

// Variabler /

/ registrering af varigheden af puls (millisekunder) usigneret lang varighed;

// holder den samlede dollar registreret int dollarCounter = 0; ugyldig opsætning () {lcd.begin (16, 1); // indstil lcd -tekstkoordinater lcd.print ("Indsæt kun $ 1"); // Indstil tekst Serial.begin (9600); // Initialiser serielle porte til kommunikation. Serial.println ("Stepper test!"); // Skriv Stepper Test ud i den serielle monitor, så vi ved, hvilken trinmotor der trykkes på. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Indstil motorhastighed, hvormed de vil køre myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Pin -opsætninger til regningsvaliderer og knap pinMode (billValidator, INPUT); // Indstiller billaccepter

// Initialiser serielle porte til kommunikation. Serial.begin (9600); Serial.println ("Venter på dollar …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Begynder at lede efter pulslængden, der modtages fra regningsacceptoren, hvis (varighed> 12000) // Værdien, som den skal overgå for at validere som en forarbejdet og autentisk dollar {// Count dollar dollarCounter ++; // Kontrollerer, om Serial.print er forstået ("Detekteret dollar. / N I alt:"); // Vis nyt dollartal Serial.println (dollarCounter); // loop for at vente, indtil der trykkes på en knap, mens (varighed> 12000) {char key = keypad.getKey (); // får tastaturet tilsluttet og begynder at se, hvilken der trykkes på, hvis (tast! = NO_KEY) {// vil lede efter tastetrykket Serial.println (tast); // fortæller os, hvilken der blev trykket på i den serielle skærm} {if (key == '1') {// Hvis der trykkes på tast 1, gør følgende: int keyPressed = key - '1'; myMotor8-> trin (580, FREM, DOBBELT); // Starter motor og roterer 350 grader fremad. myMotor8-> release (); // Frigør motoren fra den tilstand, hvor den holder sig på plads. Vend tilbage; // Går tilbage til begyndelsen af loop -koden}

if (key == '2') {// Hvis der trykkes på tast 2, gør følgende: int keyPressed = key - '2'; myMotor7-> trin (400, FREM, DOBBELT); // Starter motor og roterer 350 grader fremad. myMotor7-> release (); // Frigør motoren fra den tilstand, hvor den holder sig på plads. Vend tilbage; // Går tilbage til begyndelsen af loop -koden} if (key == '3') {// Hvis der trykkes på tast 3, gør følgende: int keyPressed = key - '3'; myMotor6-> trin (400, FREM, DOBBELT); // Starter motor og roterer 350 grader fremad. myMotor6-> release (); // Frigør motoren fra den tilstand, hvor den holder sig på plads. Vend tilbage; // Går tilbage til begyndelsen af loop -koden} if (key == '4') {// Hvis der trykkes på tast 4, gør følgende: int keyPressed = key - '4'; myMotor5-> trin (180, FREM, DOBBELT); // Starter motor og roterer 350 grader fremad. myMotor5-> release (); // Frigør motoren fra den tilstand, hvor den holder sig på plads. Vend tilbage; // Går tilbage til begyndelsen af loop -koden} if (key == '5') {// Hvis der trykkes på tast 5, gør følgende: int keyPressed = key - '5'; myMotor4-> trin (6900, FREM, DOBBELT); // Starter motor og roterer 350 grader fremad. myMotor4-> release (); // Frigør motoren fra den tilstand, hvor den holder sig på plads. Vend tilbage; // Går tilbage til begyndelsen af loop -koden} if (key == '6') {// Hvis der trykkes på tast 6, gør følgende: int keyPressed = key - '6'; myMotor3-> trin (400, FREM, DOBBELT); // Starter motor og roterer 350 grader fremad. myMotor3-> release (); // Frigør motoren fra den tilstand, hvor den holder sig på plads. Vend tilbage; // Går tilbage til begyndelsen af loop -koden} if (key == '7') {// Hvis der trykkes på tast 7, gør følgende: int keyPressed = key - '7'; myMotor7-> trin (400, FREM, DOBBELT); // Starter motor og roterer 350 grader fremad. myMotor7-> release (); // Frigør motoren fra den tilstand, hvor den holder sig på plads. Vend tilbage; // Går tilbage til begyndelsen af loop -koden} if (key == '8') {// Hvis der trykkes på tast 8, gør følgende: int keyPressed = key - '8'; myMotor8-> trin (400, FREM, DOBBELT); // Starter motor og roterer 350 grader fremad. myMotor8-> release (); // Frigør motoren fra den tilstand, hvor den holder sig på plads. Vend tilbage; // Går tilbage til begyndelsen af sløjfekoden}}}}}} >>

Anbefalede: