فهرست مطالب:

تولید سیگنال PWM با وضوح بالا برای سروهای RC با دستگاه های STM32: 3 مرحله
تولید سیگنال PWM با وضوح بالا برای سروهای RC با دستگاه های STM32: 3 مرحله

تصویری: تولید سیگنال PWM با وضوح بالا برای سروهای RC با دستگاه های STM32: 3 مرحله

تصویری: تولید سیگنال PWM با وضوح بالا برای سروهای RC با دستگاه های STM32: 3 مرحله
تصویری: آموزش راه اندازی و کار با رزبری پای 4 | بررسی Raspberry Pi OS 2024, سپتامبر
Anonim
تولید سیگنال PWM با وضوح بالا برای سروهای RC با دستگاه های STM32
تولید سیگنال PWM با وضوح بالا برای سروهای RC با دستگاه های STM32
تولید سیگنال PWM با وضوح بالا برای سروهای RC با دستگاه های STM32
تولید سیگنال PWM با وضوح بالا برای سروهای RC با دستگاه های STM32
تولید سیگنال PWM با وضوح بالا برای سروهای RC با دستگاه های STM32
تولید سیگنال PWM با وضوح بالا برای سروهای RC با دستگاه های STM32

در حال حاضر ، من در حال ساخت یک فرستنده/گیرنده RC بر اساس تراشه SX1280 RF هستم. یکی از اهداف پروژه این است که من رزولوشن 12 بیتی سروو را از چوبها تا سروها می خواهم. تا حدودی به این دلیل که سرویس های دیجیتالی مدرن دارای وضوح 12 بیت هستند ، در مرحله دوم فرستنده باکیفیت به هر حال از 12 بیت استفاده می کند. من در حال بررسی این بودم که چگونه می توانم سیگنالهای PWM با وضوح بالا را در دستگاههای STM32 ایجاد کنم. من در حال حاضر از قرص سیاه (STM32F103C8T8) برای نمونه اولیه استفاده می کنم.

مرحله 1: لیست قطعات

سخت افزار

  • هر برد توسعه STM32F103 (قرص آبی ، قرص سیاه و غیره)
  • پاور بانک USB به عنوان منبع تغذیه
  • برنامه نویس STM32 (Segger j-links، ST-LINK/V2 یا به سادگی یک کلون st-link)

نرم افزار

  • STM32CubeMX
  • Atollic TrueSTUDIO برای STM32
  • منبع پروژه از github

مرحله 2: راه حل واضح

راه حل آشکار
راه حل آشکار
راه حل آشکار
راه حل آشکار
راه حل آشکار
راه حل آشکار

احتمالاً ساده ترین راه حل استفاده از یکی از تایمرهایی است که می تواند سیگنالهای PWM تولید کند ، مانند TIM1-3 در STM32F103. برای یک سروو دیجیتال مدرن ، نرخ فریم می تواند به 5 میلی ثانیه یا بیشتر برسد ، اما برای یک سروو آنالوگ قدیمی باید 20 میلی ثانیه یا 50 هرتز باشد. بنابراین ، به عنوان بدترین حالت ، اجازه دهید آن را ایجاد کنیم. با فرکانس 72 مگاهرتز و وضوح شمارنده تایمر 16 بیتی ، ما نیاز داریم که پیش شمارنده تایمر را روی 23 تنظیم کنیم تا نرخ فریم 20 میلی ثانیه را پوشش دهد. من 24 را انتخاب کردم زیرا برای 20 میلی ثانیه باید شمارنده را دقیقاً روی 60000 تنظیم کنم. شما می توانید تنظیمات CubeMX و سیگنال های تولید شده PWM 1 و 1.5 میلی ثانیه را در تصاویر مشاهده کنید. متأسفانه ، برای 1 میلی ثانیه شمارنده تایمر باید روی 3000 تنظیم شود ، که به ما فقط وضوح 11 بیت می دهد. بد نیست ، اما هدف 12 بیت بود ، بنابراین اجازه دهید چیز دیگری را امتحان کنیم.

البته اگر من یک میکرو کنترلر با شمارنده تایمر 32 بیتی انتخاب کنم ، مانند STM32L476 این وضوح می تواند بسیار بیشتر باشد و مشکل حل شود.

اما در اینجا ، من می خواهم راه حلی جایگزین را پیشنهاد کنم که وضوح تصویر را حتی در STM32F103 افزایش دهد.

مرحله 3: تایمرهای آبشاری برای وضوح بالاتر

تایمرهای آبشاری برای وضوح بالاتر
تایمرهای آبشاری برای وضوح بالاتر
تایمرهای آبشاری برای وضوح بالاتر
تایمرهای آبشاری برای وضوح بالاتر
تایمرهای آبشاری برای وضوح بالاتر
تایمرهای آبشاری برای وضوح بالاتر

مشکل اصلی راه حل قبلی این است که نرخ فریم (20 میلی ثانیه) نسبت به سیگنال PWM ایجاد شده (بین 1 تا 2 میلی ثانیه) نسبتاً زیاد است ، بنابراین ما در حال منتظر ماندن برخی از بیت های ارزشمند برای 18 ثانیه باقی مانده هستیم. قاب بعدی این را می توان با تایمرهای آبشاری با استفاده از ویژگی پیوند تایمر برای همگام سازی حل کرد.

ایده این است که من از TIM1 به عنوان master برای تولید نرخ فریم (20 میلی ثانیه) و TIM2 ، TIM3 برای کنار آمدن با سیگنال های PWM به عنوان برده استفاده می کنم. هنگامی که master برده ها را فعال می کند ، آنها فقط یک سیگنال PWM را در یک حالت پالس تولید می کنند. بنابراین من فقط باید 2 ms را در آن تایمرها پوشش دهم. خوشبختانه شما می توانید این تایمرها را از نظر سخت افزاری متصل کنید ، بنابراین این همگام سازی نیازی به مداخله پردازنده ندارد و همچنین بسیار دقیق است ، jitter در منطقه ps است. می توانید تنظیمات CubeMX را در تصاویر مشاهده کنید.

همانطور که می بینید من 3 را به عنوان prescalar انتخاب کردم بنابراین برای 2 میلی ثانیه باید 48000 را در شمارنده تایمر تنظیم کنم. این 24000 برای 1 میلی ثانیه به ما می دهد که در واقع بیشتر از آنچه برای رزولوشن 14 بیت نیاز داریم است. تدااا…

لطفاً برای نتیجه نهایی ، به اسکرین شات های اسیلوسکوپ در مقدمه نگاه کنید. کانال 3 (بنفش) وقفه زمان سنج اصلی است که باعث ایجاد یک پالس در محلول ها می شود. کانال 1 و 4 (پرتو زرد و سبز) سیگنالهای واقعی PWM هستند که توسط تایمرهای مختلف تولید می شوند. توجه داشته باشید که آنها همگام هستند اما در لبه های عقب همگام سازی می شوند ، این به دلیل حالت PWM 2 است. این مشکلی نیست ، زیرا نرخ PWM برای سرووی خاص هنوز صحیح است.

مزیت دیگر این راه حل این است که تغییر نرخ فریم به معنای تغییر دوره فقط در TIM1 است. برای سرویس های دیجیتالی مدرن می توانید حتی تا 200-300 هرتز پایین بیایید ، اما اگر می خواهید تنظیم دقیق داشته باشید ، به دفترچه راهنمای سرو مراجعه کنید.

توصیه شده: