ذخیره وضعیت یک موج (لاگ یا رکورد) و بعد تولید همان موج (play یا generate) به روش ارزان

سلام
یک سیگنال که وضعیت ثابتی نداره رو میخوام ذخیره کنم و بعد همون رو دوباره تولید کنم.
اطلاعات اولیه:
1- منظور از اینکه سیگنال شکل ثابتی نداره: مثل موج سینوسی شکلش ثابت نیست یا بهتره بگم مثل شکل موج یک سیگنال موزیک هست.
2- برای ذخیره کردن هیچ محدودیتی نداره یعنی مهم نیست به چه شیوه ای ذخیره بشه. میتونم لاگ بگیرم یا با کامپیوتر ذخیرش کنم.
3- برای تولید دوبارش نیاز دارم هم شکل سیگنال مثل اول باشه هم مقدار ولتاژش
4- مقدار ولتاژ سیگنالم بین 1 تا 20 ولت متغیره
5- میخوام ارزون قیمت باشه اما اگر شیوه هایی میشناسین که گرون هم درمیاد مهم نیست و در جهت آشنایی و الهام گرفتن میتونه کمکم کنه.
6- عمل ذخیره کردن و تولید سیگنال بصورت همزمان نیست. یعنی وقتی که سیگنال رو ذخیره کردم ممکنه بعد یک یا چند روز نیاز بشه تا برای چندین بار تولید بشه.

اگر حداکثر فرکانس سیگنال رو می‌گفتید بهتر میشد راهنمایی کرد اما به عنوان یک راه ساده:
شما باید با ADC یک میکرو از سیگنال مورد نظر نمونه‌برداری کنید (البته قبلش باید با تقسیم مقاومتی سیگنال رو تا سطح ولتاژ رفرنس ADC میکرو پایین بیارید). طبق قضیه‌ی نایکوئیست نرخ نمونه‌برداری باید دو برابر بالاترین مولفه‌ی فرکانسی باشه (البته میتونید با سعی و خطا به مقدار مورد نظر برسید که این بر میگرده به دقت مورد نیازتون).
نمونه‌ها رو میتونید همزمان در یک حافظه ذخیره کنید (SD-card یا فلش). شاید نیاز باشه برای ذخیره‌سازی از دو بافر استفاده کنید (بافر اول توسط ADC پر میشه و بعد بافر دوم شروع به پر شدن میکنه و همزمان بافر اول در حافظه کپی میشه. در سیکل بعد این حالت برعکس میشه).
بعد از ذخیره میتونید با استفاده از واحد DAC میکرو سیگنال رو بازیابی کنید (با همان sample rate نمونه برداری). اگر میکرو واحد DAC نداشت میتونید با استفاده از PWM سیگنال رو بازیابی کنید.
راه دیگه‌ی بازیابی هم میتونه این باشه که نمونه‌ها رو مستقیماً روی (برای مثال اگر نرخ نمونه برداری 8 بیتی بوده) 8 پین GPIO میکرو بریزید و بعد (برای مثال) با نردبان مقاومتی سیگنال دیجیتال موازی رو به سیگنال آنالوگ مورد نظر تبدیل کنید (این راه سریع‌تره اما هم سخت افزار بیشتری نیاز داره و هم به خاطر استفاده از مقاومت دقت کاهش پیدا میکنه).
بعد از اون سیگنال آنالوگ باید به سطح مورد نظر برسه. برای این کار میتونید از یک opamp استفاده کنید. در این حالت ضریب تقویت باید برعکس ضریب تقسیم مقاومتی باشه.
راه دیگه‌ی تقویت میتونه استفاده از یک ترانزیستور سری و کنترل بیس باشه. در این حالت از سیگنال خروجی توسط ADC یک فیدبک میگیرید و اگر مقدار ولتاژ سیگنال کمتر از مقدار مورد نظر باشه ترانزیستور را روشن میکنید و اگر برابر و یا بیشتر از مقدار مورد نظر باشه خاموش میکنید. در این حالت نیازی به DAC و یا نردبان مقاومتی هم ندارید (در این حالت سرعت پایینه بنابراین برای فرکانس‌های بالا این روش کارایی نداره)

2 پسندیده

سلام بر شما
با توجه به اینکه سیگنال موزیک قرار است ذخیره شود - یک ماژول ریکوردر تهیه کنید و موزیک را توسط آن ضبط و سپس فایل ضبط شده را پخش کنید
البته با استفاده از کامپیوتر هم می توانید این کار را انجام دهید و از ورودی Lin استفاده نمایید
ولی در نظر داشته باشید دامنه ولتاژ را با تقسیم ولتاژ در محدوده ورودی سیستم ریکوردر یا کامپیوتر کاهش دهید