STM32, پروژه, پروژه های سیسوگ, توصیه شده, کتابخانه برنامه نویسی, مقاله

همه چیز درباره دیکد نرم‌افزاری MP3 به کمک میکروکنترلر – سورس کد – شماتیک

مقدمه

 

در مقاله‌ی پیشین (فایل MP3 چیست و از کجا آمده است)، به چگونگی پیدایش فایل های MP3  ، مزیت‌ها و قابلیت‌های آن پرداختیم. در این مقاله قصد داریم که ساز و کار و نحوه دکد و پخش فایل های MP3 را تشریح کنیم. همانطور که در مقاله‌ی قبلی اشاره شد، فایل mp3 بر خلاف فایل های wav جهت کاهش حجم فایل صوتی، دست به فشرده‌سازی و رمزگذاری صدا می‌زند و آن را به بخش‌ها‌ی کوچکی که فریم نام دارد می‌شکند.

برای این که بتوانیم خروجی مناسب صوتی داشته باشیم؛ باید قادر باشیم که فریم‌های مجزا را در زمان مناسبی از حالت فشرده خارج کنیم و برای پخش به واحد دیجیتال به آنالوگ بفرستیم و هیچ وقفه‌ای هم نباید وجود داشته باشد تا قعطی و پرش در صوت ایجاد نشود. با توجه به قابلیت‌ها‌ی میکروکنترلر‌ها‌ی قدیمی، این امکان وجود نداشت؛ چرا که به دلیل محدودیت‌ها‌ی حافظه و پردازشگر، سرعت تبدیل فریم‌ها به فایل خام، پایین‌تر از بیت‌ریت پخش صوت بود و همین امر باعث می‌شد که این نوع میکروکنترلر‌ها قادر به پخش این‌گونه فایل ها نباشند. برای رفع این نقص، شرکت‌ها‌ی تولید کننده چیپ، دست به کار شدند و دکدر سخت افزاری خود را وارد بازار کردند. اغلب استفاده کننده‌ها برای پخش فایل‌های صوتی با فرمت MP3 دست به دامن این گونه چیپ‌ها می شدند.

یکی از شرکت‌های شناخته‌شده در خصوص تولید چیپ های دکدر، شرکت VLSI است که به واسته چیپ VS1003 در ایران محبوبیت زیادی پیدا کرد. با استفاده از این چیپ، پخش‌کننده همراه و غیرهمراه بسیاری طراحی شد.

به عنوان نمونه عکس زیر که به کمک همین چیپ و میکروکنترلر AVR ، یک پخش‌کننده MP3 قابل‌حمل ساخته شده است.

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

تا این که میکروکنترلرهای ARM معرفی شدند که علاوه بر مصرف پایین، سرعت پردازشی به مراتب بالاتر داشتد. میزان حافظه و سرعت پردازش بالای این خانواده از میکروکنترلر، امکان دکد و پخش مستقیم فایل mp3 را ایجاد کرد؛ به نحوی که برای دکد و پخش، نیاز به هیچ المان خارجی نباشد و تمام فرایندها در درون خود میکروکنترلر میسر باشد.

 

 

استخراج فریم‌ها

تا اینجا با ساختار کلی فایل MP3 آشنایی پیدا کردیم. برای شروع فرایند دکد و پخش، اولین قدم پیدا کردن فریم‌ها و استخراج آن‌ها از فایل است. همان‌طور که می‌دانید یک فایل MP3 از مجموعه‌ای از فریم‌های صوتی تشکیل شده است.

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

هر فریم دارای جزئیات فوق است که 32 بیت (4 بایت) اول اطلاعات سینک و هدر را در خود دارد. 16 بیت (2 بایت) بعد، حاوی اطلاعات اعتبار سنجی است که به صورت اختیاری است، یعنی ممکن است وجود نداشته باشد.  136/256 بیت بعدی حاوی اطلاعات مربوط به کانال صوتی است؛ (همان‌طور که میدانید یک فایل صوتی ممکن است منو یا استریو باشد) و مابقی داده‌ها مربوط به داده‌های صوتی است.

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

دکد Mp3 – رمز‌گشایی هدر MP3

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

AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM

  •  11 بیت (A)  (از بیت 21 تا 31) : بیت‌های شناسایی (همه 1 هستند) که برای تشخیص شروع یک فریم به کار برده می‌شوند.
  • 2 بیت (B) (بیت 20 و 19) : ورژن هدر که حاوی 4 حالت است:
    • 00 – MPEG Version 2.5
    • 01 – reserved
    • 10 – MPEG Version 2
    • 11 – MPEG Version 1
  • 2 بیت (C) (بیت 18 و 17): توضیح دهنده لایه:
    • 00 – reserved
    • 01 – Layer III
    • 10 – Layer II
    • 11 – Layer I
  • 1 بیت (D) (بیت 16): بیت اعتبار‌سنجی
    • 0 : قسمت CRC وجود خواهد داشت.
    • 1 : قسمت CRC وجود نخواهد داشت.
  • 4 بیت (E) (از بیت 12 تا 15) : بیت‌ریت خروجی (مطابق جدول زیر)

  • دو بیت (F) (بیت 10 و 11) : سمپل‌ریت مطابق جدول زیر.

  • بیت (G) (بیت شماره 9) : Padding bit
    • 0 – frame is not padded
    • 1 – frame is padded with one extra slot
  • بیت (H) (بیت 8) : Private bit. This one is only informative.
  • 2 بیت (I) (بیت 6 و 7) : Channel Mode
    • 00 – Stereo
    • 01 – Joint stereo (Stereo)
    • 10 – Dual channel (2 mono channels)
    • 11 – Single channel (Mono)
  • 2 بیت (J) (بیت 4 و 5) : Mode extension (Only used in Joint stereo)
  • بیت (K) (بیت 3) : Copyright
    • Audio is not copyrighted
    • Audio is copyrighted
  • بیت (L) (بیت 2) : Original
    • 0 – Copy of original media
    • 1 –  Original media
  • 2 بیت (M) (بیت 0 و 1) : Emphasis

 

بعد از چهار بایت توصیف‌کننده هدر، بنا به وضعیت بیت D در این توصیف‌کننده، ممکن است که یا 2 بایت CRC وجود داشته باشد یا نه. بعدازاین دو بایت اختیاری، طبق فریم که تک کانال باشد یا دو کانال (دو بیت 6, 7)، 17 یا 32 بایت اطلاعات مربوط به کانال‌ها وجود خواهد داشت و بعدازآن داده‌های صوتی قرار خواهند داشت. دقت داشته باشید در شرایط خیلی نادر ممکن است که فریم دارای داده‌های صوتی نباشد. در عکس زیر یک فریم را درون یک فایل MP3 مشخص کرده‌ایم که 4 بایت قرمزرنگ، هدر و 32 بایت آبی‌رنگ، اطلاعات کانال می‌باشد. بقیه‌ی بایت‌ها هم داده‌های صوتی هستند. توجه داشته باشید که بایت‌های مربوط به خطایابی وجود ندارند.

 

دکد Mp3 – رمز‌گشایی داده‌ها‌ی صوتی

برای رمزگشایی داده‌های موجود در این قسمت اول لازم است با الگوریتم هافمن آشنایی داشته باشیدِ؛ روش کدگذاری هافمن یک روش فشرده‌سازی داده است که توسط دیود هافمن پایه‌گذاری شد. در روش هافمن داده‌ها 20 الی 90 درصد فشرده می‌شوند. در الگوریتم هافمن از ساختمان داده‌ی صف اولویت استفاده می‌شود. توضیح نحوه‌ی عملکرد الگوریتم هافمن در این مقاله نمی‌گنجد و علاقه‌مندان جهت یادگیری می‌توانند به وب‌سایت های مربوطه مراجعه کنند.

برای دکدینگ این قسمت همان‌طور که در عکس مشخص شده است، باید از درخت هافمن استفاده کنید.

 

نحوه ساخت یک ماژول MP3 Player

توضیح سخت‌افزار

همان‌طور که در تصویر زیر مشخص شده است، سخت‌افزار مورداستفاده جهت دکد فایل MP3، یک سخت‌افزار بسیار ساده است که جزء اصلی آن را یک میکروکنترلر STM32F103RET تشکیل داده است. تمام اتفاقات درون میکروکنترلر رخ می‌دهد.

برای تبدیل داده‌های دیجیتال از مبدل‌های دیجیتال به آنالوگ (DAC) داخلی میکروکنترلر استفاده شده که قادر است نرخ یک مگاسمپل بر ثانیه و دقت 12 بیت را ارائه نماید. کارت حافظه هم با استفاده از رابط SPI به میکروکنترلر وصل شده است. درواقع تلاش شده که تا جای ممکن مدار، ساده و قابل‌فهم باشد.

نرم‌افزار

نرم‌افزار توسط کامپایلر کیل نوشته شده و قادر است فایل‌های MP3 تا بیت ریت 320 کیلو و فایلهای Wav را تا بالاترین بیت‌ریت ممکن پخش نماید. برای سرعت عمل بیشتر در دکد فایل‌های MP3، بخشی از کد به زبان اسمبلی نوشته شده است. تا حد ممکن سعی شده که از منابع موجود بهترین استفاده برده شود. برای انتقال داده‌های صوتی به مبدل‌های DAC، از واحد DMA استفاده شده تا CPU کمترین درگیری را در این انتقال داشته باشد.

مطابق برنامه‌ی فوق، بعد از نصب و پیکربندی کارت حافظه، برنامه ابتدا به دنبال فایل start.mp3 درون کارت حافظه می‌گردد. در صورت وجود چنین فایلی آن را اجرا کرده و بعد از اتمام، به دنبال فایل start.wav می‌گردد تا آن را پخش نماید.

شما به‌راحتی با اضافه کردن توابع و بخش‌های موردنظر خود، می‌توانید این کد را تبدیل به یک Mp3 Player  همراه کنید.

 

دانلود سورس کد دکدر MP3

Sisoog_STM32_Mp3Player (4362 دانلود ها)

دانلود فایل PDF این متن

PDF ساخت MP3 Player (639 دانلود ها)

 

نوشته های مشابه

38 دیدگاه در “همه چیز درباره دیکد نرم‌افزاری MP3 به کمک میکروکنترلر – سورس کد – شماتیک

  1. دانیال گفت:

    سلام وقت بخیر ، ظاهرا لینک دانلود سورس کد خرابه

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      هم اکنون دو لینک موجود در پست چک شد و مشلی مشاهده نشد.

  2. احسان عسگری گفت:

    سلام
    با تشکر از مطالب خوب و کاربردیتون
    من پروژه رو مطابق شماتیک بستم
    اما پیغام زیر رو میده
    àZeus@sisoog.com
    Play:start.mp3
    –Faild
    Try Play:start.wav –Faild
    فرمت میکرو اس دی fat32 هستش
    و داخل اون هم فرمت wav هستش و هم mp3

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      اول این که اسم فایل ها رو باید start.mp3 و start.wav بگذارید
      فایل های mp3 تا بیت ریست 128 کیلو پشتیبانی میشه
      به غیر از این دو مساله – نکته دیگه ای وجود نداره ، فقط ممکنه قسمت sd کارت درست نباشه و فایل sd رو نشناسه

  3. علی گفت:

    درود بر شما مهندس
    من یه مشکلی با رنگ نوشته های سایت دارم خیلی کم رنگ هست وبیشتر وقتها خواندن مطالب سخت هست البته نمیدونم شاید چون با موبایل وارد سایت میشوم اینطوری هست!
    در هر صورت مطالب سایت شما واقعا غنی میباشد.

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیزم
      ممنونم برای نظر سازنده شما ، تا حالا به این موضوع دقت نکرده بودیم ، توی موبایل نوشته های سیاه کامل نیستند و بیشتر خاکستری هستند ، این موضوع رو بررسی و رفع خواهیم کرد.
      انتقادات و نظرات شما ، باعث دلگرمی و ارتقاء ما خواهد شد.

      1. محمد گفت:

        بله، کلا رنگ متن های اصلی سایت خاکستریه که یه مقدار خواندنو سخت می کنه. چه با موبایل و چه با کامپیوتر. اگر رنکشو مثل رنگ همین کامنت در حین نوشتن مشکی کنید خیلی بهتره.
        سپاس بابت زحماتتون در این سایت خوب

        1. زئوس Zeus زئوس Zeus گفت:

          سپاس دوست عزیز – حتما این مساله رو بررسی و رفع خواهیم کرد.

  4. علی گفت:

    سلام
    خیلی عالی بود اگه میشه لطف کنید درباره ی اینکه چطور mp4 رو میشه دیکد کرد توضیح بدید

    1. زئوس Zeus زئوس Zeus گفت:

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

  5. اسی گفت:

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

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      بله هر دور DAC فعال است که برای پخش صوت های stereo لازم است که دو کانال چپ و راست را به صورت مجزا پخش نماییم ؛ در واقع یعنی همون دو صوت مختلفی که فرموردید
      خوب توابع HAL به لحاظ پرفرمنسی مقداری کند هستند البته نمی دونم سرعت لازم برای این برنامه رو فراهم می کننده یا خیر
      متاسفانه فرصت چنین کاری رو فعلا نداریم !

      1. اسی گفت:

        من میخوام این برنامه رو با توابع hal بنویسم , اگر موفق بشم در اختیارتون قرار میدهم که در سایت قرار دهید . فقط یه لطفی کنید کتابخانه ها را به ایمیلم بفرستید که من بتونم روش کار کنم ./ البته برنامه رو دانلود کردم کتابخانه ها رو دیدم ولی متوجه نشدم کدوم برای cimsis میباشد . و کدوم برای دیکدmp3نوشته شده است
        با تشکر فراوان

        1. زئوس Zeus زئوس Zeus گفت:

          بسیار عالی ، کل سورس کد برنامه توی دسترس قرار داره و به راحتی میتونید از توی سایت دانلود کنید.
          از طریق فولدر بندی به راحتی مشخص هست توابعی که مربوط به دکد mp3 هست
          اگر سوالی بود – حتما مطرح کنید.

  6. علی زارع گفت:

    سلام
    میشه لطف کنید یه کم درباره ی دیکد کردن فایل های ویدئویی مثل mp4 h264 توضیح بدید

    1. زئوس Zeus زئوس Zeus گفت:

      کدک h264 یه کدک سنگین هست که فکر نمیکنم دکد اون با ریت بالا از عهده یه پردازنده M4 هم بر بیاد
      معمولا برای دکد این کدک های پیچیده ، از واحد های سخت افزاری استفاده می کنند
      شاید با سری های M7 چنین امکانی وجود داشته باشه که واحد Jpeg رو به صورت داخلی پشتیابنی می کنند.

  7. سینا ج گفت:

    سلام
    خیلی ممنون بابت پست های عالی ای که میذارید!
    یک سوال داشتم!
    من در حال حاضر دارم از لینوکس با توزیع debian استفاده میکنم. تونستم با موفقیت STM32Cube و gcc arm و پکیج های مورد نیاز برای کامپایلر رو نصب کنم. اما نمیدونم از چه IDE برای برنامه نویسی استفاده کنم (طبق پرس و جو هایی که کردم گفتن Eclipse خوبه اما نمیدونم از کجا باید دانلود کنم) و چطور تنظیمش کنم که به کامپایلر لینک بشه. همچنین نمیدونم برای ارتباط STLink با لینوکس باید درایوری نصب کنم یا نه. اگر ممکنه راهنمایی کنید. ممنون.

    1. زئوس Zeus زئوس Zeus گفت:

      سلام و درود خدمت شما دوست عزیز
      خوب برای نصب Eclipse دو راه هست یکی این که از مخازن debian استفاده کنید که معمولا ورژن های قدیمی قابل نصب هستند از این طریق ، و یا این که اخرین ورژن رو دانلود کنید و با استفاده از Openjre نصب کنید ، از اونجایی که STM32Cube رو باز کردید پس ابزار Open-jre بر روی سیستمتون نصب هست.
      برای دانلود آخرین ورژن Eclispe می تونید به این آدرس مراجعه کنید. فقط دقت داشته باشید اگر با لینوکس برید لینک دانلود لینوکسی بهتون میده و این که حتما ورژن C/C++ رو دانلود کنید.
      بعد از حالت فشرده خارج کنید و اجرا کنید به همین راحتی
      برای استفاده از ابزار های Programmer می تونید از Openocd استفاده کنید که تقریبا همه پروگرامر های موجود را پشتیبانی میکنه.
      اگر سوالی بود باز مطرح کنید حتما

      1. سینا ج گفت:

        آهان. ممنون از جوابتون. خودم یکم تحقیق کردم و دیدم شرکت st یه ide برای لینوکس تولید کرده به اسم system workbench که الان آخرین نسخش ۶ هست (البته دقیق نمیدونم خود st تولید و طراحیش کرده باشه یا نه ولی همه جاش لوگوی شرکتشون هست).اون رو نصب کردم و داخل خودش toolchain های آرم رو هم داشت و با موفقیت کد رو کامپاید و با stlink آپلود کرد. احتمالا وقتی رفتم سراغ lpc دوباره بیام دنبال نصب eclipse … بازم ممنون از کمکتون.

        1. زئوس Zeus زئوس Zeus گفت:

          خواهش میکنم ، خوب ادیتور ارائه شده از سمت شرکت ST پایه Eclipse هست و یه سری تنظیمات و شخصی سازی ها برای سادگی کار انجام دادن
          فکر کنم شرکت NXP هم همین کارو کرده و اونم ادیتوری با همین شکل داده باشه
          ولی اگر از Eclipse استفاده کنید ، قادر به کامپایل برای تمام خانواده آرم هستید.

  8. محمد گفت:

    فقط احتمالا برای حمل بر روی میکروی M4 شاید نیاز باشه برخی بخش ها رو که اسمبلی نوشته شده باز نویسی کنید.
    =============
    درود بر شما
    دقیقا مشکل من هم همین قسمت هستش.الان اگه کد اصلی رو از helix دانلود کنم کد اسمبلی دارن یا نه؟ اصلا این کدی که به صورت اسمبلی نوشته شده مربوط به چه قسمتی هستش .
    با تشکر

    1. زئوس Zeus زئوس Zeus گفت:

      خوب دوست عزیز ، من کمی اینترنت رو جستجو کردم ، خوشبختانه این همین کتابخونه برای میکروی 407 موجود هست و میتونید از این لینک دانلود کنید.
      خوب البته برنامه با GCC نوشته شده 🙂
      قسمتی که اسمبلی نوشته شده برای دکد هافمن هست و برای سرعت بالاتر با اسمبلی باز نویسی شده ، فکر کنم سورس اصلی به زبان سی موجود باشه ولی دقت داشته باشید ممکنه سورس سی سرعت لازم برای پخش بدون وقفه رو نداشته باشه ، و باز ممکنه توی میکروی 407 مشکل سرعت وجود نداشته باشه.
      اگر موفق شدید دانسته هاتون رو با ما به اشتراک بذارید.

  9. محمد گفت:

    درود
    کیفیت صدای ایجاد شده از این mp3 پلیر اونهم با dac 12 بیت خود میکرو چطور هست یعنی میتونه آهنگای با کیفیت 320 رو هم پخش کنه.راستی امکانش هست این برنامه رو روی میکروی stm32f205 یا stm32f405 با همین سورس کد اجرا کرد.

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      دقت 12 بیت ، برای صوت دقت خوبی هست و شاید هر کسی قادر به شناسایی اختلاف بین 16 بیت و 12 بیت نبااشه ، در ضمن بیشتر صوت های موجود 8 بیتی هستند.
      این کد با بیت ریت 320 مشکلی نداره و به خوبی کار میکنه ، تا اونجا که خاطرم هست و این که وقتی این کد با میکروی 103 داره کار میکنه به راحتی قادره توی سری های بالاتر اجرا بشه و مشکلی وجود نداره ، فقط احتمالا برای حمل بر روی میکروی M4 شاید نیاز باشه برخی بخش ها رو که اسمبلی نوشته شده باز نویسی کنید.

  10. سجاد گفت:

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

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      با توجه به فشردگی کار ها متاسفانه امکانش برامون فراهم نیست ، ولی اگر قصد دارید از این پروژه توی پروژه ای که از HAL استفاده می کنید بهره ببرید میتونید کتابخونه های مورد نیاز رو به پروژتون اضافه کنید فکر نمیکنم مشکلی پیش بیاد.

  11. سجاد گفت:

    یه سوال اگر بخوام یک دفعه وسط پخش آهنگ پخش قطع شه و یک شماره اعلام کنم و آهنگ رو از ادامه پخش کنم چطوری باید عمل کنم ؟
    یعنی مثل توی آسانسور که آهنگ داره میخونه شماره اعلام میشه و بعد دوباره ادامه آهنگ رو میخونه

    با سپاس فروان و آرزوی موفقیت برای تیم سیسوگ

    1. زئوس Zeus زئوس Zeus گفت:

      به چند روش میشه انجام داد این کارو !
      روش پیشنهادی من اینه که از یه کانال دیگه برای پخش شماره ها استفاده کنید ، بعد خروجی ها رو با هم میکس کنید که صدای اعلام گر بر روی صدای موزیک بیفته
      البته راه دیگه ای هم هست و اون این که پخش mp3 رو که با یه تایمر زمان بندی شده متوقف کنید و صوت مورد نظرتون رو پخش کنید بعد دوباره تایمر رو اجرا کنید.
      اگر شماره ها به صورت Wav ذخیره شده باشند آسون تره ولی اگه mp3 باشن ، باید موقعیت موزیک در حال رو ذخیره کنید ، بعد دوباره از همون محل شروع به پخش کنید ، قبلا توضیح دادیم که فایل فریم فریم هست ، شماره فریم جاری رو ذخیره می کنید ، فایل مورد نظرتون رو پخش می کنید ، دوباره از همون فریم پخش رو ادامه می دهید.

  12. بهروز گفت:

    ممنون عالی بود

    1. زئوس Zeus زئوس Zeus گفت:

      خواهش میکنم دوست عزیز

  13. Sajjad Azadfalah سجاد گفت:

    یه سوال آیا خروجی ما در اینجا فقط حاوی نیم موج مثبته ؟ نمیشه هر دو نیم موج رو داشت ؟

    1. زئوس Zeus زئوس Zeus گفت:

      خیر، خروجی به صورت تمام موج هست ، در واقع برای این که تمام موج رو داشته باشیم ما ولتاژ 1.65 رو به عنوان صفر در نظر گرفتیم که ولتاژ خروجی به صورت تمام موج وجود داشته باشه
      و برای حذف ولتاژ DC از یک خازن استفاده میکنیم

      1. Sajjad Azadfalah سجاد گفت:

        خوب اگر بخوام نیم موج منفی رو هم داشته باشم باید با یک OPAMP ولتاژ رو شیفت بدم درسته ؟ راه دیگه ای نیست ؟

        1. زئوس Zeus زئوس Zeus گفت:

          نه دوست عزیز نیازی نیست ! اگر قصد تقویت سیگنال رو داشته باشید نیاز به آپمپ هست
          در غیر این صورت خروجی DAC شکل موج کامل رو خواهد داشت
          روی این لینکخروجی DAC موج سینوسی کلیک کنید.

          1. Sajjad Azadfalah سجاد گفت:

            خیلی ممنون من میدونم خروجی نیم موج منفی رو با آفست میبینیم اما من میخوام نیم موج منفی واقعا منفی باشه نمیدونم میتونم درست منظورم رو برسونم

          2. زئوس Zeus زئوس Zeus گفت:

            ببینید بعد از خازن همونطور که توی شماتیک هست ، واقعا نیم موج منفی خواهید داشت. یعنی ولتاژ منفی وجود خواهد داشت.
            میتونید با اسیلوسکپ چک کنید.

  14. Sajjad Azadfalah سجاد گفت:

    مرسی مرسی عالی بود

    1. زئوس Zeus زئوس Zeus گفت:

      خواهش میکنم دوست عزیز

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *