اطلاعیه

Collapse
No announcement yet.

پخش صوت توسط اتصال dac به 8051

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پخش صوت توسط اتصال dac به 8051

    من یه پروژه با 8051 دارم که در بخشی از اون لازمه صوتی رو پخش کنم.من از یه رام اکسترنال برای ذخیره ی داده های صوتی استفاده کردم.
    برای تبدیل صوت به داده، اول فایل مورد نظر رو با فرمت wave و با فرکانس نمونه برداری 8 کیلو هرتز ذخیره کردم و بعد با استفاده از دستور wavread در متلب این صوت رو تبدیل به یه سری داده بین 0 و 255 کردم. بعد یه dac به 8051 متصل کردم و خروجی رو با استفاده از پ امپ تقویت کردم و به یه اسپیکر دادم.(البته در proteus!) برای تست یه برنامه نوشتم و بخشی از داده ها رو با استفاده از DB در رام خود میکرو ذخیره کردم،و هر 125میکروثانیه یه داده رو به dac فرستادم.مشکل اینه که وقتی فایل رو در proteus ران می کنم، از حالت real time خارج می شه و این پیغام خطا رو می ده:
    simulation is not running in real time due to excessive CPU load
    و طبعاً صدای مناسبی هم تولید نمی کنه.
    جالب اینجاست که با بیشتر کردن تاخیر، این مشکل حل می شه ولی خب صدا به هم می ریزه.
    لطفاً راهنماییم کنید.ممنون.

    #2
    پاسخ : پخش صوت توسط اتصال dac به 8051

    برنامه شما سنگینه و پروتئوس نمیتونه اون رو real time اجرا کنه. باید مدار ببندید و در حالت عملی چک کنید.
    منظور من از سنگین بودن برنامه خود برنامه نیست بلکه حجم دستوراتیه که به وسایل خارجی میفرسته.مثلا فرض کنید میکرو دستور روشن خاموش شدن led های یه dot matrix رو بفرسته.اگه فرکانس خاموش روشن شدن led از یه حدی بیشتر بشه پروتئوس اون دستورات رو اجرا میکنه ولی بنا به محدودیت های گرافیکی نمیتونه بصورت real timeروشن خاموش شدن ها رو نشون بده و طوری نشون میده که گویا برنامه پرش داره و از هرچند دستور یکی اجرا میشه ولی در واقع همه دستورات میکرو اجرا میشن و مشکل فقط در نمایشه.مشکل شما هم از همین جنسه و نیاز هست که برنامه رو در عمل تست کنید.موفق باشید.
    افتادگی آموز اگر طالب فیضی هرگز نخورد آب زمینی که بلند است

    دیدگاه


      #3
      پاسخ : پخش صوت توسط اتصال dac به 8051

      ممنون از راهنماییتون.به نظر شما این روش به صورت عملی جواب میده اصلاً؟ برای مدار تقویت کننده و ... ایده ای ندارید که صوت بهتر و بدون نویزی تولید بشه؟من تو شبیه سازی برای تقویت از یه پ امپ ساده استفاده کردم ولی فکر می کنم در عمل لازم باشه یه سری فیلتر هم استفاده کنم.مدار خاصی پیشنهاد می کنید؟

      سوال دیگه ای هم داشتم، من برای تبدیل صوت به فایل wave از نرم افزار adobe audition استفاده کردم که پایین ترین فرکانس نمونه برداری اش 8کیلو بود.از اونجایی که می خوام بتونم مدت زمان بیشتری پخش صوت داشته باشم اگه بشه فرکانس نمونه برداری رو کم کنم خیلی بهتره.برای این کار چه روشی پیشنهاد می کنید؟

      دیدگاه


        #4
        پاسخ : پخش صوت توسط اتصال dac به 8051

        اصولا باید جواب بده.برای تقویت کننده صوتی میتونید از lm386 استفاده کنید.اگه توی سرچ بالای صفحه عبارت lm386 صوت رو جستجو کنید مطالب مفیدی در این مورد پیدا میکنید. از جمله:
        http://www.eca.ir/forum2/index.php?topic=53735.0

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

        دیدگاه


          #5
          پاسخ : پخش صوت توسط اتصال dac به 8051

          ممنون، متاسفانه مجبوریم با 8051 انجام بدیم،چون در صورت پروژه ی درس این طور اومده!! :angry:
          دوستان دیگه هم اگه نظری دارن خوشحال می شم بدونم.

          دیدگاه


            #6
            پاسخ : پخش صوت توسط اتصال dac به 8051

            اقا لطف کن شماتیک روبزار
            ادمهای خوب تو eca خیلی پیدا میشه

            دیدگاه


              #7
              پاسخ : پخش صوت توسط اتصال dac به 8051

              سلام،
              من حدود 10 سال پیش همین پروژه شما رو با کمی تفاوت انجام دادم و بعد کاملا سخت افزاری پیادش کردم و جواب هم گرفتم.
              من از فرمت wave استفاده نکردم، از ADPCM استفاده کردم البته اون موقع تا 2 بیتی بیشتر نبود و من یک بیتیش رو پیاده سازی کرده بودم، هنوزم فکر نکنم کد یک بیتیش گیر بیاد، اما میتونید توی opencores.org کد VHDL ی که گذاشتم رو ببینید و برنامه کدکش رو هم دانلود کنید. این ADPCM 1 بیتی برای هر سمپل صدا یک بیت لازم داره و من از یک E2Prom 64 کیلو بیتی استفاده کرده بودم و مثل شما 8000Hz پخش میکردم، البته 8 ثانیه. همون 125 میکرو ثانیه بود و مشکلی هم نداشتم. در مورد پروتئوس، فکر کنم اگه توی task-manager تنظیم set priority اون رو روی real-time بذارید کار کنه. البته از پروتئوس همیچین انتظاری هم نمیشه داشت چون هرچی باشه فقط یک شبیه ساز بیشتر نیست و نمیشه 100 در صد روش جواب گرفت. اما مطمئن باشید که با سمپل ریت 8 کیلو کاملا درست کار میکنه.
              اسمایل، تومورو ویل بی وُرس

              دیدگاه

              لطفا صبر کنید...
              X