Motorları veya Solenoidleri Kontrol Etmek İçin Kumanda Kolu Düğmelerini Kullanma

Tahrik sistemlerimizi çalışır hale getirdikçe, motorlar ve solenoidler gibi yardımcı cihazlarımızı bağlamaya geçiyoruz. Bununla birlikte, bu cihazları kontrol etmek için genellikle joystick düğmelerini kullanacağız. Buna başlamak için, joystick düğmeleriyle cihazları kontrol etmenin birkaç yolunu inceleyeceğiz.

Bunun gibi bir belgeden VI Snippet’i tıklayıp doğrudan LabVIEW kodunuza sürükleyebileceğinizi biliyor muydunuz? Bunu bu belgedeki parçacıklarla deneyin.

Kurulum:

Yapılandırma ne olursa olsun, “Begin.vi” ye bir, iki veya daha fazla (gerçekten heyecanlıysanız) joystick eklemeniz gerekir. İlk örnek 2 oyun çubuğu kullanır ve diğerleri yalnızca birini kullanır. Aşağıdaki snippet gibi başka yerlerde de kullanabilmemiz için her birine benzersiz bir ad verin. Masamın sol ve sağ tarafında oldukları için onlara “LeftStick” ve “RightStick” adını verdim. Oyun çubuklarınız zaten yapılandırılmışsa, harika! Bu adımı atlayabilirsiniz.

../../../../_images/setup1.png

Bu belgedeki kodun geri kalanı “Teleop.VI” içine yerleştirilecektir. Burada, kumanda kolu düğmelerimizi motorlarımızın veya solenoidlerimizin farklı yönlerini kontrol etmek için programlayacağız.

Senaryo 1

“Bir düğmeye bastığımda motorun bir yöne, farklı bir düğmeye bastığımda diğer yöne hareket etmesini istiyorum.”

Bu kod, aynı motoru kontrol etmek için iki farklı kumanda kolundaki 0 düğmesini kullanır. LeftStick üzerindeki 0 butonuna basılırsa, motor geriye doğru hareket eder ve RightStick üzerindeki 0 butonuna basılırsa, motor ileri doğru hareket eder. Her iki düğmeye de basılırsa veya hiçbir düğmeye basılmazsa, motor hareket etmez. Burada motor referansıma “Motor5” adını verdim, ancak motorunuza “Begin.vi” de istediğiniz adı verebilirsiniz.

../../../../_images/1-a.png

Kontrol için aynı joystick’ten birden fazla düğme kullanmak isteyebilirsiniz. Bunun bir örneği için, Senaryo 2’deki VI snippetine veya aşağıdaki VI snippetine bakın.

../../../../_images/1-b.png

Burada 0 ve 2 numaralı kumanda kolu düğmelerini kullandım, ancak ihtiyacınız olan düğmeleri kullanmaktan çekinmeyin.

Senaryo 2

** Farklı kumanda kolu düğmelerinin çeşitli hızlarda hareket etmesini istiyorum.”**

Bu örnek, bastığınız düğmelere bağlı olarak bir motora farklı şeyler yaptırmanız gerektiğinde yardımcı olabilir. Örneğin, oyun çubuğumun bir tetikleyici (düğme 0) ve üstte 4 düğme (1-4 arası düğmeler) olduğunu varsayalım. Bu durumda, aşağıdaki düğmeler aşağıdaki işlevlere sahip olmalıdır:

  • button 1 - yarım hızda geri git

  • button 2 - yarım hızda ileri git

  • button 3 - 1/4 hızda geri git

  • button 4 - 1/4 hızda ileri git

  • trigger- tam hız ileri! (tam hızda ileri)

Daha sonra boolen dizisini “JoystickGetValues.vi” den alır ve onu bir “Boolean Array to Number” düğümüne (Numeric Palette-Conversion Palette) bağlarız. Bu, boolen dizisini kullanabileceğimiz bir sayıya dönüştürür. Bu rakamı bir case structure’a bağlayın.

Her durum, dizideki değerlerin ikili gösterimine karşılık gelir. Bu örnekte, her durum tek düğmeli bir kombinasyona karşılık gelir. Altı durum ekledik: 0 (tüm düğmeler kapalı), 1 (düğme 0 açık), 2 (düğme 1 açık), 4 (düğme 2 açık), 8 (düğme 3 açık) ve 16 (düğme 4 açık). 3 değerini atladığımıza dikkat edin. 3 aynı anda basılan 0 ve 1 düğmelerine karşılık gelir. Bunu gereksinimlerimizde tanımlamadık, bu yüzden varsayılan durumun ele almasına izin vereceğiz.

LabVIEW 2014 Case Structure Yardım belgesini buradan incelemek faydalı olabilir:

https://zone.ni.com/reference/en-XX/help/371361L-01/glang/case_structure/

Ayrıca, burada case yapılarıyla ilgili 3 Topluluk rehberi vardır:

https://forums.ni.com/t5/Curriculum-and-Labs-for/Unit-3-Case-Structures-Lesson-1/ta-p/3505945?profile.language=en

https://forums.ni.com/t5/Curriculum-and-Labs-for/Unit-3-Case-Structures-Lesson-2/ta-p/3505933?profile.language=en

https://forums.ni.com/t5/Curriculum-and-Labs-for/Unit-3-Case-Structures-Lesson-3/ta-p/3505979?profile.language=en

../../../../_images/21.png

Gereksinimlerimiz basit olduğundan, her durumda sadece tek bir sabite ihtiyacımız var. Durum 1 için (tam ileri) 1, 2. durum için (yarım geri) a -0.5 kullanıyoruz, vb. 1 ile -1 arasındaki herhangi bir sabit değeri kullanabiliriz. 0 durumunu varsayılan olarak bıraktım, bu nedenle birden fazla düğmeye basıldığında (tanımlanmamış herhangi bir duruma ulaşıldığında) motor duracaktır. Elbette bu durumları istediğiniz gibi özelleştirmekte özgürsünüz.

Senaryo 3

“Joystick düğmelerimle bir solenoidi kontrol etmek istiyorum.”

Şimdiye kadar, joystick’in düğmeleri bir dizi boolen’den nasıl çıkarıldığını biliyoruz. İlgilendiğimiz düğmeyi elde etmek için bu diziyi indekslememiz ve bu booleanı bir seçili düğüme bağlamamız gerekir. “Solenoid Set.vi” giriş olarak bir Enum gerektirdiğinden, numaralandırmanın en kolay yolu “Solenoid Set.vi” nin “Value” girişine sağ tıklamak ve “Create Constant” u seçmektir. Bu sabiti çoğaltın ve bir kopyasını True terminale ve birini de seçilen düğümün False terminaline bağlayın. Ardından, seçme düğümünün çıkışını solenoid VI’nın “Value” girişine bağlayın.

../../../../_images/31.png

Mutlu Robot Çalışmaları!