Mündəricat:

1 dollarlıq Arduino əsaslı avtomat: 8 addım
1 dollarlıq Arduino əsaslı avtomat: 8 addım

Video: 1 dollarlıq Arduino əsaslı avtomat: 8 addım

Video: 1 dollarlıq Arduino əsaslı avtomat: 8 addım
Video: Crypto Pirates Daily News – 31 января 2022 г. – последнее обновление новостей о криптовалютах 2024, Noyabr
Anonim
Image
Image
Korpus
Korpus

Fikrimizi mühəndislik müəllimimizdən aldıq - hamımız sinifimiz üçün bir avtomatın olmasını yaxşı bir fikir hesab etdik və dedi: "sərin, düzəlt". Məlum olub ki, bir avtomat böyük bir böyük layihə olacaq və tamamlandıqda mühəndislik proqramımız üçün pul toplayacaq.

1 dollarlıq alış -veriş maşını adlanır, çünki onun hazırlanması 1 dollara başa gəlir, əksinə, faktura qəbuledicisi yalnız 1 dollarlıq əskinaslar alan daha köhnə bir modeldir:)

Addım 1: meyarlar

Masanın üstünə oturacaq və çox hündür olmayan bir avtomat istədik. Otomatın masadan asılı olmadığından əmin olmaq üçün masanın eninin ölçülərini götürdük.

Addım 2: Korpus

Korpus
Korpus
Korpus
Korpus
Korpus
Korpus

Qutumuzu 19 düym genişliyində 17 düym uzunluğunda 25 düym uzunluğunda etdik. Ağacımızı kəsmək üçün bir CNC Maşını istifadə etdik. Üzləri dizayn etmək üçün möhkəm işlərdən istifadə etdik və sonra onları CNC proqramımız üçün fayl növlərinə çevirdik. Kenarları zımpara etdik və sonra 1 ¼ ilə vidaladıq. Ön paneli bir menteşə ilə bağladıq və vidaların digər tərəfə keçməməsi üçün ¼ vintlər istifadə etdik. Rəflər və ön panel üçün kəsdiyimiz Akril Şüşədən də istifadə etdik.

Addım 3: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Arduino

Arduino Mega 2560 lövhəsindən istifadə etdik. Adafruit Motor Lövhələrindən də istifadə edərək step motorlarını işə sala bildik. Adafruitə bir -birinə bağlanması üçün pinlər əlavə etdik. Onları bir -birinin üstünə qoydular. Hər biri 2 mühərriklə işləyə bilər. Ayrıca, tullananların bağlanması lazım olduğunu unutmayın.

Masaüstü Güc Təchizatı

Bestek ATX Enerji təchizatını qorumaq üçün adapterdən istifadə edin. Adapter sparkfun.com saytından və müxtəlif gərginliklər təmin edir.

Mühərriklərə sarılır

Motoru tutmaq, bobini tutmaq və rəf boyunca bobini istiqamətləndirmək üçün solidworks modelləri hazırladıq. Bobinlərimizi ebaydan əldə etmişik və ölçülərə qədər kəsmişdik. Bobin bağlayıcısına qoşulmaq üçün düz ucları ilə 6 əldə etmədiyimiz üçün onlardan 3 -ü əymək məcburiyyətində qaldıq. Daha sonra onları 3D olaraq çap etdik və rulona və motora bağladıq. Sahib olduğumuz pilləli mühərrikləri montaja qoyduq. Motoru tutacaq və bobini düz bir yola yönəldəcək.

LCD və klaviatura

Güc üçün enerji təchizatı adapterinin 5V -luq telinə və sonra eyni Arduino lövhəsinə qoşulmuş bir Arduino Keypad və LCD ekranı istifadə etdik.

Kablolama

18 ölçü telindən istifadə etməyi məsləhət görürük. Bizim vəziyyətimizdə, 18 ölçü cihazımız tükəndiyi üçün müxtəlif ölçü cihazları ilə güzəştə getməli olduq

LED şeridi

Maşını işıqlandırmaq üçün bir LED şeridi istifadə etdik. Güc təchizatı adapterindəki 12V -luq bir kabelə bağladıq. Şükürlər olsun ki, istifadə etdiyimiz LED şeridin + və - işarəsi vardı ki, bu da onu birləşdirmə prosesini asanlaşdırdı.

Addım 4: Bill qəbul edən

Bill qəbul edən
Bill qəbul edən
Bill qəbul edən
Bill qəbul edən
Bill qəbul edən
Bill qəbul edən
Bill qəbul edən
Bill qəbul edən

Hesab qəbul edən kimi Coinco BA30B istifadə etdik. Güc mənbəyi olaraq birbaşa divara bağlanmalı idi. Atx enerji təchizatından 24 pinli bir adapter ilə birləşdirdik və daha asan bir kabel bağladıq. İzlədiyimiz pinoutlar aşağıdakı linkdədir:

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

Bizim vəziyyətimizdə, hesab qəbuledicisini qaldırmaq üçün bir bağ yaratmalı olduq, çünki əks halda bu, korpusumuz üçün çox aşağı olardı.

Addım 5: Test

Komponentlərin işləməsini təmin etmək üçün əvvəlcə elektronikanı korpus xaricində sınayın. Yaranan problemlər korpusun içərisinə yerləşdirilməzdən əvvəl həll edilməlidir.

Addım 6: Korpusa elektronika

Elektronikanı sınadıqdan və nəticələrindən razı qaldıqdan sonra onları korpusunuza yerləşdirməyə başlayın. Tel uzunluqlarını içəriyə rahat oturacaq şəkildə tənzimləyin.

Addım 7: Yekun Test

Qutuya yerləşdirildikdən sonra hər şeyi yenidən sınayın. Hər şey gözlədiyiniz kimi işləyirsə, təbrik edirəm! Bir avtomat düzəltmisiniz.

Addım 8: Arduino Kod + Bağlantılar

Yükləmələr:

Arduino kodu

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

Parça faylları və montajı olan SolidWorks Qovluğu

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

Bağlantıda bir şey baş verərsə, burada tam olaraq göstərilən arduino kodu verilmişdir. Arduino kodu <<

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

const int stepsPerRevolution = 200; const bayt ROWS = 4; // dörd satır const bayt COLS = 3; // üç sütun char düymələri [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; bayt rowPins [ROWS] = {5, 6, 7, 8}; // klaviatura baytının colPins [pinləri] satır pinoutlarına qoşulmaq [COLS] = {2, 3, 4}; // klaviatura sütun pinouts qoşulmaq Keypad klaviatura = Keypad (makeKeymap (düymələr), 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-nin bağlı olduğu // Sabitlər // // faktura təsdiqləyicisinin krediti üçün pin (-) xətti const int billValidator = 22;

// Dəyişənlər /

/ nəbzin (milisaniyə) imzasız uzun müddətinin qeyd edilməsi;

// int dollarCounter = 0 qeyd olunan ümumi dollar tutmaq; void setup () {lcd.begin (16, 1); // lcd mətn koordinatlarını təyin edin lcd.print ("Yalnız $ 1 daxil edin"); // Mətn seçin Serial.begin (9600); // Əlaqə üçün seriyalı portları işə salın. Serial.println ("Stepper test!"); // Seriyalı monitorda Stepper Testini yazın ki, hansı step motorunun basıldığını bilək. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // myMotor2-> setSpeed (100) işlədəcəkləri Motor Sürətini təyin edin; myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Bill təsdiqləyicisi və pinMode düyməsi üçün pin qurğuları (billValidator, INPUT); // Billaccepteri təyin edir

// Əlaqə üçün seriyalı portları işə salın. Serial.begin (9600); Serial.println ("Dollar gözləyir …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Qanun qəbuledicisindən alınan nəbz uzunluğunu axtarmağa başlayır, əgər (müddəti> 12000) // İşlənmiş və orijinal dollar kimi təsdiq etmək üçün dəyərini keçməlidir {// Count dollar dollarCounter ++; // Serial.print ("Dollar aşkarlandı. / N Cəmi:") başa düşülməsi yoxlanılır; // Yeni dollar sayını göstər Serial.println (dollarCounter); // döngə (müddəti> 12000) olarkən bir düyməyə basılana qədər gözləmək üçün {char key = keypad.getKey (); // klaviaturanı əlaqələndirir və (açar! = NO_KEY) {// basılan düyməni axtardığı halda Serial.println (key); // seriyalı monitorda} {if (key == '1') {// düyməsinə basıldığı təqdirdə aşağıdakıları edir: int keyPressed = key - '1'; myMotor8-> addım (580, İLƏ, İKİ); // Motoru işə salır və 350 dərəcə irəli istiqamətdə fırlanır. myMotor8-> buraxın (); // Motoru yerində tutma vəziyyətindən azad edir. qayıtmaq; // Döngə kodunun əvvəlinə qayıdır}

if (key == '2') {// 2 -ci düyməyə basıldıqda aşağıdakıları edir: int keyPressed = key - '2'; myMotor7-> addım (400, İLƏ, ÇİFT); // Motoru işə salır və 350 dərəcə irəli istiqamətdə fırlanır. myMotor7-> buraxın (); // Motoru yerində tutma vəziyyətindən azad edir. qayıtmaq; // döngə kodunun əvvəlinə qayıdır} if (key == '3') {// 3 -cü düyməyə basıldıqda aşağıdakıları edir: int keyPressed = key - '3'; myMotor6-> addım (400, İLƏ, ÇİFT); // Motoru işə salır və irəli istiqamətdə 350 dərəcə fırlanır. myMotor6-> buraxın (); // Motoru yerində tutma vəziyyətindən azad edir. qayıtmaq; // döngə kodunun əvvəlinə qayıdır} if (key == '4') {// 4 düyməsinə basıldıqda, aşağıdakıları yerinə yetirir: int keyPressed = key - '4'; myMotor5-> addım (180, İLƏ, ÇİFT); // Motoru işə salır və irəli istiqamətdə 350 dərəcə fırlanır. myMotor5-> buraxın (); // Motoru yerində tutma vəziyyətindən azad edir. qayıtmaq; // döngə kodunun əvvəlinə qayıdır} if (key == '5') {// 5 düyməsinə basıldıqda aşağıdakıları edir: int keyPressed = key - '5'; myMotor4-> addım (6900, İLƏ, ÇİFT); // Motoru işə salır və 350 dərəcə irəli istiqamətdə fırlanır. myMotor4-> buraxın (); // Motoru yerində tutma vəziyyətindən azad edir. qayıtmaq; // döngə kodunun əvvəlinə qayıdır} if (key == '6') {// 6 düyməsinə basıldıqda aşağıdakıları edir: int keyPressed = key - '6'; myMotor3-> addım (400, İLƏ, ÇİFT); // Motoru işə salır və irəli istiqamətdə 350 dərəcə fırlanır. myMotor3-> buraxın (); // Motoru yerində tutma vəziyyətindən azad edir. qayıtmaq; // döngə kodunun əvvəlinə qayıdır} if (key == '7') {// 7 düyməsinə basıldıqda aşağıdakıları edir: int keyPressed = düyməsi - '7'; myMotor7-> addım (400, İLƏ, ÇİFT); // Motoru işə salır və irəli istiqamətdə 350 dərəcə fırlanır. myMotor7-> buraxın (); // Motoru yerində tutma vəziyyətindən azad edir. qayıtmaq; // döngə kodunun əvvəlinə qayıdır} if (key == '8') {// 8 düyməsinə basıldıqda aşağıdakıları edir: int keyPressed = düyməsi - '8'; myMotor8-> addım (400, İLƏ, İKİ); // Motoru işə salır və 350 dərəcə irəli istiqamətdə fırlanır. myMotor8-> buraxın (); // Motoru yerində tutma vəziyyətindən azad edir. qayıtmaq; // Döngə kodunun əvvəlinə qayıdır}}}}}} >>

Tövsiyə: