AVR DDS SIGNAL GENERATOR
با سلام
این فانکشن ژنراتور خارجی هست:
سورس:
بله
زبان:
سی
میکرو:
atmega16
کریستال:
16MHz
تولید موجهای:
سینوسی
مربعی
مثلثی
دندانه اره ای
دندانه اره ای معکوس
ECG اصطلاحا نوار قلب
نویز بدون قابلیت تنظیم فرکانس
موج TLL فرکانس بالا با فرکانس های 1MHz و 2MHz و 4MHz و 8MHz
رنج فرکانسی:
1 تا 65 کیلو هرتز با دقت 1 هرتز
مود سرعت بالا برای ttl از 1 مگاهرتز تا 8 مگاهرتز ساپورت میکند.
این فانکشن هم دارای 2 خروجی معمولی و سرعت بالا هست.
با شبکه R2R که در واقع دیجیتال به آنالوگ تبدیل میشه و با آیسی LM358N هم مقدار دامنه و آفست تنظیم میکنیم.
حال اصلی ترین ویژگی های این فانکشن را ذکر میکنیم:
مونتاژ راحت و قطعات ارزان
PCB تک رو
دارای منبع تغذیه داخلی و ترانس AC خارجی
خروجی TTL پر سرعت حداکثر تا 8MHZ
قابلیت تنظیم دامنه و آفست
قابلیت تولید موجهای sine, square, saw, rev saw, triangle, ECG, noise
ال سی دی 16 در 2
دارای 5 دکمه کاربری
قابلیت تنظیم فرکانس با پله های 1, 10, 100, 1000, 10000Hz
برگشتن تنظیمات قبلی بعد از تولید موج
حالا بلاک دیاگرام این فانکشن ژنراتور را میبینیم:
مدار به ولتاژهای +5V, -12V, +12V, GND. -12V نیاز دارد که با منبع تغذیه زیر تامین میشود:
همان طور که در شکل زیر مشاهده میکنید پی سی بی منیع تغذیه به صورت جداگانه طراحی و ساخته شده است:
اگر نمیخواهید منبع تغذیه بسازید میتوانید از منبع تغذیه کامپیوتر استفاده کنید
شکل زیر پین های مربوط به هر ولتاژ را نشان داده است:
منوی کنترل ال سی دی:
دکمه های فلش بالا و پایین مربوط به نشان دادن منو هست در حالی که با دکمه های فلش چپ و راست مقدار فرکانس را تغییر میدهید.
وقتی دکمه وسط را میزنید فانکشن شروع به تولید موج میکند و اگر دوباره آن را فشار دهید تولید موج متوقف میشود
نکته مهم منوی جداگانه برای رنج فرکانسی هست (منظورش اینه که آقا شما الان 100 هرتز هستی میخوای بری 50000 هرتز اول میزنی X10000 و بعدش با 5 تا تغییر به 50000 میرسی! مثل همون مولتی مترهای قدیمی که X10 , X100 و ... دارند.
همچنین موج نویز قابلیت تنظیم فرکانس ندارد
خروجی HS هم برای موج TTL با فرکانسهای 1MHZ و 2MHZ و 4MHZ و 8MHZ هست.
خوب حالا به ویژگیهای پی سی بی و برد دستگاه میپردازیم:
راحت مونتاژ کردن از ویژگیهای اصلی هست
میکرو ATMEGA16 و کرستال 16MHZ
ال سی دی استاندارد 2X16 مدل HD44780
استفاده از DAC به روش مقاومت نردبانی R2R
آیسی LM358N که یک آیسی کم قدرت و 2 تا آپ امپ داخلی دارد
2 تا پتانسیومتر
5 دکمه
چند تا کانکشن و سوکت!
نقشه مدار:
پی سی بی تک رو:
استاد EAGLE دوباره استادی کرد!!!
در عکس زیر میبینید که این فانکشن در یک جعبه پلاستیکی گذاشته شده است:
اینم تست عملی فانکشن:
طرف خر پوله! این تست به ما ایرانی ها نیومده با اسکوپ دیجیتال تست کنیم والا استعدادمون از همه دنیا بیشتره و پولمون و فرهنگمون از همه دنیا کمتر! اونایی که پول دارند یا توی این خطها نیستند یا فرهنگ کمونیستی دارند و حاظر نیستند بقیه چیزی یاد بگیرند
اینم تکه کدهای اصلیش که با اجرای خطوط اسمبلی موج را تولید میکند:
void static inline Signal_OUT(const uint8_t *signal, uint8_t ad2, uint8_t ad1, uint8_t ad0){
asm volatile( “eor r18, r18 ;r18<-0″ “\n\t”
“eor r19, r19 ;r19<-0″ “\n\t”
“1:” “\n\t”
“add r18, %0 ;1 cycle” “\n\t”
“adc r19, %1 ;1 cycle” “\n\t”
“adc %A3, %2 ;1 cycle” “\n\t”
“lpm ;3 cycles” “\n\t”
“out %4, __tmp_reg__ ;1 cycle” “\n\t”
“sbis %5, 2 ;1 cycle if no skip” “\n\t”
“rjmp 1b ;2 cycles. Total 10 cycles” “\n\t”
:
:”r” (ad0),”r” (ad1),”r” (ad2),”e” (signal),”I” (_SFR_IO_ADDR(PORTA)), “I” (_SFR_IO_ADDR(SPCR))
:”r18″, “r19″
);}
برای تولید موج در واقع از پترن موج استفاده میکند این پترنها دیتاهاشون رو داخل حافظه فلش میکرو ریخته میشه و بعد همشون LOAD میشه آدرس اولین دیتا در حافظه 0xXX00 هست
کلا 6 تا TABLE هست پس 6 تا سکشن داریم که در زیر تعریف شده اند:
#Define sections where to store signal tables
LDFLAGS += -Wl,-section-start=.MySection1=0x3A00
LDFLAGS += -Wl,-section-start=.MySection2=0x3B00
LDFLAGS += -Wl,-section-start=.MySection3=0x3C00
LDFLAGS += -Wl,-section-start=.MySection4=0x3D00
LDFLAGS += -Wl,-section-start=.MySection5=0x3E00
LDFLAGS += -Wl,-section-start=.MySection6=0x3F00
اینم کدهای کنترل ال سی دی با AVR-GCC
خوب حالا نوبت شکل موج ها هست:
فرکانس خروجی از 0 تا 65535 هرتز
آفست از 0 تا 5 ولت
موج سنوسی
موج مربعی
موج مثلثی
موج دندانه اره ای
موج دندانه اره ای معکوس
موج ECG
نویز
سیگنال فرکانش بالای 1MHZ
دانلودها:
سورس کد
فایل پی سی بی
فایل شبیه سازی پروتئوس