Kapalı Döngü Kontrolü Başlarken

Kapalı Döngü Kontrolünün Kurulması

REVLib'de kapalı döngü kontrolüne SPARK'ın PID Denetleyici nesnesi aracılığıyla erişilir. Bu nesne her motora özeldir ve PID kazançlarını ve kapalı döngü sabitlerini izler. Ayrıca motorunuzu yapılandırmak ve kontrol etmek için gereken tüm yöntemleri içerir. Aşağıda gösterildiği gibi erişilebilir:

// initialize the motor (Flex/MAX are setup the same way)
CANSparkFlex m_motor = new CANSparkFlex(deviceID, MotorType.kBrushless);

// initialize the PID controller
SparkPIDController m_pidController = m_motor.getPIDController();

API Belgeleri: CANSparkFlex, SparkPIDController

Motorunuzu Kapalı Döngü kontrol modunda sürmek için, PID Denetleyici nesnesini adlandırın ve ona aşağıda gösterildiği gibi bir ayar noktası (kontrol modunuzun gerektirdiği birimlerde bir hedef: konum, hız veya akım) ve bir kontrol modu verin:

// Set the setpoint of the PID controller in raw position mode
m_pidController.setReference(setPoint, CANSparkBase.ControlType.kPosition);

API Belgeleri: setReference, ControlType

Yukarıda verilen örnek, motoru konum kontrol modunda çalıştırır; bu sadece yapılandırılmış enkoderdan motorun mevcut konumunu okuyan ve dönüşlerde bir ayar noktası alan klasik bir PID döngüsüdür.

PID Sabitleri ve Yapılandırması

Bir PID döngüsünü çalıştırmak için birkaç sabit gereklidir. Daha gelişmiş bir kontrolör için daha da fazla parametrenin ayarlanması ve düzenlenmesi gerekir.

Slotlar

SPARK MAX ve SPARK Flex'in her biri, her biri kendi sabitler setine sahip 4 kapalı döngü slotuna sahiptir. Bu yuvalar 0-3 arasında numaralandırılmıştır. Yuva numarasını parametre ayarlama yöntemlerinin her birine bir argüman olarak iletebilirsiniz. Ayar noktasını uygularken, slot numarasını iletin ve motor kontrol ünitesi uygun yapılandırmaya geçecektir.

PID Parametreleri

Bir PID kontrolörünün 3 temel parametresi veya kazancı vardır. Bu kazançlar ve bunların nasıl ayarlanacağı hakkında daha fazla bilgi için PID Ayarlamaya Başlarken bölümüne bakın.

Bu kazançlarSparkPIDController nesnesi üzerinde aşağıda gösterildiği gibi yapılandırılabilir:

// Set the P value of the PID controller on slot 0 to 0.25
m_pidController.SetP(kP);
m_pidController.SetI(kI);
m_pidController.SetD(kD);
m_pidController.SetIZone(kIz);

// Set the minimum and maximum outputs of the motor [-1, 1]
m_pidController.SetOutputRange(kMinOutput, kMaxOutput);

API Belgeleri: SparkPIDController

F Parametresi

SPARK motor kontrolörleri serisi ayrıca hız ileri beslemesi olan bir F terimi de sunar. Bu, her motor tipine özgüdür ve motorun hız sabitinin (Kv), başka bir deyişle 1/Kv'nin tersi alınarak hesaplanabilir.

NEO Fırçasız Motor ailesi için Kv değerleri her motorun teknik özellikler tablosunda belgelenmiştir: NEO Vortex, NEO V1.1, NEO 550

NEO Vortex için bu değer 1/565'tir. Bu sadece hız tabanlı bir kontrol döngüsü çalıştırırken gereklidir (hız modu, Akıllı Hareket ve Akıllı Hız). F parametresi aşağıda görüldüğü gibi ayarlanabilir:

// Set kFF
m_pidController.SetFF(1/Kv);

API Belgeleri: SparkPIDController

Akıllı Hareket Parametreleri

SparkPIDController için yalnızca Smart Motion ve Smart Velocity için geçerli olan başka bir parametre seti daha vardır. Bunlar, Smart Motion tarafından oluşturulan hareket profillerini yapılandırmanıza ve ayarlamanıza olanak tanır. Aşağıda görüldüğü gibi ayarlanabilirler:

// Set Smart Motion / Smart Velocity parameters
int smartMotionSlot = 0;
m_pidController.setSmartMotionMaxVelocity(maxVel, smartMotionSlot);
m_pidController.setSmartMotionMinOutputVelocity(minVel, smartMotionSlot);
m_pidController.setSmartMotionMaxAccel(maxAcc, smartMotionSlot);
m_pidController.setSmartMotionAllowedClosedLoopError(allowedErr, smartMotionSlot);

API Belgeleri: SparkPIDController

Maksimum Hız, Dakika Başına Devir (RPM) birimindedir

Maksimum İvme Saniye Başına RPM (RPM/s) birimindedir

Last updated

Was this helpful?