Obsah:

1 $ automat na Arduino: 8 kroků
1 $ automat na Arduino: 8 kroků

Video: 1 $ automat na Arduino: 8 kroků

Video: 1 $ automat na Arduino: 8 kroků
Video: Уроки Arduino #8 - управление реле 2024, Červenec
Anonim
Image
Image
Kryt
Kryt

Náš nápad jsme dostali od našeho učitele strojírenství - všichni jsme si mysleli, že by bylo dobré mít automat pro naši třídu a on řekl - „cool, make one“. Ukázalo se, že automat by byl skvělý seniorský projekt a po dokončení by fungoval jako finanční sbírka pro náš inženýrský program.

Říká se tomu automat na 1 $ ne proto, že by jeho výroba stála 1 $, ale jednoduše proto, že akceptor účtů je starší model, který bere jen 1 $ účty:)

Krok 1: Kritéria

Chtěli jsme automat, který by se vešel na stůl a nebyl příliš vysoký. Vzali jsme rozměry šířky stolu, abychom se ujistili, že nemáme automat visící ze stolu.

Krok 2: Pouzdro

Kryt
Kryt
Kryt
Kryt
Kryt
Kryt

Náš box jsme vyrobili 19 palců široký, 17 palců dlouhý a 25 palců vysoký. Na řezání dřeva jsme použili CNC stroj. K návrhu ploch jsme použili Solidworks a poté je převedli na typy výkresových souborů pro náš software CNC. Okraje jsme obrousili a poté zašroubovali 1 ¼”. Přední panel jsme připevnili závěsem a použili ¼ “šrouby, aby šrouby neprošly na druhou stranu. Použili jsme také akrylové sklo, které jsme nařezali na police a přední panel.

Krok 3: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Arduino

Použili jsme desku Arduino Mega 2560. Použili jsme také motorové desky Adafruit, aby mohly pohánět krokové motory. Přidali jsme kolíky do adafruitů, aby se mohly navzájem spojit. Vložili je na sebe. Každý může pohánět 2 motory. Pamatujte také, že propojku je třeba připojit.

Stolní napájecí zdroj

Bestek ATX Napájení pomocí adaptéru, který udržuje napájení zapnuté. Adaptér je z sparkfun.com a poskytuje různá napětí.

Cívky do motorů

Vyrobili jsme modely Solidworks, které drží motor, cívku vedou a vedou cívku podél police. Naše cívky jsme získali z ebay a rozřezali je na rozměr. Také jsme museli ohnout 3 z nich, protože jsme nedostali 6 s rovnými konci pro připojení k držáku cívky. Poté jsme je 3D vytiskli a připevnili k cívce a motoru. Krokové motory, které jsme měli, jsme vložili do držáku. Držel by motor a vedl cívku po přímé dráze.

LCD a klávesnice

K napájení jsme použili klávesnici Arduino a LCD obrazovku připojenou k 5V kabelu na napájecím adaptéru a poté do stejné desky Arduino

Elektrické vedení

Doporučujeme použít dráty o průměru 18. V našem případě jsme museli dělat kompromisy pomocí různých měřidel, protože nám došlo 18 měřidel

LED pásek

K rozsvícení stroje jsme použili LED pásek. Připojili jsme jej k 12V vodiči na napájecím adaptéru. LED pás, který jsme naštěstí použili, měl na sobě + a -, což usnadnilo proces jeho připojení.

Krok 4: Účtovník

Účtovník
Účtovník
Účtovník
Účtovník
Účtovník
Účtovník
Účtovník
Účtovník

Jako přijímač účtů jsme použili Coinco BA30B. Muselo být připojeno přímo ke zdi jako zdroj energie. Zkombinovali jsme to s 24kolíkovým adaptérem z atx napájecího zdroje, abychom jej zapojili a umožnili snadnější zapojení. Pinouty, které jsme sledovali, najdete v následujícím odkazu:

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

V našem případě jsme museli vytvořit držák pro zvýšení akceptoru účtů, protože jinak by byl pro náš plášť příliš nízký.

Krok 5: Testování

Nejprve vyzkoušejte elektroniku mimo skříň, abyste se ujistili, že součásti fungují. Jakékoli problémy, které nastanou, by měly být vyřešeny před jejich umístěním do pouzdra.

Krok 6: Elektronika k pouzdru

Jakmile elektroniku otestujete a budete s jejími výsledky spokojeni, začněte je vkládat do pouzdra. Upravte délku drátu tak, aby se pohodlně vešla dovnitř.

Krok 7: Závěrečné testování

Po vložení do pouzdra vše znovu otestujte. Pokud vše funguje tak, jak jste očekávali, gratulujeme! Vyrobil jsi automat.

Krok 8: Arduino Code + Links

Soubory ke stažení:

Arduino kód

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

Složka SolidWorks se soubory součástí a sestavou

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

Jen v případě, že se s odkazem něco stalo, zde je plně zobrazen arduino kód. Arduino Code <<

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

const int stepsPerRevolution = 200; konstantní bajty Řádky = 4; // čtyři řádky konstantní byte COLS = 3; // tři sloupce znaky klíče [ŘADY] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 6, 7, 8}; // připojení k řádkovým vývodům bajtu klávesnice colPins [COLS] = {2, 3, 4}; // připojení ke sloupcům pinů klávesnice Klávesnice klávesnice = Klávesnice (makeKeymap (klávesy), 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ální piny, na které je LCD připojen // Konstanty // // pin pro řádek kreditu ověřovatele účtů (-) řádek const int billValidator = 22;

// Proměnné /

/ záznam doby trvání pulsu (milisekundy) bez znaménka;

// držení celkových zaznamenaných dolarů int dollarCounter = 0; neplatné nastavení () {lcd.begin (16, 1); // nastavení souřadnic textu lcd lcd.print ("Insert $ 1 Only"); // Nastavit text Serial.begin (9600); // Inicializace sériových portů pro komunikaci. Serial.println („Krokový test!“); // Napište krokový test do sériového monitoru, abychom věděli, který krokový motor je stlačen. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Nastavte rychlost motoru, při které poběží myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Nastavení pinů pro validátor účtů a tlačítko pinMode (billValidator, INPUT); // Nastaví billaccepter

// Inicializace sériových portů pro komunikaci. Serial.begin (9600); Serial.println ("Čekání na dolar …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Začne hledat délku pulsu získanou od akceptora směnky if (doba trvání> 12000) // Hodnota, kterou musí překonat, aby se mohla validovat jako zpracovaný a autentický dolar {// Count dollar dollarCounter ++; // Kontrola porozumění Serial.print ("Dolar detekován. / N Celkem:"); // Zobrazení nového počtu dolarů Serial.println (dollarCounter); // smyčka, aby se čekalo na stisknutí tlačítka (doba trvání> 12 000) {char key = keypad.getKey (); // připojí klávesnici a začne sledovat, která je stisknuta, pokud (klávesa! = NO_KEY) {// bude hledat stisknutou klávesu Serial.println (klíč); // sděluje nám, který z nich byl stisknut na sériovém monitoru} {if (key == '1') {// Pokud je stisknut Key 1, provede následující: int keyPressed = key - '1'; myMotor8-> krok (580, PŘED, DVOJNÁSOBEK); // Spouští motor a otáčí se o 350 stupňů dopředu. myMotor8-> release (); // Uvolní motor ze stavu, kdy se drží na místě. vrátit se; // Vrátí se na začátek kódu smyčky}

if (key == '2') {// Pokud je stisknuta klávesa 2, provede následující: int keyPressed = key - '2'; myMotor7-> krok (400, PŘED, DVOJNÁSOBEK); // Spouští motor a otáčí se o 350 stupňů dopředu. myMotor7-> release (); // Uvolní motor ze stavu, kdy se drží na místě. vrátit se; // Vrátí se na začátek kódu smyčky} if (key == '3') {// Pokud je stisknuta klávesa 3, provede následující: int keyPressed = key - '3'; myMotor6-> krok (400, PŘED, DVOJNÁSOBEK); // Spouští motor a otáčí se o 350 stupňů dopředu. myMotor6-> release (); // Uvolní motor ze stavu, kdy se drží na místě. vrátit se; // Vrátí se na začátek kódu smyčky} if (key == '4') {// Pokud je stisknuta klávesa 4, provede následující: int keyPressed = key - '4'; myMotor5-> krok (180, PŘED, DVOJNÁSOBEK); // Spouští motor a otáčí se o 350 stupňů dopředu. myMotor5-> release (); // Uvolní motor ze stavu, kdy se drží na místě. vrátit se; // Přejde zpět na začátek kódu smyčky} if (key == '5') {// Pokud je stisknuta klávesa 5, provede následující: int keyPressed = key - '5'; myMotor4-> krok (6900, PŘED, DVOJNÁSOBEK); // Spouští motor a otáčí se o 350 stupňů dopředu. myMotor4-> release (); // Uvolní motor ze stavu, kdy se drží na místě. vrátit se; // Vrátí se na začátek kódu smyčky} if (key == '6') {// Pokud je stisknuta klávesa 6, provede následující: int keyPressed = key - '6'; myMotor3-> krok (400, PŘED, DVOJNÁSOBEK); // Spouští motor a otáčí se o 350 stupňů dopředu. myMotor3-> release (); // Uvolní motor ze stavu, kdy se drží na místě. vrátit se; // Vrátí se na začátek kódu smyčky} if (key == '7') {// Pokud je stisknuta klávesa 7, provede následující: int keyPressed = key - '7'; myMotor7-> krok (400, VPŘED, DVOJNÁSOBEK); // Spouští motor a otáčí se o 350 stupňů dopředu. myMotor7-> release (); // Uvolní motor ze stavu, kdy se drží na místě. vrátit se; // Vrátí se na začátek kódu smyčky} if (key == '8') {// Pokud je stisknuto tlačítko 8, provede následující: int keyPressed = key - '8'; myMotor8-> krok (400, PŘED, DVOJNÁSOBEK); // Spouští motor a otáčí se o 350 stupňů dopředu. myMotor8-> release (); // Uvolní motor ze stavu, kdy se drží na místě. vrátit se; // Vrátí se na začátek kódu smyčky}}}}}} >>

Doporučuje: