2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13
Bu, bitirme yılı tez projemin bir parçası olarak kullanmak üzere geliştirdiğim 28BYJ-48 step motor için bir kontrol şemasıdır. Bunu daha önce görmemiştim, bu yüzden keşfettiğim şeyi yükleyeceğimi düşündüm. Umarım bu orada başka birine yardımcı olacaktır!
Kod temel olarak bir step motorun analog joystick'in açısal konumunu "kopyalamasına" izin verir, yani joystick'i ileri iterseniz motor "kuzeye" bakar. joystick'i batıya doğru itin, motor aynı yönü gösterecek şekilde döner.
Uygulamam için, joystick bırakılırsa, yani açısal konumu yoksa, motorun "ev" yönüne dönmesini istedim. Ana yön doğuya bakar ve motor (veya çıkış miline bağladığınız her ne olursa olsun işaretçi / cihaz!) çalıştırıldığında da bu yöne bakmalıdır.
Gereçler
Arduino Uno veya benzeri
breadboard ve jumper kablo seçimi (erkekten erkeğe, erkekten dişiye)
5V güç kaynağı
Analog joystick modülü (ideal olarak anlık bir basma düğmesi özelliği ile bu, "ana" konumunun daha kolay dinlenmesini sağlar
28BYJ-48 step motor ve ULN2003 step sürücü
Kalem, kağıt ve blu-tac (veya motora takmak için başka herhangi bir işaret cihazı!)
Adım 1: Adım 1: Kurulum
Step motoru step sürücüye bağlayın ve pinleri aşağıdaki gibi bağlayın:
IN1 - Arduino pimi 8
IN2 - Arduino pin 9
IN3 - Arduino pin 10
IN4 - Arduino pimi 11
5v güç kaynağınızı devre tahtanızdaki besleme raylarına bağlayın ve ULN2003 5v girişlerini besleme raylarına bağlayın. toprak rayını Arduino'nuzdaki toprağa bağlayın.
joystick için aşağıdaki gibi bağlayın:
Anahtar pimi - Arduino pimi 2
X ekseni - Arduino A0 (0'da Analog)
Y ekseni - Arduino A1
+5V - Arduino 5V çıkışı
GND - Arduino GND
Son olarak, breadboard'unuzun zeminini diğer Arduino GND pinine bağlayın
Adım 2: Adım 2: Kodu Açıklamak
İndirmeniz ve kullanmanız için tam Arduino kodunu ekledim. Ancak burada ilgili kısımları açıklamak için elimden geleni yapacağım.
Bu kodun arkasındaki teori, joystick'in kapladığı alanın, merkezde 0, 0 olacak şekilde bir grafiğe bölünmesidir. ancak joystick girişleri merkezde (yaklaşık) 512'de durur, bu nedenle bu iki işlevin üstesinden gelmek için X ve Y ekseninden okunan değeri "sıfırlamak" için kullanılır. Kullandığınız güç kaynağına bağlı olarak, joystick'inizin dinlenirken güvenilir bir 0 okuması vermesi için ZeroX ve ZeroY fonksiyonlarındaki değerleri değiştirmeniz gerekebilir.
X, Y değerleri okunduğunda, ilk olarak math.h kitaplığındaki atan2() işlevi kullanılarak radyana dönüştürülür. Bu işlevi açıklamak bu talimatın kapsamı dışındadır, ancak lütfen gidip bakın - bu oldukça basit bir geometri hilesidir!
Son olarak, eskiden rad yerine derece ile çalışan bizler için hayatı kolaylaştırmak için atan2() tarafından hesaplanan rad değeri dereceye dönüştürülür.
Döngünün en üstünde, "ev" konumunu taşımak için joystick üzerindeki anlık düğmeyi tıklamanıza izin veren küçük bir kod parçacığı bulunur. Bu, kodu test ederken inanılmaz derecede faydalı oldu, ancak bazı durumlarda nasıl yararlı olabileceğini görebildiğim için onu bıraktım.
Şimdi kodun ana yığınına! 10ms'lik bir gecikmeyle iki kez ayrılmış joystick X, Y koordinatlarını okuyarak başlıyoruz ve ardından aynı olup olmadıklarını kontrol ediyoruz - joystick'in ara sıra aralıklı okumalar vereceğini buldum ve bu hafif gecikme, motorun bunlara dayalı olarak dönmesini durdurmak için yeterliydi. Ayrıca, kasıtlı girdilere müdahale etmemesi için yeterince kısa bir gecikme.
Kodun geri kalanı oldukça açıklayıcıdır ve bunu belgelemek için elimden gelenin en iyisini yaptım; Bir dizi IF ifadesi, mevcut joystick açısını motor açısıyla karşılaştırır ve motoru bu açıya hareket ettirir. 28BYJ-48, derece başına 5.689 adıma sahiptir, bu yüzden gerekli hareketi bu görünüşte tek sayı ile çarpıyoruz!
Kodun en çok açıklama gerektiren kısmı, "sarma durumu" olarak adlandırdığım kısımdır. Joystick ve motorun örn. +175 ° ve joystick daha sonra -175°'ye hareket etti (kuzeybatının hemen kuzeyinden batının hemen güneyine doğru joystick üzerinde sadece 10°'lik bir hareket), motor YANLIŞ YÖNDE 350° hareket ederdi! Bunu hesaba katmak için özel durum yazılmıştır.
Sarma durumu, motor ve joystick'in zıt işaretlere sahip olup olmadığını kontrol ederek başlar, yani motor pozitif ve joystick negatif veya tam tersi. Ayrıca joystick ve motorun mutlak değerlerinin (yani pozitif değerlerin) toplamının 180°'nin üzerinde olup olmadığını kontrol eder.
Bu ifadelerin her ikisi de doğruysa, fonksiyon motorun saat yönünde mi (motor değeri negatifse) yoksa saat yönünün tersine mi (motor değeri pozitifse) hareket etmesi gerektiğini kontrol eder.
Hareket mesafesini belirlemek için motor açısı ve joystick açısının mutlak değerleri toplanır ve 360°'den çıkarılır. Son olarak, motor açısı (şimdi joystick açısını yansıtır) bu şekilde güncellenir.
Adım 3: BİTMİŞ
Yani, geriye kalan tek şey kodu Arduino'nuza yüklemek ve çalıştırmak! Projenin nasıl işlediğine dair iyi bir fikir için yukarıdaki videoya bakın. Bu, kamera gimballeri, robotik kollar ve diğer birçok uygulama için faydalı olacaktır!
Kodu kullanırsanız lütfen bana bildirin ve kodun geliştirilebileceği herhangi bir yer görürseniz geri bildiriminizi duymak isterim.
Önerilen:
Analog Joystick ile Arduino LED Kontrolü: 6 Adım
Analog Joystick ile Arduino LED Kontrolü: Bu eğitimde, LED'i kontrol etmek için analog Joystick'in nasıl kullanılacağını öğreneceğiz.Bir tanıtım videosu izleyin
Nesnelerin Konumsal Değişikliklerini Yakalamak için Ultrasonik Sensör: 3 Adım
Nesnelerin Konumsal Değişikliklerini Yakalamak için Ultrasonik Sensör: Değerli eşyalarınızı güvende tutmak önemlidir, kalenizi bütün gün korumaya devam ederseniz topal olur. Raspberry pi kamerayı kullanarak doğru anda enstantane çekebilirsiniz. Bu kılavuz, bir video çekmenize veya resim çekmenize yardımcı olacaktır
Step Motor Kontrollü Step Motor - Döner Enkoder Olarak Step Motor: 11 Adım (Resimlerle)
Step Motor Kontrollü Step Motor | Döner Kodlayıcı Olarak Step Motor: Etrafta duran ve bir şeyler yapmak isteyen birkaç step motor var mı? Bu Eğitilebilir Tabloda, bir Arduino mikro denetleyici kullanarak başka bir step motorun konumunu kontrol etmek için döner kodlayıcı olarak bir step motor kullanalım. O halde lafı fazla uzatmadan geçelim
3D Yazıcı Kullanarak Arduino Üzerinden Seri Kontrollü Step Servo Motorun Kapsüllenmesi - Pt4: 8 Adım
Step Servo Motoru Arduino Üzerinden Seri Kontrollü 3D Yazıcı Kullanarak Kapsülleme - Pt4: Motor Step serisinin bu dördüncü videosunda, daha önce öğrendiklerimizi seri iletişim ve gerçek kontrol ile step servo motor oluşturmak için kullanacağız. Arduino tarafından izlenen dirençli bir kodlayıcı kullanarak konum geri bildirimi. İçinde
DC Motorun PID Algoritması ile Hız Kontrolü (STM32F4): 8 Adım (Resimli)
DC Motorun PID Algoritması (STM32F4) ile Hız Kontrolü: Herkese merhaba, Bu başka bir proje ile tahir ul hak. Bu sefer MC olarak STM32F407. Bu bir yarıyıl sonu projesidir. Umarım beğenirsiniz.Çok fazla kavram ve teori gerektirir, bu yüzden önce ona girelim.Bilgisayarların ortaya çıkışı ve