فهرست مطالب:

ژنراتور عملکرد قابل حمل در WiFi و Android: 10 مرحله
ژنراتور عملکرد قابل حمل در WiFi و Android: 10 مرحله

تصویری: ژنراتور عملکرد قابل حمل در WiFi و Android: 10 مرحله

تصویری: ژنراتور عملکرد قابل حمل در WiFi و Android: 10 مرحله
تصویری: ELK: Elasticsearch, logstash, beats (Часть 1) / Java Tech Talk 2024, جولای
Anonim
ژنراتور عملکرد قابل حمل در WiFi و Android
ژنراتور عملکرد قابل حمل در WiFi و Android
ژنراتور عملکرد قابل حمل در WiFi و Android
ژنراتور عملکرد قابل حمل در WiFi و Android
ژنراتور عملکرد قابل حمل در WiFi و Android
ژنراتور عملکرد قابل حمل در WiFi و Android
ژنراتور عملکرد قابل حمل در WiFi و Android
ژنراتور عملکرد قابل حمل در WiFi و Android

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

از آنجایی که امروزه همه چیز می تواند "هوشمند" باشد ، من تصمیم گرفتم یک دستگاه فوق العاده مفید طراحی کنم که بخشی از تجهیزات ضروری آزمایشگاه الکترونیکی باشد - Portable Function Generator ، قابل کنترل توسط تلفن هوشمند مبتنی بر سیستم عامل Android از طریق WiFi مستقیم یا شبکه محلی WiFi (WLAN))

چرا باید این دستگاه را بسازیم؟

امروزه اکثر تجهیزات آزمایشگاهی بسیار گران هستند. و گاهی اوقات ، این دستگاه ها قابل حمل نیستند. به عنوان راه حلی برای قیمت های بالا ، عدم قابلیت حمل و عدم دسترسی به شبکه دستگاه ، دستگاه ژنراتور شکل موج دو کاناله را ارائه می دهد که در واقع قابل حمل است و دسترسی نامحدودی به شبکه - اینترنت یا محلی دارد.

و البته ، دستگاه باید به دلیل اشتیاق و رعایت اصول DIY ساخته شود - گاهی اوقات ما فقط باید کارهایی را انجام دهیم تا احساس خوبی داشته باشیم:)

ویژگی های کلیدی

منبع تغذیه

  • اتصال USB Type-A ، هم برای سیستم های تغذیه و هم برای برنامه نویسی
  • سیستم مدیریت کامل باتری Li -Ion - حالت های شارژ و پایدار
  • پیاده سازی Smart Switch - نیازی به سوئیچ ضامن برق نیست
  • منبع تغذیه دوگانه: +3.3V و -3.3V برای تولید شکل موج متقارن ولتاژ

تولید شکل موج

  • پیاده سازی سطح DC در آبشار خروجی - شکل موج مغرضانه بین مرزهای ولتاژ
  • تولید شکل موج 4 نوع مبتنی بر DDS - سینوس ، مثلث ، مربع و DC
  • حداکثر فرکانس 10 مگاهرتز
  • جریان خروجی تا 80mA با حداکثر توان 500mW
  • کانالهای جدا شده برای ایجاد شکل موج - تقسیم مدارهای مبتنی بر AD9834

ارتباطات

  • پیاده سازی ESP32 - قابلیت WiFi قابل اجرا
  • پشتیبانی کامل از TCP/IP توسط دستگاه تولید کننده و تلفن هوشمند Android
  • قابلیت ذخیره پارامترهای کاربر برای هر چرخه دستگاه
  • نظارت بر وضعیت - هر دو سیستم از وضعیت یکدیگر آگاه هستند: FuncGen (بگذارید از این به بعد اینگونه نام ببریم) و گوشی های هوشمند.

رابط کاربری

  • LCD 20 * 4 کاراکتری با رابط کاربری ساده 4 بیتی
  • برنامه Android - کنترل کامل کاربر بر روی دستگاه FuncGen
  • مدار زنگ - بازخورد صدا به کاربر

مرحله 1: نمودار بلوک - سخت افزار

نمودار بلوک - سخت افزار
نمودار بلوک - سخت افزار
نمودار بلوک - سخت افزار
نمودار بلوک - سخت افزار

واحد میکروکنترلر - ATMEGA32L

میکروکنترلر یک تراشه قابل برنامه ریزی است که شامل تمام عملکردهای رایانه ای است که در یک تراشه الکترونیکی قرار دارد. در مورد ما ، این "مغز" و جزء مرکزی سیستم است. هدف MCU مدیریت کلیه سیستم های جانبی ، مدیریت ارتباط بین این سیستم ها ، کنترل عملکرد سخت افزار و ارائه پشتیبانی کامل از رابط کاربری و تعامل آن با یک کاربر واقعی است. این پروژه بر اساس ATMEGA32L MCU است که ممکن است روی 3.3 ولت و فرکانس 8 مگاهرتز کار کند.

ارتباطات SoC - ESP32

این SoC (System on Chip) پشتیبانی کامل ارتباطی برای FuncGen - دسترسی به قابلیت های WiFi شامل ارتباط مستقیم ، محلی یا اینترنتی را فراهم می کند. اهداف دستگاه عبارتند از:

  • انتقال داده ها بین برنامه Android و دستگاه FuncGen
  • مدیریت پیام های کنترل/داده
  • پشتیبانی از پیکربندی پیوسته TCP/IP Client-Server

در پروژه ما ، SoC espressif ESP32 است ، که بسیار محبوب است و نمی توان آن را بیشتر گسترش داد:)

سیستم مدیریت باتری Li-Ion

به منظور تبدیل دستگاه ما به دستگاه قابل حمل ، دستگاه شامل مدار شارژ باتری Li-Ion طراحی شده است. مدار مبتنی بر IC MC73831 است ، با جریان شارژ قابل کنترل از طریق تنظیم مقدار یک مقاومت برنامه نویسی واحد (ما این موضوع را در مرحله شماتیک توضیح می دهیم). منبع تغذیه دستگاه کانکتور USB Type-A است.

مدار سوئیچ هوشمند

مدار کنترل قدرت دستگاه سوئیچ هوشمند کنترل کامل نرم افزار بر روی توالی خاموش شدن دستگاه و عدم نیاز به سوئیچ ضامن خارجی برای قطع ولتاژ باتری دستگاه را فراهم می کند. تمام عملیات تغذیه با فشار دادن دکمه و نرم افزار MCU انجام می شود. در برخی موارد ، سیستم باید خاموش شود: ولتاژ پایین باتری ، ولتاژ ورودی بالا ، خطای ارتباطی و غیره. سوئیچ هوشمند بر اساس IC سوئیچ هوشمند STM6601 طراحی شده است که ارزان است و برای بازی بسیار دوستانه است.

واحد منبع تغذیه اصلی

این واحد شامل دو مدار منبع تغذیه باتری است - +3.3 ولت برای تمام مدارهای تغذیه دیجیتال / آنالوگ و -3.3 ولت برای خروجی متقارن FunGen نسبت به پتانسیل 0 ولت (یعنی شکل موج تولید شده را می توان در [-3.3V: 3.3V] منطقه.

  • مدار اصلی تغذیه بر اساس تنظیم کننده ولتاژ خطی LP3875-3.3 LDO (افت کم) 1A است.
  • مدار تغذیه ثانویه بر اساس IC LM2262MX است که تبدیل ولتاژ منفی DC-DC را از طریق خازن-پمپ شارژ انجام می دهد-سیستمی که IC بر اساس آن است.

سیستم ژنراتورهای شکل موج

سیستم با تأکید بر مدارهای مجتمع DDS (سنتز مستقیم دیجیتال) طراحی شده است که امکان کنترل شکل کامل موج توسط SPI MCU (رابط جانبی سریال) را فراهم می کند. مدارهایی که در طراحی مورد استفاده قرار گرفتند دستگاههای آنالوگ AD9834 هستند که ممکن است انواع مختلف شکل موج را ارائه دهند. چالش هایی که هنگام کار با AD9834 باید با آنها روبرو شویم عبارتند از:

  • دامنه شکل موج ثابت: دامنه شکل موج توسط ماژول DAC خارجی کنترل می شود
  • عدم توجه به سطح DC افست: پیاده سازی مدارهای جمع بندی با مقادیر افست DC دلخواه
  • خروجی های جداگانه برای موج مربعی و مثلث/موج سینوسی: پیاده سازی مدار کلید فرکانس بالا به این ترتیب هر خروجی تک کانالی می تواند همه شکل موج مورد نظر را تهیه کند: سینوس ، مثلث ، مربع و DC.

صفحه نمایش کریستال مایع

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

وزوز

مدار ژنراتور تن ساده برای بازخورد اضافی از دستگاه به کاربر.

برنامه نویس ISP یکپارچه

در مورد فرآیند برنامه نویسی ، یک مشکل مداوم برای هر مهندسی وجود دارد: همیشه بدترین نیاز به جداسازی محصول برای برنامه ریزی مجدد آن با یک سیستم عامل جدید وجود دارد. برای غلبه بر این ناراحتی ، برنامه نویس AVR ISP از داخل به دستگاه متصل شد ، در حالی که داده های USB و خطوط برق به کانکتور USB Type-A دستگاه وصل شده است. در این پیکربندی ، ما فقط باید FuncGen خود را از طریق کابل USB برای برنامه نویسی یا شارژ متصل کنیم!

مرحله 2: نمودار بلوک - شبکه سازی

نمودار بلوک - شبکه سازی
نمودار بلوک - شبکه سازی

ژنراتور عملکرد دو کاناله

دستگاه اصلی موردی که در مرحله قبل بررسی کردیم

ESP-WROOM-32

سیستم یکپارچه روی تراشه با قابلیت WiFi و BLE. SoC از طریق ماژول UART به برد اصلی وصل شده است (در مرحله شماتیک به آن می پردازیم) و به عنوان فرستنده پیام بین دستگاه اصلی و تلفن هوشمند Android عمل می کند.

شبکه محلی WiFi

تلفن هوشمند و دستگاه از طریق WiFi مستقیم یا شبکه محلی بر اساس پیکربندی سرور/سرویس گیرنده TCP ارتباط برقرار می کنند. وقتی دستگاهها یکدیگر را از طریق WiFi تشخیص می دهند ، دستگاه اصلی سرور TCP با پارامترهای مناسب ایجاد می کند و قادر به ارسال/دریافت پیام است. دستگاه به عنوان ثانویه برای تلفن هوشمند عمل می کند. از طرف دیگر ، دستگاه Android به عنوان یک شبکه شبکه مشتری به سرور TCP متصل می شود ، اما به عنوان فرستنده پیام اصلی در نظر گرفته می شود - تلفن هوشمند است که چرخه ارتباط کامل را آغاز می کند: ارسال پیام - دریافت پاسخ.

گوشی هوشمند اندرویدی

دستگاه هوشمند مبتنی بر سیستم عامل Android که بر روی برنامه FuncGen اجرا می شود

مرحله 3: قطعات ، ابزارها ، IDE و Bill of Materials

قطعات ، ابزارها ، IDE و بیل مواد
قطعات ، ابزارها ، IDE و بیل مواد
قطعات ، ابزارها ، IDE و بیل مواد
قطعات ، ابزارها ، IDE و بیل مواد
قطعات ، ابزارها ، IDE و بیل مواد
قطعات ، ابزارها ، IDE و بیل مواد

بیل مواد (جدول پیوست XLS را ببینید)

UI و اتصالات سیستم

  • 1 x 2004A Char-LCD 20x4 آبی
  • 1 عدد اتصال USB نوع B
  • 1 x 10 مجموعه Mini Micro JST XH 2.54mm 4 پین
  • 1 x 6 قطعه SW لحظه ای

سفارش PCB (با توجه به مشاهده استودیو)

مواد اولیه FR-4

تعداد لایه ها 2 لایه

PCB تعداد 10

شماره طرح های مختلف 1

ضخامت PCB 1.6 میلی متر

PCB رنگ آبی

Surface Finish HASL

حداقل سد ماسک لحیم کاری 0.4 میلی متر

وزن مس 1 اونس

حداقل اندازه سوراخ مته 0.3 میلی متر

عرض ردیابی / فاصله 6/6 میل

نیم سوراخ های اندود شده / سوراخ های قلعه دار شماره

کنترل امپدانس شماره

ابزارها

  • چسب حرارتی تفنگی
  • موچین
  • کاتر
  • wire سیم 22AWG برای اهداف خرابی
  • لحیم کاری/ایستگاه
  • قلع لحیم کاری
  • ایستگاه کار مجدد SMD (اختیاری)
  • چاپگر سه بعدی (اختیاری)
  • اکستروژن فایل
  • برنامه نویس AVR ISP
  • تبدیل USB به سریال (اختیاری ، برای اهداف اشکال زدایی)

محیط توسعه یکپارچه (IDE) و نرم افزار

  • Autodesk EAGLE یا Cadence Schematic Editor / Allegro PCB Editor
  • OpenSCAD (اختیاری)
  • Ultimaker Cura (اختیاری)
  • Saleae Logic (برای عیب یابی)
  • Atmel Studio 6.3 یا بالاتر
  • Android Studio یا Eclipse IDE
  • Docklight Serial Monitor / سایر نرم افزارهای مانیتورینگ پورت COM
  • ProgISP برای برنامه نویسی فلش AVR ATMEGA32L

مرحله 4: طراحی سخت افزار - صفحه اصلی

طراحی سخت افزار - صفحه اصلی
طراحی سخت افزار - صفحه اصلی
طراحی سخت افزار - صفحه اصلی
طراحی سخت افزار - صفحه اصلی
طراحی سخت افزار - صفحه اصلی
طراحی سخت افزار - صفحه اصلی

مدار مدیریت باتری

مدار شارژ باتری بر اساس IC MCP7383 است که به ما امکان می دهد جریان شارژ مورد نظر را برای باتری Li -Ion - 3.7V با ظرفیت 850mAh انتخاب کنیم. در مورد ما جریان شارژ با مقدار مقاومت برنامه نویسی (R1) تنظیم می شود

R1 = 3KOhm ، I (شارژ) = 400mA

ولتاژ USB VBUS توسط فیلتر π (C1 ، L3 ، C3) فیلتر می شود و به عنوان منبع تغذیه مدار شارژ عمل می کند.

مدار تقسیم ولتاژ (R2 ، R3) به MCU این امکان را می دهد که منبع تغذیه USB خارجی را وصل کند یا خیر ، با ارائه ولتاژ زیر به کانال A/D MCU:

V (نشانگر) ~ (2/3) V (BUS)

از آنجا که A/D ATMEGA32L ما 12 بیتی است ، می توانیم محدوده دیجیتال را محاسبه کنیم:

A / D (محدوده) = 4095V (نشانگر) / V (REF).

A/D ∈ [14AH: FFFH]

واحد تغذیه سوئیچ هوشمند

مدار به سیستم اجازه می دهد منبع تغذیه هر بلوک طراحی شده را از طریق دکمه و نرم افزار روی MCU کنترل کند و بر اساس STM6601 Smart-Switch با گزینه POWER به جای RESET است. پایانه هایی که می خواهیم در نظر بگیریم عبارتند از:

  • PSHOLD - خط ورودی ، که وضعیت دستگاه را مشخص می کند: اگر LOW کشیده شود ، دستگاه همه واحدهای منبع تغذیه ثانویه (+3.3V و -3.3V) را غیرفعال می کند. اگر بالا نگه داشته شود - دستگاه حالت ON را حفظ می کند.
  • nSR و nPB - خطوط ورودی. پایانه های دکمه را فشار دهید. هنگامی که لبه در حال سقوط روی این پین ها تشخیص داده می شود ، دستگاه سعی می کند وارد حالت بالا / پایین قدرت شود
  • nINT - خط خروجی هر بار که دکمه فشرده می شود LOW LOW می شود
  • EN - خط خروجی ، به عنوان منبع تغذیه برای واحدهای منبع تغذیه ثانویه استفاده می شود. در حالی که پایین نگه داشته می شود ، هر دو منبع تغذیه ثانویه غیرفعال هستند

قبل از شروع به طراحی نهایی ، نکات مهمی وجود دارد:

  • PSHOLD باید تا 3.3 ولت کشیده شود ، زیرا مواردی وجود دارد که MCU ها تمام I/O ها را مجبور می کنند در حالت HIGH-Z باشند. در این حالت ، وضعیت PSHOLD از MCU ناشناخته است و ممکن است به طور چشمگیری بر فرایند برنامه نویسی دستگاه تأثیر بگذارد.
  • STM6601 باید با گزینه تنظیم EN در فشار طولانی ، به جای گزینه RESET سفارش داده شود (من در آن مورد افتاده ام).

منبع تغذیه: +3.3V

منبع تغذیه اصلی برای همه سیستم های پروژه ما. هنگامی که خط +3.3V در سطح GND نگه داشته می شود (یعنی ولتاژی وجود ندارد) ، تمام IC به جز سوئیچ هوشمند غیرفعال می شود. مدار مبتنی بر IC LDO LP-3875-3.3 است ، با قابلیت کنترل از طریق ترمینال EN و تأمین جریان تا 1A.

منبع تغذیه این مدار ولتاژ باتری است ، با نشانگر A/D متصل برای تشخیص VBAT در پیکربندی ، شبیه به مدار سنجش VBUS. در این مورد ، محاسبات کمی متفاوت است.

V (Battery-to-A/D) = 0.59V (باتری) ؛ A/D (محدوده) ∈ [000H: C03H]

منبع تغذیه: -3.3V

مدار تغذیه ولتاژ منفی به ما اجازه می دهد تا شکل موج متقارنی با ضریب DC 0V تولید کنیم (یعنی مقدار متوسط شکل موج می تواند 0V باشد). این مدار مبتنی بر مبدل LM2662MX IC - DC/DC است که با روش "پمپ شارژ" کار می کند. حداکثر جریان خروجی مدار 200 میلی آمپر است که برای نیازهای طراحی ما کافی است - ما با جریان خروجی 80 میلی آمپر از کانال هر دستگاه محدود شده ایم.

IC تمام کارهای مورد نیاز را انجام می دهد ، بنابراین تنها قطعاتی که باید به آنها متصل شویم دو خازن الکترولیتی هستند: C33 برای سوئیچینگ و C34 برای -3.3V خط بای پس (ملاحظات کاهش نویز). اگر مدار را به اندازه کافی دور از قطعات تولید شکل موج قرار دهیم ، فرکانس سوئیچینگ بسیار ناچیز است (در مرحله چیدمان PCB در مورد آن صحبت خواهیم کرد).

واحد میکروکنترلر - MCU

این مدیر و مدیر عامل سیستم ما است - کنترل ، مدیریت شبکه ، انتقال پیام و پشتیبانی UI - همه چیز توسط MCU انجام می شود.

MCU انتخاب شده Atmel ATMEGA32L است ، جایی که L نشان دهنده عملکرد ولتاژ پشتیبانی شده است [2.7V: 5.5V]. در مورد ما ، ولتاژ کار +3.3V است.

بیایید بلوک های اصلی عملیات را که برای درک کار با MCU در طراحی ما ضروری است در نظر بگیریم:

  • نوسان ساز خارجی - یک جزء اختیاری است ، زیرا ما به فرکانس کاری 8 مگاهرتز علاقه داریم
  • کنترل جانبی ، شبکه SPI - همه دستگاه های جانبی (به استثنای ESP32) از طریق SPI با MCU ارتباط برقرار می کنند. سه خط مشترک برای همه دستگاه ها (SCK ، MOSI ، MISO) وجود دارد و هر مدار جانبی دارای خط اختصاصی CS (Chip Select) است. دستگاه های SPI که بخشی از دستگاه هستند:

    1. D/A برای کنترل دامنه - کانال A
    2. D/A برای کنترل دامنه - کانال B
    3. دستگاه AD9834 - کانال A
    4. دستگاه AD9834 - کانال B
    5. D/A برای کنترل ولتاژ بایاس - کانال A
    6. D/A برای کنترل ولتاژ بایاس - کانال B
    7. پتانسیومتر دیجیتال برای تنظیمات روشنایی/کنتراست LCD
  • پشتیبانی از LCD - از آنجا که LCD یک صفحه نمایش عمومی 20 * 4 کاراکتری است ، ما از رابط 4 بیتی (خطوط D7: D4) ، پین های کنترل (خطوط RS ، E) و کنترل روشنایی/کنتراست (خطوط V0 و آند) استفاده می کنیم.
  • پشتیبانی LED RGB - این ماژول اختیاری است ، اما یک کانکتور RGB LED کاتدی معمولی با مقاومت های مناسب ، متصل به MCU وجود دارد.
  • کنترل قدرت - MCU نظارت بر سیستم قدرت را در حالت زمان واقعی انجام می دهد و تمام رویدادهای قدرت مورد نیاز را مدیریت می کند:

    1. VBAT_ADC - نظارت بر ولتاژ باتری و تعیین وضعیت آن (کانال ADC0)
    2. PWR_IND - نشان دهنده اتصال منبع تغذیه خارجی (کانال ADC1)
    3. PS_HOLD - خط فعال سازی اصلی برق برای همه سیستم های تعریف شده. هنگامی که توسط MCU پایین می آید ، دستگاه خاموش می شود
    4. قطع ترمینال سوئیچ هوشمند - نظارت بر وضعیت دکمه را فشار دهید
  • مدیریت شبکه WiFi - ESP32: MCU از طریق رابط UART با ESP32 ارتباط برقرار می کند. از آنجا که 8 مگاهرتز به ما اجازه می دهد تا باود 115200 را با یک خطای نسبتاً کوچک پیاده سازی کنیم ، می توانیم از ESP32 در مدار بدون پیش تعریف تغییرات باود استفاده کنیم.

برنامه نویس AVR ISP

MCU ما از طریق SPI با خط تنظیم مجدد برنامه ریزی شده است (/RST) برای عملکرد مناسب باید به بالا کشیده شود (در غیر این صورت - MCU برای همیشه در حالت تنظیم مجدد قرار می گیرد).

به منظور امکان برنامه ریزی و شارژ دستگاه از طریق USB ، من برنامه نویس AVR ISP (محصول کوچک ، خریداری شده از eBay) را پیوست کردم. برای حفظ پشتیبانی کامل USB از دستگاه ، باید پایانه های USB Type-A (D+، D-، VBUS و GND) را با دستگاه ISP AVR ببندید.

مدار تولید شکل موج

هسته اصلی این مدارها هستند. AD9834 یک دستگاه DDS کم مصرف است که تمام شکل های موجی را که می خواهیم از سیستم بازیابی کنیم به ما ارائه می دهد. مدارها دارای دو IC مستقل AD9834 با نوسان ساز خارجی جدا شده 50 مگاهرتز هستند (همانطور که در نمودارها مشاهده می شود). دلیل جدا شدن نوسان ساز ، ملاحظات کاهش سر و صدا در مدارهای دیجیتالی است ، بنابراین تصمیم گرفته شد خطوط مناسب 50 مگاهرتز را با نوسان سازهای مجاور AD9834 مدیریت کنیم.

اکنون اجازه دهید برخی از ریاضیات را بررسی کنیم:

از آنجا که دستگاه DDS بر روی فناوری Phase Wheel کار می کند و مقدار خروجی آن در یک ثبت 28 بیتی نگهداری می شود ، می توانیم شکل موج را به صورت ریاضی توصیف کنیم:

dP (فاز) = ωdt؛ ω = P '= 2πf؛ f (AD9834) = ΔP * f (clk) / 2^28؛ ΔP ∈ [0: 2^28 - 1]

و طبق برگه داده AD9834 ، با در نظر گرفتن حداکثر فرکانس ، ممکن است وضوح فرکانس خروجی به دست آید:

Δf = k * f (نوسان ساز) / f (حداکثر) = 0.28 * 50M / 28M = 0.187 [هرتز]

IC های AD9834 خروجی جریان آنالوگ را برای مثلث/موج سینوسی (پایانه IOUT) و خروجی دیجیتال را برای موج مربعی (پایانه SIGN_OUT) ارائه می دهند. استفاده از بیت علامت کمی مشکل است اما ما می توانیم آن را اداره کنیم - هر زمان که DDS از آستانه ارزش مقایسه عبور می کند ، SIGN_OUT بر این اساس رفتار می کند. به خروجی هر کانال یک مقاومت 200 اهم متصل شده است ، بنابراین ولتاژ خروجی دارای مقادیر معنی داری خواهد بود:

I (تک کانال) = V (خروجی) / R (انتخاب ولتاژ) ؛ V (خروجی) = R (VS)*I (SS) = 200I (SS) [A]

مدارهای کنترل دامنه (D/A)

با توجه به برگه اطلاعات AD9834 ، دامنه آن ممکن است با ارائه جریان به سیستم مقیاس بزرگ DDS تنظیم شود ، بنابراین با کمک دو IC D/A ، می توان دامنه سیگنال خروجی را با تنظیم آن جریان کنترل کرد. یک بار دیگر ، چند ریاضی:

I (مقیاس کامل) = 18 * (V_REF - V_DAC) / R_SET [A]

با توجه به شماتیک و قرار دادن برخی از اعداد در معادله:

I (مقیاس کامل) = 3.86 - 1.17 * V_DAC [A]

ماژول D/A مورد استفاده در طراحی MCP4922 12 بیتی است ، هنگامی که جریان در محدوده [0mA: 3.86mA] است و عملکرد دامنه خطی به شرح زیر است:

V (انتخاب دامنه) = 1 - [V (D / A) / (2^12 - 1)]

مدار چند منظوره شکل موج

موج مربعی و خروجی های موج سینوسی/مثلث در AD9834 از هم جدا شده اند ، بنابراین ما مجبوریم از یک مدار چندگانه با سرعت بالا برای هر دو خروجی استفاده کنیم تا بتوانیم تمام شکل موج مورد نظر را از یک کانال جدا شده بازیابی کنیم. IC Multiplexer یک سوئیچ آنالوگ ADG836L با مقاومت بسیار کم (0.5 hm 0.5 اهم) است.

جدول انتخابی که MCU برای خروجی ها به صورت زیر استفاده می کند:

انتخاب حالت [D2: D1] | کانال خروجی A | کانال خروجی B

00 | سینوسی/مثلث | سینوسی/مثلث 01 | سینوسی/مثلث | میدان 10 | مربع | سینوسی/مثلث 11 | مربع | مربع

مدارهای کنترل ولتاژ بایاس (D/A)

یکی از ویژگی های اصلی مولد شکل موج ، کنترل مقدار DC آن است. در این طراحی با تنظیم ولتاژ D/A دلخواه در هر کانال انجام می شود و این ولتاژهای سوگیری با خروجی های چندگانه ای که قبلاً کمی در مورد آنها بحث کردیم جمع بندی می شود.

ولتاژ بازیابی شده از D/A در محدوده [0V: +3.3V] قرار دارد بنابراین یک مدار مبتنی بر op-amp وجود دارد که محدوده D/A را به [-3.3V: +3.3V] ترسیم می کند و به دستگاه اجازه می دهد دامنه کامل را ارائه دهد از جزء DC دلخواه ما ریاضیات تحلیلی آزاردهنده را کنار می گذاریم و فقط روی نتایج نهایی تمرکز می کنیم:

V_OUT (کانال B) = V_BIAS_B (+) - V_BIAS_B (-) ؛ V_OUT (کانال A) = V_BIAS_A (+) - V_BIAS_A (-)

در حال حاضر ، محدوده اجزای DC در محدوده [-3.3V: +3.3V] واقع شده است.

مدارهای جمع بندی - اجزای DC و خروجی های شکل موج

در این مرحله ما همه چیزهایی را که برای خروجی مناسب دستگاه نیاز داریم - Bias Voltage (جزء DC) در محدوده ولتاژ کامل و خروجی های چندگانه AD9834 داریم. ما با استفاده از تقویت کننده جمع بندی - پیکربندی op -amp این کار را انجام می دهیم

بیایید یک بار دیگر از ریاضی صرف نظر کنیم (ما قبلاً بسیاری از روش های ریاضی را پوشش داده ایم) و نتیجه نهایی خروجی جمع کننده تقویت کننده را بنویسید:

V (خروجی دستگاه) = V (سوگیری مثبت) - V (سوگیری منفی) - V (خروجی چندگانه) [V]

از این رو:

V_OUT = ΔV_BIAS - V_AD9834 [V]

اتصالات خروجی از نوع BNC با مقاومتهای انتخابی (R54 ، R55 ؛ R56 ، R57) متصل می شوند. دلیل آن این است که درصورتی که این طرح ناکارآمد باشد ، ما هنوز می توانیم انتخاب کنیم که بخواهیم از تقویت کننده جمع کننده استفاده کنیم.

نکته مهم: شبکه های مقاومت تقویت کننده های جمع کننده نهایی را می توان توسط طراح تنظیم کرد تا حداکثر دامنه قابل بازیابی از دستگاه را تغییر دهد. در مورد من ، همه آمپرها سود یکسانی = 1 دارند ، بنابراین حداکثر دامنه بافر 0.7Vpp برای مثلث/موج سینوسی و 3.3Vpp برای موج مربع است. رویکرد ریاضی خاص را می توان در بین تصاویر پیوست مرحله مشاهده کرد.

ESP32 به عنوان ماژول خارجی

MCU از طریق رابط UART با ESP32 ارتباط برقرار می کند. از آنجا که من PCB خودم را برای ESP32 می خواستم ، 4 پایانه برای اتصال وجود دارد: VCC ، RX ، TX ، GND. J7 یک رابط بین PCB است و ESP32 به عنوان ماژول خارجی در داخل دستگاه اختصاص داده می شود.

رابط کاربری - LCD و بلندگو

LCD مورد استفاده از یک صفحه نمایش 20 * 4 کاراکتر عمومی با رابط 4 بیتی است ، همانطور که از طرح مشخص است ، یک پتانسیومتر دیجیتالی SPI به پایانه های LCD "A" و "V0" متصل شده است - هدف آن تنظیم است روشنایی و کنتراست ماژول LCD به صورت برنامه ای.

بلندگو خروجی صدا را برای کاربر با ایجاد موج مربع ساده از MCU فراهم می کند. BJT T1 جریان را از طریق بلندگو کنترل می کند که می تواند فقط در دو حالت - ON / OFF باشد.

مرحله 5: طراحی سخت افزار - ماژول ESP32

طراحی سخت افزار - ماژول ESP32
طراحی سخت افزار - ماژول ESP32

ESP32 به عنوان یک ماژول خارجی برای PCB اصلی استفاده می شود. ارتباط دستگاه بر اساس دستورات AT است که در سیستم عامل دستگاه عمومی موجود است.

چیز زیادی برای توسعه این طرح وجود ندارد ، اما نکاتی برای طراحی وجود دارد:

  • برای عدم موفقیت در استفاده از ماژول UART مناسب ESP32 ، من سه مقاومت انتخابی را برای هر دو خط TX و RX متصل کرده ام. (برای هر عدد 0 اهم) برای پیکربندی استاندارد ، ماژول UART2 برای دستورات AT استفاده می شود (R4 ، R7 باید لحیم شود)
  • دستگاه دارای خروجی 4 خطی است - VCC ، GND ، TX ، RX.
  • پین های IO0 و EN عملکرد دستگاه را ارزیابی می کنند و باید طوری طراحی شوند که در نمودارها آمده است

در مرحله بعد تمام ویژگی های PCB را پوشش می دهیم.

مرحله 6: طرح PCB

طرح PCB
طرح PCB
طرح PCB
طرح PCB
طرح PCB
طرح PCB

اهداف طراحی PCB

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

پارامترهای فنی

هر دو PCB: برد اصلی و ESP32 دارای ویژگیهای یکسانی برای فرایند تولید هستند - کم هزینه و برای اهداف ما قابل استفاده است. بیایید آنها را ببینیم:

الف - صفحه اصلی

  • اندازه: 10 در 5.8 سانتی متر
  • تعداد لایه ها: 2
  • ضخامت PCB: 1.6 میلی متر
  • حداقل فضا/عرض: 6/6 میلی متر
  • حداقل قطر سوراخ: 0.3 میلی متر
  • مس تا لبه PCB حداقل فاصله: 20mil
  • تکمیل سطح: HASL (رنگ نقره ای بسیار زیبا از نوع ارزان)

ب - تخته اصلی

  • اندازه: 3 در 4 سانتی متر
  • تعداد لایه ها: 2
  • ضخامت PCB: 1.6 میلی متر
  • حداقل فضا/عرض: 6/6 میلی متر
  • حداقل قطر سوراخ: 0.3 میلی متر
  • مس تا لبه PCB حداقل فاصله: 20mil
  • تکمیل سطح: HASL

مرحله 7: محفظه سه بعدی

محفظه سه بعدی
محفظه سه بعدی

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

  1. دستگاه چاپ: Creality Ender-3
  2. نوع تخت: شیشه ، ضخامت 5 میلی متر
  3. قطر رشته: 1.75 میلی متر
  4. نوع رشته: PLA+
  5. قطر نازل: 0.4 میلی متر
  6. سرعت اولیه: 20 میلی متر در ثانیه
  7. میانگین سرعت: 65 میلی متر در ثانیه
  8. پشتیبانی: N/A
  9. پر کردن: 25
  10. درجه حرارت:

    • تخت: 60 (درجه سانتی گراد)
    • نازل: 215 (oC)
  11. رنگ تار: مشکی
  12. تعداد کل دیافراگم ها: 5
  13. تعداد پانل های محفظه: 4

    • TOP Shell
    • پوسته پایین
    • پنل جلویی
    • پنل پشتی

مرحله 8: پیاده سازی نرم افزار - MCU

پیاده سازی نرم افزار - MCU
پیاده سازی نرم افزار - MCU
پیاده سازی نرم افزار - MCU
پیاده سازی نرم افزار - MCU
پیاده سازی نرم افزار - MCU
پیاده سازی نرم افزار - MCU

پیوند GitHub به Android و کد Atmega32

الگوریتم نرم افزار

تمام عملیات انجام شده توسط MCU ، در نمودارهای پیوست توضیح داده شده است. علاوه بر آن ، یک کد پیوست برای پروژه وجود دارد. اجازه دهید مشخصات نرم افزار را پوشش دهیم:

قدرت

در این مرحله ، MCU تمام توالی اولیه را همراه با تعیین نوع ارتباط ذخیره شده با دستگاه Android انجام می دهد: ارتباط مستقیم WiFi یا شبکه WLAN - این داده ها در EEPROM ذخیره می شوند. در این مرحله کاربر می تواند نوع جفت شدن دستگاه Android را دوباره تعریف کند.

جفت شدن مستقیم دستگاه Android

این نوع جفت شدن بر اساس ایجاد شبکه WiFi توسط دستگاه FuncGen است. این برنامه AP (Access Point) و یک سرور TCP را بر روی IP دستگاه محلی با SSID خاص (نام شبکه WiFi) و شماره پورت خاص ایجاد می کند. دستگاه باید حالت را نگه دارد - برای اتصالات باز است.

هنگامی که دستگاه Android به FuncGen متصل است ، MCU وارد حالت ACTIVE می شود و طبق دستورالعمل کاربر دستگاه Android پاسخ می دهد.

جفت شدن WLAN

به منظور برقراری ارتباط در شبکه WiFi محلی ، MCU باید دستوراتی را برای ESP32 برای ایجاد AP ، ارتباط با دستگاه Android و تبادل داده های مهم شبکه ارائه دهد:

  • دستگاه Android از FuncGen آدرس MAC خود را دریافت می کند و آن را در حافظه ذخیره می کند.
  • دستگاه FuncGen از دستگاه Android انتخابی پارامترهای WLAN: SSID ، نوع امنیت و رمز عبور را دریافت می کند و آن را در EEPROM ذخیره می کند.

وقتی دستگاهها واقعاً به یک WLAN متصل هستند ، دستگاه Android با اسکن تمام آدرسهای MAC دستگاههای متصل به WLAN ، FuncGen را جستجو می کند. وقتی دستگاه Android MAC مطابقت را تعیین می کند ، سعی می کند ارتباط برقرار کند.

اتصال و رسیدگی به حالت - MCU

هنگامی که دستگاه ها با یکدیگر ارتباط برقرار می کنند ، پروتکل (به مرحله قبل نهایی مراجعه کنید) ثابت می ماند و نمودار جریان یکسان است.

نظارت بر وضعیت دستگاه

وقفه به موقع جزئیات لازم برای رسیدگی به وضعیت را به MCU ارائه می دهد. هر چرخه وقفه زمان سنج ، لیست پارامترهای زیر به روز می شود:

  • منبع تغذیه خارجی - روشن/خاموش
  • وضعیت ولتاژ باتری
  • به روز رسانی UI برای هر سفارشی سازی
  • دکمه فشار: فشرده/فشرده نشده

مرحله 9: پیاده سازی نرم افزار - برنامه Android

پیاده سازی نرم افزار - برنامه Android
پیاده سازی نرم افزار - برنامه Android
پیاده سازی نرم افزار - برنامه Android
پیاده سازی نرم افزار - برنامه Android
پیاده سازی نرم افزار - برنامه Android
پیاده سازی نرم افزار - برنامه Android
پیاده سازی نرم افزار - برنامه Android
پیاده سازی نرم افزار - برنامه Android

برنامه اندروید به سبک جاوا-اندروید نوشته شده است. من سعی می کنم آن را به همان شیوه مراحل قبل توضیح دهم - با تقسیم الگوریتم به بلوک های کد جداگانه.

دنباله Power Up

اولین سکانس دستگاه. در اینجا لوگوی برنامه همراه با فعال کردن ماژول های GPS و WiFi دستگاه Android (نگران نباشید ، GPS فقط برای اسکن شبکه های مناسب WiFi مورد نیاز است).

منوی اصلی

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

  1. اتصال مستقیم: راه اندازی اولیه اتصال به FuncGen توسط SSID از IOT_FUNCGEN. در صورت موفقیت آمیز بودن اتصال ، دستگاه در حالت UI اصلی وارد می شود.
  2. WIFI CONNECTION: دستگاه بررسی می کند که آیا پارامترهای داده ذخیره شده در حافظه وجود دارد: wifi.txt ، mac.txt. اگر هیچ داده ای ذخیره نشده باشد ، دستگاه درخواست کاربر را رد می کند و پیام پاپ آپ ارائه می دهد که ابتدا باید جفت شدن WLAN انجام شود.
  3. جفت کردن: برقراری ارتباط با FuncGen همانند اتصال مستقیم ، اما به جای تبادل پیام پیوسته ، تنها یک دست دادن وجود دارد. دستگاه Android بررسی می کند که قبلاً به شبکه WiFi متصل شده است و از کاربر درخواست ورود گذرواژه را می کند. اگر اتصال مجدد موفقیت آمیز باشد ، دستگاه Android SSID و رمز عبور را در فایل wifi.txt ذخیره می کند. پس از ارتباط موفق با FuncGen ، آدرس MAC دریافت شده را در فایل mac.txt ذخیره می کند.
  4. خروج: به اندازه کافی گفته شد:)

مدیر اسکن WiFi

من می خواستم برنامه کاملاً عملیاتی باشد و بدون تنظیمات خارج از برنامه انجام شود. بنابراین ، من اسکنر وای فای را طراحی کردم که تمام عملیات مورد نیاز برای اتصال به شبکه WiFi را با یک رمز عبور و SSID شناخته شده انجام می دهد.

انتقال داده و ارتباطات TCP

این بلوک اصلی کد در برنامه است. برای همه واحدهای رابط کاربری یک پیام تعریف شده در یک قالب خاص (مرحله پیش نهایی) وجود دارد که FuncGen را مجبور می کند خروجی مورد نظر را برای کانال ها ارائه دهد. سه نوع زمینه UI در فعالیت وجود دارد:

  1. جستجوی میله ها: در اینجا ما محدوده واقعی پارامترهای خروجی FuncGen را تعریف می کنیم

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

    1. نوع موج

      1. سینوس
      2. مثلث
      3. DC
      4. مربع
      5. خاموش
    2. گرفتن اطلاعات

      1. وضعیت باتری (درصد)
      2. وضعیت AC (منبع تغذیه خارجی)
    3. گزینه بوت (برای FuncGen MCU)

      1. تنظیمات کارخانه
      2. راه اندازی مجدد
      3. خاموش شدن
      4. مستقیم - راه اندازی مجدد با حالت جفت شدن مستقیم
      5. WLAN - با حالت جفت شدن WLAN راه اندازی مجدد کنید
    4. خروج به منوی اصلی: به اندازه کافی:)

مرحله 10: آزمایش

توصیه شده: