فهرست مطالب:
- تدارکات
- مرحله 1: مدار فرستنده گیرنده
- مرحله 2: خواندن و نوشتن در گذرگاه CAN
- مرحله 3: اتصال گره ها
- مرحله 4: PCB را بسازید
- مرحله 5: گسترش هیئت مدیره
- مرحله 6: PCB های خود را از JLCPCB سفارش دهید
- مرحله 7: تخته های خود را دریافت کنید
تصویری: رابط STM32 CAN: 7 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
گذرگاه Controller Area Network یا گذرگاه CAN به دلیل قابلیت های سرعت بالا ، قابلیت اطمینان برد طولانی و ایمنی سر و صدا ، یک پروتکل ارتباطی بسیار مثر است. به همین دلایل ، ارتباطات CAN به استاندارد در فناوری های خودرو و محیط های با سر و صدای زیاد تبدیل شده است. به دستگاه های موجود در گذرگاه CAN گره گفته می شود. همه گره های گذرگاه CAN به طور موازی به هم متصل می شوند ، به این معنی که هر گره به تمام گره های دیگر شبکه متصل است. بسته به میزان انتقال پیام ، یک گذرگاه واحد CAN می تواند تا 115 گره را همزمان داشته باشد ، اما برای اکثر برنامه های کاربردی ، داشتن حداکثر 32 دستگاه توصیه می شود. همچنین توصیه می شود که طول بین اولین و آخرین گره را کمتر از 40 متر از یکدیگر حفظ کنید.
این آموزش گام به گام نحوه تنظیم یک گره CAN با استفاده از میکروکنترلر STM32 ، شامل مدار و کد C ساده برای خواندن و نوشتن در گذرگاه CAN را نشان می دهد.
تدارکات
برای هر گره CAN:
- 1x برد شکست STM32 (Nucleo ، Blue Pill ، دیگران)
- 1x IC فرستنده گیرنده MCP2551 CAN
- 1x 0.1μF خازن
- 1x مقاومت 120Ω
- مقاومت 1x 1kΩ
- 1+ ورودی قابل خواندن (دکمه ، سوئیچ ، پتانسیومتر و غیره) یا خروجی (LED ، MOSFET و غیره)
- 1x اتصال Dsub9
مرحله 1: مدار فرستنده گیرنده
برای ارتباط با گذرگاه CAN ، از IC فرستنده گیرنده MCP2551 CAN استفاده می کنیم. IC به عنوان یک جفت فرستنده/گیرنده واسطه عمل می کند تا STM32 را به گذرگاه CAN متصل کند. مدار برای راه اندازی این IC بسیار ساده است ، اما به چند نکته توجه کنید:
-
CAN_RX (پین 4) و CAN_TX (پین 1) در تراشه MCP2551 فقط می توانند به پین های خاصی در STM32 بروند.
- در STM32F1 Nucleo ، خط RX را به پین PB8 و خط TX را به پین PB9 وصل کنید.
- در قرص آبی STM32F1 ، RX را به پین PA11 و TX را به پین PA12 وصل کنید.
- توجه داشته باشید که این تخصیص پین جایگزین دارد. برای تعیین اینکه کدام پین ها قادر به CAN_RD و CAN_TD هستند به کتابچه های راهنمای میکروکنترلر مراجعه کنید.
- در صورت استفاده از آردوینو یا برد بدون اتصال CAN تعبیه شده ، تراشه IC MCP2515 برای تبدیل سایر پروتکل های پیام به CAN مورد نیاز است.
- پین CANL باید به دیگر پایه های CANL گره های گذرگاه دیگر متصل شود. در مورد پین های CANH نیز همین امر صادق است.
- مقاومت 120Ω در پین CANH و CANL تنها در صورتی مورد نیاز است که گره یک گره پایانی باشد. این بدان معنی است که در انتهای سیم کشی اتصال موازی قرار دارد. به عبارت دیگر ، گذرگاه CAN باید فقط دو مقاومت 120Ω در خود داشته باشد و باید تا حد امکان از یکدیگر فاصله داشته باشند.
- در نهایت ، مقاومت 1kΩ در RS (پین 8) را می توان با یک مقاومت 10kΩ مبادله کرد تا زمان افزایش/سقوط بیت های پیام CAN را کنترل کند. برای اطلاعات بیشتر به برگه اطلاعات تراشه MCP2551 مراجعه کنید.
مرحله 2: خواندن و نوشتن در گذرگاه CAN
اکنون که مدار فرستنده به STM32 متصل شده است ، می توانیم نوشتن پیام ها را در گذرگاه CAN شروع کنیم. این راهنمای آموزنده عمیقاً وارد کد STM32 نمی شود. با این حال ، مطمئن شوید که کد ما را برای نمونه در اینجا بررسی کنید. استفاده از STM32 به عنوان یک گره CAN به یک فایل سربرگ CAN نیاز دارد. ما خودمان را نوشتیم ، که در github ما در اینجا یافت می شود. در اینجا ، ما یک مرور کوتاه از روند خواندن/نوشتن ارائه می دهیم.
برای خواندن از گذرگاه CAN ، ابتدا باید شناسه پیام CAN را بدانیم. هر پیام باید دارای یک شناسه منحصر به فرد باشد و شناسه های پایین تر دارای اولویت بیشتری باشند. قطعه کد نشان داده شده در اینجا منتظر پیام CAN با شناسه 0x622 است. در سیستم ما ، اگر اولین بیت 6 بایت بالا باشد ، می خواهیم پین A10 را بالا تنظیم کنیم.
هنگام نوشتن پیام CAN ، باید به خاطر داشته باشیم که پیام های CAN چند بایت هستند. هر پیام نوشته شده باید دارای شناسه و طول باشد. در قطعه دوم کد نشان داده شده ، ما داده ها را برای هر بایت می نویسیم ، سپس پیام را ارسال می کنیم (پارامترهای شناسه و طول در کد قبلاً تعریف شده است).
مرحله 3: اتصال گره ها
هنگام اتصال چندین گره CAN ، باید به طول کابلها توجه زیادی شود. دو دورترین گره می توانند تا 40 متر از یکدیگر فاصله داشته باشند. گره های میانی متصل به گذرگاه باید در فاصله 50 سانتی متری خطوط اصلی اتوبوس قرار داشته باشند.
اتصالات CAN از استاندارد صنعت استفاده از اتصال Dsub9 با خط CANL در پین 2 و خط CANH در پین 7 پیروی می کنند. گزینه CANGND line می تواند روی پین 3 حرکت کند.
مرحله 4: PCB را بسازید
هنگام مسیریابی سیگنال های CAN بر روی PCB ، به یاد داشته باشید که CAN یک سیگنال دیفرانسیل است ، بنابراین ، دستورالعمل های مسیریابی برای CANH و CANL باید با دقت دنبال شود.
مرحله 5: گسترش هیئت مدیره
چند گره دیگر را کنار هم قرار دهید ، مقداری ورودی/خروجی اضافه کنید و همه پین های CANH و CANL آنها را متصل کنید. توجه داشته باشید که هر STM32 یا میکروکنترلر دیگر به تراشه MCP2551 مخصوص خود نیاز دارد. آنها نمی توانند به اشتراک گذاشته شوند
با این اوصاف ، سعی کنید PCB های خود را کوچکتر از آنچه در اینجا نشان داده شده ، نگه دارید
مرحله 6: PCB های خود را از JLCPCB سفارش دهید
JLCPCB خدمات سریع و با کیفیت بالا را با قیمت های بسیار مناسب ارائه می دهد. 5 تخته ، هر رنگی با تنوع سفارشی ، فقط با 2 دلار دریافت کنید! و اگر اولین سفارش شماست ، 10 تخته با همان قیمت تهیه کنید!
فقط gerbers خود را بارگذاری کنید و یک نقل قول فوری دریافت کنید! سفارش خود را ارسال کنید و تابلوهای شما برای تولید در عرض یک ساعت بررسی می شوند. پس از پرداخت ، می توانید تخته های با کیفیت خود را در عرض سه روز انتظار داشته باشید!
اینجا را بررسی کنید
مرحله 7: تخته های خود را دریافت کنید
فریاد بزرگی به JLCPCB برای حمایت از این پروژه. JLCPCB (ShenzhenJLC Electronics Co.، Ltd.) ، بزرگترین شرکت نمونه PCB در چین و یک تولید کننده با تکنولوژی بالا است که متخصص در نمونه سازی سریع PCB و تولید PCB دسته ای است. آنها به اندازه کافی مهربان بودند تا PCB های جدید ما را برای ماشین مسابقه ای خورشیدی خود به UBC Solar ارائه دهند. ما سفارش خود را در روز جمعه قرار دادیم و چهارشنبه تخته ها را دریافت کردیم!
توصیه شده:
رابط سنسور اثر انگشت خازنی با Arduino UNO: 7 مرحله
رابط سنسور اثر انگشت خازنی با Arduino UNO: سلام ، بچه ها چه خبر! Akarsh در اینجا از CETech. امروز ما قصد داریم یک لایه محافظ به پروژه های خود اضافه کنیم. نگران نباشید ما هیچ محافظی برای این کار تعیین نمی کنیم. این یک حسگر اثر انگشت زیبا و زیبا از DFRobot خواهد بود. بنابراین
سنسور گاز رابط با آردوینو: 4 مرحله
سنسور گاز رابط با آردوینو: سنسور دود MQ-2 به دود و گازهای قابل اشتعال زیر حساس است: LPG ، بوتان ، پروپان ، متان ، الکل ، هیدروژن. مقاومت سنسور بسته به نوع گاز متفاوت است. سنسور دود دارای پتانسیومتر داخلی است
شروع به کار با رابط سنسور I2C ؟؟ - رابط MMA8451 خود را با استفاده از ESP32s انجام دهید: 8 مرحله
شروع به کار با رابط سنسور I2C ؟؟ - رابط MMA8451 خود را با استفاده از ESP32s: در این آموزش ، با نحوه راه اندازی ، اتصال و دریافت دستگاه I2C (شتاب سنج) کار با کنترلر (Arduino ، ESP32 ، ESP8266 ، ESP12 NodeMCU) آشنا خواهید شد
دکمه رابط رابط - مبانی آردوینو: 3 مرحله
دکمه رابط - مفاهیم اولیه آردوینو: دکمه فشاری قطعه ای است که هنگام فشار دادن آن دو نقطه را در یک مدار متصل می کند. هنگامی که دکمه فشاری باز است (بدون فشار) هیچ ارتباطی بین دو پایه دکمه فشاری وجود ندارد ، بنابراین پین به 5 متصل می شود. ولت (از طریق رسپی کشش
رابط ADXL335 سنسور روی رزبری پای 4B در 4 مرحله: 4 مرحله
رابط ADXL335 سنسور روی رزبری پای 4B در 4 مرحله: در این دستورالعمل قصد داریم یک سنسور ADXL335 (شتاب سنج) در رزبری پای 4 با Shunya O/S رابط کاربری را انجام دهیم