فهرست مطالب:

اسیلوسکوپ ردیابی دوگانه: 11 مرحله (همراه با تصاویر)
اسیلوسکوپ ردیابی دوگانه: 11 مرحله (همراه با تصاویر)

تصویری: اسیلوسکوپ ردیابی دوگانه: 11 مرحله (همراه با تصاویر)

تصویری: اسیلوسکوپ ردیابی دوگانه: 11 مرحله (همراه با تصاویر)
تصویری: Carmen 2 1963 radio from Romania - Restored 2024, جولای
Anonim
اسیلوسکوپ دو ردیابی
اسیلوسکوپ دو ردیابی

وقتی مینی اسیلوسکوپ قبلی خود را ساختم ، می خواستم ببینم چقدر می توانم کوچکترین میکروکنترلر ARM خود را به STM32F030 (F030) وادار کنم ، و کار خوبی انجام داد.

در یکی از نظرات پیشنهاد شد که "قرص آبی" با STM32F103 (F103) بهتر ، کوچکتر از برد توسعه با F030 و احتمالاً حتی ارزان تر باشد. اما برای مینی اسیلوسکوپ من از تخته توسعه استفاده نکردم بلکه از F030 بر روی برد SMD-DIP حتی کوچکتر استفاده کردم ، بنابراین در آنجا قرص آبی قطعاً کوچکتر نخواهد بود و من شک دارم که ارزان تر نیز باشد.

کد اکنون در Gitlab در دسترس است:

gitlab.com/WilkoL/dual-trace-oscilloscope

تدارکات

لیست قطعات: - جعبه پلاستیکی - ورق ورق (تخته نمونه اولیه دو طرفه 8x12cm) - قرص آبی - نمایشگر TFT ST7735s - باتری لیتیوم - HT7333 3.3V تنظیم کننده خروجی کم - MCP6L92 dual opamp - TSSOP8 تا DIP8 برد - کریستال 12 مگاهرتز (لازم نیست) - رمزگذار دوار به علاوه دستگیره (2 برابر) - powerwitch - پایانه های موز (4 برابر) - برد شارژ لیتیوم یون - چندین مقاومت و خازن - جداکننده نایلونی ، مهره و پیچ

ابزارها:

- ایستگاه لحیم کاری - لحیم 0.7 میلی متر - مقداری سیم - برش جانبی - شیشه و حلقه - مته - مولتی متر - اسیلوسکوپ - STLink -V2

نرم افزار:

- STM32IDE - STM32CubeMX - ابزار STLink - کتابخانه LowLayer - کتابخانه مناسب برای ST7735s - دفترچه یادداشت ++ - Kicad

مرحله 1: حالت ترکیبی یا همزمان

حالت ترکیبی یا حالت همزمان
حالت ترکیبی یا حالت همزمان
حالت ترکیبی یا حالت همزمان
حالت ترکیبی یا حالت همزمان

قرص آبی

اما این ایده وجود داشت و من می دانستم که F103 دارای دو ADC است! اگر من از آن دو ADC با هم در حالت "interleave" استفاده کنم ، کاری که قبلاً با STM32F407 (F407) انجام داده بودم. سرعت نمونه برداری دو برابر می شود. بنابراین ، آن را با یک میکروکنترلر سریعتر ترکیب کنید و جانشین بزرگی برای مینی اسیلوسکوپ خواهد بود.

حالت Interleave به طرز عجیبی ADC های F103 نسبت به F030 (و F407) پیشرفته تر هستند ، شما نمی توانید رزولوشن را انتخاب کنید. مهمتر این است که شما همچنین نمی توانید زمان بین دو ADC را تغییر دهید. در حال حاضر ، هنگامی که از حالت interleave استفاده می کنید ، معمولاً می خواهید نمونه برداری در اسرع وقت با کوتاهترین زمان بین هر نمونه انجام شود ، اما با استفاده از یک اسیلوسکوپ تغییر زمان لازم است. شاید هنوز بتوان آن را انجام داد ، من طراح اسیلوسکوپ حرفه ای نیستم ، اما برنامه استفاده از حالت interleave-mode را کنار گذاشتم.

حالت همزمان

اما ، داشتن دو ADC گزینه های بسیار بیشتری را ارائه می دهد ، این دو ADC را می توان روی حالت "معمولی-همزمان" نیز تنظیم کرد. اسیلوسکوپ ردیابی دوگانه چطور؟

من تصمیم گرفتم که یک اسیلوسکوپ ردیابی دوگانه بسازم ، همچنین می خواستم حساسیت ورودی متغیری داشته باشم ، گزینه ای که در مینی اسیلوسکوپ نداشتم. این به معنی ضعیف کننده (و تقویت کننده) در ورودی ها است. و شاید من حتی بیشتر می خواستم؟ بنابراین من یک لیست کوچک از "افراد خوش سلیقه" تهیه کردم.

لیست علاقه مندیها

دو کانال

حساسیت متغیر در هر دو کانال

در هر دو کانال فعال می شود

سطح تحریک متغیر در هر دو کانال

افست متغیر

قدرت تک باتری

در همان جعبه مینی اسیلوسکوپ قرار می گیرد

مرحله 2: نمونه سازی

نمونه سازی
نمونه سازی
نمونه سازی
نمونه سازی

طبق معمول ، من این پروژه ها را روی یک تخته نان شروع کردم. (تصویر را ببینید) و قبل از لحیم کاری همه چیز روی تخته ، سعی می کنم بفهمم که آیا و چگونه در جعبه پروژه انتخاب شده جا می گیرد یا خیر. مناسب است ، اما فقط فقط. برخی از قسمت ها در زیر صفحه نمایش پنهان شده اند ، برخی دیگر در زیر قرص آبی. و باز هم ، مانند بیشتر پروژه های من ، این یک پروژه تنها یکبار است و من برای آن PCB طراحی نمی کنم.

مرحله 3: ضعیف کننده ها

تضعیف کننده ها
تضعیف کننده ها

در اسیلوسکوپهای معمولی ، میراگرهای ورودی مدارهایی هستند که با تعویض و خروج مقاومتها با رله های سیگنال کوچک ، تضعیف و تقویت را تغییر می دهند. در حالی که من برخی از آن رله ها را دارم ، می دانم که آنها کمتر از 4 ولت تغییر نمی کنند ، این بدان معناست که آنها فقط با باتری لیتیوم یون (4.2 ولت) به طور کامل کار می کنند. بنابراین من نیاز به راه دیگری برای تغییر آن مقاومت ها داشتم. البته من فقط می توانم سوئیچ های مکانیکی را نصب کنم ، اما مطمئناً در نظر من دیگر در کادر پروژه قرار نمی گیرد ، شاید بتوانم یک پتانسیومتر دیجیتالی بهتر را دوباره امتحان کنم (آن چیزی که من بسیار پر سر و صدا است).

سپس به "سوئیچ های آنالوگ" فکر کردم ، با آنهایی که خودم می توانم پتانسیومتر دیجیتال بسازم. در مجموعه قطعات من CD4066 را با چهار سوئیچ آنالوگ پیدا کردم. ایده این است که مقاومت بازخورد یک متغیر opamp را با تغییر و وارد کردن مقاومتها به موازات مقاومت بازخورد ایجاد کنید.

بسیار خوب کار می کند ، اما با داشتن تنها 4 سوئیچ در 4066 و داشتن 2 کانال نمی توان بیش از سه سطح حساسیت را ایجاد کرد. من 500mV ، 1V و 2V در هر بخش را انتخاب کردم زیرا آنها ولتاژهایی هستند که من بیشتر از آنها استفاده می کنم. صفحه نمایش به 6 بخش تقسیم می شود ، به طوری که محدوده های -1.5V تا +1.5V ، -3V تا +3V و -6V تا 6V را ایجاد می کند.

با استفاده از "زمین مجازی" می توانید این محدوده ها را بالا و پایین ببرید ، بنابراین حتی 0v تا +12V امکان پذیر است.

مرحله 4: زمین مجازی

زمین مجازی
زمین مجازی
زمین مجازی
زمین مجازی

از آنجا که اسیلوسکوپ از ریل قدرت واحد (3.3V) استفاده می کند ، آپامپ ها به سطح مجازی زمین نیاز دارند وگرنه کار نمی کنند. این سطح مجازی با PWM در یک کانال خروجی TIM4 ساخته شده است ، چرخه کار آن از چند درصد به تقریبا صد درصد تغییر می کند. یک فیلتر کم گذر با مقاومت 1k و خازن 10uF آن را به ولتاژ (تقریبا) 0V تا (تقریبا) 3.3V تبدیل می کند. فرکانس موج مربع کمی کمتر از 100 کیلوهرتز است ، بنابراین فیلتر ساده کم گذر به اندازه کافی خوب است.

در اواخر ساختمان این اسیلوسکوپ متوجه شدم که شما نمی توانید دو جرقه مجزا برای کانال ها داشته باشید. این به خاطر این واقعیت است که با یک منبع تغذیه واحد ، سطح ورودی-زمین باید از سطح زمین واقعی opamps جدا باشد. بنابراین هر دو کانال با تغییر تنظیمات GND یکسان حرکت می کنند.

مرحله 5: رمزگذارهای روتاری و اشکال زدایی

رمزگذار روتاری و اشکال زدایی
رمزگذار روتاری و اشکال زدایی
رمزگذار روتاری و اشکال زدایی
رمزگذار روتاری و اشکال زدایی

در مینی اسیلوسکوپ من فقط از یک رمزگذار چرخشی برای همه عملکردها استفاده کردم. استفاده از یک اسیلوسکوپ دوگانه بسیار دشوار خواهد بود ، بنابراین در اینجا به دو مورد نیاز دارم. یک رمزگذار برای میراگرها و سطح زمین مجازی و رمزگذار دیگر برای فاصله زمانی و راه اندازی. متأسفانه ، درست مانند پروژه دیگر من ، این رمزگذارهای چرخشی بسیار "سر و صدا" هستند. آنها آنقدر بد هستند که به سادگی با تایمرها در "حالت رمزگذار" ، روش استاندارد خواندن آنها ، کار نمی کنند. من مجبور شدم با تایمر TIM2 یک مکانیزم رفع اشکال ایجاد کنم و رمزگذارها را در هر 100 عدد چک کنم. این تایمر به نوبه خود زمانی شروع می شود (فقط) که فعالیتی روی رمزگذارها وجود داشته باشد ، این با عملکرد EXTI در پورت های ورودی بررسی می شود. اکنون رمزگذارها به خوبی کار می کنند.

و همانطور که می بینید ، داشتن صفحه نمایش نیز می تواند برای نمایش اطلاعات اشکال زدایی بسیار مفید باشد.

مرحله 6: Display and Timebase

صفحه نمایش و Timebase
صفحه نمایش و Timebase

وضوح صفحه نمایش 160 128 128 پیکسل است ، بنابراین 160 نمونه برای یک صفحه نمایش مورد نیاز است ، من موفق شدم ADC ها را سریعتر کنم تا 1.6 میلیون نمونه را در ثانیه انجام دهم و این ، با میکروکنترلر بسیار اورکلاک شده (در ادامه بیشتر) ، می دهد حداقل فاصله زمانی 20us در هر بخش (100us در هر صفحه). بنابراین شکل موج 10 کیلوهرتز تمام صفحه را پر می کند.

این تنها دو برابر سریعتر از مینی اسیلوسکوپی است که قبلاً ساخته بودم. خوب ، اکنون با دو کانال است:-).

همانطور که گفته شد ، صفحه نمایش 160 پیکسل عرض دارد ، بنابراین فقط 160 مقدار در هر صفحه مورد نیاز است. اما همه بافرها در واقع حاوی 320 نمونه هستند. بنابراین DMA قبل از ایجاد وقفه کامل انتقال (TC) 320 مقدار را ذخیره می کند. این به این دلیل است که راه اندازی در نرم افزار انجام می شود. نمونه گیری در یک لحظه تصادفی شروع می شود ، بنابراین بسیار بعید است که اولین مقدار در بافر مکانی باشد که نقطه شروع باید در آن باشد.

بنابراین نقطه شروع با خواندن trace_x_buffer پیدا می شود ، اگر مقدار در مقدار ماشه مورد نظر باشد en اگر مقدار قبلی دقیقاً زیر آن باشد ، نقطه_تحریک پیدا می شود. این بسیار خوب کار می کند ، اما شما به یک بافر بزرگتر از اندازه واقعی صفحه نمایش نیاز دارید.

این نیز به این دلیل است که نرخ تازه سازی در تنظیمات timebase پایین تر از آنچه انتظار دارید کندتر است. وقتی از تنظیمات 200ms/div استفاده می کنید ، یک صفحه پر از داده 1 ثانیه است ، اما به دلیل دو برابر شدن تبدیل ، 2 ثانیه طول می کشد. در تنظیمات سریعتر پایگاه زمانی ، آنقدر متوجه آن نمی شوید.

TIM3 برای ایجاد فاصله زمانی استفاده می شود. ADC ها را با سرعت مورد نیاز تنظیمات زمانبندی انتخاب شده فعال می کند. کلاک TIM3 آن 120 مگاهرتز است (OVERCLOCKING را ببینید) ، حداکثر عددی که شمارش می کند (ARR) تعیین می کند که چگونه دیگر سرریز می شود یا به زبان ST به روز می شود. از طریق TRGO این پالس های به روز رسانی ADC ها را فعال می کند. کمترین فرکانسی که تولید می کند 160 هرتز و بالاترین آن 1.6 مگاهرتز است.

مرحله 7: ADC و DMA

ADC و DMA
ADC و DMA

دو ADC ولتاژ ورودی های خود را به طور همزمان تبدیل می کنند ، آنها این دو مقدار 12 بیتی را در یک متغیر 32 بیتی ذخیره می کنند. بنابراین DMA فقط یک متغیر در هر تبدیل (دو برابر) برای انتقال دارد.

بنابراین برای استفاده از این مقادیر لازم است که آنها را به دو مقدار تقسیم کنید تا بتوان از آنها برای نمایش دو اثر استفاده کرد. همانطور که گفته شد ، ADC های موجود در F103 را نمی توان روی رزولوشن های دیگری به غیر از 12 بیت تنظیم کرد. آنها همیشه در حالت 12 بیتی هستند و بنابراین تبدیلها همیشه تعداد یکسانی از ضربان های ساعت را دارند. با این حال ، با اورکلاک ADC ها ، 1.6 نمونه MS در ثانیه می توان انجام داد (به موارد اضافی: اورکلاک مراجعه کنید).

مرجع ADC ها Vdd ، راه آهن 3.3V است. برای تبدیل آن به مقادیر مناسب تر (در هر تقسیم) ، من مقادیر ضعیف کننده ها را محاسبه کرده ام ، زیرا مقادیر مقاومت دقیقی را که از محاسبات حاصل می شود ندارم ، برخی اصلاحات در نرم افزار انجام می شود.

در این پروژه من از DMA در "حالت معمولی" استفاده می کنم. در این حالت هنگامی که تعداد کلمات (یا نیم کلمه یا بایت) همه منتقل می شوند ، DMA انتقال داده (از ADC به حافظه) را متوقف می کند. در حالت ممکن دیگر ، "حالت دایره ای" DMA خود را تنظیم مجدد می کند و بدون وقفه به انتقال داده ها ادامه می دهد. این با F103 کار نمی کند ، آنقدر سریع است که قبل از اینکه بقیه برنامه بتواند آن را بخواند ، اطلاعات موجود در adc_buffer را رونویسی می کند. بنابراین در حال حاضر روند به شرح زیر است:

- DMA را به تعداد داده های منتقل شده تنظیم کرده و DMA را فعال کنید

- راه اندازی ADC ها را شروع کنید ، اینها بعد از هر تبدیل (دو برابر) درخواست انتقال DMA می کنند

- پس از انتقال تعداد تعیین شده تبدیل ، DMA متوقف می شود

- بلافاصله همچنین راه اندازی ADC ها را متوقف کنید

- انجام همه دستکاری های مورد نیاز بر روی داده های موجود در حافظه

- نشان دادن آثار روی صفحه

- دوباره فرآیند را شروع کنید

مرحله 8: رابط کاربری

رابط کاربری
رابط کاربری

صفحه نمایش 160 در 128 پیکسل چندان بزرگ نیست و من می خواهم تا حد امکان از آن استفاده کنم. بنابراین هیچ قسمتی از آن برای تنظیمات جاری ذخیره نشده است. در چند ردیف آخر حساسیت عمودی ، فاصله زمانی ، سطح ماشه و کانال ماشه نمایش داده می شود ، اما وقتی سیگنالها به اندازه کافی بزرگ باشند در همان ناحیه ظاهر می شوند. گزینه فعال که به رنگ زرد نشان داده شده است ، بقیه با رنگ سفید نشان داده شده است.

مرحله 9: ساختمان سازی و پیشرفت های احتمالی

ساختمان و پیشرفت های احتمالی
ساختمان و پیشرفت های احتمالی
ساختمان و پیشرفت های احتمالی
ساختمان و پیشرفت های احتمالی
ساختمان و پیشرفت های احتمالی
ساختمان و پیشرفت های احتمالی
ساختمان و پیشرفت های احتمالی
ساختمان و پیشرفت های احتمالی

من از این پروژه بسیار خوشحالم. خوب کار می کند و کار را انجام می دهد ، اما می تواند بهتر باشد.

جعبه پروژه بسیار کوچک است تا همه چیز را راحت در خود جای دهد ، این امر منجر به قرار دادن اجزای زیر قرص آبی می شود. برای این کار ، قرص آبی را نمی توان مستقیماً به "صفحه اصلی" لحیم کرد. و از آنجا که این کار بسیار زیاد شد ، مجبور شدم قسمت های زیادی از قرص آبی را حذف کنم ، مانند بلوزها برای انتخاب BOOT0 و BOOT1 (چیزهایی که من به هر حال از آنها استفاده نمی کنم) و حتی مجبور شدم کریستال را از بالا به پایین حرکت دهم. pcb

من با استفاده از اتصالات موز به جای اتصالات BNC یا SMA زندگی را دشوارتر کردم ، این بدان معناست که بخش بزرگی از تخته چوبی یک "منطقه ممنوعه" است ، برای اینکه این را برای خودم روشن کنم برای جلوگیری از خودم نوار کاپتون روی آن گذاشتم. از قرار دادن قطعات روی آن

مشکل دیگر در قرار دادن همه چیز در چنین جعبه پروژه ای این است که مدارهای آنالوگ و دیجیتال بسیار نزدیک به هم هستند. می بینید که سر و صدای زیادی در هر دو ردپای قابل مشاهده است. این را من حتی روی تخته نان نداشتم! با جابجایی خطوط برق مدارهای آنالوگ و دیجیتال تا حد امکان از یکدیگر ، پیشرفت کوچکی انجام شد ، اما برای دلخواه من کافی نبود. کاهش تمام مقادیر مقاومت در مدارهای آنالوگ حتی بیشتر از من (مقاومت ورودی به جای 1 مگا اهم 100 کیلو اهم است) کمکی نکرد. من گمان می کنم فعال شدن سریعترین تنظیمات timebase (20us/div) ، که عالی نیست ، با نویز کمتر روی سیگنال ها نیز بهبود می یابد.

اگر این طرح را روی یک pcb "واقعی" ، با تمام قطعات smd و لایه های جداگانه برای آنالوگ ، دیجیتال و قدرت (که 4 لایه است) بسازید ، احتمالاً بسیار خوب کار می کند. بسیار کوچکتر خواهد بود ، از یک Blue Pill کامل استفاده نمی کند بلکه فقط از F103 استفاده می کند و این امکان را فراهم می کند که یک Vdda آنالوگ جداگانه (تمیز) برای ADC ها به آن عرضه شود.

به عنوان آخرین لمس تصمیم گرفتم جعبه را به رنگ مشکی اسپری کنم ، این تغییر را نسبت به همه جعبه های بژ موجود در آن ایجاد می کند.

مرحله 10: کد و یک فیلم کوتاه

مرحله 11: EXTRA: اورکلاک

اضافی: اورکلاک
اضافی: اورکلاک

درست مانند F03 ، می خواستم ببینم چقدر F103 می تواند اورکلاک شود. مشخصات این میکروکنترلر ادعا می کند که حداکثر سرعت کلاک نباید از 72 مگاهرتز تجاوز کند (که البته در حال حاضر سریعتر از F030 است) اما من در چندین وبلاگ خوانده بودم که اورکلاک آن آسان است ، پس چرا نه؟

قرص آبی با کریستال 8 مگاهرتز ارائه می شود ، PLL آن را با ضریب 9 تا 72 مگاهرتز ضرب می کند. PLL را می توان تا 16 افزایش داد و کلاک 128 مگاهرتز را ارائه کرد. این برای Blue Pill من هیچ مشکلی نداشت ، در واقع ، همه Blue Pills من بدون هیچ مشکلی در 128 مگاهرتز کار می کنند.

اما اکنون می خواستم دریابم که حد واقعی چیست. بنابراین من کریستال 8 مگاهرتز را برداشته و یکی از 12 مگاهرتز را جایگزین آن کردم. دوباره من ضریب PLL را افزایش دادم تا اینکه بالاخره میکروکنترلر تسلیم شد. این در 168 مگاهرتز بود! روی 156 مگاهرتز هنوز خوب کار می کرد. ساعتها آن را با آن سرعت رها کردم و هرگز ندیدم که خراب شود. در این اسیلوسکوپ من برای 120 مگاهرتز تصمیم گرفتم ، سرعتی که با کریستال 12 مگاهرتز و PLL در 10 ، و همچنین با کریستال 8 مگاهرتز و PLL در 15 انتخاب می شود (SystemClock_Config را در main.c ببینید)

ADC ها هم اکنون سریعتر کار می کنند ، من آنها را با 30 مگاهرتز (به جای 14) اجرا می کنم ، آنها هنوز هم روی 60 مگاهرتز به خوبی کار می کردند ، STMicroelectronics سخت افزار خوبی را ایجاد می کند!

STMicroelectronics این محدودیت ها را به دلایل خوبی در برگه داده قرار می دهد ، آنها تضمین می کنند که میکروکنترلر تحت هر شرایطی در 72 مگاهرتز مشخص شده کار می کند.

اما از آنجایی که من از میکروکنترلر در دمای 40- درجه سانتیگراد ، +85 درجه سانتیگراد ، فقط در 2.0 ولت یا 3.6 ولت استفاده نمی کنم ، فکر می کنم اورکلاک کردن آن بی خطر است. وقتی قصد فروش دستگاهی با میکروکنترلرهای خود را دارید ، این کار را نکنید ، هرگز نمی دانید در کجا از آنها استفاده می شود.

توصیه شده: