جدید راه اندازی ماژول AD9850 سینتی سایزر دیجیتال
آی سی AD9850 یک تولید کننده شکل موج سینوسی و مربعی با فرکانس متغیره که به صورت ماژول آماده توی بازار پیدا می شه. این آی سی در بهترین حالت می تونه فرکانس تا 125MHz که البته در فرکانسهای بالا ممکنه Duty Cycle 50 درصد نداشته باشه.
این ماژول یک DDS Synthesizer محسوب می شه و برای راه اندازی باید از یک میکروکنترلر استفاده بشه. اگه از آردوینو استفاده می کنین احتمالا کتابخونه آماده براش بتونین پیدا کنین. اما اگه خودتون بخواین برنامه میکرو بنویسین خیلی بعیده بتونین حداقل به زبان فارسی راهنمای مناسبی پیدا کنین. به همین علت راهنمای راه اندازی این ماژول به کمک میکروکنترلر AVR آماده شده و برنامه ش هم به زبان بیسیک تحت کامپایلر BASCOM توضیح داده شده.
بهترین راه برای راه اندازی این ماژول مراجعه به دیتاشیت و بعد مثال های موجود در اینترنته. طبق گفته دیتاشیت باید 5 بایت به ماژول فرستاده بشه. دو راه سریال و موازی برای برنامه ریزی این ماژول وجود داره که در اینجا مد سریال معرفی شده.
اول باید پایه D2 رو به زمین و D0 و D1 رو به vcc وصل کنید. بعد پایه RESET رو به مدت خیلی کوتاه high و بعد low کنید. بعد همین کار رو با پایه W_CLK و بعد با پایه FQ_UD انجام بدید. بعد باید کل 40 بیت داده رو به ترتیب روی پایه DATA قرار بدید. قالب این بیتها به این صورته:
W0 W1 W2 W3 W4 W5 ————- W28 W29 W30 W31 0 0 0 0 0 0 0 0
از بیت اول تا 32 مربوط به فرکانس دلخواه شماست و W0 بیت LSB شماست و اول فرستاده می شه. اول بیت مورد نظر رو تنظیم می کنید و بعد یه پالس روی پایه W_CLK بفرستید. محاسبه این 32 بیت طبق رابطه زیر انجام می شه:
Value = Frequency * 4 294 967 296 / 125 000 000
که فرکانس مورد نظرتون رو به جای Frequency قرار می دین و با تغییر مبنا یک عدد 32 بیتی به دست میارین که بیتهای اونو باید به ترتیب طبق روال بالا به آی سی بفرستین.
دو تا بیت بعدی کنترلی هستند و حتما باید 0 باشند. بقیه بیتها رو هم 0 قرار بدید و با همون روال قبل برای هر کدوم یه کلاک بفرستین. حالا یه پالس دیگه روی FQ_UD بفرستید و دیگه برنامه باید همین جا تموم شه. می تونید نتیجه سینوسی یا مربعی رو با اسکوپ مشاهده کنید.
برای اطمینان بیشتر بین قرار دادن هر بیت روی پین DATA و ارسال کلاک به W_CLK یه تاخیر کوچیک مثلا 10 میکرو ثانیه قرار داده شده.
قابل ذکره که اگه vcc ماژول رو برابر 5 ولت قرار بدید احتمالا دامنه خروجیتون بزرگتر خواهد بود. ولی 3.3 هم می تونید بهش وصل کنید.
برنامه نمونه رو می تونین در زیر مشاهده کنین:
'Project name: ad9850 'Author: Karakit.ir $regfile = "m8adef.dat" $crystal = 8000000 $hwstack = 64 $swstack = 64 $framesize = 64 Config Portb = Output '1: W_CLK 2: FQ_UD 3: DATA 4: RESET Clk Alias Portb.1 Fq Alias Portb.2 Dta Alias Portb.3 Rst Alias Portb.4 Config Watchdog = 512 'از واچ داگ برای ریست شدن میکرو در هر 512 'میلی ثانیه استفاده شده تا در صورت بروز هر اختلالی ماژول متوقف نشه Dim W(40) As Byte Dim I As Byte Dim V As Word Set Rst Waitus 1 Reset Rst Set Clk Waitus 1 Reset Clk Set Fq Waitus 1 Reset Fq For I = 0 To 39 'ابتدا همه بیتها رو صفر می کنیم W(i) = 0 Next I W(24) = 1 'حالا بیتهای مورد نیاز رو 1 می کنیم V = 0 Start Watchdog Do 'حالا همه بیتها رو به ترتیب می فرستیم به ماژول For I = 1 To 40 If W(i) = 1 Then Set Dta Else Reset Dta End If Waitus 10 Set Clk Waitus 1 Reset Clk Next I Set Fq Waitus 1 Reset Fq Do Loop Loop End
برای اینکه فرکانس دلخواه خودتون رو داشته باشین لازمه که بیتها رو مطابق با عددی که از رابطه بدست آوردین تنظیم کنین یا حتی براش یه تابع بنویسین. با اضافه کردن دکمه یا ولوم یا انکدر به مدار و تغییر برنامه هم می تونین یه DDS با فرکانس متغیر داشته باشین.
در صورتی که دامنه ولتاژ خروجی این DDS براتون کافی نیست و یا ممکنه بار جریان زیادی بکشه باید از یک مدار تقویت کننده استفاده کنین که در همین سایت معرفی شده.