Агуулгын хүснэгт:

$ 1 Arduino-д суурилсан автомат машин: 8 алхам
$ 1 Arduino-д суурилсан автомат машин: 8 алхам

Видео: $ 1 Arduino-д суурилсан автомат машин: 8 алхам

Видео: $ 1 Arduino-д суурилсан автомат машин: 8 алхам
Видео: 12. "Эрдэмтөгс" SCIENCE SHOW - ARDUINO -д суурилсан роботууд 2024, Арваннэгдүгээр
Anonim
Image
Image
Суултын яндан
Суултын яндан

Бид инженерийн багшаасаа санаагаа авсан - бид бүгд ангидаа автомат машин байрлуулах нь зүйтэй гэж бодож байсан бөгөөд тэр "дажгүй, нэгийг хий" гэж хэлсэн. Автомат машин нь маш сайн ахлах төсөл болох бөгөөд дууссаны дараа манай инженерийн хөтөлбөрт хандив цуглуулах үүрэг гүйцэтгэх болно.

Үүнийг 1 долларын үнэтэй автомат машин гэж нэрлэдэг бөгөөд энэ нь 1 долларын үнэтэй биш, харин данс хүлээн авагч нь зөвхөн 1 долларын дэвсгэрт авдаг хуучин загвар учраас:)

Алхам 1: шалгуур

Бид ширээний орой дээр таарсан, хэт өндөр биш автомат машин хүсч байсан. Автомат машиныг ширээн дээр өлгөхгүй байхын тулд бид ширээний өргөний хэмжээсийг авсан.

Алхам 2: Бүрхүүл

Суултын яндан
Суултын яндан
Суултын яндан
Суултын яндан
Суултын яндан
Суултын яндан

Бид хайрцгаа 19 инч өргөн, 17 инч урт, 25 инч өндөртэй болгож, модоо огтлохдоо CNC машин ашигласан. Бид хатуу хийцийг ашиглан нүүрний загварыг гаргаж, дараа нь CNC програм хангамжийн файлын төрөл болгон хөрвүүлэв. Бид ирмэгийг зүлгэж, дараа нь 1 ¼ -ээр шургуулна. Бид урд талын самбарыг нугасаар холбож, боолтыг нөгөө талд нь нэвтрүүлэхгүйн тулд ¼ “эрэг ашигласан. Мөн бид тавиур болон урд талын самбарыг хайчилж авсан нийлэг шилийг ашигласан.

Алхам 3: Электроник

Электроник
Электроник
Электроник
Электроник
Электроник
Электроник
Электроник
Электроник

Ардуино

Бид Arduino Mega 2560 хавтанг ашигласан. Бид мөн Adafruit моторын самбарыг ашигласан бөгөөд ингэснээр тэд stepper моторыг ажиллуулж чаддаг. Бид бие биетэйгээ холбогдохын тулд adafruit -д зүү нэмсэн. Тэднийг бие биенийхээ дээр байрлуулсан байв. Хүн бүр 2 мотор ажиллуулах боломжтой. Түүнчлэн, холбогчийг холбох шаардлагатай гэдгийг анхаарна уу.

Ширээний цахилгаан хангамж

Bestek ATX Цахилгаан хангамжийг үргэлжлүүлэхийн тулд адаптер ашиглан цахилгаан хангамж. Адаптер нь sparkfun.com -аас авсан бөгөөд янз бүрийн хүчдэл өгдөг.

Мотор руу ороомог

Бид моторыг барих, ороомог шүүрэх, ороомогыг тавиурын дагуу чиглүүлэхийн тулд хатуу хийц загварыг хийсэн. Бид ebay -ээс ороомогоо олж аваад хэмжээг нь хайчилж авлаа. Ороомог бэхэлгээнд холбохын тулд шулуун үзүүртэй 6 аваагүй тул бид 3 -ыг нь нугалах шаардлагатай болсон. Дараа нь бид тэдгээрийг 3D хэлбэрээр хэвлээд ороомог болон моторт холбосон. Бидэнд байсан stepper моторуудыг бид бэхэлгээнд суулгасан. Энэ нь моторыг барьж, ороомогыг шулуун замаар чиглүүлэх болно.

LCD болон товчлуур

Бид Arduino товчлуур ба LCD дэлгэцийг тэжээлийн адаптер дээр 5V залгуурт холбож, дараа нь ижил Arduino самбар дээр ашигласан.

Цахилгаан утас

18 хэмжигч утас ашиглахыг зөвлөж байна. Манай тохиолдолд 18 хэмжүүр дууссан тул янз бүрийн хэмжигч ашиглан буулт хийх ёстой байсан

LED зурвас

Бид машиныг гэрэлтүүлэхийн тулд LED тууз ашигласан. Бид үүнийг цахилгаан тэжээлийн адаптер дээр 12V хүчдэлд холбосон. Бидний талархалтайгаар ашигласан LED зурвас нь + ба - дээр байсан бөгөөд үүнийг холбох процессыг хөнгөвчилсөн.

Алхам 4: Билл хүлээн авагч

Билл хүлээн авагч
Билл хүлээн авагч
Билл хүлээн авагч
Билл хүлээн авагч
Билл хүлээн авагч
Билл хүлээн авагч
Билл хүлээн авагч
Билл хүлээн авагч

Бид төлбөр тооцоогоо хүлээн авахдаа Coinco BA30B -ийг ашигласан. Цахилгаан үүсгүүр болгон хананд шууд холбох ёстой байв. Бид үүнийг 24-зүү адаптертай холбож, залгуурт холбож, утсыг хөнгөвчлөх болно. Бидний дагаж мөрдсөн холбоосууд дараах линкээс олдсон болно.

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

Манай тохиолдолд бид төлбөр тооцоог хүлээн авах өргөлтийг бий болгох ёстой байсан, эс тэгвээс энэ нь бидний бүрхүүлийн хувьд хэтэрхий бага байх болно.

Алхам 5: Туршилт

Бүрэлдэхүүн хэсгүүд ажиллаж байгаа эсэхийг шалгахын тулд эхлээд цахилгаан хэрэгслийг гадна бүрхүүлээс гадуур туршиж үзээрэй. Асуудлыг бүрхүүлд оруулахаас өмнө шийдвэрлэх ёстой.

Алхам 6: Цахилгаан хэрэглэлээс яндан руу

Та цахилгаан хэрэгслийг туршиж үзээд үр дүнд нь сэтгэл хангалуун байгаа бол тэдгээрийг бүрхүүлдээ хийж эхлээрэй. Утасны уртыг дотор нь эвтэйхэн тааруулж тохируулна уу.

Алхам 7: Эцсийн шалгалт

Бүрхүүлд оруулсны дараа бүх зүйлийг дахин туршиж үзээрэй. Хэрэв бүх зүйл таны хүлээж байсан шиг байвал баяр хүргэе! Та автомат машин хийсэн.

Алхам 8: Arduino код + холбоосууд

Таталтууд:

Arduino код

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

Хэсэгчилсэн файлууд болон угсралт бүхий SolidWorks хавтас

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

Холбоосонд ямар нэгэн зүйл тохиолдсон тохиолдолд arduino кодыг бүрэн харуулав. Arduino код <<

#include #include #include "Arduino.h" #include #include #include "хэрэгсэл/Adafruit_MS_PWMServoDriver.h" #include

const int stepsPerRevolution = 200; const байт ROWS = 4; // дөрвөн мөр const байт COLS = 3; // гурван баганын char товчлуур [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; байт rowPins [ROWS] = {5, 6, 7, 8}; // товчлуурын байт colPins [COLS] = {2, 3, 4} -н мөрийн хавчуургатай холбогдох; // товчлуурын баганын товчлууруудтай холбогдох Товчлуурын товчлуур = Товчлуур (makeKeymap (түлхүүрүүд), 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); // Digital Pins lcd нь // Constants // // -т холбогдсон бөгөөд төлбөр тооцоог баталгаажуулагчийн кредитийг зүү (-) const int billValidator = 22;

// Хувьсагч /

/ гарын үсэг зураагүй урт хугацааны импульсийн үргэлжлэх хугацааг (миллисекунд) бүртгэх;

// бүртгэгдсэн нийт долларыг хадгалах int dollarCounter = 0; void setup () {lcd.begin (16, 1); // lcd текстийн координатыг тохируулах lcd.print ("Зөвхөн $ 1 оруулах"); // Текстийг тохируулах Serial.begin (9600); // Харилцаа холбооны цуваа портуудыг эхлүүлэх. Serial.println ("Stepper test!"); // Цуваа монитор дээр Stepper Test -ийг бичээд аль stepper мотор дарагдсан болохыг мэдэж аваарай. AFMS 1. эхлэх (); AFMS2.ben эхлэх (); AFMS 3. эхлэх (); AFMS4.begin (); myMotor1-> setSpeed (100); // myMotor2-> setSpeed (100) -ыг ажиллуулах моторын хурдыг тохируулах; myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Билл баталгаажуулагч болон pinMode товчлуурын тохиргоог бэхлэх (billValidator, INPUT); // Биллакцептерийг тохируулна

// Харилцаа холбооны цуваа портуудыг эхлүүлэх. Цуваа эхлэх (9600); Serial.println ("Доллар хүлээж байна …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Хэрэв (үргэлжлэх хугацаа> 12000) бол төлбөр тооцоог хүлээн авагчаас авсан импульсийн уртыг хайж эхэлнэ // Боловсруулсан болон жинхэнэ доллар болохыг баталгаажуулахын тулд үнэ нь давах ёстой {// Доллар долларыг тоолох Counter ++; // Serial.print ("Доллар илэрсэн. / N Нийт:") ойлгогдож байгаа эсэхийг шалгаж байна; // Долларын шинэ тоог харуулах Serial.println (dollarCounter); // давталт (үргэлжлэх хугацаа> 12000) {char key = keypad.getKey (); // keyoad -ийг холбож, (key! = NO_KEY) {// дарагдсан түлхүүрийг хайж олох юм бол Serial.println (key) түлхүүрийг хайж эхлэх болно; // цуваа дэлгэц дээр аль нь дарагдсан болохыг бидэнд мэдэгдэнэ} {if (key == '1') {// Хэрэв 1 -р товчлуур дарагдсан бол дараах зүйлийг хийнэ: int keyPressed = key - '1'; myMotor8-> алхам (580, УРД, ХОЁР); // Мотор асааж, урагш чиглэлд 350 градус эргэдэг. myMotor8-> хувилбар (); // Моторыг байрандаа байлгасан байдлаас гаргадаг. буцах; // Циклийн кодын эхлэл рүү буцна}

if (key == '2') {// Хэрэв 2 -р товчлуур дарагдсан бол дараах зүйлийг хийнэ: int keyPressed = key - '2'; myMotor7-> алхам (400, урагш, давхар); // Мотор асааж, урагш чиглэлд 350 градус эргэдэг. myMotor7-> хувилбар (); // Моторыг байрандаа байлгасан байдлаас гаргадаг. буцах; // давталтын кодын эхэнд буцаж ирдэг} if (key == '3') {// Хэрэв 3 -р товчлуур дарагдсан бол дараах зүйлийг хийнэ: int keyPressed = key - '3'; myMotor6-> алхам (400, урагш, давхар); // Мотор асааж, урагш чиглэлд 350 градус эргэдэг. myMotor6-> хувилбар (); // Моторыг байрандаа байлгасан байдлаас гаргадаг. буцах; // давталтын кодын эхлэл рүү буцна} if (key == '4') {// 4 -р товчлуур дарагдсан бол дараах зүйлийг хийнэ: int keyPressed = key - '4'; myMotor5-> алхам (180, урагш, давхар); // Мотор асааж, урагш чиглэлд 350 градус эргэдэг. myMotor5-> хувилбар (); // Моторыг байрандаа байлгасан байдлаас гаргадаг. буцах; // давталтын кодын эхлэл рүү буцна} if (key == '5') {// Хэрэв 5 -р товчлуур дарагдсан бол дараах зүйлийг хийнэ: int keyPressed = key - '5'; myMotor4-> алхам (6900, УРД, ХОЁР); // Мотор асааж, урагш чиглэлд 350 градус эргэдэг. myMotor4-> хувилбар (); // Моторыг байрандаа байлгасан байдлаас гаргадаг. буцах; // давталтын кодын эхлэл рүү буцна} if (key == '6') {// Хэрэв 6 -р товчлуур дарагдсан бол дараах зүйлийг хийнэ: int keyPressed = key - '6'; myMotor3-> алхам (400, урагш, давхар); // Мотор асааж, урагш чиглэлд 350 градус эргэдэг. myMotor3-> хувилбар (); // Моторыг байрандаа байлгасан байдлаас гаргадаг. буцах; // давталтын кодын эхлэл рүү буцна} if (key == '7') {// Хэрэв 7 -р товчлуур дарагдсан бол дараах зүйлийг хийнэ: int keyPressed = key - '7'; myMotor7-> алхам (400, урагш, давхар); // Мотор асааж, урагш чиглэлд 350 градус эргэдэг. myMotor7-> хувилбар (); // Моторыг байрандаа байлгасан байдлаас гаргадаг. буцах; // давталтын кодын эхлэл рүү буцна} if (key == '8') {// Хэрэв 8 -р товчлуур дарагдсан бол дараах зүйлийг хийнэ: int keyPressed = key - '8'; myMotor8-> алхам (400, УРД, ХОЁР); // Мотор асааж, урагш чиглэлд 350 градус эргэдэг. myMotor8-> хувилбар (); // Моторыг байрандаа байлгасан байдлаас гаргадаг. буцах; // Давталтын кодын эхлэл рүү буцна}}}}}} >>

Зөвлөмж болгож буй: