فهرست مطالب:
- مرحله 1: CANBUS چیست
- مرحله 2: درباره CAN Communications
- مرحله 3: قاب ها
- مرحله 4: سرعت و فاصله
- مرحله 5: سخت افزار
- مرحله 6: اتصال
- مرحله 7: کد
- مرحله هشتم: نمایش
تصویری: یک آموزش ساده برای CANBUS: 8 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:51
من سه هفته در حال مطالعه CAN هستم ، و اکنون برخی از برنامه ها را برای اعتبار بخشیدن به نتایج یادگیری خود تکمیل کرده ام. در این آموزش ، نحوه استفاده از آردوینو برای پیاده سازی ارتباط CANBUS را خواهید آموخت. اگر پیشنهادی دارید ، لطفاً پیام بگذارید.
تدارکات:
سخت افزار:
- Maduino Zero CANBUS
- ماژول دما و رطوبت DHT11
- 1.3 اینچ I2C OLED 128x64- آبی
- کابل DB9 به DB9 (زن به زن)
- خط دوپونت
نرم افزار:
آردوینو IDE
مرحله 1: CANBUS چیست
درباره CAN
CAN (Controller Area Network) یک شبکه ارتباطی سریالی است که می تواند کنترل توزیع شده در زمان واقعی را تحقق بخشد. این برای صنعت خودرو طراحی شده است تا سیم پیچ پیچیده را با یک اتوبوس دو سیم جایگزین کند.
پروتکل CAN لایه پیوند داده و بخشی از لایه فیزیکی را در مدل OSI تعریف می کند.
پروتکل CAN دارای استاندارد ISO با ISO11898 و ISO11519 است. ISO11898 استاندارد ارتباطات با سرعت بالا CAN با سرعت ارتباط 125kbps-1Mbps است. ISO11519 استاندارد ارتباط کم سرعت CAN با سرعت ارتباطی کمتر از 125 کیلوبیت بر ثانیه است.
در اینجا ما بر روی CAN با سرعت بالا تمرکز می کنیم.
ISO-11898 نحوه انتقال اطلاعات بین دستگاه های موجود در شبکه و مطابق با مدل اتصال سیستم های باز (OSI) را که بر حسب لایه ها تعریف شده است ، توضیح می دهد. ارتباط واقعی بین دستگاههای متصل به محیط فیزیکی توسط لایه فیزیکی مدل تعریف می شود
- هر واحد CAN متصل به گذرگاه را می توان یک گره نامید. همه واحدهای CAN به یک گذرگاه متصل می شوند که در هر انتهای آن دارای مقاومت 120 Ω است و یک شبکه را تشکیل می دهد. اتوبوس از خطوط CAN_H و CAN_L تشکیل شده است. کنترل کننده CAN سطح گذرگاه را بر اساس تفاوت سطح قدرت در هر دو سیم تعیین می کند. سطوح اتوبوس به سطوح غالب و مغلوب تقسیم می شوند که باید یکی از آنها باشد. فرستنده پیام را با ایجاد تغییر در سطح گذرگاه به گیرنده ارسال می کند. هنگامی که خط منطقی "و" در گذرگاه اجرا می شود ، سطح غالب "0" و سطح مغلوب "1" است.
- در حالت غالب ، ولتاژ CAN_H حدود 3.5V و ولتاژ CAN_L حدود 1.5V است. در حالت مغلوب ، ولتاژ هر دو خط در حدود 2.5 ولت است.
- سیگنال دیفرانسیل است به همین دلیل است که CAN از مقاومت در برابر سر و صدا و تحمل خطا برخوردار است. سیگنال دیفرانسیل متوازن اتصال نویز را کاهش می دهد و نرخ سیگنال دهی بالا را در کابل جفت پیچ خورده امکان پذیر می کند. جریان در هر خط سیگنال مساوی است اما در جهت مخالف است و منجر به یک اثر لغو میدان می شود که کلید انتشار نویز کم است. استفاده از گیرنده های دیفرانسیل متوازن و کابل کشی پیچ خورده باعث رد حالت معمول و مصونیت زیاد سر و صدا در یک گذرگاه CAN می شود.
گیرنده گیرنده CAN
فرستنده گیرنده CAN مسئول تبدیل بین سطح منطقی و سیگنال فیزیکی است. یک سیگنال منطقی را به یک سطح دیفرانسیل یا یک سیگنال فیزیکی را به یک سطح منطقی تبدیل کنید.
کنترل کننده CAN
CAN Controller جزء اصلی CAN است که تمام عملکردهای لایه پیوند داده در پروتکل CAN را درک می کند و می تواند به طور خودکار پروتکل CAN را حل کند.
MCU
MCU مسئول کنترل مدار عملکرد و کنترل کننده CAN است. به عنوان مثال ، پارامترهای کنترل کننده CAN هنگام شروع گره ، مقداردهی می شود ، قاب CAN خوانده می شود و از طریق کنترلر CAN ارسال می شود و غیره.
مرحله 2: درباره CAN Communications
وقتی گذرگاه بیکار است ، همه گره ها می توانند شروع به ارسال پیام (کنترل چند کاره) کنند. گره ای که ابتدا به گذرگاه دسترسی پیدا می کند ، حق ارسال (حالت CSMA/CA) را دریافت می کند. هنگامی که چندین گره به طور همزمان شروع به ارسال می کنند ، گره ای که پیام ID با اولویت بالا را ارسال می کند ، حق ارسال را دارد.
در پروتکل CAN ، همه پیامها در قالب ثابت ارسال می شوند. هنگامی که گذرگاه بیکار است ، تمام واحدهای متصل به گذرگاه می توانند شروع به ارسال پیام های جدید کنند. هنگامی که بیش از دو سلول به طور همزمان پیام ارسال می کنند ، اولویت بر اساس شناسه تعیین می شود. شناسه نشان دهنده آدرس مقصد ارسال نیست ، بلکه اولویت پیام دسترسی به گذرگاه است. وقتی بیش از دو سلول به طور همزمان پیام ارسال می کنند ، هر بیت از شناسه بدون بهره یک به یک داوری می شود. واحد برنده داوری می تواند به ارسال پیام ادامه دهد و واحدی که داوری را از دست می دهد بلافاصله ارسال و دریافت کار را متوقف می کند.
اتوبوس CAN یک نوع اتوبوس پخش شده است. این بدان معناست که همه گره ها می توانند همه انتقال ها را "بشنوند". همه گره ها همیشه ترافیک را جمع آوری می کنند. سخت افزار CAN فیلتر محلی را فراهم می کند تا هر گره فقط به پیامهای جالب واکنش نشان دهد.
مرحله 3: قاب ها
دستگاه های CAN داده هایی را در شبکه CAN در بسته هایی به نام فریم ارسال می کنند. CAN دارای چهار نوع قاب است:
- قاب داده: قاب حاوی داده های گره برای انتقال
- قاب از راه دور: قاب درخواست انتقال یک شناسه خاص
- قاب خطا: قاب منتقل شده توسط هر گره ای که خطایی را تشخیص می دهد
- فریم اضافه بار: قاب برای تزریق تاخیر بین داده ها یا قاب از راه دور
قاب داده
دو نوع فریم داده وجود دارد ، استاندارد و توسعه یافته.
منظور از فیلدهای بیت شکل عبارتند از:
- SOF - بیت شروع غالب فریم (SOF) شروع پیام را مشخص می کند و برای همگام سازی گره های گذرگاه پس از بیکاری استفاده می شود.
- شناسه-شناسه استاندارد 11 بیتی CAN اولویت پیام را تعیین می کند. هرچه مقدار دودویی کمتر باشد ، اولویت آن بیشتر است.
- RTR - بیت درخواست انتقال از راه دور (RTR)
- IDE - یک پسوند شناسه تک (IDE) غالب به این معنی است که یک شناسه استاندارد CAN بدون پسوند منتقل می شود.
- R0 - بیت رزرو شده (برای استفاده احتمالی توسط اصلاحیه استاندارد آینده).
- DLC-کد طول داده 4 بیتی (DLC) شامل تعداد بایت داده های منتقل شده است.
- داده - ممکن است حداکثر 64 بیت داده از برنامه ارسال شود.
- CRC-بررسی افزونگی چرخه ای 16 بیتی (15 بیت به علاوه محدود کننده) (CRC) شامل جمع چک (تعداد بیت های منتقل شده) داده های برنامه قبلی برای تشخیص خطا است.
- ACK – ACK 2 بیت است ، یکی بیت تأیید و دوم محدود کننده است.
- EOF-این فیلد 7 بیتی در انتهای فریم (EOF) ، انتهای یک فریم CAN (پیام) را مشخص می کند و پر کردن بیت را غیرفعال می کند ، که نشان دهنده خطای پر شدن در حالت غالب است. هنگامی که 5 بیت از همان سطح منطقی پی در پی در طول عملکرد عادی رخ می دهد ، کمی از سطح منطقی مخالف در داده ها قرار می گیرد.
- IFS-این فضای بین فریم 7 بیتی (IFS) شامل زمان مورد نیاز کنترل کننده برای انتقال یک فریم دریافت شده صحیح به موقعیت مناسب خود در منطقه بافر پیام است.
داوری
در حالت بیکار گذرگاه ، واحدی که ابتدا ارسال پیام را شروع می کند ، حق ارسال را دریافت می کند. هنگامی که چندین واحد به طور همزمان شروع به ارسال می کنند ، هر واحد ارسال کننده در اولین بیت بخش داوری شروع می شود. واحدی با بیشترین تعداد سطوح غالب خروجی پیوسته می تواند به ارسال خود ادامه دهد.
مرحله 4: سرعت و فاصله
گذرگاه CAN یک گذرگاه است که چندین واحد را به طور همزمان به هم متصل می کند. از نظر تئوری محدودیتی در تعداد کل واحدهای قابل اتصال وجود ندارد. اما در عمل ، تعداد واحدهای قابل اتصال به دلیل تأخیر زمانی در اتوبوس و بار الکتریکی محدود می شود. کاهش سرعت ارتباطات ، افزایش تعداد واحدهای قابل اتصال و افزایش سرعت ارتباط ، تعداد واحدهای قابل اتصال کاهش می یابد.
فاصله ارتباطی با سرعت ارتباط معکوس است و هرچه فاصله ارتباطی بیشتر باشد ، سرعت ارتباطات نیز کمتر می شود. مسافت طولانی تر می تواند 1 کیلومتر یا بیشتر باشد ، اما سرعت آن کمتر از 40 کیلومتر بر ثانیه است.
مرحله 5: سخت افزار
ماژول Maduino Zero CAN-BUS ابزاری است که توسط Makerfabs برای ارتباط CANbus توسعه یافته است-بر اساس آردوینو ، با کنترل کننده CAN و گیرنده گیرنده CAN ، برای ایجاد یک پورت CAN-bus آماده استفاده است.
- MCP2515 یک کنترلر CAN مستقل است که مشخصات CAN را پیاده سازی می کند. این دستگاه قادر به انتقال و دریافت داده های استاندارد و گسترده و فریم های از راه دور است.
- رابط MAX3051 بین کنترل کننده پروتکل CAN و سیمهای فیزیکی خطوط اتوبوس در یک شبکه کنترل کننده (CAN). MAX3051 قابلیت انتقال دیفرانسیل به گذرگاه و قابلیت دریافت دیفرانسیل را به کنترلر CAN فراهم می کند.
مرحله 6: اتصال
ماژول DHT11 را با سیم به ماژول Maduino Zero CAN-BUS وصل کنید تا به عنوان ابزاری برای پشتیبانی از ارتباطات CAN استفاده شود. به طور مشابه ، صفحه نمایش را به ماژول وصل کنید تا داده ها را دریافت کرده و نمایش دهید.
ارتباط بین Maduino Zero CANBUS و DHT11
Maduino Zero CANBUS - DHT11
3v3 ------ VCC GND ------ GND D10 ------ DATA
ارتباط بین Maduino Zero CANBUS و OLED
Maduino Zero CANBUS - OLED
3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA
برای اتصال دو ماژول Maduino Zero CANBUS از کابل DB9 استفاده کنید.
مرحله 7: کد
MAX3051 تبدیل سطوح دیفرانسیل به سیگنال های منطقی را تکمیل می کند. MCP2515 عملکرد CAN مانند رمزگذاری و رمزگشایی داده ها را تکمیل می کند. MCU فقط نیاز به تنظیم اولیه کنترل کننده و ارسال و دریافت داده دارد.
- Github:
- پس از نصب آردوینو ، هیچ بسته ای برای پشتیبانی از برد (آردوینو صفر) وجود ندارد که برای نصب مورد نیاز است.
- ابزار -> Board -> Board Board را انتخاب کنید ، "Arduino zero" را جستجو کرده و "Arduino SAMD Boards" را نصب کنید.
- Tools -> Board -> Arduino Zero (درگاه USB بومی) را انتخاب کنید ، Tools -> Port -> com را انتخاب کنید.
- پس از دریافت برنامه از GitHub ، باید مطمئن شوید که همه فایلها در فهرست پروژه هستند ، که شامل فایلهای کتابخانه ای است که از CANBUS پشتیبانی می کند.
- کتابخانه حسگر DHT را توسط Adafruit نصب کنید ، که برای هدایت DHT11 برای به دست آوردن دما و رطوبت استفاده می شود.
- از آدرس های مختلف برای ارسال دما و رطوبت به صورت جداگانه در کد Test_DHT11.ino استفاده کنید.
CAN.sendMsgBuf (0x10 ، 0 ، stmp1.length () ، stmp_send1) ؛
تأخیر (500) ؛ CAN.sendMsgBuf (0x11 ، 0 ، stmp2.length () ، stmp_send2) ؛ تأخیر (500) ؛
"0x10" به معنی شناسه پیام ، "0" به معنی فریم استاندارد ، "stmp1.length ()" به معنی طول پیام ، "stmp_send1" داده های ارسال شده است.
- در کد Test_OLED.ino ، همه پیام های موجود در CANBUS با پرس و جو دریافت می شوند و اطلاعات مورد نیاز بر روی OLED نمایش داده می شود.
- برنامه Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino را در ماژول متصل به سنسور بارگذاری کرده و برنامه Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino را به یک دیگر متصل کنید.
مرحله هشتم: نمایش
روشن شدن دو ماژول ، دما و رطوبت روی صفحه نمایش داده می شود.
توصیه شده:
آموزش Arduino Hang Guardian - آموزش تایمر نگهبان Arduino: 6 مرحله
Arduino Hang Guardian - آموزش تایمر نگهبان Arduino: سلام به همه ، برای همه ما اتفاق می افتد. شما یک پروژه می سازید ، با اشتیاق تمام سنسورها را به هم وصل می کنید ، و ناگهان ، آردوینو متوقف می شود و هیچ ورودی پردازش نمی شود. "چه اتفاقی می افتد؟" ، شما می پرسید و شروع به کاوش در کد خود می کنید ، تا دوباره
آموزش: چگونه می توان با استفاده از DS18B20 و Arduino UNO یک سنسور دما ساده ایجاد کرد: 3 مرحله
آموزش: چگونه می توان با استفاده از DS18B20 و Arduino UNO یک سنسور دما ساده ایجاد کرد: توضیحات: این آموزش چند مرحله ساده در مورد نحوه عملکرد عملکرد سنسور دما را به شما نشان می دهد. فقط چند دقیقه طول می کشد تا آن را در پروژه خود واقعی کنید. موفق باشید ! دماسنج دیجیتال DS18B20 دمای 9 تا 12 بیت سانتیگراد را فراهم می کند
آموزش ساده سنجش مقاومت (FSR) آردوینو: 8 مرحله
آموزش ساده آردوینو مقاومت سنجش نیرو (FSR): در این آموزش با نحوه تشخیص نیروی اعمال شده به مقاومت حسگر نیرو (FSR) و نمایش آن بر روی صفحه نمایش OLED + محدوده ها را با LED سبز و قرمز تعیین می کنیم. . ویدئوی نمایشی را تماشا کنید
رابط کاربری ساده تعاملی برای آموزش و ارزیابی .: 11 مرحله
رابط کاربری تعاملی ساده برای آموزش و ارزیابی: این پروژه به عنوان بخشی از کلاس دانشگاه توسعه داده شد ، هدف ایجاد یک سیستم تعاملی برای آموزش و ارزیابی یک موضوع خاص بود. برای آن ما از پردازش روی رایانه برای رابط و Arduino NANO برای دکمه بازی و LED ها استفاده کردیم ، بنابراین
یک مدار ساده برای ساخت ، ارزان و ساده LED چشمک زن با CMOS 74C14: 5 مرحله
یک مدار ساده برای ساخت ، ارزان و ساده LED چشمک زن با CMOS 74C14: گاهی اوقات برای تزئین کریسمس ، آثار هنری چشمک زن یا فقط برای سرگرم شدن با پلک زدن پلک چشم به برخی از LED های چشمک زن نیاز دارید. من به شما نحوه ساخت یک مدار ساده و ارزان با حداکثر 6 LED چشمک زن را نشان می دهم. توجه: این اولین مورد الهام بخش من است و