Mundarija:

$ 1 Arduino asosidagi avtomat: 8 qadam
$ 1 Arduino asosidagi avtomat: 8 qadam

Video: $ 1 Arduino asosidagi avtomat: 8 qadam

Video: $ 1 Arduino asosidagi avtomat: 8 qadam
Video: Informatika va axborot texnologiyalari fanini o'qitishda innovatsion yondashuvlar 2024, Noyabr
Anonim
Image
Image
Koson
Koson

Biz o'z fikrimizni muhandislik o'qituvchimizdan oldik - hammamiz sinfimiz uchun avtomatni qo'yish yaxshi bo'lardi, deb o'yladik va u: "Ajoyib, bitta", dedi. Ma'lum bo'lishicha, avtomat katta loyiha bo'ladi va u tugagandan so'ng bizning muhandislik dasturimiz uchun mablag 'yig'uvchi bo'lib xizmat qiladi.

Uni 1 dollarlik avtomat deb atashadi, chunki uni yasash uchun 1 dollar kerak bo'ladi, aksincha, vekselni qabul qiluvchisi eski model bo'lgani uchun atigi 1 dollar pul oladi:)

1 -qadam: mezonlar

Biz stol ustiga to'g'ri keladigan va juda baland bo'lmagan avtomatni xohladik. Stolda osilgan avtomat yo'qligiga ishonch hosil qilish uchun biz stol kengligining o'lchamlarini oldik.

2 -qadam: Koson

Koson
Koson
Koson
Koson
Koson
Koson

Biz qutimizni 19 dyuym kengligida 17 dyuym uzunligida 25 dyuym qilib yasadik. Biz yog'ochni kesish uchun CNC mashinasidan foydalanardik. Biz yuzlarni loyihalash uchun qattiq ishlardan foydalandik va keyin ularni CNC dasturiy ta'minotimiz uchun fayl turiga o'tkazdik. Biz qirralarni silliqladik, so'ng ularni 1 dyuym bilan vidaladik. Biz old panelni menteşe bilan bog'ladik va vintlar boshqa tomonga o'tmasligi uchun ¼ vintlarni ishlatdik. Biz akril oynadan ham foydalanardik, uni javonlar va old panel uchun kesib tashladik.

3 -qadam: elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Arduino

Biz Arduino Mega 2560 kartasidan foydalandik. Shuningdek, biz Adafruit dvigatel platalarini ishlatdik, ular step motorlarini boshqarishi mumkin edi. Biz bir -biriga ulanishi uchun adafruitga pinlar qo'shdik. Ularni bir -birining ustiga qo'yishdi. Ularning har biri 2 ta dvigatelni boshqarishi mumkin. Bundan tashqari, o'tish moslamasini ulash kerakligini unutmang.

Ish stoli quvvat manbai

Bestek ATX quvvat manbai, quvvat manbai yoqilishi uchun adapter yordamida. Adapter sparkfun.com saytidan olingan va har xil kuchlanishni ta'minlaydi.

Dvigatelga burilishlar

Biz motorni ushlab turish, rulonni ushlab olish va rulonni tokchaga yo'naltirish uchun qattiq ish modellarini tayyorladik. Biz eBay -dan rulonlarga ega bo'ldik va ularni o'lchamiga kesib tashladik. Bundan tashqari, biz ulardan 3tasini egishimiz kerak edi, chunki biz rulonga ulanish uchun to'g'ri uchlari bilan 6 olmaganmiz. Keyin biz ularni 3D formatida bosib, rulon va motorga biriktirdik. Bizda zinapoyali dvigatellar o'rnatildi. U dvigatelni ushlab turardi va rulonni to'g'ri yo'l bo'ylab boshqarardi.

LCD va klaviatura

Biz Arduino klaviatura va LCD displeyini quvvat manbai adapterining 5V kuchlanishiga, so'ngra o'sha Arduino kartasiga ulanganmiz.

Ulanish

18 o'lchagichli simlardan foydalanishni tavsiya etamiz. Bizning holatimizda, har xil o'lchagichlar yordamida murosaga kelishimiz kerak edi, chunki bizda 18 o'lchagich tugab qoldi

LED tasmasi

Mashinani yoritish uchun biz LED tasmasini ishlatdik. Biz uni quvvat manbai adapteridagi 12V kuchlanishli simga uladik. Biz ishlatgan svetodiodli tasmada + va - bor edi, bu uni ulash jarayonini osonlashtirdi.

4 -qadam: Billni qabul qiluvchi

Billni qabul qiluvchi
Billni qabul qiluvchi
Billni qabul qiluvchi
Billni qabul qiluvchi
Billni qabul qiluvchi
Billni qabul qiluvchi
Billni qabul qiluvchi
Billni qabul qiluvchi

Biz hisob -kitoblarni qabul qiluvchi sifatida Coinco BA30B -dan foydalandik. Quvvat manbai sifatida uni to'g'ridan -to'g'ri devorga ulash kerak edi. Biz uni 24 pinli adapter bilan birlashtirdik va uni simlarni ulashni osonlashtirish uchun atx quvvat manbaidan oldik. Biz kuzatgan pinouts quyidagi havolada topilgan:

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

Bizning holatimizda, biz qonun loyihasini qabul qiluvchini ko'tarish uchun moslama yasashimiz kerak edi, chunki aks holda bu bizning korpusimiz uchun juda past bo'ladi.

5 -qadam: Sinov

Komponentlarning ishlashiga ishonch hosil qilish uchun avval elektronni korpus tashqarisida sinab ko'ring. Har qanday muammolarni korpus ichiga joylashtirishdan oldin hal qilish kerak.

6 -qadam: Elektron korpusga

Agar siz elektronikani sinab ko'rsangiz va natijalaridan qoniqsangiz, ularni korpusga joylashtirishni boshlang. Sim uzunligini shunday sozlangki, ular ichkariga qulay joylashsin.

7 -qadam: Yakuniy test

Kosonga qo'yilgach, yana hamma narsani sinab ko'ring. Agar hamma narsa siz kutgandek bo'lsa, tabriklayman! Siz avtomat yasadingiz.

8 -qadam: Arduino kodi + havolalar

Yuklamalar:

Arduino kodi

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

SolidWorks papkasi qismli fayllar va yig'ilishlar bilan

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

Agar havola bilan biror narsa yuz bergan bo'lsa, bu erda arduino kodi to'liq ko'rsatiladi. Arduino kodi <<

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

const int stepsPerRevolution = 200; const bayt ROWS = 4; // to'rt qatorli const bayt COLS = 3; // uchta ustunli char tugmalari [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; bayt rowPins [ROWS] = {5, 6, 7, 8}; // klaviatura baytlari colPins [COLS] = {2, 3, 4}; // klaviaturaning ustunli pinoutlariga ulanish Klaviatura klaviaturasi = Klaviatura (makeKeymap (tugmalar), 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 ulangan // Konstantalar // // hisobni tasdiqlovchi krediti uchun pin (-) liniyasi const int billValidator = 22;

// o'zgaruvchilar /

/ pulsning davomiyligini (millisekundlarda) belgilanmagan uzoq davomiyligini qayd etish;

// yozilgan jami dollarlarni ushlab turish dollar dollarCounter = 0; void setup () {lcd.begin (16, 1); // lcd.print lcd matn koordinatalarini o'rnating ("Faqat $ 1 kiriting"); // Serial.begin (9600) matnini o'rnating; // Aloqa uchun ketma -ket portlarni ishga tushiring. Serial.println ("Stepper test!"); // Seriyali monitorga qadam sinovini yozing, shunda biz qaysi qadam motorini bosilganligini bilib olamiz. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Dvigatel tezligini o'rnating, ularda ular ishlaydilar myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Bill tasdiqlagich va pinMode tugmachalari uchun pin sozlamalari (billValidator, INPUT); // Billaccepterni o'rnatadi

// Aloqa uchun ketma -ket portlarni ishga tushiring. Serial.begin (9600); Serial.println ("Dollar kutilmoqda …"); } void loop () {{muddati = pulseIn (billValidator, HIGH); // Hisob -fakturani qabul qiluvchidan olingan puls uzunligini qidirishni boshlaydi, agar (davomiyligi> 12000) // Qayta ishlangan va haqiqiy dollar sifatida tasdiqlanishi uchun qiymati oshishi kerak {// Count dollar dollarCounter ++; // Serial.print ("Dollar aniqlandi. / N Jami:") tushunchasi tekshirilmoqda; // Dollar sonining yangi sonini ko'rsatish Serial.println (dollarCounter); tugma bosilguncha kutish uchun // loop (davomiyligi> 12000) {char key = keypad.getKey (); // tugmachani ulanadi va qaysi tugma bosilishini ko'rishni boshlaydi, agar (key! = NO_KEY) {// bosilgan tugmachani qidirsa Serial.println (key); // ketma -ket monitorda qaysi biri bosilganligini bizga xabar beradi} {if (key == '1') {// Agar 1 -tugma bosilsa, quyidagilarni bajaradi: int keyPressed = key - '1'; myMotor8-> qadam (580, Oldinga, DUBLE); // Dvigatelni ishga tushiradi va 350 gradus oldinga yo'nalishda aylanadi. myMotor8-> chiqarish (); // Dvigatel o'zini joyida ushlab turish holatidan chiqaradi. qaytish; // Loop kodining boshiga qaytadi}

if (key == '2') {// Agar 2 -tugma bosilsa, quyidagilarni bajaradi: int keyPressed = key - '2'; myMotor7-> qadam (400, oldinga, ikki barobar); // Dvigatelni ishga tushiradi va 350 gradus oldinga yo'nalishda aylanadi. myMotor7-> chiqarish (); // Dvigatel o'zini joyida ushlab turish holatidan chiqaradi. qaytish; // loop kodining boshiga qaytadi} if (key == '3') {// 3 -tugma bosilsa, quyidagilarni bajaradi: int keyPressed = key - '3'; myMotor6-> qadam (400, oldinga, ikki baravar); // Dvigatelni ishga tushiradi va 350 gradus oldinga yo'nalishda aylanadi. myMotor6-> chiqarish (); // Dvigatel o'zini joyida ushlab turish holatidan chiqaradi. qaytish; // tsikl kodining boshiga qaytadi} if (key == '4') {// 4 -tugma bosilsa, quyidagilarni bajaradi: int keyPressed = key - '4'; myMotor5-> qadam (180, OLGA, DUBLE); // Dvigatelni ishga tushiradi va 350 gradus oldinga yo'nalishda aylanadi. myMotor5-> chiqarish (); // Dvigatel o'zini joyida ushlab turish holatidan chiqaradi. qaytish; // loop kodining boshiga qaytadi} if (key == '5') {// 5 -tugma bosilsa, quyidagilarni bajaradi: int keyPressed = key - '5'; myMotor4-> qadam (6900, OLGA, DUBLE); // Dvigatelni ishga tushiradi va 350 gradus oldinga yo'nalishda aylanadi. myMotor4-> chiqarish (); // Dvigatel o'zini joyida ushlab turish holatidan chiqaradi. qaytish; // loop kodining boshiga qaytadi} if (key == '6') {// Agar 6 -tugma bosilsa, quyidagilarni bajaradi: int keyPressed = key - '6'; myMotor3-> qadam (400, oldinga, ikki baravar); // Dvigatelni ishga tushiradi va 350 gradus oldinga yo'nalishda aylanadi. myMotor3-> chiqarish (); // Dvigatel o'zini joyida ushlab turish holatidan chiqaradi. qaytish; // tsikl kodining boshiga qaytadi} if (key == '7') {// 7 -tugma bosilsa, quyidagilarni bajaradi: int keyPressed = key - '7'; myMotor7-> qadam (400, oldinga, ikki barobar); // Dvigatelni ishga tushiradi va 350 gradus oldinga yo'nalishda aylanadi. myMotor7-> chiqarish (); // Dvigatel o'zini joyida ushlab turish holatidan chiqaradi. qaytish; // loop kodining boshiga qaytadi} if (key == '8') {// Agar 8 tugma bosilsa, quyidagilarni bajaradi: int keyPressed = key - '8'; myMotor8-> qadam (400, oldinga, ikki baravar); // Dvigatelni ishga tushiradi va 350 gradus oldinga yo'nalishda aylanadi. myMotor8-> chiqarish (); // Dvigatel o'zini joyida ushlab turish holatidan chiqaradi. qaytish; // Loop kodining boshiga qaytadi}}}}}} >>

Tavsiya: