Kontrol kutusunun iç kısmının fotoğrafı

Bölüm II: Bir Lineer Aktüatörün Yük Geri Beslemesi Nasıl İzlenir?

Lineer aktüatörün yük geri beslemesini nasıl izleyeceğimize dair rehberimizin Bölüm II'sine hoş geldiniz. Bölüm I’de, örnek için gerekli kablolama sürecini ve temel kodlamayı ele almıştık. Bugünkü rehberde, kodun farklı bölümlerini ayrıntılı olarak inceleyecek ve düzenlemenin bazı yollarını göstereceğiz. Başlangıç olarak, kodun latchButtons() bölümüne bakacağız.

İlk olarak görmek istediğimiz şey düğme zıplamasını (debounce) önlemektir; bu nedenle sol düğmeye basıldığında, bir önceki düğme basımından beri geçen sürenin hesaplanması gerekir. Bunu yapmak için, kodda saklanan son değeri kullanıp zamanı kontrol etmek için millis() fonksiyonunu çağıracağız. Zaman, debounce süresinden büyük olduğunda, fonksiyon aktüatörün uzayabilir olup olmadığını kontrol edecektir. Her iki koşul da sağlandığında fonksiyon devam edebilir.

if (digitalRead(buttonLeft)==LOW)//sol ileri demektir 
{
currentTimedebounce = millis() - lastButtonpress;// son basımdan beri geçen süreyi kontrol et
if (currentTimedebounce> debounceTime && dontExtend == false)//dontExtend tetiklendikten sonra tüm ileri basışları yok say
{
leftlatch = !leftlatch;// motor hareket ediyorsa durdur, duruyorsa hareket ettir
firstRun = true;// akım tepe değerini yok saymak için firstRun bayrağını ayarla
fullyRetracted = false; // ileri hareket ettiğinde tamamen geri çekilmiş olmazsın
lastButtonpress = millis();//son düğme basımının zamanını kaydet
return;
}//end if
}//end btnLEFT


Sonraki bölüm, motorForward() fonksiyonu içindeki döngüdür; özellikle iki gecikme. Döngü, lineer aktüatör motorunu çalıştıran motor kontrol cihazını devreye alarak başlar. Döngü ilk defa çalışıyorsa daha büyük bir gecikme olacaktır. Bu gecikme, motor etkinleştirildiğinde oluşan akım tepesini görmezden gelir. Başladıktan sonra kontrol edemeyeceğiniz için gecikmeyi çok büyük ayarlamadığınızdan emin olun. Motor çalışmaya başladığında, akım sensörünü kontrol etmek için getFeedback() bölümü kullanılır.

while (dontExtend == false && leftlatch == HIGH) { 
digitalWrite(EnablePin, HIGH);
analogWrite(PWMPinA, speeed);
analogWrite(PWMPinB, 0);//motoru hareket ettir
if (firstRun == true) delay(firstfeedbacktimedelay);
else delay(feedbacktimedelay); //hıza ulaşmak için kısa gecikme
getFeedback();
firstRun = false;
latchButtons();
}//end while

İç kısmında bir kontrol kutusunun fotoğrafı

Sonraki olarak, get feedback() rutinindeki bölümleri inceleyeceğiz; bu rutin, sensöre bağlı olan analog pini okuyarak başlar. İlk olarak, motorun sınırlarında olup olmadığını kontrol eder ve akım 0 okuduğunda kod sınırda olduğunu anlar.

Ne yazık ki bazen yanlış okuma olabilir; bu nedenle bir sayaç ayarlamak önemlidir. Bu sayaç kodu, motor durmadan önce hitLimitsmax değerine kadar saymalıdır; daha az sayarsa sıfırlanacaktır.

 

if (CRaw == 0 && hitLimits < hitLimitsmax) hitLimits = hitLimits + 1; 
else hitLimits = 0; // motor sınırda mı ve akım durdu mu kontrol et


Sonrasında sınırlara ulaşma durumu gelir. Lineer aktüatör motoru ileri doğru hareket ederken sınıra ulaştığında sağ kilidi kapatacaktır. Motor geri doğru hareket ederse sol kilidi kapatacaktır. Aşağıdaki kod yalnızca sağ kilidi gösterir, ancak sol kilit için kod aynıdır.

if (hitLimits == hitLimitsmax && rightlatch == HIGH) { 
rightlatch = LOW;
hitLimits = 0;
}//end if

Akım sınırı kontrol edilir ve maksimum sınır tanımlanır. Sınır aşılırsa sol kilit kapanır ve motor artık uzamaz. Uzatmayı yeniden başlatmak için motorun ters yönde çalıştırılması gerekir.
if (CRaw> maxAmps) { 
dontExtend = true;
leftlatch = LOW; //geri besleme maksimumun üzerindeyse durdur
}//end if

Bu da bizi, bir lineer aktüatörün yük geri beslemesini izlemenin Bölüm II’sinin sonuna getiriyor. Bu sefer kodun belirli bölümlerini ayrıntılı şekilde inceledik ve nasıl çalıştıklarını açıkladık. Bu örnekte kullandığımız birimlerden sipariş vermek isterseniz çevrimiçi sipariş verebilir veya telefonla sipariş için bizimle iletişime geçebilirsiniz. Ürünlerimizle ilgili herhangi bir sorunuz veya endişeniz varsa, her zaman yardımcı olmaya hazırız.