Përmbajtje:

Makinë shitëse me bazë Arduino $ 1: 8 hapa
Makinë shitëse me bazë Arduino $ 1: 8 hapa

Video: Makinë shitëse me bazë Arduino $ 1: 8 hapa

Video: Makinë shitëse me bazë Arduino $ 1: 8 hapa
Video: Как измерить любое напряжение постоянного тока с Arduino ARDVC-01 2024, Nëntor
Anonim
Image
Image
Zorrë
Zorrë

Ne e morëm idenë tonë nga mësuesi ynë i inxhinierisë - të gjithë menduam se do të ishte një ide e mirë të kishim një makinë shitëse për klasën tonë dhe ai tha - "ftohtë, bëj një". Doli se një makinë shitëse do të ishte një projekt i madh i lartë dhe kur të përfundonte do të funksiononte si një mbledhës fondesh për programin tonë inxhinierik.

Quhet një makinë shitëse 1 dollarë jo sepse kushton 1 dollarë për t’u prodhuar, por thjesht sepse pranuesi i faturave është një model i vjetër që merr vetëm 1 dollarë:)

Hapi 1: Kriteret

Ne donim një makinë shitëse që do të vendoset mbi një tavolinë dhe nuk do të jetë shumë e gjatë. Ne morëm dimensionet e gjerësisë së tryezës për t'u siguruar që nuk kishim makinën shitëse të varur nga tryeza.

Hapi 2: zorrë

Zorrë
Zorrë
Zorrë
Zorrë
Zorrë
Zorrë

Ne e bëmë kutinë tonë 19 inç të gjerë me 17 inç të gjatë dhe 25 inç të gjatë. Ne përdorëm një makinë CNC për të prerë drurin tonë. Ne përdorëm solidworks për të hartuar fytyrat dhe pastaj i konvertuam ato në vizatim të llojeve të skedarëve për programin tonë CNC. Ne i lëmuam skajet dhe pastaj i vidhëm me 1”. Ne e lidhëm panelin e përparmë me një varen dhe përdorëm vida ¼ “, në mënyrë që vidhat të mos kalojnë në anën tjetër. Ne gjithashtu përdorëm gotë akrilike të cilën e kemi prerë për raftet dhe panelin e përparmë.

Hapi 3: Elektronikë

Elektronikë
Elektronikë
Elektronikë
Elektronikë
Elektronikë
Elektronikë
Elektronikë
Elektronikë

Arduino

Ne përdorëm një bord Arduino Mega 2560. Ne gjithashtu përdorëm Adafruit Motor Boards në mënyrë që ata të mund të drejtojnë motorët stepper. Ne shtuam kunjat në adafruit në mënyrë që ata të lidheshin me njëri -tjetrin. Ata u futën njëri mbi tjetrin. Secili mund të punojë 2 motorë. Gjithashtu, ju lutemi vini re se kërcyesi duhet të jetë i lidhur.

Furnizimi me energji për desktop

Bestek ATX Furnizimi me energji duke përdorur një përshtatës për të mbajtur të ndezur furnizimin me energji elektrike. Përshtatësi është nga sparkfun.com dhe siguron tensione të ndryshme.

Mbështjell në Motors

Ne bëmë modele solidworks për të mbajtur motorin, për të kapur spiralen dhe për të udhëhequr spiralen përgjatë raftit. Ne kishim arritur mbështjelljet tona nga ebay dhe i kishim prerë në dimension. Ne gjithashtu duhej të përkulnim 3 prej tyre pasi nuk morëm 6 me skajet e drejta për t'u lidhur me montimin e spirales. Më pas i printuam 3D dhe i bashkangjitëm në spirale dhe motor. Motorët stepper që kishim, i vendosëm në një mal. Ai do ta mbante motorin dhe do ta drejtonte spiralen përgjatë një rruge të drejtë.

LCD dhe tastiera

Ne përdorëm një tastierë Arduino dhe një ekran LCD të lidhur në një prizë 5V në përshtatësin e furnizimit me energji elektrike për energji dhe më pas në të njëjtin bord Arduino

Instalime elektrike

Ne rekomandojmë përdorimin e telave me 18 matës. Në rastin tonë, na u desh të bënim kompromis duke përdorur matës të ndryshëm sepse na mbaruan 18 matësa

Rrip LED

Ne përdorëm një shirit LED për të ndezur makinën. Ne e lidhëm atë me një prizë 12V në përshtatësin e furnizimit me energji elektrike. Shiriti LED që përdorëm fatmirësisht kishte një + dhe - në të cilin e bëri procesin e lidhjes më të lehtë.

Hapi 4: Pranuesi i Faturës

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

Ne përdorëm një Coinco BA30B si pranues të faturave tona. Duhej të lidhej drejtpërdrejt me murin si burim energjie. Ne e kombinuam atë me një përshtatës 24-pin nga një furnizim me energji atx për të lidhur dhe lejuar instalime elektrike më të lehta. Fiksimet që ndoqëm gjenden në lidhjen e mëposhtme:

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

Në rastin tonë, na u desh të krijonim një mal për të ngritur pranuesin e faturës, sepse përndryshe do të ishte shumë i ulët për shtresën tonë.

Hapi 5: Testimi

Provoni së pari elektronikën jashtë zorrës për të siguruar që përbërësit të punojnë. Çdo çështje që shfaqet duhet të rregullohet para se t'i vendosni brenda zorrës.

Hapi 6: Elektronikë në zorrë

Pasi të keni testuar pajisjet elektronike dhe të jeni të kënaqur me rezultatet e tyre, filloni t'i vendosni ato në kutinë tuaj. Rregulloni gjatësinë e telit në mënyrë që të përshtaten rehat brenda.

Hapi 7: Testimi përfundimtar

Pasi të vendoseni në zorrë, provoni gjithçka përsëri. Nëse gjithçka funksionon ashtu siç e prisnit, urime! Ju keni bërë një makinë shitëse.

Hapi 8: Kodi Arduino + Lidhjet

Shkarkimet:

Kodi Arduino

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

Dosja SolidWorks me skedarë pjesë dhe montim

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

Vetëm në rast se diçka ka ndodhur me lidhjen, këtu është kodi arduino i shfaqur plotësisht. Kodi Arduino <<

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

const int hapaPerRevolution = 200; const byte RRESHA = 4; // katër rreshta const byte COLS = 3; // tre kolona të çelësave të ngarkimit [RRESHTAT] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 6, 7, 8}; // lidheni me pinout -et e rreshtit të bajtit të tastierës colPins [COLS] = {2, 3, 4}; // lidheni me shtyllat e kolonave të tastierës Tastiera e tastierës = Tastiera (makeKeymap (çelësat), 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); // Kunjat dixhitalë lcd është e lidhur me // Konstantet // // pin për kreditin e vlerësuesit të faturës (-) linja const int billValidator = 22;

// Variablat /

/ regjistrimi i kohëzgjatjes së pulsit (milisekonda) kohëzgjatje e panënshkruar e gjatë;

// mbajtja e dollarëve të përgjithshëm të regjistruar në dollarCounter = 0; void setup () {lcd.filloj (16, 1); // vendosni koordinatat e tekstit lcd.crint.print ("Fut vetëm $ 1"); // Vendosni tekstin Serial.begin (9600); // Filloni portet serike për komunikim. Serial.println ("Stepper test!"); // Shkruani Testin Stepper në monitorin serik në mënyrë që të dimë se cili motor stepper shtypet. AFMS1.filloj (); AFMS2.filloj (); AFMS3.filloj (); AFMS4.filloj (); myMotor1-> setSpeed (100); // Vendosni shpejtësinë e motorit në të cilën ata do të ekzekutojnë myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Konfigurimet e kunjave për vërtetuesin e faturës dhe butonin pinMode (billValidator, INPUT); // Vendos billaccepter

// Fillimi i porteve serike për komunikim. Serial.filloj (9600); Serial.println ("Duke pritur dollarin …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Fillon të kërkojë gjatësinë e impulsit të marrë nga pranuesi i faturës nëse (kohëzgjatja> 12000) // Vlera e së cilës duhet të tejkalojë në mënyrë që të vërtetohet si një dollar i përpunuar dhe autentik {// Numëroni dollarin e dollaritCounter ++; // Kontrolli për të kuptuar Serial.print ("Dollari u zbulua. / N Gjithsej:"); // Shfaq numrin e ri të dollarëve Serial.println (dollarCounter); // lak për të pritur derisa të shtypet një buton gjatë kohës (kohëzgjatja> 12000) {char key = keypad.getKey (); // lidhet tastiera dhe fillon të shikojë se cila shtypet nëse (çelësi! = NO_KEY) {// do të kërkojë çelësin e shtypur Serial.println (çelës); // na bën të ditur se cili është shtypur në monitorin serik} {nëse (çelësi == '1') {// Nëse shtypet Çelësi 1, bën sa vijon: int keyPressed = kyç - '1'; myMotor8-> hapi (580, PARA, DYFISHT); // Nis motorin dhe rrotullohet për 350 gradë në drejtimin përpara. myMotor8-> release (); // Lëshon motorin nga gjendja e mbajtjes së tij në vend. kthim; // Kthehet në fillim të kodit të lakut}

nëse (çelësi == '2') {// Nëse shtypet Çelësi 2, bën sa vijon: int keyPressed = kyç - '2'; myMotor7-> hapi (400, PARA, DYFISHT); // Nis motorin dhe rrotullohet për 350 gradë në drejtimin përpara. myMotor7-> release (); // Lëshon motorin nga gjendja e mbajtjes së tij në vend. kthim; // Kthehet në fillim të kodit të lakut} nëse (çelësi == '3') {// Nëse shtypet çelësi 3, bën sa vijon: int keyPressed = kyç - '3'; myMotor6-> hapi (400, PARA, DYFISHT); // Nis motorin dhe rrotullohet për 350 gradë në drejtimin përpara. myMotor6-> release (); // Lëshon motorin nga gjendja e mbajtjes së tij në vend. kthim; // Kthehet në fillim të kodit të lakut} nëse (çelësi == '4') {// Nëse shtypet çelësi 4, bën sa vijon: int keyPressed = kyç - '4'; myMotor5-> hapi (180, PARA, DYFISHT); // Nis motorin dhe rrotullohet për 350 gradë në drejtimin përpara. myMotor5-> release (); // Lëshon motorin nga gjendja e mbajtjes së tij në vend. kthim; // Kthehet në fillim të kodit të lakut} nëse (çelësi == '5') {// Nëse shtypet çelësi 5, bën sa vijon: int keyPressed = kyç - '5'; myMotor4-> hap (6900, PARA, DYFISHT); // Nis motorin dhe rrotullohet për 350 gradë në drejtimin përpara. myMotor4-> release (); // Lëshon motorin nga gjendja e mbajtjes së tij në vend. kthim; // Kthehet në fillim të kodit të lakut} nëse (çelësi == '6') {// Nëse shtypet çelësi 6, bën sa vijon: int keyPressed = kyç - '6'; myMotor3-> hapi (400, PARA, DYFISHT); // Nis motorin dhe rrotullohet për 350 gradë në drejtimin përpara. myMotor3-> release (); // Lëshon motorin nga gjendja e mbajtjes së tij në vend. kthim; // Kthehet në fillim të kodit të lakut} nëse (çelësi == '7') {// Nëse shtypet çelësi 7, bën sa vijon: int keyPressed = kyç - '7'; myMotor7-> hapi (400, PARA, DYFISHT); // Nis motorin dhe rrotullohet për 350 gradë në drejtimin përpara. myMotor7-> release (); // Lëshon motorin nga gjendja e mbajtjes së tij në vend. kthim; // Kthehet në fillim të kodit të lakut} nëse (çelësi == '8') {// Nëse shtypet çelësi 8, bën sa vijon: int keyPressed = kyç - '8'; myMotor8-> hapi (400, PARA, DYFISHT); // Nis motorin dhe rrotullohet për 350 gradë në drejtimin përpara. myMotor8-> release (); // Lëshon motorin nga gjendja e mbajtjes së tij në vend. kthim; // Kthehet në fillim të kodit të lakut}}}}}} >>

Recommended: