SPARK MAX Kontrol Arayüzleri
SPARK MAX, servo tarzı PWM, kontrolör alan ağı (CAN) ve USB olmak üzere üç farklı arayüz ile kontrol edilebilir. Aşağıdaki bölümlerde bu arayüzlerin çalışması ve protokolleri açıklanmaktadır. Fiziksel bağlantılar hakkında daha fazla bilgi için Kontrol Bağlantıları bölümüne bakın.
PWM Arayüzü
SPARK MAX, çıkış görev döngüsü için bir kontrol olarak standart bir servo tarzı PWM sinyalini kabul edebilir. PWM portu CAN portu ile paylaşılsa da, SPARK MAX gelen sinyal tipini otomatik olarak algılar ve buna göre yanıt verir. SPARK MAX'a bir PWM kablosunun nasıl bağlanacağı hakkında ayrıntılar için CAN/PWM Portu bölümüne bakın.
SPARK MAX, 1000µs ila 2000µs fabrika varsayılan darbe aralığına yanıt verir. Bu darbeler sırasıyla tam geri ve tam ileri dönüşe karşılık gelir ve 1500µs (±%5 varsayılan giriş ölü bandı) nötr konumdur, yani dönüş yoktur. Giriş ölü bandı REV Hardware Client veya CAN arayüzü ile yapılandırılabilir. Aşağıdaki tabloda, varsayılan darbe aralığının çıkış davranışıyla nasıl eşleştiği açıklanmaktadır.
PWM Darbe Eşlemesi

Eğer 60 ms içinde geçerli bir sinyal alınmazsa, SPARK MAX motor çıkışını devre dışı bırakır ve yapılandırılan Rölanti Moduna bağlı olarak motoru frenler ya da durdurur. Rölanti Modu hakkında ayrıntılar için bkz. Rölanti Modu - Fren/Serbest Modu.
CAN Arayüzü
SPARK MAX bir robot CAN ağına bağlanabilir. CAN, SPARK MAX içinde gelişmiş özellikler sağlayan çift yönlü bir iletişim veriyoludur. SPARK MAX, her iki uç noktasında da uygun sonlandırma dirençlerine sahip bir CAN ağına bağlanmalıdır. CAN veri yolu kablolama gereksinimleri için lütfen FIRST Robotics Competition Robot Kurallarına bakın. CAN portu PWM portu ile paylaşılsa da, SPARK MAX gelen sinyal türünü otomatik olarak algılar ve buna göre yanıt verir. SPARK MAX, genişletilmiş bir ID (29 bit) ile standart CAN çerçeveleri kullanır ve genişletilmiş ID'nin bitlerini tanımlamak için FRC CAN protokolünü kullanır:
CAN Paket Yapısı
ExtID [28:24]
ExtID [23:16]
ExtID [15:10]
ExtID [9:6]
ExtID [5:0]
Cihaz Tipi
Üretici firma
API Sınıfı
API İndeksi
Cihaz Kimliği
CAN veri yolundaki her cihaza benzersiz bir CAN ID numarası atanmalıdır. Kutudan çıkar çıkmaz, SPARK MAX'a 0 cihaz kimliği atanır. 0 olan tüm SPARK MAX CAN kimliklerinin 1 ila 62 arasında kullanılmayan herhangi bir kimlikle değiştirilmesi şiddetle tavsiye edilir. CAN ID'leri, SPARK MAX'ı bir Windows bilgisayara bağlayarak ve REV Hardware Client'ı kullanarak değiştirilebilir. Diğer SPARK MAX yapılandırma parametreleri hakkında ayrıntılar için bkz.
CAN erişilebilir özellikleri ve bunlara nasıl erişileceği hakkında ek bilgi SPARK MAX API Bilgileri bölümünde bulunabilir.
Periyodik Durum Çerçeveleri
SPARK MAX, verileri periyodik olarak roboRIO'ya geri gönderir. Motor konumu ve sıcaklık gibi sık erişilen verilere çeşitli API'ler kullanılarak erişilebilir. Veriler, periyodik bir hızda gönderilen birkaç CAN “çerçevesine” bölünür. Bu oran kod içinde manuel olarak değiştirilebilir, ancak diğer parametrelerin aksine, bu ayar bir güç döngüsü boyunca devam etmez. Hız, minimum 1 ms ile maksimum 32767 ms arasında herhangi bir yere ayarlanabilir. Aşağıdaki tabloda her bir durum çerçevesi ve mevcut verileri açıklanmaktadır.
Periyodik Durum 0 - Varsayılan Oran: 10ms
Mevcut Veriler
Açıklama
Uygulanan **** Çıkış
Motor kontrolöründen motorlara gönderilen gerçek değer. Çerçeve bu değeri 16 bit işaretli tamsayı olarak saklar ve roboRIO SDK tarafından -1 ile 1 arasında bir kayan nokta değerine dönüştürülür. Bu değer aynı zamanda tüm takipçi kontrolörler tarafından çıkışlarını ayarlamak için kullanılır.
Arızalar
Her bit kontrol ünitesindeki farklı bir hatayı temsil eder. Hata ortadan kalktığında bu hata parçaları otomatik olarak silinir.
Sabit Arızalar
Hatalar alanıyla aynıdır, ancak bitler bir güç çevrimi veya bir ' Clear Faults' (Hataları Temizle) komutu gönderilinceye kadar sıfırlanmaz.
Takipçidir
Kontrolör başka bir kontrolörü takip edecek şekilde yapılandırılmışsa doğru olan tek bir parça.
Periyodik Durum 1 - Varsayılan Oran: 20ms
Mevcut Veriler
Açıklama
Motor Hızı
Seçilen sensör kullanılarak RPM cinsinden motor hızının 32 bit IEEE floating-point gösterimi.
Motor Sıcaklığı
8 bitlik işaretlenmemiş değeri temsil eder: Firmware sürümü 1.0.381 - 0 = 0V ve 255 = 3.3V ile sıcaklık sensörünün voltajı. Güncel aygıt yazılımı sürümleri - NEO Fırçasız Motor için °C cinsinden motor sıcaklığı.
Motor Voltajı
roboRIO SDK tarafından kayan nokta voltaj değerine (Volt cinsinden) dönüştürülen 12 bit sabit nokta değeri. Bu, kontrol ünitesine giriş voltajıdır.
Motor Akımı
roboRIO SDK tarafından kayan nokta akım değerine (Amper cinsinden) dönüştürülen 12 bit sabit nokta değeri. Bu, motorun ham faz akımıdır.
Periyodik Durum 2 - Varsayılan Oran: 20ms
Mevcut Veriler
Açıklama
Motor Position
32-bit IEEE floating-point representation of the motor position in rotations.
Periyodik Durum 3 - Varsayılan Oran: 50ms
Mevcut Veriler
Açıklama
Analog Sensör Voltajı
roboRIO SDK tarafından kayan nokta voltaj değerine (Volt cinsinden) dönüştürülen 10 bit sabit nokta değeri. Bu, analog sensör tarafından çıkarılan voltajdır.
Analog Sensör Hızı
roboRIO SDK tarafından kayan nokta voltaj değerine (RPM cinsinden) dönüştürülen 22 bit sabit nokta değeri. Bu, analog sensör tarafından bildirilen hızdır.
Analog Sensör Konumu
Analog sensör tarafından bildirilen RPM cinsinden hızın 32 bit IEEE kayan noktalı gösterimi.
Periyodik Durum 4 - Varsayılan Oran: 20ms
Mevcut Veriler
Açıklama
Alternatif Kodlayıcı Hızı
Alternatif kodlayıcının RPM cinsinden hızının 32 bit IEEE floating-point gösterimi.
Alternatif Kodlayıcı Konumu
Alternatif kodlayıcının dönüşlerindeki konumun 32 bit IEEE kayan noktalı gösterimi.
Periyodik Durum 5 - Varsayılan Oran: 200ms
Mevcut Veriler
Açıklama
Görev Döngüsü Mutlak Kodlayıcı Konumu
Görev döngüsü mutlak kodlayıcısının konumunun 32 bit IEEE floating-point gösterimi.
Görev Döngüsü Mutlak Kodlayıcı Mutlak Açı
Görev döngüsü mutlak kodlayıcısının mutlak açısının 16 bitlik tamsayı gösterimi.
Periyodik Durum 6 - Varsayılan Oran: 200ms
Mevcut Veriler
Açıklama
Görev Döngüsü Mutlak Kodlayıcı Hızı
Görev döngüsü mutlak kodlayıcısının RPM cinsinden hızının 32 bit IEEE floating-point gösterimi.
Görev Döngüsü Mutlak Kodlayıcı Frekansı
Görev döngüsü sinyalinin gönderildiği frekansın 16 bitlik işaretsiz tamsayı gösterimi.
Kullanım Durumu Örnekleri
roboRIO üzerinde Pozisyon Kontrolü
Bir kullanıcı, bir konumu tutmak için roboRIO üzerinde kendi PID döngüsünü uygulamak istiyor. Bu döngüyü 100Hz'de (her 10ms'de bir) çalıştırmak istiyorlar, ancak Periyodik Durum 2'deki motor konumu verileri 20Hz'de (her 50ms'de bir) gönderiliyor.
Kullanıcı arayarak bu hızı 10ms olarak değiştirebilir:
Sözde kod
setPeriodicFrameRate(PeriodicFrame.kStatus2, 10);Yüksek CAN Kullanımı
Bir kullanıcının çok sayıda bağlı CAN cihazı vardır ve CAN veri yolu kullanımını en aza indirmek ister. Herhangi bir telemetri geri bildirimine ihtiyaç duymazlar ve sadece hataları kontrol eden birkaç takipçi cihaza sahiptirler.
Kullanıcı takip eden cihazlarda telemetri çerçeve hızlarını düşük ayarlayabilir ve Periyodik Durum 0 çerçeve hızını düşük ayarlayabilir:
Sözde kod
leader.setPeriodicFrameRate(PeriodicFrame.kStatus1, 500);
leader.setPeriodicFrameRate(PeriodicFrame.kStatus2, 500);
follower.setPeriodicFrameRate(PeriodicFrame.kStatus0, 100);
follower.setPeriodicFrameRate(PeriodicFrame.kStatus1, 500);
follower.setPeriodicFrameRate(PeriodicFrame.kStatus2, 500);Daha Hızlı Takipçi Bant Genişliği
Kullanıcı, takipçi cihazların daha hızlı bir şekilde güncellenmesini ister: 200Hz (her 5 ms'de bir).
Bunu başarmak için Periyodik Durum 0 çerçevesi artırılabilir.
Sözde kod
leader.setPeriodicFrameRate(PeriodicFrame.kStatus0, 5);USB Arayüzü
SPARK MAX, REV Hardware Client çalıştıran bir bilgisayara USB bağlantısı aracılığıyla yapılandırılabilir ve kontrol edilebilir. USB arayüzü standart bir CDC (USB'den Seri'ye) sürücüsü kullanır. Komut arayüzü CAN'a benzer, aynı ID ve veri yapısını kullanır, ancak her zaman tam 12 baytlık bir paket gönderir ve alır. Doğrudan cihazla konuşurken CAN kimliği atlanır (DNC). Ancak, ID'nin üç MSB'si alternatif komutların seçilmesine izin verir:
0b000 - Standart komut - CAN ID atlanmış (DNC)
0b001 - Genişletilmiş komut - USB'ye özel
USB üzerinden gönderilen tüm komutlar bir yanıt alır. İlgili CAN komutunun yanıt almaması durumunda, USB arayüzü bir Ack komutu alır.
USB Paket Yapısı
ExtID [31:29]
ExtID [28:24]
ExtID [23:16]
ExtID [15:10]
ExtID [9:6]
ExtID [5:0]
USB Komut Türü
Cihaz Tipi (2)
Üretici (0x15)
API Sınıfı
API İndeksi
Cihaz ID
Last updated
Was this helpful?