Alternatif Enkoder Modu

SPARK MAX, Alternatif Enkoder Modunda çalışacak şekilde yapılandırılabilir; bu mod, kontrolörün üstündeki Veri Portunu, ön Enkoder Portu ile varsayılan dörtlü enkoder Veri Portu pinleri arasında paylaşılan varsayılan enkoder girişlerinden ayrı olarak alternatif bir dörtlü enkoderi kabul edecek şekilde yeniden yapılandırır. Analog giriş Alternatif Enkoder Modundan etkilenmez.

Bu özellik, aktarma organları, kollar ve diğer manipülatörler gibi düşük devirli mekanizmalarda kullanılmak üzere tasarlanmıştır. Yüksek RPM uygulamaları için, fırçasız motorlar için dahili motor sensörünün veya fırçalı motorlar için varsayılan enkoder girişlerinin kullanılması önerilir.

Alternatif Kodlayıcı Özellikleri

Parametre
Özellikler

Enkoder Çıkış Voltaj Seviyesi

3.3V veya 5.0V

Desteklenen Kodlayıcı Tipi

Karesel†

Saniye Başına Maksimum Sayım

165000

İndeks darbeleri şu anda desteklenmemektedir

Ortak Karesel Kodlayıcılarla Maksimum RPM

Enkoder

Devir Başına Sayım

Max RPM

CTRE SRX Mag Enkoder

4096

2400

Greyhill 63R256

1024

9600

Alternatif Enkoder Modu için yapılandırıldığında, yeniden yapılandırılmış Veri Portu pinlerine bağlı bir dört evreli enkoder SPARK MAX tarafından bir geri besleme cihazı olarak kullanılabilir. Lütfen limit anahtarı girişlerinin alternatif bir enkoder ile aynı anda kullanılamayacağını unutmayın. Limit anahtarı pinleri alternatif enkoder için yeniden kullanılır ve bu nedenle devre dışı bırakılır. Daha fazla bilgi için lütfen Alternatif Enkoder Bağlama bölümüne bakın.

Alternatif Enkoderin Bağlanması

Alternatif bir enkoderin bağlanması, gerekli kodlayıcı gücünü, topraklamayı ve sinyalleri yeniden yapılandırılmış Veri Portuna bağlamak için muhtemelen özel bir kablo demeti gerektirecektir. Alternatif Enkoder Modunda yapılandırıldığında, Veri Bağlantı Noktası aşağıdaki pin düzenine sahiptir:

Alternatif Enkoder Modunda Veri Bağlantı Noktası Pin Çıkışı

Konektör Pini

Pin Tipi

Pin İşevi

1

Güç

+3.3V

2

Güç

+5V

3

Analog

Analog Giriş

4

Dijital

Alternatif Kodlayıcı İndeksi†

5

Dijital

Enkoder B

6

Dijital

Alternatif Enkoder A

7

Dijital

Enkoder A

8

Dijital

Alternatif Enkoder B

9

Dijital

Enkoder C / Indeks

10

Eksi

Eksi

Alternatif Enkoder İndeksi pini ayrılmıştır ancak şu anda desteklenmemektedir

Bir REV Geçişli Enkoderi doğrudan SPARK MAX Veri Portuna bağlamak için Alternatif Enkoder Adaptörü (REV-11-1881) kullanın. Bu adaptör, Delikten Enkoderin pin çıkışı ile uyumlu bir JST PH 6-pin konektöre ve veri portunun pin 4'üne bağlanan sinyali değiştirmek için bir seçim anahtarına sahiptir.

Başka bir seçenek de SPARK MAX Veri Portu Breakout Board'dur. Bu kart, Veri Portuna alternatif bir enkoder bağlamak için kullanılabilir. Aşağıdaki tabloda, alternatif enkoderden gelen hangi sinyaller için koparma üzerindeki hangi pedlerin kullanılması gerektiği açıklanmaktadır.

SPARK MAX Veri Portu Breakout Kartı için Alternatif Enkoder Pin eşlemesi

Koparma Kartı Pedi Etiketi

Alternatif Enkoder İşlevi

Limit - F

Indeks†

P6 (eski serilerde P5)

A

Limit - R

B

3.3V veya 5.0V

Enkoder Gücü

GND

Enkoder Topraklaması

Alternatif Kodlayıcı İndeksi pini ayrılmıştır ancak şu anda desteklenmemektedir

Alternatif Enkoder Modunun Yapılandırılması ve Kullanılması

Aşağıda, REV Hardware Client veya SPARK MAX API'leri aracılığıyla yapılandırma ile başlayarak, SPARK MAX üzerinde Alternatif Enkoder Modunu kurmak ve kullanmak için gereken adımları bulacaksınız.

REV Hardware Client Kullanılarak Yapılandırma

REV Hardware Client'ı kullanarak SPARK MAX'ınızı seçin, ardından Advanced Sekmesine gidin ve Alternate Encoder parametre bölümüne ilerleyin. Açılır menü aracılığıyla kDataPortConfig parametresini ''Alternate Encoder'' olarak ayarlayarak alternatif enkoderi etkinleştirin. Bu sırada diğer Alternatif Enkoder parametrelerini de ayarlayabilirsiniz.

SPARK MAX API'lerini Kullanarak Yapılandırma

SPARK MAX API'leri kullanılıyorsa, Alternatif Kodlayıcı nesnesi örneklendiğinde Alternatif Enkoder otomatik olarak yapılandırılır. Alternatif Enkoder, CANEncoder ile aynı şekilde, doğrudan yapıcı kullanılarak veya önceden oluşturulmuş bir CANSparkMax üzerinde GetAlternateEncoder() çağrısı yapılarak oluşturulur.

static constexpr int kCanId = 1;
static constexpr auto kMotorType = rev::CANSparkMax::MotorType::kBrushless;
static constexpr auto kAltEncType = rev::CANEncoder::AlternateEncoderType::kQuadrature;
static constexpr int kCPR = 8192;

// initialize SPARK MAX with CAN ID
rev::CANSparkMax m_motor{kCanID, kMotorType};

/**
* An alternate encoder object is constructed using the GetAlternateEncoder()
* method on an existing CANSparkMax object. If using a REV Through Bore
* Encoder, the type should be set to quadrature and the counts per
* revolution set to 8192
*/
rev::CANEncoder m_alternateEncoder = m_motor.GetAlternateEncoder(kAltEncType, kCPR);

Şu anda, alternatif bir enkoder için mevcut tek yapılandırma türü kareseldir. Bu, SPARK MAX üzerindeki öne bakan Enkoder Portu üzerinden bağlanan bir enkoder için mevcut olan diğer enkoder konfigürasyon türlerinden farklıdır.

Konfigürasyon Çatışmaları

Alternatif enkoder girişleri ve varsayılan dijital girişler Veri Portunda paylaşıldığından, kullanıcı kodda hem alternatif enkoderi hem de dijital girişleri kullanamaz. Bu nedenle, kullanıcı kodda her iki tip nesneyi aynı anda oluşturmaya çalışırsa bir std::invalid_argument (C++), IllegalArgumentException (Java) veya Error Out terminalinde (LabVIEW) bir Hata atılacaktır.

Kapalı Döngü Kontrolü

Alternatif enkoder, SPARK MAX'te bulunan farklı kapalı döngü kontrol modlarıyla kullanılabilir. Bir CANPIDController tarafından kullanılan geri besleme cihazı, SetFeedbackDevice() aracılığıyla alternatif enkoderi kullanacak şekilde ayarlanmalıdır.

/**
* By default, the PID controller will use the Hall sensor from a NEO or NEO 550 for
* its feedback device. Instead, we can set the feedback device to the alternate
* encoder object
*/
m_pidController.SetFeedbackDevice(m_alternateEncoder);

İlk Kurulum

NEO Fırçasız motorlardaki dahili sensörün aksine, alternatif enkoderin 'fazı' SPARK MAX tarafından bilinmemektedir. Herhangi bir kapalı döngü kontrolünü etkinleştirmeden önce, fazın doğru yapılandırılmış olması çok önemlidir. Doğrulamak için:

  1. Sensörü dörtlü alternatif kodlayıcı olarak yapılandırın ve bağlayın, ancak kapalı döngü modunu çalıştırmayın.

  2. GetAppliedOutput() kullanarak motorun çıkış sinyalini ve altEncoder.GetVelocity() kullanarak enkoderin çıkışını çizin. Sensörün beklendiği gibi davrandığını doğrulayın. Bu SmartDashboard üzerinde yapılabilir:// Some code

    1. frc::SmartDashboard::PutNumber("Alt Encoder Velocity", m_alternateEncoder.GetVelocity()); frc::SmartDashboard::PutNumber("Applied Output", m_motor.GetAppliedOutput());

  3. Sensörün işaretinin, motoru ileri ve geri sürerken motor yönüne göre doğru olduğunu doğrulayın. Değilse, altEncoder.SetInverted(true) çağrısı yapılarak sensör ters çevrilmelidir.

Last updated

Was this helpful?