İçindekiler:

$1 Arduino Tabanlı Otomat: 8 Adım
$1 Arduino Tabanlı Otomat: 8 Adım

Video: $1 Arduino Tabanlı Otomat: 8 Adım

Video: $1 Arduino Tabanlı Otomat: 8 Adım
Video: No-Code Girişim & Ürün Geliştirme: Mustafa Dalcı #nocode #lowcode 2024, Temmuz
Anonim
Image
Image
kasa
kasa

Fikrimizi mühendislik öğretmenimizden aldık - hepimiz sınıfımız için bir otomat olmasının iyi bir fikir olacağını düşündük ve o "harika, bir tane yap" dedi. Bir otomat makinesinin büyük bir kıdemli proje olacağı ve tamamlandığında mühendislik programımız için bir bağış toplama işlevi göreceği ortaya çıktı.

Buna 1$ Otomat denmesinin nedeni 1$'a mal olması değil, sadece fatura alıcısının sadece 1$ fatura alan eski bir model olması:)

1. Adım: Kriterler

Masanın üstüne sığacak ve çok uzun olmayacak bir otomat istedik. Otomatın masadan sarkmadığından emin olmak için masanın genişliğinin boyutlarını aldık.

2. Adım: Muhafaza

kasa
kasa
kasa
kasa
kasa
kasa

Kutumuzu 19 inç genişliğinde 17 inç uzunluğunda ve 25 inç boyunda yaptık. Ahşabı kesmek için bir CNC Makinesi kullandık. Yüzleri tasarlamak için solidworks kullandık ve ardından bunları CNC yazılımımız için çizim dosyası türlerine dönüştürdük. Kenarları zımparaladık ve ardından 1 ¼” ile vidaladık. Ön paneli menteşe ile tutturduk ve ¼” vida kullandık ki vidalar diğer tarafa geçmesin. Raflar ve ön panel için de kestiğimiz Akrilik Cam kullandık.

Adım 3: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik

Arduino

Arduino Mega 2560 Board kullandık. Step motorları çalıştırabilmeleri için Adafruit Motor Kartları da kullandık. Adafruit'lerin birbirine bağlanması için pin ekledik. Bunları üst üste yerleştirdiler. Her biri 2 motor çalıştırabilir. Ayrıca, jumper'ın bağlanması gerektiğini lütfen unutmayın.

Masaüstü Güç Kaynağı

Güç kaynağını açık tutmak için bir adaptör kullanarak Bestek ATX Güç kaynağı. Adaptör sparkfun.com'dan alınmıştır ve çeşitli voltajlar sağlar.

Motorlara Bobinler

Motoru tutmak, bobini tutmak ve bobini raf boyunca yönlendirmek için solidworks modelleri yaptık. Bobinlerimizi ebay'den aldık ve boyutlarına göre kestik. Bobin yuvasına bağlamak için düz uçlu 6 tane alamadığımız için 3 tanesini de bükmek zorunda kaldık. Daha sonra bunları 3D olarak yazdırdık ve bobine ve motora bağladık. Sahip olduğumuz step motorları bir yuvaya yerleştirdik. Motoru tutar ve bobini düz bir yol boyunca yönlendirir.

LCD ve Tuş Takımı

Güç için güç kaynağı adaptöründeki 5V'luk bir kabloya bağlı bir Arduino Tuş Takımı ve LCD ekran kullandık ve ardından aynı Arduino Kartına

kablolama

18 gauge tel kullanılmasını öneririz. Bizim durumumuzda, 18 göstergemiz bittiği için çeşitli göstergeler kullanarak uzlaşmak zorunda kaldık.

LED şerit

Makineyi aydınlatmak için bir LED şerit kullandık. Güç kaynağı adaptöründeki 12V'luk bir kabloya bağladık. Neyse ki kullandığımız LED şeridin üzerinde + ve - vardı, bu da onu bağlama işlemini kolaylaştırdı.

4. Adım: Fatura Alıcısı

Fatura Alıcısı
Fatura Alıcısı
Fatura Alıcısı
Fatura Alıcısı
Fatura Alıcısı
Fatura Alıcısı
Fatura Alıcısı
Fatura Alıcısı

Fatura alıcımız olarak bir Coinco BA30B kullandık. Güç kaynağı olarak doğrudan duvara bağlanması gerekiyordu. Takmak ve daha kolay kablolamaya izin vermek için onu bir atx güç kaynağından 24 pinli bir adaptörle birleştirdik. Takip ettiğimiz pinout'lar aşağıdaki bağlantıda bulunur:

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

Bizim durumumuzda, fatura alıcısını yükseltmek için bir montaj oluşturmak zorunda kaldık çünkü aksi takdirde kasamız için çok düşük olurdu.

Adım 5: Test Etme

Bileşenlerin çalıştığından emin olmak için önce elektronik aksamı kasanın dışında test edin. Ortaya çıkan herhangi bir sorun, kasanın içine yerleştirilmeden önce düzeltilmelidir.

Adım 6: Elektronikten Muhafazaya

Elektroniği test ettikten ve sonuçlarından memnun kaldıktan sonra, bunları kasanıza yerleştirmeye başlayın. Kablo uzunluklarını, içine rahatça sığacak şekilde ayarlayın.

7. Adım: Son Test

Muhafazaya yerleştirildikten sonra her şeyi tekrar test edin. Her şey beklediğiniz gibi çalışıyorsa, tebrikler! Bir otomat yaptın.

Adım 8: Arduino Kodu + Bağlantılar

İndirilenler:

Arduino Kodu

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

Parça dosyaları ve montaj içeren SolidWorks Klasörü

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

Bağlantıya bir şey olması durumunda, işte tam olarak görüntülenen arduino kodu. Arduino Kodu <<

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

const int stepPerRevolution = 200; const bayt SATIRLAR = 4; //dört satır const bayt COLS = 3; //üç sütun karakter anahtarları[ROWS][COLS] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; bayt rowPins[SATIR] = {5, 6, 7, 8}; //tuş takımının satır pin çıkışlarına bağlan bayt colPins[COLS] = {2, 3, 4}; //tuş takımının sütun pinlerine bağlanın Tuş takımı keypad = Keypad(makeKeymap(keys), 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); // lcd'nin bağlı olduğu dijital pinler // sabitler // // fatura doğrulayıcının kredisi için pin(-) satırı const int billValidator = 22;

// Değişkenler /

/ darbe süresinin kaydedilmesi (milisaniye) işaretsiz uzun süre;

// kaydedilen toplam doların tutulması int dolarCounter = 0; geçersiz kurulum() { lcd.begin(16, 1); // lcd metin koordinatlarını ayarla lcd.print("Yalnızca $1 Girin"); // Metni Serial.begin(9600) ayarla; // İletişim için seri portları başlat. Serial.println("Adım testi!"); //Hangi step motora basıldığını bilmemiz için seri monitörde Out Stepper Test yazın. AFMS1.begin(); AFMS2.begin(); AFMS3.begin(); 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); // Fatura doğrulayıcı ve buton pinMode için pin ayarları(billValidator, INPUT); // Fatura alıcıyı ayarlar

// İletişim için seri portları başlat. Seri.başla(9600); Serial.println("Dolar bekleniyor…"); } geçersiz döngü () { { süre = pulseIn(billValidator, YÜKSEK); //Eğer (süre > 12000) ise fatura alıcısından alınan darbe uzunluğunu aramaya başlar //İşlenmiş ve gerçek bir dolar olarak doğrulamak için aşması gereken değer { // Count Dollar DollarCounter++; // Serial.print("Dolar algılandı.\n Toplam: "); // Yeni dolar sayısını göster Serial.println(dollarCounter); //bir butona basılana kadar beklemek için döngü while (süre > 12000){ char key = keypad.getKey(); //keyoad'ı bağlar ve hangisine basıldığını görmeye başlar if (key != NO_KEY) { //basılan tuşu arayacak Serial.println(key); //seri monitörde hangisine basıldığını bize bildirir } { if (key == '1') { //Tuş 1'e basılırsa aşağıdakileri yapar: int keyPressed = key - '1'; myMotor8->step(580, İLERİ, ÇİFT); //Motoru çalıştırır ve ileri yönde 350 derece döner. myMotor8->release(); //Motoru yerinde tutma durumundan kurtarır. dönüş; // Döngü kodunun başına geri döner }

if (key == '2') { //Tuş 2'ye basılırsa şunları yapar: int keyPressed = key - '2'; myMotor7->adım(400, İLERİ, ÇİFT); //Motoru çalıştırır ve ileri yönde 350 derece döner. myMotor7->release(); //Motoru yerinde tutma durumundan kurtarır. dönüş; //Döngü kodunun başına geri döner } if (key == '3') { //Tuş 3'e basılırsa şunları yapar: int keyPressed = key - '3'; myMotor6->adım(400, İLERİ, ÇİFT); //Motoru çalıştırır ve ileri yönde 350 derece döner. myMotor6->release(); //Motoru yerinde tutma durumundan kurtarır. dönüş; //Döngü kodunun başına geri döner } if (key == '4') { //Tuş 4'e basılırsa aşağıdakileri yapar: int keyPressed = key - '4'; myMotor5->adım(180, İLERİ, ÇİFT); //Motoru çalıştırır ve ileri yönde 350 derece döner. myMotor5->release(); //Motoru yerinde tutma durumundan kurtarır. dönüş; //Döngü kodunun başına geri döner } if (key == '5') { //Tuş 5'e basılırsa aşağıdakileri yapar: int keyPressed = key - '5'; myMotor4->adım(6900, İLERİ, ÇİFT); //Motoru çalıştırır ve ileri yönde 350 derece döner. myMotor4->release(); //Motoru yerinde tutma durumundan kurtarır. dönüş; //Döngü kodunun başına geri döner } if (key == '6') { //Tuş 6'ya basılırsa aşağıdakileri yapar: int keyPressed = key - '6'; myMotor3->adım(400, İLERİ, ÇİFT); //Motoru çalıştırır ve ileri yönde 350 derece döner. myMotor3->release(); //Motoru yerinde tutma durumundan kurtarır. dönüş; //Döngü kodunun başına geri döner } if (key == '7') { //Tuş 7'ye basılırsa aşağıdakileri yapar: int keyPressed = key - '7'; myMotor7->adım(400, İLERİ, ÇİFT); //Motoru çalıştırır ve ileri yönde 350 derece döner. myMotor7->release(); //Motoru yerinde tutma durumundan kurtarır. dönüş; //Döngü kodunun başına geri döner } if (key == '8') { //Tuş 8'e basılırsa aşağıdakileri yapar: int keyPressed = key - '8'; myMotor8->adım(400, İLERİ, ÇİFT); //Motoru çalıştırır ve ileri yönde 350 derece döner. myMotor8->release(); //Motoru yerinde tutma durumundan kurtarır. dönüş; // Döngü kodunun başına geri döner } } } } } } >>

Önerilen: