Satura rādītājs:

1 USD tirdzniecības automāts uz Arduino: 8 soļi
1 USD tirdzniecības automāts uz Arduino: 8 soļi

Video: 1 USD tirdzniecības automāts uz Arduino: 8 soļi

Video: 1 USD tirdzniecības automāts uz Arduino: 8 soļi
Video: 🔥 Лучший в классе? Японская надёжность непоколебима? Чем на самом деле может огорчить Honda Civic 8? 2024, Novembris
Anonim
Image
Image
Korpuss
Korpuss

Ideju ieguvām no mūsu inženierzinātņu skolotājas - mēs visi domājām, ka būtu laba ideja, ja mūsu klasei būtu tirdzniecības automāts, un viņš teica - "forši, uztaisi". Izrādījās, ka tirdzniecības automāts būtu lielisks vecākais projekts, un, kad tas būs pabeigts, tas darbotos kā līdzekļu vākšanas līdzeklis mūsu inženierzinātņu programmai.

To sauc par 1 USD tirdzniecības automātu nevis tāpēc, ka tā izgatavošana maksā 1 USD, bet vienkārši tāpēc, ka rēķinu pieņemšanas iestāde ir vecāks modelis, kas aizņem tikai 1 USD rēķinus:)

1. darbība. Kritēriji

Mēs gribējām tirdzniecības automātu, kas ietilptu uz galda un nebūtu pārāk garš. Mēs izvēlējāmies galda platuma izmērus, lai pārliecinātos, ka pie galda nav karājies tirdzniecības automāts.

2. solis: apvalks

Korpuss
Korpuss
Korpuss
Korpuss
Korpuss
Korpuss

Mēs izgatavojām kastīti 19 collas platas un 17 collas garas un 25 collas garas. Koka griešanai mēs izmantojām CNC mašīnu. Mēs izmantojām solidworks, lai izstrādātu sejas, un pēc tam pārveidojām tās zīmēšanas failu tipiem mūsu CNC programmatūrai. Mēs slīpējām malas un pēc tam ieskrūvējām ar 1 ¼”. Mēs piestiprinājām priekšējo paneli ar eņģēm un izmantojām screws “skrūves, lai skrūves netiktu cauri otrai pusei. Mēs izmantojām arī akrila stiklu, ko sagriezām plauktos un priekšējā panelī.

3. solis: elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Arduino

Mēs izmantojām Arduino Mega 2560 dēli. Mēs izmantojām arī Adafruit motorplates, lai tās varētu darbināt pakāpju motorus. Mēs pievienojām tapas adafruit, lai tie varētu savienoties viens ar otru. Tie tika ievietoti viens virs otra. Katrs var darbināt 2 motorus. Lūdzu, ņemiet vērā arī to, ka džemperis ir jāpievieno.

Darbvirsmas barošanas avots

Bestek ATX barošanas avots, izmantojot adapteri, lai saglabātu strāvas padevi. Adapteris ir no sparkfun.com un nodrošina dažādus spriegumus.

Spoles uz Motors

Mēs izgatavojām solidworks modeļus, lai turētu motoru, satvertu spoli un vadītu spoli gar plauktu. Mēs bijām sasnieguši spoles no ebay un sagriezuši tās izmēros. Mums arī vajadzēja saliekt 3 no tiem, jo mēs nesaņēmām 6 ar taisniem galiem, lai izveidotu savienojumu ar spoles stiprinājumu. Pēc tam mēs tos 3D izdrukājām un pievienojām spolei un motoram. Pakāpju motorus, kas mums bija, mēs ievietojām stiprinājumā. Tas turētu motoru un virzītu spoli pa taisnu ceļu.

LCD un tastatūra

Barošanai mēs izmantojām Arduino tastatūru un LCD ekrānu, kas savienots ar 5V vadu barošanas avota adapterī un pēc tam tajā pašā Arduino panelī

Elektroinstalācija

Mēs iesakām izmantot 18 gabarītu vadus. Mūsu gadījumā nācās panākt kompromisu, izmantojot dažādus mērinstrumentus, jo mums beidzās 18 mērinstrumenti

LED sloksne

Iekārtas iedegšanai mēs izmantojām LED sloksni. Mēs to pievienojām barošanas avota adaptera 12V vadam. Par laimi mūsu izmantotajai LED sloksnei bija + un -, kas atviegloja savienošanas procesu.

4. solis: rēķinu akceptētājs

Rēķinu akceptētājs
Rēķinu akceptētājs
Rēķinu akceptētājs
Rēķinu akceptētājs
Rēķinu akceptētājs
Rēķinu akceptētājs
Rēķinu akceptētājs
Rēķinu akceptētājs

Mēs izmantojām Coinco BA30B kā rēķinu akceptētāju. Tas bija jāpievieno tieši pie sienas kā strāvas avots. Mēs to apvienojām ar 24 kontaktu adapteri no atx barošanas avota, lai pievienotu elektrotīklam un atvieglotu elektroinstalāciju. Punkti, kuriem sekojām, ir atrodami šajā saitē:

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

Mūsu gadījumā mums bija jāizveido stiprinājums, lai paceltu rēķinu akceptētāju, jo pretējā gadījumā tas būtu pārāk zems mūsu korpusam.

5. darbība: pārbaude

Vispirms pārbaudiet elektroniku ārpus korpusa, lai pārliecinātos, ka sastāvdaļas darbojas. Visas radušās problēmas ir jānovērš pirms to ievietošanas korpusā.

6. darbība: elektronika līdz korpusam

Kad esat pārbaudījis elektroniku un esat apmierināts ar to rezultātiem, sāciet to ievietot korpusā. Pielāgojiet vadu garumu tā, lai tie ērti ietilptu iekšpusē.

7. solis: galīgā pārbaude

Kad tas ir ievietots korpusā, vēlreiz pārbaudiet visu. Ja viss darbojas tā, kā jūs gaidījāt, apsveicam! Jūs izveidojāt tirdzniecības automātu.

8. solis: Arduino kods + saites

Lejupielādes:

Arduino kods

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

SolidWorks mape ar detaļu failiem un montāžu

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

Tikai gadījumā, ja kaut kas ir noticis ar saiti, šeit ir pilnībā parādīts arduino kods. Arduino kods <<

#include #include #include "Arduino.h" #include #include #include "lietderība/Adafruit_MS_PWMServoDriver.h" #include

const int soļiPerRevolution = 200; const baits ROWS = 4; // četras rindas const baits COLS = 3; // trīs kolonnu simbolu taustiņi [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; baits rowPins [ROWS] = {5, 6, 7, 8}; // pieslēgties tastatūras rindu pinouts baitiem colPins [COLS] = {2, 3, 4}; // izveidot savienojumu ar tastatūras kolonnu pinouts Tastatūras tastatūra = Tastatūra (makeKeymap (taustiņi), 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); // Digitālās tapas, kurām LCD ir pievienots // Konstantes // // pin rēķina validētāja kredīta (-) līnijai const int billValidator = 22;

// Mainīgie /

/ ierakstot impulsa ilgumu (milisekundes) neparakstītu ilgu laiku;

// turot kopā reģistrētos dolārus int dollarCounter = 0; void setup () {lcd.begin (16, 1); // iestatiet lcd teksta koordinātas lcd.print ("Ievietot tikai $ 1"); // Iestatīt tekstu Serial.begin (9600); // Inicializēt seriālos portus saziņai. Serial.println ("Stepper tests!"); // Sērijas monitorā ierakstiet Stepper Test, lai mēs zinātu, kurš pakāpju motors ir nospiests. AFMS1.sākas (); AFMS2.begin (); AFMS3.sākas (); AFMS4.begin (); myMotor1-> setSpeed (100); // Iestatiet motora ātrumu, ar kādu viņi darbosies myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Pin iestatījumi rēķinu validatoram un pogai pinMode (billValidator, INPUT); // Iestata bilaceptors

// Inicializēt seriālos portus saziņai. Sērijas sākums (9600); Serial.println ("Gaida dolāru …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Sāk meklēt no rēķina pieņēmēja saņemto impulsa garumu, ja (ilgums> 12000) // Vērtība, kas tai ir jāpārsniedz, lai apstiprinātu to kā apstrādātu un autentisku dolāru {// Count dollar dollarCounter ++; // Pārbaude, lai saprastu Serial.print ("Atklāts dolārs. / N Kopā:"); // Parādīt jaunu dolāru skaitu Serial.println (dollarCounter); // cilpa, lai gaidītu, kamēr tiek nospiesta poga, kamēr (ilgums> 12000) {char key = keypad.getKey (); // pieslēdz atslēgas slodzi un sāk redzēt, kurš no tiem ir nospiests, ja (taustiņš! = NO_KEY) {// meklēs taustiņu nospiestu Serial.println (taustiņš); // ļauj mums uzzināt, kurš no tiem tika nospiests sērijas monitorā} {{if (key == '1') {// Ja tiek nospiests taustiņš 1, rīkojieties šādi: int keyPressed = key - '1'; myMotor8-> solis (580, uz priekšu, DUBULTI); // iedarbina motoru un griežas 350 grādus uz priekšu. myMotor8-> atbrīvošana (); // Atbrīvo motoru no stāvokļa, kad tas notur sevi vietā. atgriešanās; // Atgriežas cilpas koda sākumā}

ja (taustiņš == '2') {// Ja tiek nospiests taustiņš 2, rīkojieties šādi: int taustiņšNospiests = taustiņš - '2'; myMotor7-> solis (400, uz priekšu, DUPLĀ); // iedarbina motoru un griežas 350 grādus uz priekšu. myMotor7-> atbrīvošana (); // Atbrīvo motoru no stāvokļa, kad tas notur sevi vietā. atgriešanās; // Atgriežas cilpas koda sākumā}, ja (taustiņš == '3') {// Ja tiek nospiests taustiņš 3, rīkojas šādi: int keyPressed = taustiņš - '3'; myMotor6-> solis (400, uz priekšu, DUPLĀ); // iedarbina motoru un griežas 350 grādus uz priekšu. myMotor6-> atbrīvošana (); // Atbrīvo motoru no stāvokļa, kad tas notur sevi vietā. atgriešanās; // Atgriežas cilpas koda sākumā}, ja (taustiņš == '4') {// Ja tiek nospiests taustiņš 4, rīkojas šādi: int keyPressed = taustiņš - '4'; myMotor5-> solis (180, uz priekšu, DUPLĀ); // iedarbina motoru un griežas 350 grādus uz priekšu. myMotor5-> atbrīvošana (); // Atbrīvo motoru no stāvokļa, kad tas notur sevi vietā. atgriešanās; // Atgriežas cilpas koda sākumā}, ja (taustiņš == '5') {// Ja tiek nospiests taustiņš 5, rīkojieties šādi: int keyPressed = taustiņš - '5'; myMotor4-> solis (6900, uz priekšu, DUBULTI); // iedarbina motoru un griežas 350 grādus uz priekšu. myMotor4-> atbrīvošana (); // Atbrīvo motoru no stāvokļa, kad tas notur sevi vietā. atgriešanās; // Atgriežas cilpas koda sākumā}, ja (taustiņš == '6') {// Ja tiek nospiests taustiņš 6, rīkojas šādi: int keyPressed = taustiņš - '6'; myMotor3-> solis (400, uz priekšu, DUPLĀ); // iedarbina motoru un griežas 350 grādus uz priekšu. myMotor3-> atbrīvošana (); // Atbrīvo motoru no stāvokļa, kad tas notur sevi vietā. atgriešanās; // Atgriežas cilpas koda sākumā}, ja (taustiņš == '7') {// Ja tiek nospiests taustiņš 7, rīkojas šādi: int keyPressed = taustiņš - '7'; myMotor7-> solis (400, uz priekšu, DUPLĀ); // iedarbina motoru un griežas 350 grādus uz priekšu. myMotor7-> atbrīvošana (); // Atbrīvo motoru no stāvokļa, kad tas notur sevi vietā. atgriešanās; // Atgriežas cilpas koda sākumā}, ja (taustiņš == '8') {// Ja tiek nospiests taustiņš 8, rīkojas šādi: int keyPressed = taustiņš - '8'; myMotor8-> solis (400, uz priekšu, DUPLĀ); // iedarbina motoru un griežas 350 grādus uz priekšu. myMotor8-> atbrīvošana (); // Atbrīvo motoru no stāvokļa, kad tas notur sevi vietā. atgriešanās; // Atgriežas cilpas koda sākumā}}}}}} >>

Ieteicams: