İçindekiler:
- Adım 1: CANBUS Nedir?
- 2. Adım: CAN İletişimleri Hakkında
- 3. Adım: Çerçeveler
- Adım 4: Hız ve Mesafe
- Adım 5: Donanım
- 6. Adım: Bağlantı
- 7. Adım: Kod
- Adım 8: Göster
Video: CANBUS için Basit Bir Eğitim: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:16
Üç haftadır CAN eğitimi alıyorum ve şimdi öğrenme sonuçlarımı doğrulamak için bazı uygulamaları tamamladım. Bu eğitimde, CANBUS iletişimini uygulamak için Arduino'yu nasıl kullanacağınızı öğreneceksiniz. Herhangi bir öneriniz varsa, mesaj bırakmaktan memnuniyet duyarız.
Gereçler:
Donanım:
- Maduino Zero CANBUS
- DHT11 Sıcaklık ve Nem Modülü
- 1.3" I2C OLED 128x64- Mavi
- DB9 - DB9 kablosu (dişi - dişi)
- Dupont Hattı
Yazılım:
Arduino IDE'si
Adım 1: CANBUS Nedir?
CAN Hakkında
CAN (Kontrolör Alan Ağı), dağıtılmış gerçek zamanlı kontrolü gerçekleştirebilen bir seri iletişim ağıdır. Karmaşık kablo demetini iki telli bir bus ile değiştirmek için otomotiv endüstrisi için geliştirilmiştir.
CAN protokolü, OSI modelinde Veri Bağlantı Katmanını ve Fiziksel Katmanın bir bölümünü tanımlar.
CAN protokolü, ISO11898 ve ISO11519 ile ISO standardize edilmiştir. ISO11898, 125kbps-1Mbps iletişim hızına sahip CAN yüksek hızlı iletişim standardıdır. ISO11519, 125 kbps'den daha düşük bir iletişim hızına sahip CAN düşük hızlı iletişim standardıdır.
Burada yüksek hızlı CAN'a odaklanıyoruz.
ISO-11898, bilgilerin bir ağdaki cihazlar arasında nasıl iletildiğini ve katmanlar olarak tanımlanan Açık Sistemler Ara Bağlantı modeline (OSI) uygun olduğunu açıklar. Fiziksel ortam tarafından bağlanan cihazlar arasındaki gerçek iletişim, modelin fiziksel katmanı tarafından tanımlanır
- Veri yoluna bağlı her CAN birimine düğüm denilebilir. Tüm CAN birimleri, bir ağ oluşturmak için her bir uçta 120 Ω dirençle sonlandırılan bir veri yoluna bağlanır. Otobüs CAN_H ve CAN_L hatlarından oluşmaktadır. CAN denetleyicisi, her iki kablodaki güç seviyesindeki farka dayalı olarak veri yolu seviyesini belirler. Otobüs seviyeleri, bunlardan biri olması gereken baskın ve resesif seviyelere ayrılmıştır. Gönderici, bus düzeyinde bir değişiklik yaparak mesajı alıcıya gönderir. Veri yolunda "ve" mantıksal satırı çalıştırıldığında, baskın düzey "0" ve çekinik düzey "1" olur.
- Baskın durumda, CAN_H'nin voltajı yaklaşık 3.5V'dir ve CAN_L'nin voltajı yaklaşık 1.5V'dir. Resesif durumda, her iki hattın voltajı 2,5V civarındadır.
- Sinyal diferansiyeldir, bu nedenle CAN sağlam gürültü bağışıklığını ve hata toleransını türetmektedir. Dengeli diferansiyel sinyal, gürültü bağlantısını azaltır ve bükümlü çift kablo üzerinden yüksek sinyal oranlarına izin verir. Her sinyal hattındaki akım eşittir ancak zıt yöndedir ve düşük gürültü emisyonlarının anahtarı olan bir alan iptal etme etkisi ile sonuçlanır. Dengeli diferansiyel alıcıların ve bükümlü çift kablolamanın kullanılması, bir CAN veriyolunun ortak mod reddini ve yüksek gürültü bağışıklığını artırır.
CAN alıcı-verici
CAN Alıcı-Verici, mantık seviyesi ile fiziksel sinyal arasındaki dönüşümden sorumludur. Mantıksal bir sinyali diferansiyel düzeye veya fiziksel bir sinyali mantıksal düzeye dönüştürün.
CAN Kontrolörü
CAN Denetleyicisi, CAN protokolündeki veri bağlantı katmanının tüm işlevlerini gerçekleştiren ve CAN protokolünü otomatik olarak çözebilen CAN'ın temel bileşenidir.
MCU
MCU, fonksiyon devresinin ve CAN kontrolörünün kontrolünden sorumludur. Örneğin, CAN denetleyici parametreleri düğüm başladığında başlatılır, CAN çerçevesi okunur ve CAN denetleyicisi aracılığıyla gönderilir, vb.
2. Adım: CAN İletişimleri Hakkında
Veri yolu boştayken, tüm düğümler mesaj göndermeye başlayabilir (çoklu ana kontrol). Bus'a ilk erişen düğüm gönderme hakkını alır (CSMA/CA modu). Birden fazla düğüm aynı anda göndermeye başladığında, yüksek öncelikli kimlik mesajını gönderen düğüm gönderme hakkını alır.
CAN protokolünde tüm mesajlar sabit bir formatta gönderilir. Otobüs boştayken, bus'a bağlı tüm birimler yeni mesaj göndermeye başlayabilir. İkiden fazla hücre aynı anda mesaj göndermeye başladığında, öncelik tanımlayıcıya göre belirlenir. Kimlik, gönderimin hedef adresini değil, veriyoluna erişen mesajın önceliğini temsil eder. İkiden fazla hücre aynı anda mesaj göndermeye başladığında, faizsiz kimliğin her bir biti birer birer hakem edilir. Hakemliği kazanan birim mesaj göndermeye devam edebilir ve hakemliği kaybeden birim işi göndermeyi hemen durdurur ve alır.
CAN veri yolu, bir yayın veri yolu türüdür. Bu, tüm düğümlerin tüm aktarımları 'duyabileceği' anlamına gelir. tüm düğümler her zaman tüm trafiği alır. CAN donanımı, her düğümün yalnızca ilginç mesajlara tepki verebilmesi için yerel filtreleme sağlar.
3. Adım: Çerçeveler
CAN cihazları, CAN ağı üzerinden çerçeve adı verilen paketler halinde veri gönderir. CAN'ın dört çerçeve türü vardır:
- Veri çerçevesi: iletim için düğüm verilerini içeren bir çerçeve
- Uzak çerçeve: belirli bir tanımlayıcının iletilmesini talep eden bir çerçeve
- Hata çerçevesi: bir hata algılayan herhangi bir düğüm tarafından iletilen bir çerçeve
- Aşırı yükleme çerçevesi: veri veya uzak çerçeve arasına bir gecikme enjekte etmek için bir çerçeve
Veri çerçevesi
Standart ve genişletilmiş olmak üzere iki tür veri çerçevesi vardır.
Şekildeki bit alanlarının anlamı:
- SOF–Çerçevenin tek baskın başlangıcı (SOF) biti, mesajın başlangıcını işaretler ve boşta kaldıktan sonra bir veriyolundaki düğümleri senkronize etmek için kullanılır.
- Tanımlayıcı-Standart CAN 11 bit tanımlayıcı, mesajın önceliğini belirler. İkili değer ne kadar düşükse, önceliği o kadar yüksek olur.
- RTR–Tek uzak iletim talebi (RTR) biti
- IDE–Baskın tek tanımlayıcı uzantısı (IDE) biti, uzantısı olmayan standart bir CAN tanımlayıcısının iletildiği anlamına gelir.
- R0 – Ayrılmış bit (gelecekteki standart değişiklikle olası kullanım için).
- DLC–4 bitlik veri uzunluğu kodu (DLC), iletilen veri baytlarının sayısını içerir.
- Veri–64 bite kadar uygulama verisi iletilebilir.
- CRC–16 bit (15 bit artı sınırlayıcı) döngüsel artıklık denetimi (CRC), hata tespiti için önceki uygulama verilerinin sağlama toplamını (iletilen bit sayısı) içerir.
- ACK–ACK 2 bittir, biri onay biti ve ikincisi sınırlayıcıdır.
- EOF–Bu çerçeve sonu (EOF), 7 bitlik alan, bir CAN çerçevesinin (mesajın) sonunu işaretler ve baskın olduğunda bir doldurma hatası göstererek bit doldurmayı devre dışı bırakır. Normal çalışma sırasında aynı mantık seviyesinden 5 bit art arda oluştuğunda, veriye zıt mantık seviyesinden bir bit doldurulur.
- IFS–Bu 7 bit çerçeveler arası alan (IFS), denetleyici tarafından doğru alınan bir çerçeveyi mesaj arabelleği alanındaki uygun konumuna taşımak için gereken süreyi içerir.
Tahkim
Bus bekleme durumunda, mesajı ilk göndermeye başlayan birim, gönderme hakkını alır. Birden fazla birim aynı anda göndermeye başladığında, her bir gönderme birimi tahkim segmentinin ilk bitinde başlar. En fazla sayıda sürekli çıktı baskın düzeyine sahip birim göndermeye devam edebilir.
Adım 4: Hız ve Mesafe
CAN veri yolu, aynı anda birden fazla birimi birbirine bağlayan bir veri yoludur. Bağlanabilecek toplam ünite sayısında teorik olarak bir sınır yoktur. Ancak pratikte bağlanabilecek ünite sayısı, bus üzerindeki zaman gecikmesi ve elektrik yükü ile sınırlıdır. İletişim hızını azaltın, bağlanabilecek ünite sayısını artırın ve iletişim hızını artırın, bağlanabilecek ünite sayısını azaltın.
İletişim mesafesi, iletişim hızıyla ters orantılıdır ve iletişim mesafesi ne kadar uzak olursa iletişim hızı o kadar küçük olur. Daha uzun mesafe 1 km veya daha fazla olabilir, ancak hız 40kps'den azdır.
Adım 5: Donanım
Maduino Zero CAN-BUS modülü, Makerfabs tarafından CANbus iletişimi için geliştirilmiş bir araçtır, kullanıma hazır bir CAN-bus bağlantı noktası oluşturmak için CAN denetleyicisi ve CAN alıcı-vericisi ile Arduino'ya dayanmaktadır.
- MCP2515, CAN spesifikasyonunu uygulayan bağımsız bir CAN denetleyicisidir. Hem standart hem de genişletilmiş verileri ve uzak çerçeveleri iletme ve alma yeteneğine sahiptir.
- MAX3051, CAN protokol denetleyicisi ile bir denetleyici alan ağındaki (CAN) veri yolu hatlarının fiziksel kabloları arasında arabirim oluşturur. MAX3051, veriyoluna diferansiyel iletim yeteneği ve CAN kontrolörüne diferansiyel alma yeteneği sağlar.
6. Adım: Bağlantı
CAN iletişimini desteklemek için bir araç olarak kullanılacak kablolarla DHT11 modülünü Maduino Zero CAN-BUS modülüne bağlayın. Benzer şekilde, verileri almak ve görüntülemek için ekranı modüle bağlayın.
Maduino Zero CANBUS ve DHT11 arasındaki bağlantı:
Maduino Zero CANBUS -- DHT11
3v3 ------ VCC GND ------ GND D10 ------ VERİ
Maduino Zero CANBUS ve OLED arasındaki bağlantı:
Maduino Zero CANBUS -- OLED
3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA
İki Maduino Zero CANBUS modülünü bağlamak için bir DB9 kablosu kullanın.
7. Adım: Kod
MAX3051, diferansiyel seviyelerin mantıksal sinyallere dönüştürülmesini tamamlar. MCP2515, veri kodlama ve kod çözme gibi CAN işlevini tamamlar. MCU'nun yalnızca denetleyiciyi başlatması ve veri gönderip alması gerekir.
- Github:
- Arduino kurulduktan sonra kurulması gereken boardu (Arduino Zero) destekleyecek bir paket bulunmamaktadır.
- Araçları seçin ->Board -> Board Manager, "Arduino zero" öğesini arayın ve "Arduino SAMD Boards" yükleyin.
- Araçlar -> Tahta -> Arduino Sıfır (Yerel USB Bağlantı Noktası) öğesini seçin, Araçlar -> Bağlantı Noktası -> com… öğesini seçin.
- Programı GitHub'dan aldıktan sonra, tüm dosyaların CANBUS'u destekleyen kitaplık dosyalarının bulunduğu proje dizininde olduğundan emin olmanız gerekir.
- Sıcaklık ve nem elde etmek için DHT11'i sürmek için kullanılan Adafruit'in DHT sensör kitaplığını kurun.
- Test_DHT11.ino kodunda sıcaklık ve nemi ayrı ayrı göndermek için farklı adresler kullanın.
CAN.sendMsgBuf(0x10, 0, stmp1.length(), stmp_send1);
gecikme(500); CAN.sendMsgBuf(0x11, 0, stmp2.length(), stmp_send2); gecikme(500);
“0x10” mesaj kimliği, “0” standart çerçeve, “stmp1.length()” mesaj uzunluğu, “stmp_send1” gönderilen veridir.
- Test_OLED.ino kodunda CANBUS üzerindeki tüm mesajlar sorgulanarak alınır ve gerekli bilgiler OLED üzerinde görüntülenir.
- Sensöre bağlı olan modüle Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino programını, OLED'e bağlı başka bir modüle Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino programını yükleyin.
Adım 8: Göster
İki modülü açın, ekranda sıcaklık ve nem görüntülenecektir.
Önerilen:
Bir Arduino'yu Kitaplık Olmadan Kayan Bir Metin Görüntülemek İçin Başka Bir Arduino Kullanarak Programlamak: 5 Adım
Bir Arduino'yu Kitaplık Olmadan Kayan Bir Metni Görüntülemek için Başka Bir Arduino Kullanarak Programlama: Sony Spresense veya Arduino Uno o kadar pahalı değil ve çok fazla güç gerektirmez. Ancak projenizin güç, alan ve hatta bütçe kısıtlaması varsa Arduino Pro Mini kullanmayı düşünebilirsiniz. Arduino Pro Micro'nun aksine, Arduino Pro Mi
Kulüpler, Öğretmenler için Makerspaces vb. için basit "Robot Kiti": 18 Adım
Kulüpler, Teachers Makerspaces vb. için Basit "Robot Kiti": Fikir, "Orta TN Robotik Sanatlar Topluluğu" üyelerimiz için küçük ama genişletilebilir bir kit oluşturmaktı. Özellikle çizgi takibi ve hızlı yolculuk gibi yarışmalar için kit etrafında atölye çalışmaları planlıyoruz. Bir Arduino ekledik
Çocuklar için Bubble Blister Robot Makinesi Eğitim Seti: 8 Adım
Çocuklar İçin Bubble Blister Robot Makina Eğitim Seti: Merhaba yapımcılar,Uzun bir aradan sonra tekrar birlikteyiz. Bu sezon çevremizi biraz daha genişletmeye karar verdik. Bugüne kadar profesyonel projeler üretmeye çalıştık. bilinmesi gereken üst düzey bilgiler. Ama biz de öyle yapmamız gerektiğini düşündük
Eğitim Amaçlı Basit Bir Basınç Ölçüm Cihazı: 4 Adım
Eğitim Amaçlı Basit Bir Basınç Ölçüm Cihazı: Aşağıda, basınç ölçümleriyle oynamak için çok basit ve yapımı kolay bir cihazın yapım talimatlarını bulabilirsiniz. Gaz yasalarıyla ilgili okullar veya diğer STEM ile ilgili Projeler için kullanılabilir, ancak diğer cihazlara entegre edilmek üzere uyarlanabilir
Ambliyopi için Sıvı Kristal Gözlükler (Alternatif Oklüzyon Eğitim Gözlükleri) [ATtiny13]: 10 Adım (Resimlerle)
Ambliyopi için Sıvı Kristal Gözlükler (Alternatif Oklüzyon Eğitim Gözlükleri) [ATtiny13]: Ambliyopi (göz tembelliği), popülasyonun yaklaşık %3'ünü etkileyen, genellikle basit göz bantları veya atropin damlaları ile tedavi edilen bir görme bozukluğu. Ne yazık ki, bu tedavi yöntemleri uzun, kesintisiz süreler boyunca daha güçlü gözü tıkar, hayır