Mündəricat:

CANBUS üçün sadə bir dərs: 8 addım
CANBUS üçün sadə bir dərs: 8 addım

Video: CANBUS üçün sadə bir dərs: 8 addım

Video: CANBUS üçün sadə bir dərs: 8 addım
Video: Junsun logo radio. Як правильно створити малюнок в форматі bmp, додати логотип в андроїд магнітолу 2024, Iyul
Anonim
CANBUS üçün sadə bir dərs
CANBUS üçün sadə bir dərs

Üç həftədir CAN öyrənirəm və indi öyrənmə nəticələrimi təsdiqləmək üçün bəzi tətbiqləri tamamladım. Bu dərslikdə CANBUS ünsiyyətini həyata keçirmək üçün Arduinodan necə istifadə edəcəyinizi öyrənəcəksiniz. Hər hansı bir təklifiniz varsa, bir mesaj buraxın.

Təchizat:

Avadanlıq:

  • Maduino Sıfır KANBUS
  • DHT11 Temperatur və Nəmlik Modulu
  • 1.3 "I2C OLED 128x64- Mavi
  • DB9 - DB9 kabeli (dişi qadın)
  • Dupont xətti

Proqram təminatı:

Arduino IDE

Addım 1: CANBUS nədir?

CANBUS nədir
CANBUS nədir
CANBUS nədir
CANBUS nədir

CAN haqqında

CAN (Controller Area Network), paylanmış real vaxt nəzarətini həyata keçirə bilən bir serial rabitə şəbəkəsidir. Avtomobil sənayesi üçün mürəkkəb naqilləri iki telli bir avtobusla əvəz etmək üçün hazırlanmışdır.

CAN protokolu, OSI modelində Data Link Layerini və Fiziki Layerin bir hissəsini təyin edir.

CAN protokolu ISO11898 və ISO11519 ilə ISO standartlaşdırılmışdır. ISO11898, 125kbps-1Mbps ünsiyyət sürətinə malik yüksək sürətli CAN rabitə standartıdır. ISO11519, 125 kbit / saniyədən az olan CAN aşağı sürətli ünsiyyət standartıdır.

Burada yüksək sürətli CAN-a diqqət yetiririk.

ISO-11898, məlumatların bir şəbəkədəki cihazlar arasında necə ötürüldüyünü və təbəqələr baxımından təyin olunan Açıq Sistemlər Bağlantısı modelinə (OSI) uyğun olduğunu təsvir edir. Fiziki mühitlə əlaqəli qurğular arasındakı həqiqi ünsiyyət, modelin fiziki təbəqəsi ilə müəyyən edilir

  • Avtobusa qoşulan hər CAN qurğusuna qovşaq deyilə bilər. Bütün CAN qurğuları şəbəkə yaratmaq üçün hər iki tərəfində 120 Ω rezistorlar ilə bağlanan bir avtobusa qoşulur. Avtobus CAN_H və CAN_L xətlərindən ibarətdir. CAN nəzarətçisi, hər iki teldəki güc səviyyəsindəki fərqə əsaslanaraq avtobus səviyyəsini təyin edir. Avtobus səviyyələri onlardan biri olmalı olan dominant və resessiv səviyyələrə bölünür. Göndərən, avtobus səviyyəsində dəyişiklik edərək mesajı alıcıya göndərir. Avtobusda "və" məntiqi xətti icra edildikdə, dominant səviyyə "0" və resessiv səviyyə "1" dir.
  • Dominant vəziyyətdə, CAN_H gərginliyi təxminən 3,5 V, CAN_L gərginliyi isə təxminən 1,5 V -dir. Resessiv vəziyyətdə hər iki xəttin gərginliyi 2,5 V civarındadır.
  • Siqnal fərqlidir, buna görə CAN güclü səs -küy toxunulmazlığı və arızalara qarşı tolerantlıq əldə edir. Balanslaşdırılmış diferensial siqnal səs birləşməsini azaldır və bükülmüş cüt kabel üzərində yüksək siqnal dərəcələrinə imkan verir. Hər bir siqnal xəttindəki cərəyan bərabərdir, lakin əks istiqamətdədir və aşağı səs-küy emissiyalarının açarı olan sahəni ləğv edən bir təsirlə nəticələnir. Balanslaşdırılmış diferensial alıcıların və bükülü cüt kabellərin istifadəsi, CAN avtobusunun ümumi rejim rəddini və yüksək səs-küy toxunulmazlığını artırır.

CAN ötürücü

CAN Transceiver, məntiq səviyyəsi ilə fiziki siqnal arasındakı dönüşümdən məsuldur. Məntiqi bir siqnalı diferensial səviyyəyə və ya fiziki siqnalı məntiqi səviyyəyə çevirin.

CAN nəzarətçisi

CAN Nəzarətçisi, CAN protokolundakı məlumat bağlantı qatının bütün funksiyalarını həyata keçirən və CAN protokolunu avtomatik həll edə bilən CAN -ın əsas komponentidir.

MCU

MCU, funksiya dövrəsinin və CAN nəzarətçisinin nəzarətindən məsuldur. Məsələn, CAN nəzarətçi parametrləri düyün başladıqda işə salınır, CAN çərçivəsi CAN nəzarətçisi vasitəsilə oxunur və göndərilir və s.

Addım 2: CAN Rabitə haqqında

Avtobus boş olduqda, bütün qovşaqlar mesaj göndərməyə başlaya bilər (çoxlu idarəetmə). Avtobusa ilk daxil olan qovşaq göndərmə hüququ əldə edir (CSMA/CA rejimi). Birdən çox qovşaq eyni vaxtda göndərməyə başladıqda, yüksək prioritetli ID mesajı göndərən qovluq göndərmə hüququ əldə edir.

CAN protokolunda bütün mesajlar sabit bir formatda göndərilir. Avtobus boş qaldıqda, avtobusa qoşulmuş bütün qurğular yeni mesajlar göndərməyə başlaya bilər. Eyni anda iki hüceyrədən çox mesaj göndərməyə başladıqda prioritet identifikatora əsasən müəyyən edilir. ID, göndərilən yerin ünvanını deyil, avtobusa daxil olan mesajın prioritetini əks etdirir. Eyni anda iki hüceyrədən çox mesaj göndərməyə başladıqda, faizsiz şəxsiyyət sənədinin hər bir hissəsi bir-bir arbitraj edilir. Arbitrajı qazanan vahid mesaj göndərməyə davam edə bilər və arbitrajı itirən bölmə göndərilməni dərhal dayandırır və işi alır.

CAN avtobusu yayım tipli bir avtobusdur. Bu, bütün qovşaqların bütün ötürmələri 'eşidə biləcəyi' deməkdir. bütün qovşaqlar bütün trafiki dəyişməyəcək. CAN aparatı hər bir düyünün yalnız maraqlı mesajlara reaksiya verməsi üçün yerli filtrasiya təmin edir.

Addım 3: Çərçivələr

Çərçivələr
Çərçivələr

CAN cihazları məlumatları CAN şəbəkəsi üzərindən çərçivələr adlanan paketlərdə göndərir. CAN dörd çərçivə növünə malikdir:

  • Məlumat çərçivəsi: ötürülməsi üçün qovşaq məlumatları olan bir çərçivə
  • Uzaq çərçivə: müəyyən bir identifikatorun ötürülməsini tələb edən çərçivə
  • Hata çərçivəsi: xətanı aşkar edən hər hansı bir qovşaq tərəfindən ötürülən çərçivə
  • Aşırı yükləmə çərçivəsi: məlumat və ya uzaq çərçivə arasında gecikmə yaratmaq üçün bir çərçivə

Məlumat çərçivəsi

Standart və genişləndirilmiş iki növ məlumat çərçivəsi var.

Şəkilin bit sahələrinin mənası belədir:

  • SOF - Çərçivə (SOF) bitinin dominant başlanğıcı, mesajın başlanğıcını göstərir və boş qaldıqdan sonra avtobusdakı qovşaqları sinxronizasiya etmək üçün istifadə olunur.
  • Identifier-Standart CAN 11-bit identifikatoru mesajın prioritetini təyin edir. İkili dəyər nə qədər aşağı olarsa, prioriteti də bir o qədər yüksək olar.
  • RTR - Tək uzaqdan ötürmə tələbi (RTR) biti
  • IDE - Dominant tək identifikator uzantısı (IDE) biti, uzantısı olmayan standart CAN identifikatorunun ötürüldüyünü bildirir.
  • R0 - Qorunmuş bit (gələcək standart dəyişikliyi ilə mümkün istifadə üçün).
  • DLC-4 bitlik məlumat uzunluğu kodu (DLC) ötürülən məlumatların bayt sayını ehtiva edir.
  • Məlumat - 64 bitə qədər tətbiq məlumatı ötürülə bilər.
  • CRC-16 bitlik (15 bit üstəgəl ayırıcı) dövri çoxluq yoxlaması (CRC), səhv aşkarlanması üçün əvvəlki tətbiq məlumatlarının yoxlama məbləğini (ötürülən bitlərin sayı) ehtiva edir.
  • ACK -ACK 2 bitdir, biri təsdiq biti, ikincisi isə ayırıcıdır.
  • EOF-Bu çərçivə sonu (EOF), 7 bitlik sahə, CAN çərçivəsinin (mesajının) sonunu bildirir və dominant olduqda doldurma səhvini göstərən bit doldurmağı aradan qaldırır. Normal əməliyyat zamanı eyni məntiq səviyyəsinin 5 biti ardıcıl olaraq meydana gəldikdə, bir az əks məntiq səviyyəsi məlumatlara daxil olur.
  • IFS-Bu 7 bitlik çərçivə aralığında (IFS) nəzarətçi tərəfindən düzgün qəbul edilmiş bir çərçivəni mesaj buferi sahəsindəki düzgün mövqeyinə daşımaq üçün lazım olan vaxt var.

Arbitraj

Avtobus boş vəziyyətdə, mesajı göndərməyə başlayan vahid əvvəlcə göndərmə haqqını alır. Birdən çox vahid eyni vaxtda göndərməyə başladıqda, hər göndərmə vahidi arbitraj seqmentinin ilk hissəsindən başlayır. Ən çox fasiləsiz çıxışı dominant olan qurğu göndərməyə davam edə bilər.

Addım 4: Sürət və Məsafə

Sürət və Məsafə
Sürət və Məsafə

CAN avtobusu eyni anda birdən çox cihazı birləşdirən bir avtobusdur. Bağlana biləcək vahidlərin ümumi sayına nəzəri olaraq heç bir məhdudiyyət yoxdur. Ancaq praktikada, birləşdirilə bilən vahidlərin sayı avtobusdakı gecikmə və elektrik yükü ilə məhdudlaşır. Ünsiyyət sürətini azaldın, bağlana bilən vahidlərin sayını artırın və ünsiyyət sürətini artırın, bağlana bilən vahidlərin sayı azalır.

Ünsiyyət məsafəsi ünsiyyət sürəti ilə tərs əlaqəlidir və ünsiyyət məsafəsi nə qədər uzaq olarsa, ünsiyyət sürəti o qədər kiçik olar. Daha uzun məsafə 1km və ya daha çox ola bilər, ancaq sürət 40kps -dən azdır.

Addım 5: Avadanlıq

Avadanlıq
Avadanlıq

Maduino Zero CAN-BUS modulu, istifadəyə hazır bir CAN-avtobus portu yaratmaq üçün CANbus ünsiyyəti üçün Arduino əsasında CAN nəzarətçisi və CAN ötürücü ilə Makerfabs tərəfindən hazırlanmış bir vasitədir.

  • MCP2515, CAN spesifikasiyasını həyata keçirən müstəqil bir CAN nəzarətçisidir. Həm standart, həm də uzadılmış məlumatları və uzaq çərçivələri ötürmək və qəbul etmək qabiliyyətinə malikdir.
  • MAX3051, CAN protokol nəzarətçisi ilə nəzarətçi sahə şəbəkəsindəki (CAN) avtobus xətlərinin fiziki telləri arasındakı interfeyslərdir. MAX3051, avtobusa diferensial ötürmə qabiliyyəti və CAN nəzarətçisinə diferensial qəbul qabiliyyəti təmin edir.

Addım 6: Bağlantı

Bağlantı
Bağlantı

DHT11 modulunu CAN ünsiyyətini dəstəkləmək üçün bir vasitə kimi istifadə ediləcək tellərlə Maduino Zero CAN-BUS moduluna qoşun. Eynilə, məlumatları almaq və göstərmək üçün ekranı modula bağlayın.

Maduino Zero CANBUS və DHT11 arasındakı əlaqə:

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ VERİLƏR

Maduino Zero CANBUS və OLED arasındakı əlaqə:

Maduino Zero CANBUS - OLED

3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA

İki Maduino Zero CANBUS modulunu birləşdirmək üçün DB9 kabelindən istifadə edin.

Addım 7: Kod

MAX3051, diferensial səviyyələrin məntiqi siqnallara çevrilməsini tamamlayır. MCP2515, məlumatların kodlaşdırılması və deşifr edilməsi kimi CAN funksiyasını tamamlayır. MCU yalnız nəzarətçini işə salmalı və məlumat göndərməli və almalıdır.

  • Github:
  • Arduino quraşdırıldıqdan sonra, quraşdırılması lazım olan lövhəni (Arduino sıfır) dəstəkləyəcək heç bir paket yoxdur.
  • Alətləri seçin -> Board -> Board Manager, "Arduino zero" axtarın və "Arduino SAMD Boards" qurun.
  • Alətlər -> Kart -> Arduino Sıfır (Yerli USB Portu) seçin, Alətlər -> Port -> com seçin …
  • Proqramı GitHub -dan əldə etdikdən sonra, bütün faylların CANBUS -u dəstəkləyən kitabxana fayllarını ehtiva edən layihə kataloqunda olduğundan əmin olmalısınız.
  • DHT11 sürücü və temperatur və rütubət əldə etmək üçün istifadə olunan Adafruit tərəfindən DHT sensor kitabxanasını quraşdırın.
  • Test_DHT11.ino kodunda temperatur və rütubəti ayrıca göndərmək üçün fərqli ünvanlardan istifadə edin.

CAN.sendMsgBuf (0x10, 0, stmp1.length (), stmp_send1);

gecikmə (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); gecikmə (500);

"0x10" mesaj kimliyi, "0" standart çərçivə, "stmp1.length ()" mesaj uzunluğu, "stmp_send1" göndərilən məlumat deməkdir.

  • Test_OLED.ino kodunda, CANBUS üzərindəki bütün mesajlar sorğu ilə qəbul edilir və lazım olan məlumatlar OLED -də göstərilir.
  • Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino proqramını sensora qoşulan modula yükləyin və Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino proqramını OLED-ə qoşulan başqa bir modula yükləyin.

Addım 8: Göstər

Göstər
Göstər
Göstər
Göstər

İki modulu işə salın, ekranda temperatur və rütubət göstəriləcək.

Tövsiyə: