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.
Alternatif Kodlayıcı Özellikleri
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
5V çıkışlı bir sensör bağlamadan önce, SPARK MAX ilk olarak Alternatif Enkoder Moduna yapılandırılmalı ve yapılandırması SPARK MAX'a kaydedilmelidir, aksi takdirde hasar meydana gelecektir. Bu, REV Hardware Client veya yazılım API'leri aracılığıyla yapılabilir.
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:
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.
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
frc::SmartDashboard::PutNumber("Alt Encoder Velocity", m_alternateEncoder.GetVelocity()); frc::SmartDashboard::PutNumber("Applied Output", m_motor.GetAppliedOutput());
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?