İçindekiler:

Dalgıç Araç: 5 Adım
Dalgıç Araç: 5 Adım

Video: Dalgıç Araç: 5 Adım

Video: Dalgıç Araç: 5 Adım
Video: Arkadaşlarımla esip gürlelediğim yere tek başıma ziyaretçi olarak gelmem beni çok duygulandırdı 2024, Temmuz
Anonim
Dalgıç Araç
Dalgıç Araç
Dalgıç Araç
Dalgıç Araç

**************** BU TALİMAT HALA DEVAM EDEN BİR ÇALIŞMADIR ****************

Bu Eğitim Tablosu, Güney Florida Üniversitesi'ndeki (www.makecourse.com) Makecourse'un proje gereksinimini yerine getirmek için oluşturulmuştur.

Bu Eğitilebilir Kitap, Güney Florida Üniversitesi'ndeki Makecourse sınıfım için tasarladığım ve inşa ettiğim dalgıç aracın yaratılmasına ilişkin kısa bir bakış olacaktır. Bu Eğitilebilir Kitapta, bir malzeme listesi, kullandığım Arduino Uno için oluşturduğum kontrol kodu ve denizaltının nasıl monte edileceğine dair bir genel bakış sunacağım.

Adım 1: Malzemeler

Malzemeler
Malzemeler
Malzemeler
Malzemeler
Malzemeler
Malzemeler

Kullanılan elektronikler:

1x Arduino Uno

1x mobius aksiyon kamerası

1x mobius aksiyon kamerası usb-b - A/V kablosu

1x alan görünümü 777 ekran

1x turnigy marine 50A ESC (elektronik hız kontrolü)

1x turnigy deniz programlama kartı

1x T-Motor Navigatörü 400kv

1x YEP 20A BEC (pil eleme devresi)

6x hobi kral HK15139 su geçirmez servolar

2 adet paralel T-bağlantı y kablo demeti

2x 18 inç servo uzatma telleri

6x6 inç servo uzatma telleri

2x 1300mah 3s Lipo piller

2x 2500mah 4s Lipo piller

Hem 5v hem de 12v sabit çıkışlı 1x güç dağıtım panosu

Yapı malzemeleri burada:

1x 3/16 inç kontrplak levha

1x6 inç ID ABS nakliye tüpü

1x silikon tüp

1x esnek conta olabilir

4x makaralı ABS 3D yazıcı filamenti

1x 24 inç çekmece slayt

Isıyla daralan makaron

1x 10 fit scotch marka duraloc cırt cırt

1x JB Kaynaklı plastik epoksi

1x6.2 inç çapında akrilik güvenlik kamerası kubbesi

2x IP68 ethernet geçişi

2x 24 inç cat6 ethernet kablosu

1x 200 ayak cat6 ethernet kablosu

Kullanılan donanım şuydu:

24x 1/2 inç pirinç ağaç vidaları

24x ------ vidalar (servolara dahildir)

Kullanılan araçlar:

Philip's ve Düz başlı tornavidalar

Alyan anahtar seti

Havya

Isı tabancası

3D yazıcı (Monoprice Maker Select Plus kullandım)

Adım 2: Programlama

Programlama
Programlama
Programlama
Programlama
Programlama
Programlama
Programlama
Programlama

Denizaltıyı kontrol etmek için oluşturulan kod aşağıdadır. İndirilebilmesi için.ino dosyasını da ekledim.

Bu kod, Arduino derleyicisi kullanılarak Arduino Uno için oluşturulmuştur.

/**********************************************************************************************************************************************************************

Yazar: Jonah Powers Tarih: 9/11/2018 Amaç: Uzaktan Kumandalı Dalgıç Araç için Kontrol Kodu ****************************** ************************************************************ ************************************************************ ************************************/ #include // Servo Kitaplığı Servo roll1 dahil; // roll1'in bir servo Servo roll2 olduğu bildiriliyor; // roll2'nin bir servo Servo elev1 olduğu bildiriliyor; // elev1'in bir servo Servo elev2 olduğu bildiriliyor; // elev2'nin servo Servo yaw1 olarak bildirilmesi; //yaw1'in bir servo Servo yaw2 olduğu bildiriliyor; //yaw2'nin bir servo Servo esc olduğu bildiriliyor; // esc'nin servo olarak bildirilmesi

int pot1 = 0; //pot1 değişkenini bir tamsayı olarak başlatıyoruz ve onu 0'a eşitliyoruz int pot2 = 1; // pot2 değişkenini bir tamsayı olarak başlatma ve onu 2'ye eşitleme int pot3 = 2; //pot3 değişkenini bir tamsayı olarak başlatma ve onu 4'e eşitleme int pot4 = 3; //pot4 değişkenini bir tamsayı olarak başlatma ve onu 5 int val1'e eşitleme; // val1 değişkeni bir tamsayı olarak başlatılıyor int val2; // val2 değişkeni bir tamsayı olarak başlatılıyor int val3; // val3 değişkeni bir tamsayı olarak başlatılıyor int val4; // val4 değişkeni bir tamsayı olarak başlatılıyor int val5; // val5 değişkeni bir tamsayı olarak başlatılıyor int val6; // val6 değişkeni bir tamsayı olarak başlatılıyor int val7; // val7 değişkeni bir tamsayı olarak başlatılıyor int val8; // val8 değişkeni bir tamsayı olarak başlatılıyor int mspeed; //mspeed değişkenini tamsayı olarak başlatma

void setup() { //Arduino başlatma aşaması Serial.begin(9600); //Seri monitör başlatılıyor roll1.attach(2); //Servo roll1'in dijital pin 2'ye eklenmesi roll2.attach(3); //Servo roll2'yi dijital pin 3'e ekleme elev1.attach(5); //Servo elev1'in dijital pin 5'e eklenmesi elev2.attach(6); //Servo elev2'yi dijital pin 6'ya takmak yaw1.attach(8); //yaw1 servosunu dijital pin 8'e takmak yaw2.attach(9); // servo yaw2'yi dijital pin 9'a ekleme esc.attach(11); //Dijital pin 11'e servo esc eklenmesi roll1.write(90); //Servo roll1'i ortalanmış pozisyonuna yazma roll2.write(90); //Servo roll2'yi ortalanmış konumuna yazma elev1.write(90); //Servo elev1 ortalanmış konumuna yazılıyor elev2.write(90); //Servo elev2'yi ortalanmış konumuna yazıyoruz yaw1.write(90); // servo yaw1 ortalanmış konumuna yazılıyor yaw2.write(90); // servo yaw2'yi ortalanmış konumuna yazıyoruz esc.write(180); //Servo esc'yi merkez konum gecikmesine yazıyoruz(2500); //2 saniye bekleniyor esc.write(90); gecikme (5000); }

void loop() { //Main Code sonsuz döngü if(analogRead(pot1)<1 && analogRead(pot2)<1 && analogRead(pot3)<1 && analogRead(pot4)= 485 && val1<= 540{ // "Joystick"in (potansiyometre) ortalanıp ortalanmadığını kontrol etme roll1.write(90); // servo roll1'i merkez konumuna roll2.write(90) yazıyoruz; //Servo roll2'yi orta konuma yazma } else{ //"Joystick" ortalanmamışsa ne yapılmalı val1 = map(val1, 0, 1023, 10, 170); //val1'i 10'dan 170'e eşleme ve val1'e atama roll1.write(val1); //servo roll1'in val1 tarafından tanımlanan konuma yazılması roll2.write(val1); // val1 tarafından tanımlanan konuma servo roll2 yazılıyor }

val2 = analogRead(pot2); //Pot2'yi (analog pin 2) oku ve değeri val2 olarak kaydet if(val2>= 485 && val2<= 540){ //"Joystick"in (potansiyometre) ortalanmış olup olmadığı kontrol ediliyor elev1.write(90); //Servo elev1'i merkez konumuna yazma elev2.write(90); //Servo elev2'yi merkez konumuna yazma } else{ //"Joystick" ortalanmamışsa ne yapmalı val3 = map(val2, 0, 1023, 10, 170); //val2'yi 10'dan 170'e eşleme ve val3'e atama val4 = map(val2, 0, 1023, 170, 10); // val2'yi 170'ten 10'a eşleme ve val4'e atama elev1.write(val3); // val3 elev2.write(val4) tarafından tanımlanan konuma servo elev1 yazılıyor; // val4 tarafından tanımlanan konuma servo elev2 yazılıyor }

val5 = analogRead(pot3); //pot3'ü (analog pin 4) oku ve değeri val5 olarak kaydet if(val5>= 485 && val5<= 540){ //"Joystick"in (potansiyometre) ortalanmış olup olmadığı kontrol ediliyor yaw1.write(90); // servo yaw1 merkez konumuna yazılıyor yaw2.write(90); //Yaw2 servosunu merkez konumuna yazıyoruz } else{ //"Joystick" ortalanmamışsa ne yapmalı val6 = map(val5, 0, 1023, 10, 170); //val5'i 10'dan 170'e eşleme ve val6'ya atama val7 = map(val5, 0, 1023, 170, 10); //val5'i 10'dan 170'e eşleme ve val7'ye atama yaw1.write(val6); // val6 yaw2.write(val7) tarafından tanımlanan konuma servo yaw1 yazılıyor; // val7 ile tanımlanan konuma servo yaw2 yazılıyor }

val8 = analogRead(pot4); //pot4'ü (analog pin 5) oku ve değeri val8 olarak kaydet if(val8 > 470 && val8 80 && val8<80)||(mspeed80)){ //Motorun yön değiştirmek üzere olup olmadığı kontrol ediliyor esc.write(80); gecikme(1000); //1000 milisaniye bekleniyor } esc.write(val8); // val8 mspeed=val8 tarafından tanımlanan hıza servo esc yazılıyor; //Karşılaştırma için mevcut hızın saklanması } } Serial.print("throttle "); //"Throttle" kelimesini göstermek için Seri Baskıyı kullanma Serial.println(val8); //Gazın Serial.print("roll "); //"Rulo" kelimesini göstermek için Seri Baskıyı kullanma Serial.println(val1); //Rulonun Serial.print("pitch "); //"Pitch" kelimesini göstermek için Seri Yazdırmayı kullanma Serial.println(val3); //Pitch1'in Serial.println(val4) olarak ayarlandığı değeri göstermek için Seri Yazdırmayı kullanma; //pitch2'nin Serial.print("yaw "); //"Yaw" kelimesini göstermek için Seri Yazdırmayı kullanma Serial.println(val6); //yaw1'in Serial.println(val7) olarak ayarlandığı değeri göstermek için Seri Yazdırmayı kullanma; //yaw2'nin ayarlandığı değeri göstermek için Seri Yazdırmayı kullanma }

Adım 3: Devre

Ekli, dalgıçtaki devrenin bir fotoğrafıdır.

Kablolamamı basitleştirmek için Arduino için özel bir kalkan oluşturdum. Kalkan için Eagle Schematic & Board dosyalarını yükledim. Tahtayı frezelemek için bir LPKF S63 kullandım. Kontrol rulosunun Arduino'ya takılacağı ön taraftaki Servolar

ekli, denetleyicinin içindeki devrenin bir fotoğrafıdır.

Adım 4: 3D Basılı Parçalar

Tüm bu Dosyaları Monoprice Maker Select Plus cihazıma yazdırdım. Esun ABS 1.75mm Filament kullandım. Baskı ayarlarım, baskı yatağı sıcaklığı için 105 derece C ve ekstrüder sıcaklığı için 255 derece C idi. Ön kanadın 6 kopyasına ihtiyacınız olması dışında her parçadan sadece 1 adet gereklidir. Bu parçaların duvar kalınlığı 1000 mm'ye ayarlanmış olarak basıldığını unutmayın. Bu, parçaların %100 dolgu ile basılması ve böylece negatif yüzer olmaları için yapıldı.

Adım 5: Montaj

********************************* YAKINDA GELECEK *************** *********************

Önerilen: