İçindekiler:

Işık Kontrollü Step Motor + Duvar Braketi/Standı: 6 Adım
Işık Kontrollü Step Motor + Duvar Braketi/Standı: 6 Adım

Video: Işık Kontrollü Step Motor + Duvar Braketi/Standı: 6 Adım

Video: Işık Kontrollü Step Motor + Duvar Braketi/Standı: 6 Adım
Video: Patron görmesin :) 2024, Kasım
Anonim
Işık Kontrollü Step Motor + Duvar Braketi/Standı
Işık Kontrollü Step Motor + Duvar Braketi/Standı

Bu stand, odadaki ışık seviyesine göre bir perdeyi otomatik olarak kontrol etmek için tasarlanmış Arduino kontrollü step motoru barındırmak için kullanılır. Işık seviyesini yazdırmak için bir LCD ekran da ekleyebilirsiniz. 3D donanım sadece tanıtım amaçlıdır, perde gibi pratik uygulamalar için gerçek bir donanıma ihtiyaç duyulabilir ve aynı zamanda aklınıza gelebilecek herhangi bir başka uygulama da gerekebilir.

Adım 1: Malzemeler

Bu projeye başlamak için ihtiyacınız olacak;

- 2 Arduino chip-set- Arduino motor shield- Arduino LCD Ekran- 1 Breadboard- 1 bi-polar Step Motor- 1 D pil- 1 Işık Bağımlı Direnç - 1 10k Ω Direnç- 10 Erkek-erkek kablo- 6 Erkek- dişi teller - 3D yazıcıya erişim

Adım 2: Arduino'nun İnşası

Arduino'nun Yapısı
Arduino'nun Yapısı

İlk önce motor kalkanını Arduino pinleriyle hizalayın ve sıraya girdikten sonra sıkıca yerleştirin. Ardından step motorun kablolarını motor blendajının 8, 9, 10 ve 11 numaralı pinlerine takın. Bundan sonra, D pilini şemada gösterildiği gibi yuvalara bağlayın. Ardından, 6 kabloyu (erkekten dişiye) almak isteyeceksiniz. LDR'yi devre şemasında gösterildiği gibi diğer Arduino ünitesine takın. Daha sonra LDR'yi yukarıda gösterildiği gibi direnç negatif sıraya bağlayarak kurun. LDR'yi eklerken direncin olduğu tarafa ekleyin A0 bağlantıları ve karşı tarafta, kullandığınız her kart için 1 5V giriş ekleyin, bu nedenle 2 kart kullanıyorsanız, her birinin LDR'ye giden bir 5V ve A0 pinine sahip olmasını isteyeceksiniz.

Tüm kabloları şemadaki gibi olacak şekilde bağlayın - LDR'ye 2 Giriş - LDR'den 2 Çıkış ve toprağa bağlanan bir direnç - LCD'ye 8 kablo, 1 5V, 1 Toprak ve 6 giriş - 4 kablo ağa bağlanır stepper- aküye 2 bağlantı- Breadboard topraklaması bağlanmalıdır

Adım 3: Arduino'yu Kodlamak

Arduino'yu Kodlamak
Arduino'yu Kodlamak

LDR'ye göre vitesin durumunu değiştirmek için bazı örnek kodlar

Bu, projenin bir perdeyi otomatik olarak kontrol etmesini sağlayacak koddur. Yukarıdaki fotoğraf, perdenin yukarı, aşağı veya olduğu yerde kalması açısından iç içe IF ifadelerinde farklı yolları açıklamaktadır. (biçimlendirme sorunları olduğu için tam olarak görmek için resmin üzerine tıklayın)

#defineLDRA0//"LDR" değişkenini A0 pinine tanımlar#include// Step motor kodunu içerir

constintstepsPerRevolution=200;//Adım motor etkinleştirildiğinde, tam dönüşü 200 adıma eşittir

SteppermyStepper(stepsPerRevolution, 8, 9, 10, 11);//stepper'a girişi pin 8, 9, 10, 11 olarak tanımlar

voidsetup(){myStepper.setSpeed(60);//Motorun bir rotasyonpinMode(LDR, INPUT) ne kadar hızlı yapacağını ayarlar;//"LDR" değişkenini bir giriş olarak tanımlar Serial.begin(9600);//Seri okumayı başlatır }

voidloop(){intlightlevel=analogRead(LDR);//"LDR"Serial.print("Light Level: ");Serial.println(lightlevel);// değerini okuyan bir eylem olarak "lightlevel" değişkenini tanımlar Yukarıdaki başlık ile "lightlevel" değerini yazdırır

/* Artık yolun her noktasında ışık seviyesini algılayan bir döngü var * 3 seçenek mevcut, yukarı git, aşağı git, aynı pozisyonda kal* Işık seviyesi aynı kalırsa, ışık seviyesi aynı kalacak şekilde tasarlanmıştır. aynı kal yoksa değişir* yani 950 ise 952'ye gider bir şey olmaz ama 950'den 600'e çıksa perdeyi çeker tam tersi * Her adım bir harfle belirtilir adımın önünde, seri monitör aracılığıyla döngüde nerede olduğunu izlemek için */

if(lightlevel>=900){Serial.println("A");// loopmyStepper.step(3*stepsPerRevolution);//Adım 3 ileri devir yapar. Negatif ise, geri giderdelay(30000);// 5 dakika orada bırakır intlightlevel=analogRead(LDR);// "lightlevel" değişkenini LDRSerial.print("Işık Düzeyi: ")'den alınan en son okuma olarak tanımlar.;//Metni Serial.println(lightlevel) değişkeninin önüne yazdırır// Işık seviyesinin değerini yazdırır

if(lightlevel>=900){Serial.println("B");myStepper.step(0);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println (ışık seviyesi);

if(lightlevel>=900){Serial.println("C");myStepper.step(3*-stepsPerRevolution);delay(500);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: "); Serial.println(ışık seviyesi);}

else{Serial.println("D");myStepper.step(3*-stepsPerRevolution);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(ışık seviyesi);}}

else{Serial.println("E");myStepper.step(3*-stepsPerRevolution);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(ışık seviyesi);

if(lightlevel>=900){Serial.println("F");myStepper.step(0);delay(500);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println (ışık seviyesi);}

else{Serial.println("G");myStepper.step(0);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(lightlevel);}}

}

else{Serial.println("H");myStepper.step(0);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(ışık seviyesi);

if(lightlevel>=900){Serial.println("I");myStepper.step(3*stepsPerRevolution);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Seri.println(ışık seviyesi);

if(lightlevel>=900){Serial.println("J");myStepper.step(3*-stepsPerRevolution);delay(500);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: "); Serial.println(ışık seviyesi);}

else{Serial.println("K");myStepper.step(3*-stepsPerRevolution);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(ışık seviyesi);

}}

else{Serial.println("L");myStepper.step(0);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(ışık seviyesi);

if(lightlevel>=900){Serial.println("M");myStepper.step(0);delay(500);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println (ışık seviyesi);}

else{Serial.println("N");myStepper.step(0);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(ışık seviyesi);

}}

}

}

Adım 4: İsteğe bağlı: LCD Ekran

Bu, LDR tarafından algılanan ışık seviyesini LCD ekrana yazdırır.

#Dahil etmek

  • //Ek kodla likit kristal kitaplığını ekler#define ldr A0 //"ldr" değişkenini A0 pinine tanımlar

    LiquidCrystal lcd (8, 9, 4, 5, 6, 7); // kütüphaneyi arayüz pinlerinin numaralarıyla başlat

    voidsetup() { //startlcd.begin(16, 2); // LCD'nin sütun ve satır sayısını sırasıyla ayarlayınpinMode(ldr, INPUT); // ldr'yi pinSerial.begin(9600) girişi olarak tanımlar; // Seri monitör ile iletişimi başlatır

    }

    voidloop() { //sürekli tekrarlanacak kodSerial.println(analogRead(ldr)); // ldr'nin aldığı okumayı (0-1023 arasında bir sayı) seri monitorlcd.setCursor(6, 0); // imleci sütun 6, satır 0lcd.print(analogRead(ldr)); // Bu okumayı LCD ekran gecikmesine yazdırır(1000); // Sonraki komutu bir saniye geciktirir

    }

    Adım 5: Basılı Parçalar

    Standı ve donanımı yazdırmak için aşağıdaki dosyaları kullanın. Donanımı kendi amaçlarınız için özelleştirebilir ve braketi duvara veya ekran olarak monte etmek için kullanabilirsiniz. 3D dişli zayıf olduğundan, kontrol edeceği perdeye uyduğu sürece onun yerine gerçek bir dişli kullanılabilir.

    3D baskılı dişli kullanılacaksa dişlinin dişlerinden biri sökülerek ayar vidası ile motora sabitlenebilir.

    Duvara monte edilecekse, duvar braketinin ön 2 ayağı da çıkarılabilir. Sadece biz test ederken ayağa kalkması için eklendiler.

    6. Adım: Yerleştirme

    Artık tüm parçalar hazır olduğuna göre, son yerleştirmeye başlama zamanı.

    Öncelikle step motorunu stand üzerinde verilen kutuya yerleştirin ve dişliyi dingilin üzerine yerleştirinSonra, telleri standın arkasına geçecek şekilde hareket ettirinSon olarak arduino ve pili standın arkasına yerleştirin

    Tahtanız şimdi yukarıdaki resimdeki gibi görünmelidir.

    Tebrikler!

    Vites, otomatik perdeler veya LDR tarafından kontrol edilmesini istediğiniz herhangi bir şey için kullanılabilir.

    Bitirdiniz. Yeni yaratımınızın keyfini çıkarın.

Önerilen: