Tartalomjegyzék:

$ 1 Arduino-alapú automaták: 8 lépés
$ 1 Arduino-alapú automaták: 8 lépés

Videó: $ 1 Arduino-alapú automaták: 8 lépés

Videó: $ 1 Arduino-alapú automaták: 8 lépés
Videó: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Július
Anonim
Image
Image
Burkolat
Burkolat

Az ötletet a mérnöktanárunktól kaptuk - mindannyian úgy gondoltuk, hogy jó ötlet lenne, ha van egy automata az osztályunkhoz, és azt mondta: "menő, készíts egyet". Kiderült, hogy az automaták nagyszerű projektnek számítanak, és ha elkészültek, adománygyűjtőként működnek a mérnöki programunkban.

1 dolláros automatának nevezik, nem azért, mert 1 dollárba kerül az elkészítése, hanem egyszerűen azért, mert a számlafogadó egy régebbi modell, amely csak 1 dolláros számlákat fogad el:)

1. lépés: Feltételek

Olyan automatát akartunk, amely elfér az asztal tetején, és nem túl magas. Megvettük az asztal szélességének méreteit, hogy megbizonyosodjunk arról, hogy nem állunk le az automatáról az asztalról.

2. lépés: Burkolat

Burkolat
Burkolat
Burkolat
Burkolat
Burkolat
Burkolat

A dobozunkat 19 hüvelyk széles, 17 hüvelyk hosszú és 25 hüvelyk magas volt. CNC gépet használtunk a fánk vágásához. A solidworks segítségével terveztük az arcokat, majd rajzfájltípusokká alakítottuk őket a CNC szoftverünkhöz. A széleket csiszoltuk, majd 1 ¼”csavarral becsavartuk. Az elülső panelt csuklópánttal rögzítettük, és screws “csavarokat használtunk, hogy a csavarok ne menjenek át a másik oldalra. Akrilüveget is használtunk, amelyet a polcokhoz és az előlaphoz vágtunk.

3. lépés: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Arduino

Arduino Mega 2560 táblát használtunk. Az Adafruit motorlapokat is használtuk a léptetőmotorok működtetéséhez. Tűket adtunk az adafruithoz, hogy összekapcsolódhassanak egymással. Egymásra helyezték őket. Mindegyik 2 motort működtethet. Ezenkívül vegye figyelembe, hogy a jumpert csatlakoztatni kell.

Asztali tápegység

Bestek ATX Tápellátás adapter segítségével a tápellátás bekapcsolásához. Az adapter a sparkfun.com webhelyről származik, és különböző feszültségeket biztosít.

Motorokba tekercsel

Solidworks modelleket készítettünk a motor tartására, a tekercs megragadására és a tekercs vezetésére a polcon. A tekercseket az ebayről szereztük be, és méretre vágtuk őket. Hármat is meg kellett hajlítanunk, mivel nem kaptunk 6 egyenes végű csatlakozást a tekercstartóhoz. Ezután 3D -ben kinyomtattuk őket, és rögzítettük a tekercshez és a motorhoz. A léptetőmotorokat, amelyeket megvoltunk, egy tartóba helyeztük. Tartaná a motort, és egyenes úton vezetné a tekercset.

LCD és billentyűzet

Egy Arduino billentyűzetet és LCD képernyőt használtunk a tápegység adapterének 5V -os vezetékéhez csatlakoztatva, majd ugyanahhoz az Arduino Boardhoz

Vezeték

Javasoljuk, hogy 18 -as vezetékeket használjon. Esetünkben kompromisszumot kellett kötnünk különféle mérőeszközök használatával, mert elfogyott a 18 mérőeszközünk

LED-csík

A gép megvilágítására LED -szalagot használtunk. A tápegység 12V -os vezetékéhez kötöttük. Az általunk használt LED szalagon szerencsére volt egy + és -, ami megkönnyítette a csatlakoztatást.

4. lépés: Számlafogadó

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

Coinco BA30B -t használtunk számlaelfogadónak. Áramforrásként közvetlenül a falhoz kellett csatlakoztatni. Kombináltuk egy 24 tűs adapterrel az atx tápegységtől a csatlakoztatáshoz és a könnyebb bekötéshez. Az általunk követett pinoutok az alábbi linken találhatók:

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

Esetünkben egy rögzítőt kellett létrehoznunk a számlafogadó megemeléséhez, mert különben túl alacsony lenne a burkolatunkhoz.

5. lépés: Tesztelés

Először ellenőrizze a házon kívüli elektronikát, hogy megbizonyosodjon arról, hogy az alkatrészek működnek. A felmerülő problémákat ki kell javítani, mielőtt azokat a burkolatba helyezi.

6. lépés: Elektronika a burkolathoz

Miután tesztelte az elektronikát, és elégedett az eredményeikkel, kezdje el a burkolatba helyezését. Állítsa be a huzalok hosszát úgy, hogy kényelmesen illeszkedjenek a belsejébe.

7. lépés: Végső tesztelés

Miután behelyezte a burkolatba, teszteljen mindent újra. Ha minden a várt módon működik, gratulálok! Készítettél egy automatát.

8. lépés: Arduino kód + linkek

Letöltések:

Arduino kód

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

SolidWorks mappa alkatrészfájlokkal és összeszereléssel

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

Abban az esetben, ha valami történt a linkkel, itt van az arduino kód teljesen megjelenítve. Arduino kód <<

#include #include #include "Arduino.h" #include #include #include "segédprogram/Adafruit_MS_PWMServoDriver.h" #include

const int stepsPerRevolution = 200; const byte ROWS = 4; // négy sor const byte COLS = 3; // három oszlop char billentyű [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [SOROK] = {5, 6, 7, 8}; // csatlakozás a billentyűzet sorkapcsaihoz bájt colPins [COLS] = {2, 3, 4}; // csatlakozás a billentyűzet oszloppisztolyaihoz Billentyűzet billentyűzet = billentyűzet (makeKeymap (kulcsok), 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ális Pins Az LCD-hez kapcsolódik // Constants // // pin a számla validátor hitelhez (-) line const int billValidator = 22;

// Változók /

/ az impulzus időtartamának rögzítése (ezredmásodperc) előjel nélküli hosszú időtartam;

// a rögzített összes dollár tartása int dollarCounter = 0; void setup () {lcd.begin (16, 1); // lcd szövegkoordináták beállítása lcd.print ("Csak $ 1 beszúrása"); // Szöveg beállítása Serial.begin (9600); // Inicializálja a soros portokat a kommunikációhoz. Serial.println ("Léptető teszt!"); // Írja be a léptető tesztet a soros monitorba, hogy tudjuk, melyik léptetőmotort nyomja meg. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Állítsa be a motor fordulatszámát, amelyen a myMotor2-> setSpeed (100) futni fog; myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Pin beállítások a számla validátorhoz és a pinMode gombhoz (billValidator, INPUT); // Beállítja a billacceptert

// Inicializálja a soros portokat a kommunikációhoz. Sorozat.kezdet (9600); Serial.println ("Várakozás a dollárra …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Elkezdi keresni a számlaelfogadótól kapott impulzushosszat, ha (időtartam> 12000) // Érték, amelyet felül kell múlnia ahhoz, hogy feldolgozott és hiteles dollárként érvényesítse {// Count dollar dollarCounter ++; // A Serial.print megértésének ellenőrzése ("Dollár észlelve. / N Összesen:"); // Új dollárszám megjelenítése Serial.println (dollarCounter); // ciklus annak érdekében, hogy megvárja, amíg megnyom egy gombot, miközben (időtartam> 12000) {char key = keypad.getKey (); // összekapcsolja a kulcsterhelést, és elkezdi látni, hogy melyik gombot kell megnyomni, ha (kulcs! = NO_KEY) {// a billentyű lenyomását fogja keresni Serial.println (key); // tudatja velünk, hogy melyiket nyomták le a soros monitoron} {{if (key == '1') {// Ha lenyomja az 1 -es billentyűt, akkor a következőket teszi: int keyPressed = key - '1'; myMotor8-> lépés (580, ELŐRE, DUPLA); // Elindítja a motort, és 350 fokban forog előre. myMotor8-> release (); // Elengedi a motort a helyén tartás állapotából. Visszatérés; // Visszatér a cikluskód elejére}

if (key == '2') {// Ha megnyomja a 2 -es billentyűt, akkor a következőket teszi: int keyPressed = gomb - '2'; myMotor7-> lépés (400, ELŐRE, DUPLA); // Elindítja a motort, és 350 fokban forog előre. myMotor7-> release (); // Elengedi a motort a helyén tartás állapotából. Visszatérés; // Visszatér a cikluskód elejére}, ha (key == '3') {// Ha megnyomja a 3 -as billentyűt, akkor a következőket teszi: int keyPressed = key - '3'; myMotor6-> lépés (400, ELŐRE, DUPLA); // Elindítja a motort, és 350 fokban forog előre. myMotor6-> release (); // Elengedi a motort a helyén tartás állapotából. Visszatérés; // Visszatér a cikluskód elejére}, ha (key == '4') {// Ha megnyomja a 4 -es billentyűt, akkor a következőket teszi: int keyPressed = key - '4'; myMotor5-> lépés (180, ELŐRE, DUPLA); // Elindítja a motort, és 350 fokban forog előre. myMotor5-> release (); // Elengedi a motort a helyén tartás állapotából. Visszatérés; // Visszatér a cikluskód elejére}, ha (key == '5') {// Ha megnyomja az 5 -ös billentyűt, akkor a következőket teszi: int keyPressed = key - '5'; myMotor4-> lépés (6900, ELŐRE, DUPLA); // Elindítja a motort, és 350 fokban forog előre. myMotor4-> release (); // Elengedi a motort a helyén tartás állapotából. Visszatérés; // Visszatér a cikluskód elejére}, ha (key == '6') {// Ha megnyomja a 6 -os billentyűt, akkor a következőket teszi: int keyPressed = key - '6'; myMotor3-> lépés (400, ELŐRE, DUPLA); // Elindítja a motort, és 350 fokban forog előre. myMotor3-> release (); // Elengedi a motort a helyén tartás állapotából. Visszatérés; // Visszatér a ciklus elejére}, ha (key == '7') {// Ha megnyomja a 7 -es billentyűt, akkor a következőket teszi: int keyPressed = key - '7'; myMotor7-> lépés (400, ELŐRE, DUPLA); // Elindítja a motort, és 350 fokban forog előre. myMotor7-> release (); // Elengedi a motort a helyén tartás állapotából. Visszatérés; // Visszatér a cikluskód elejére}, ha (key == '8') {// Ha megnyomja a 8 -as billentyűt, akkor a következőket teszi: int keyPressed = key - '8'; myMotor8-> lépés (400, ELŐRE, DUPLA); // Elindítja a motort, és 350 fokban forog előre. myMotor8-> release (); // Elengedi a motort a helyén tartás állapotából. Visszatérés; // Visszatér a cikluskód elejére}}}}}} >>

Ajánlott: