Daftar Isi:
- Langkah 1: Apa itu CANBUS
- Langkah 2: Tentang CAN Communications
- Langkah 3: Bingkai
- Langkah 4: Kecepatan dan Jarak
- Langkah 5: Perangkat Keras
- Langkah 6: Koneksi
- Langkah 7: Kode
- Langkah 8: Tunjukkan
Video: Tutorial Sederhana untuk CANBUS: 8 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:53
Saya telah belajar CAN selama tiga minggu, dan sekarang saya telah menyelesaikan beberapa aplikasi untuk memvalidasi hasil belajar saya. Dalam tutorial ini, Anda akan belajar bagaimana menggunakan Arduino untuk mengimplementasikan komunikasi CANBUS. Jika Anda memiliki saran, selamat datang untuk meninggalkan pesan.
Perlengkapan:
Perangkat keras:
- Maduino Nol CANBUS
- Modul Suhu & Kelembaban DHT11
- 1.3" I2C OLED 128x64- Biru
- Kabel DB9 ke DB9 (wanita ke wanita)
- Jalur Dupont
Perangkat lunak:
Arduino IDE
Langkah 1: Apa itu CANBUS
Tentang BISA
CAN (Controller Area Network) adalah jaringan komunikasi serial yang dapat mewujudkan kontrol real-time terdistribusi. Ini dikembangkan untuk industri otomotif untuk menggantikan rangkaian kabel yang rumit dengan bus dua kabel.
Protokol CAN mendefinisikan Data Link Layer dan bagian dari Physical Layer dalam model OSI.
Protokol CAN adalah standar ISO dengan ISO11898 dan ISO11519. ISO11898 adalah standar komunikasi kecepatan tinggi CAN dengan kecepatan komunikasi 125kbps-1Mbps. ISO11519 adalah standar komunikasi kecepatan rendah CAN dengan kecepatan komunikasi kurang dari 125kbps.
Di sini kita fokus pada CAN berkecepatan tinggi.
ISO-11898 menjelaskan bagaimana informasi dilewatkan antar perangkat di jaringan dan sesuai dengan model Interkoneksi Sistem Terbuka (OSI) yang didefinisikan dalam istilah lapisan. Komunikasi aktual antara perangkat yang dihubungkan oleh media fisik ditentukan oleh lapisan fisik model
- Setiap unit CAN yang terhubung ke bus dapat disebut node. Semua unit CAN terhubung ke bus yang diakhiri di setiap ujungnya dengan resistor 120 untuk membentuk jaringan. Bus terdiri dari jalur CAN_H dan CAN_L. Kontroler CAN menentukan level bus berdasarkan perbedaan level daya pada kedua kabel. Level bus dibagi menjadi level dominan dan resesif, yang harus menjadi salah satunya. Pengirim mengirimkan pesan ke penerima dengan membuat perubahan di tingkat bus. Ketika garis logika "dan" dieksekusi pada bus, level dominan adalah "0" dan level resesif adalah "1".
- Dalam keadaan dominan, tegangan CAN_H sekitar 3.5V dan tegangan CAN_L sekitar 1.5V. Dalam keadaan resesif, tegangan kedua saluran sekitar 2.5V.
- Sinyalnya diferensial itulah sebabnya CAN memperoleh kekebalan kebisingan yang kuat dan toleransi kesalahan. Sinyal diferensial yang seimbang mengurangi noise coupling dan memungkinkan kecepatan sinyal yang tinggi melalui kabel twisted-pair. Arus di setiap jalur sinyal sama tetapi dalam arah yang berlawanan dan menghasilkan efek pembatalan medan yang merupakan kunci emisi kebisingan yang rendah. Penggunaan penerima diferensial seimbang dan kabel twisted-pair meningkatkan penolakan mode umum dan kekebalan kebisingan yang tinggi dari bus CAN.
BISA Transceiver
CAN Transceiver bertanggung jawab atas konversi antara level logika dan sinyal fisik. Mengkonversi sinyal logis ke tingkat diferensial atau sinyal fisik ke tingkat logis.
Pengontrol BISA
CAN Controller adalah komponen inti CAN, yang mewujudkan semua fungsi lapisan data link dalam protokol CAN dan secara otomatis dapat menyelesaikan protokol CAN.
MCU
MCU bertanggung jawab atas kontrol sirkuit fungsi dan pengontrol CAN. Misalnya, parameter pengontrol CAN diinisialisasi ketika node dimulai, frame CAN dibaca dan dikirim melalui pengontrol CAN, dll.
Langkah 2: Tentang CAN Communications
Saat bus dalam keadaan idle, semua node dapat mulai mengirim pesan (kontrol multi-master). Node yang pertama kali mengakses bus mendapat hak untuk mengirim (mode CSMA/CA). Ketika beberapa node mulai mengirim pada saat yang sama, node yang mengirim pesan ID prioritas tinggi mendapatkan hak untuk mengirim.
Dalam protokol CAN, semua pesan dikirim dalam format tetap. Saat bus dalam keadaan idle, semua unit yang terhubung ke bus dapat mulai mengirim pesan baru. Ketika lebih dari dua sel mulai mengirim pesan pada saat yang sama, prioritas ditentukan berdasarkan pengidentifikasi. ID tidak mewakili alamat tujuan pengiriman, melainkan prioritas pesan yang mengakses bus. Ketika lebih dari dua sel mulai mengirim pesan pada saat yang sama, setiap bit ID bebas bunga akan diarbitrase satu per satu. Unit yang memenangkan arbitrase dapat terus mengirim pesan, dan unit yang kalah dalam arbitrase segera berhenti mengirim dan menerima pekerjaan.
Bus CAN adalah jenis bus siaran. Ini berarti bahwa semua node dapat 'mendengar' semua transmisi. semua node akan selalu mengambil semua lalu lintas. Perangkat keras CAN menyediakan pemfilteran lokal sehingga setiap node hanya dapat bereaksi terhadap pesan yang menarik.
Langkah 3: Bingkai
Perangkat CAN mengirim data melalui jaringan CAN dalam paket yang disebut frame. CAN memiliki empat jenis bingkai:
- Bingkai data: bingkai yang berisi data simpul untuk transmisi
- Bingkai jarak jauh: bingkai yang meminta transmisi pengidentifikasi tertentu
- Bingkai kesalahan: bingkai yang ditransmisikan oleh node mana pun yang mendeteksi kesalahan
- Bingkai kelebihan beban: bingkai untuk menyuntikkan penundaan antara data atau bingkai jarak jauh
Bingkai data
Ada dua jenis frame data, standar dan diperpanjang.
Arti dari bidang bit Gambar adalah:
- SOF-The single dominan start of frame (SOF) bit menandai awal dari pesan, dan digunakan untuk menyinkronkan node pada bus setelah idle.
- Identifier-The Standard CAN 11-bit identifier menetapkan prioritas pesan. Semakin rendah nilai biner, semakin tinggi prioritasnya.
- RTR–Bit permintaan transmisi jarak jauh (RTR) tunggal
- IDE – Bit ekstensi pengenal tunggal dominan (IDE) berarti bahwa pengidentifikasi CAN standar tanpa ekstensi sedang ditransmisikan.
- R0–Bit yang dicadangkan (untuk kemungkinan penggunaan dengan amandemen standar di masa mendatang).
- DLC–Kode panjang data 4-bit (DLC) berisi jumlah byte data yang ditransmisikan.
- Data–Hingga 64 bit data aplikasi dapat ditransmisikan.
- CRC–The 16-bit (15 bit plus pembatas) cyclic redundancy check (CRC) berisi checksum (jumlah bit yang ditransmisikan) dari data aplikasi sebelumnya untuk deteksi kesalahan.
- ACK-ACK adalah 2 bit, satu adalah bit pengakuan dan yang kedua adalah pembatas.
- EOF–Ini end-of-frame (EOF), bidang 7-bit menandai akhir bingkai CAN (pesan) dan menonaktifkan bitstuffing, menunjukkan kesalahan isian saat dominan. Ketika 5 bit dari tingkat logika yang sama terjadi secara berurutan selama operasi normal, sedikit dari tingkat logika yang berlawanan dimasukkan ke dalam data.
- IFS–Ruang interframe 7-bit (IFS) ini berisi waktu yang diperlukan oleh pengontrol untuk memindahkan bingkai yang diterima dengan benar ke posisi yang tepat di area buffer pesan.
Arbitrasi
Dalam keadaan bus idle, unit yang mulai mengirim pesan terlebih dahulu mendapatkan hak pengiriman. Ketika beberapa unit mulai mengirim pada saat yang sama, setiap unit pengiriman dimulai pada bit pertama dari segmen arbitrase. Unit dengan jumlah tingkat dominan keluaran kontinu terbesar dapat terus mengirim.
Langkah 4: Kecepatan dan Jarak
Bus CAN adalah bus yang menghubungkan beberapa unit secara bersamaan. Secara teoritis tidak ada batasan jumlah unit yang dapat dihubungkan. Namun dalam praktiknya, jumlah unit yang dapat dihubungkan dibatasi oleh waktu tunda pada bus dan beban listrik. Kurangi kecepatan komunikasi, tambah jumlah unit yang dapat dihubungkan, dan tingkatkan kecepatan komunikasi, jumlah unit yang dapat dihubungkan berkurang.
Jarak komunikasi berbanding terbalik dengan kecepatan komunikasi, dan semakin jauh jarak komunikasi maka kecepatan komunikasi semakin kecil. Jarak yang lebih jauh bisa 1km atau lebih, tetapi kecepatannya kurang dari 40kps.
Langkah 5: Perangkat Keras
Modul CAN-BUS Maduino Zero adalah alat yang dikembangkan oleh Makerfabs untuk komunikasi CANbus, berbasis Arduino, dengan pengontrol CAN dan transceiver CAN, untuk membuat port CAN-bus yang siap digunakan.
- MCP2515 adalah pengontrol CAN yang berdiri sendiri yang mengimplementasikan spesifikasi CAN. Ia mampu mentransmisikan dan menerima data standar dan diperpanjang dan bingkai jarak jauh.
- Antarmuka MAX3051 antara pengontrol protokol CAN dan kabel fisik jalur bus di jaringan area pengontrol (CAN). MAX3051 menyediakan kemampuan transmisi diferensial ke bus dan kemampuan menerima diferensial ke pengontrol CAN.
Langkah 6: Koneksi
Hubungkan modul DHT11 ke modul CAN-BUS Maduino Zero dengan kabel yang akan digunakan sebagai instrumen untuk mendukung komunikasi CAN. Demikian pula, hubungkan layar ke modul untuk menerima data dan menampilkannya.
Koneksi antara Maduino Zero CANBUS dan DHT11:
Maduino Nol CANBUS -- DHT11
3v3 ------ VCC GND ------ GND D10 ------ DATA
Koneksi antara Maduino Zero CANBUS dan OLED:
Maduino Nol CANBUS -- OLED
3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA
Gunakan kabel DB9 untuk menghubungkan dua modul Maduino Zero CANBUS.
Langkah 7: Kode
MAX3051 menyelesaikan konversi level diferensial menjadi sinyal logis. MCP2515 melengkapi fungsi CAN seperti encoding dan decoding data. MCU hanya perlu menginisialisasi pengontrol dan mengirim dan menerima data.
- Github:
- Setelah Arduino terinstal, tidak ada paket untuk mendukung board (Arduino zero) yang perlu diinstal.
- Pilih alat -> Papan -> Manajer Papan, cari "Arduino zero" dan instal "Arduino SAMD Boards".
- Pilih Tools -> Board -> Arduino Zero (Native USB Port), pilih Tools -> Port -> com…
- Setelah mendapatkan program dari GitHub, Anda perlu memastikan bahwa semua file berada di direktori proyek, yang berisi file library yang mendukung CANBUS.
- Instal perpustakaan sensor DHT oleh Adafruit, yang digunakan untuk menggerakkan DHT11 untuk mendapatkan suhu dan kelembaban.
- Gunakan alamat yang berbeda untuk mengirim suhu dan kelembaban secara terpisah dalam kode Test_DHT11.ino.
CAN.sendMsgBuf(0x10, 0, stmp1.length(), stmp_send1);
penundaan (500); CAN.sendMsgBuf(0x11, 0, stmp2.length(), stmp_send2); penundaan (500);
“0x10” berarti ID pesan, “0” berarti bingkai standar, “stmp1.length()” berarti panjang pesan, “stmp_send1” adalah data yang dikirim.
- Dalam kode Test_OLED.ino, semua pesan di CANBUS diterima oleh kueri dan informasi yang diperlukan ditampilkan di OLED.
- Upload program Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino ke modul yang terhubung dengan sensor, dan Upload program Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino ke modul lain yang terhubung ke OLED.
Langkah 8: Tunjukkan
Nyalakan dua modul, suhu dan kelembaban akan ditampilkan di layar.
Direkomendasikan:
Tangan Terkendali Sederhana Arduino Sederhana: 5 Langkah
Arduino Simple Low-Cost Controllable Hand: Ada banyak lengan robotik berbasis 3D yang dicetak dan sensor fleksibel di seluruh internet yang luas. Namun, sebagai mahasiswa saya tidak memiliki banyak akses ke hal-hal seperti, CNC, printer 3D, dan alat-alat listrik. Saya punya solusi, kita akan membangun l
Cara Cepat dan Mudah untuk Mengubah Layar Kunci Anda dalam 6 Langkah Sederhana (Windows 8-10): 7 Langkah
Cara Cepat dan Mudah untuk Mengubah Layar Kunci Anda dalam 6 Langkah Sederhana (Windows 8-10): Ingin mengubah banyak hal di laptop atau PC Anda? Ingin perubahan dalam suasana Anda? Ikuti langkah-langkah cepat dan mudah ini untuk berhasil mempersonalisasi layar kunci komputer Anda
Tutorial untuk L298 2Amp Motor Driver Shield untuk Arduino: 6 Langkah
Tutorial untuk L298 2Amp Motor Driver Shield untuk Arduino: DeskripsiL298 2Amp Motor Driver Shield untuk Arduino didasarkan pada sirkuit terintegrasi driver motor L298, driver motor full-bridge. Itu dapat menggerakkan dua motor DC 2A yang terpisah atau motor langkah 1 2A. Kecepatan dan arah motor dapat dikontrol secara terpisah
Yakinkan Diri Anda untuk Hanya Menggunakan Inverter 12V-ke-AC-line untuk Senar Lampu LED Alih-alih Menghubungkannya untuk 12V.: 3 Langkah
Yakinkan Diri Anda untuk Hanya Menggunakan Inverter 12V-ke-AC-line untuk Senar Lampu LED Alih-alih Menghubungkan Ulang Mereka untuk 12V.: Rencana saya sederhana. Saya ingin memotong seutas tali lampu LED bertenaga dinding menjadi beberapa bagian lalu menyambungkannya kembali menjadi 12 volt. Alternatifnya adalah menggunakan power inverter, tetapi kita semua tahu bahwa itu sangat tidak efisien, bukan? Benar? Atau apakah mereka?
Perbaikan Sederhana untuk Tas Perjalanan Timbuktu V.1, untuk Bersepeda: 3 Langkah
Perbaikan Sederhana untuk Tas Komuter Timbuktu V.1, untuk Bersepeda: Sebagai penggemar tas Timbuktu yang terbiasa bersepeda dengan laptop di tas kurir saya, ketika mereka keluar dengan tas perjalanan, saya pikir 'sempurna' dan memesannya secara online. Aku seperti woo hoo ini akan menjadi keren. Tapi ketika saya mendapatkannya saya terkejut dan kecewa