ضبط و پخش دیجیتال صدا با آی سی ISD25120 توسط AVR

ضبط و پخش دیجیتال صدا

در این بخش دانلود پروژه ضبط و پخش دیجیتال صدا با آی سی ISD25120 توسط میکروکنترلر AVR, توسط تیم الکترونیک و برنامه نویسی الکترونیک ۹۸ برای شما علاقه مندان به پروژه های میکروکنترلر AVR آماده شده است. در بسیاری از دستگاه های الکتریکی و الکترونیکی به ضبط صدا یا پخش پیغام های ضبط شده نیاز داریم. به دلایل گوناگونی امکان ضبط این پیغام ها رو ادوات مغناطیسی وجود ندارد, بنابراین باید آن ها را روی تراشه الکترونیکی ذخیره کنیم که با این هدف ساخته شده اند.

اساس عملکرد این تراشه ها بر نمونه برداری دیجیتال از سیگنال آنالوگ صوت, استوار است. هر چه میزان این نمونه برداری در واحد زمان بیشتر باشد, کیفیت صدای ضبط شده بیشتر و سیگنال بازسازی شده به نمونه طبیعی شبیه تر خواهد بود. البته ملاحظاتی نیز وجود داردپند که افزایش میزان نمونه برداری را محدود می کنند. در این پروژه به شرح اساس ضبط دیجیتال صدا و معرفی شناخته شده ترین تراشه های موجود می پردازیم.

ضبط و پخش دیجیتال صدا با آی سی ISD25120 توسط AVR

معرفی تراشه های ضبط و پخش صدا

شرکت های سازنده گوناگونی, به ارائه تراشه های ضبط و پخش صدا می پردازند. از این میان, شرکت Winbond با ارائه چند خانواده مهم از این تراشه ها برای کاربران شناخته شده تر است. ما نیز به معرفی چند خانواده از همین سازنده بسنده خواهیم کرد و سپس به شرک عملکرد پروژه که مبتنی بر آی سی ضبط صدا ISD25120 از همین شرکت است، می پردازیم. تراشه های ضبط و پخش صدا را اصطلاحا Voice Recorder یا Chip Corder می نامند. وجه تمایز این تراشه ها, مدت زمان ضبط صدا, فرکانس نمونه برداری, روش آدرس دهی و ترکیب پایه های خروجی آن ها است.

معرفی آی سی ISD25120 از خانواده ISD2500

در دسته تراشه های ISD2500, زمان ذخیره سازی صدا از 16 تا 120 ثانیه قابل دسترسی است و به روش موازی آدرس دهی می شوند. Chip Corder های نسل ISD2500 شرکت Winbond, ظرفیت ذخیره سازی 32 تا 120 ثانیه با کیفیت بالا را برای کاربردهای پیغام گذاری دارند. این تراشه های CMOS, حاوی نوسان ساز, پیش تقویت کننده میکروفون, AGC, فیلتر, تقویت کننده بلندگو و آرایه ذخیره سازی چند لایه پرچگال می باشند.به علاوه, این خانواده برای آدرس دهی و کنترل با میکروکنترلرها سازگار (Compatible) شده است.

پیغام ها در یک حافظه غیر فرار داخلی ذخیره می شوند و ذخیره سازی پیغام را به صورت Zero-Power فراهم می کنند. این امر منحصر به فرد, توسط فناوری ذخیره سازی چند لایه, که انحصار آن در اختیار شرکت Winbond است, ممکن می شود. صداها به صورت مستقیم و به شکل طبیعی در حافظه جا می گیرند و بازسازی را با کیفیت بالا فراهم می کنند.

ویژگی های Chip Corder های خانواده ISD2500 عبارتند از:

:: تغذیه 5 ولت تکی

:: سهولت استفاده و ضبط و پخش صدا

:: بازسازی طبیعی صدا با کیفیت بالا

:: سازگار با میکروکنترلر یا دیپ سوئیچ

:: فعال سازی پخش به صورت حساس به سطح یا لبه

:: قابلیت آبشاری کردن (Cascade) چند تراشه برای بالا بردن زمان ضبط

:: حالت توان پایین خودکار

:: حذف مدار باتری پشتیبان

:: آدرس دهی کامل برای دسترسی به چندین پیغام

:: نگهداری پیغام ها به مدت 100 سال

:: قابلیت 100 هزار بار عمل ضبط

:: منبع کلاک داخلی

:: در دسترس بودن بسته بندی های PDIP, SOTC, TSOP

نقشه شماتیک پروژه ضبط و پخش دیجیتال صدا

در این پروژه، از تراشه ISD25120 که توانایی ذخیره 120 ثانیه پیغام را دارد، استفاده کرده ایم. کنترل و آدرس دهی این تراشه به طور کامل با میکروکنترلر ATmega8L خانواده AVR انجام می شود. اجرای عملیات ظبط و پخش و آدرس دهی توسط صفحه کلید کامپیوتر و دو دکمه فشاری صورت می گیرد.

از Chip Corder در حالت عادی خود استفاده شده است. در این حالت، پایه های آدرس به منظور آدرس دهی در عمل ضبط یا پخش به کار گرفته می شوند. برای آدرس دهی، از هر 10 پایه آدرس استفاده شده است. به این ترتیب دسترسی به هر 600 واحد حافظه با رزولوشن 200 میلی ثانیه امکانپذیر خواهد شد.

از پالس پایه EOM به عنوان وقفه سخت افزاری Int0 استفاده کرده ایم. همان طور که از پیش می دانیم، این پالس پایان یافتن هر پیغام را گزارش می دهد. از طرفی هنگام سرریز شدن حافظه، پایه OVF صفر می شود. این پالس نیز به وقفه سخت افزاری Int1 خواهد رفت. با این حال، از آنجا که قصد داریم از وقفه Int1 برای عملیات ضبط نیز استفاده کنیم. از یک گیت NAND استفاده کرده و دو پالس پایین رونده را به ورودی آن داده ایم. با آمدن هر کدام از پالس ها، خروجی گیت NAND یک می شود و برنامه میکروکنترلر به زیر روال وقفه یک پرش می کند. در زیر روال وقفه یک، تشخیص داده می شود که کدام یک از رخدادها اتفاق افتاده است، سپس فرآیند مربوط به همان رخداد اجرا می شود.

نقشه شماتیک پروژه ضبط و پخش دیجیتال صدا

شرح عملکرد پروژه ضبط و پخش دیجیتال صدا

در مدار پروژه حاضر، از دو عدد دکمه فشاری و صفحه کلید کامپیوتر برای پخش یا ضبط استفاده شده است. ابتدا باید پیغام خود را در آدرس دلخواه از 600 واحد حافظه تراشه ISD25120 ذخیره کنیم. سپس برای بازخوانی آن پیغام به همان آدرس قبلی برویم و عملیات پخش را اجرا نماییم.

با فشار دادن دکمه B1 وارد سیکل ضبط می شویم. اکنون به انتخاب واحد حافظه ای که می خواهیم عمل ضبط از آنجا آغاز شود، می پردازیم. عددی بین 0 تا 599 را از روی صفحه کلید کامپیوتر وارد می کنیم و کلید Enter را فشار می دهیم. سپس برای آغاز عملیات ضبط دکمه B1 را فشار می دهیم و تا پایان سیکل ضبط آنرا نگه می داریم.

با رها کردن این دکمه و High شدن PB0 عمل ضبط پایان می یابد. اگر پیش از رها شدن دکمه B1 حافظه تراشه پر شود و پالس سرریز اتفاق بیفتد، پیغام ضبط و آی سی ریست می شود. برای پخش مجدد پیغام ضبط شده، کافی است شماره واحد حافظه ای که عمل ضبط را از آن آغاز کرده ایم وارد کنیم. پس با زدن کلید Enter همان پیغام از بلندگو پخش خواهد شد. بی تردید ضبط هر پیغام یا موزیک جدید از یک آدرس، باعث پاک شدن پیغام قبلی به صورت خودکار خواهد شد.

برنامه میکروکنترلر در محیط نرم افزار Bascom AVR

شرح برنامه میکروکنترلر به زبان بیسیک

در این پروژه، برنامه میکروکنترلر برای ATmega8L و در محیط کامپایلر Bascom AVR نوشته می شود و حاوی 1970 بایت کد Hex است که در حافظه فلش میکروکنترلر Program می شود. وقفه Int0 از نوع پایین رونده و وقفه Int1 از نوع بالا رونده است. همانگونه که پیش از این دیدیم، پالس پایین رونده EOM به Int0 و خروجی گیت NAND به Int1 می رود. با استفاده از گیت NAND دو وقفه غیر همزمان را به وقفه سخت افزاری Int1 اعمال می کنیم. این دو وقفه عبارتند از: پالس پایین رونده OVF که نشان دهنده سرریز شدن حافظه است و پالس پایین رونده ناشی از دکمه B1 که نشان دهنده آغاز فرآیند ضبط می باشد.

در زیر روال وقفه Int1 این نکته بررسی می شود که PB1 صفر است یا خیر. در صورتیکه این پایه صفر پاشد، مشخص است که دکمه B1 فشار داده شده و در غیر اینصورت سرریز اتفاق افتاده سات. در حالت اول سیکل، متغیر B1 معادل یک می شود و در حالت دوم آن Chip Corder ریست می شود. برای این منظور ابتدا PD4 صفر می شود. این پایه به CE وصل است و آن را Low می کند. پس از 2 میلی ثانیه این پایه به حالت خود باز می گردد و OVF را High می کند. سپس PD1 یک می شود و آی سی به حالت مصرف توان کم می رود. در این هنگام اشاره گر آدرس به ابتدای حافظه باز می گردد. با توجه به تعاریف اولیه برنامه، مشخص است که پایه کلاک کانکتور صفحه کلید به PD7 و پایه دیتای آن به PD6 متصل است.

فرآیند کامل سیکل ضبط را در این برنامه دنبال می کنیم. ابتدا دکمه B1 فشار داده می شود و یک پالس به Int1 می دهد. زیر روال این وقفه B5=1 می شود. اکنون شماره واحد حافظه ای را که می خواهیم عمل ضبط را از آنجا آغاز کنیم، از صفحه کلید کامپیوتر وارد می کنیم. بنابراین برنامه از دستور Getakbd خارج می شود و بررسی می کند که آیا کلید فشار داده شده Enter بوده است یا خیر. اگر این طور نباشد برنامه به خط 95 می رود و عدد دریافتی در رشته S قرار داده می شود:

این فرآیند تا زمانیکه رشته S پر شود، می تواند ادامه پیدا کند. البته حداکثر طول رشته S برابر با 3 است، زیرا بزرگترین عدد ممکن مورد نیاز، عدد 599 می باشد. پس از وارد کردن عدد، کلید Enter فشار داده می شود و برنامه به خط 33 می رود. با دستور A2 = Len(s) طول رشته S در متغیر A2 کپی می شود. با دستور Mid قسمتی از رشته S را که اطمینان داریم عدد وارد شده در آن قرار گرفته است، جدا می کنیم. این دستور از رشته S و از کاراکتر شماره 1 رشته ای به طول A2 جدا خواهد کرد. سپس رشته S را با دستور VAL به متغیر عددی تبدیل می کنیم. برای مثال اگر عدد 256 وارد شده باشد اکنون این عدد در A3 قرار می گیرد.

حداکثر مقداری که ممکن است در A3 قرار داده می شود، عدد 599 است، پس باید متغیر A3 را از نوع Word تعریف کنیم. عددی که در A3 قرار دارد، به آدرسی از حافظه که قرار است عمل ضبط یا پخش از آنجا شروع شود، اشاره می کند. بنابراین این عدد باید به صورت باینری در بیاید و طوری در پورت خروجی میکروکنترلر قرار داده شود که به طور صحیح به پایه های A0 تا A9 آدرس Chip Corder اعمال گردد.

مقادیری که باید به پایه های A0 تا A9 ارسال شوند، طی فرآیندی از متغیر A3 به دست می آیند و در متغیرهای A4 تا B4 قرار می گیرند. توجه داشته باشید که اگر تعداد پایه های آدرس تنها 8 عدد بود، قرار دادن مقدار A3 روی یک پورت و موازی کردن آن به پایه های ISD چقدر ساده میشد. پس از اعمال بیت های آدرس به ISD یک میلی ثانیه تثبیت انجام می گیرد و رشته S نیز برای عملیات بعدی تهی می شود. پس از این صفر یا یک بودن B5 بررسی می شود (در سیکل ضبط مقدار آن در زیر روال Int1 برابر یک شده است) بنابراین پایه P/R صفر می شود و آی سی نیز به حالت Power Up در می آید.

اکنون با Low شدن پایه CE سیکل ضبط آغاز می گردد بنابراین برنامه به حلقه BB می رود و منتظر می ماند تا پایه PB0 میکروکنترلر صفر شود، که به معنی فشار داده شدن دکمه B2 است. عمل ضبط آغاز می شود و برنامه در حلقه DD قرار می گیرد. هر گاه دکمه B2 رها شود، برنامه از این حلقه خارج می شود و عمل ضبط با High شدن CE پایان می پذیرد. با دیگر آی سی با یک شدن PD1 به حالت مصرف توان کم می رود. برای آماده شدن آی سی پس از اعمال پالس PD باید به اندازه 50 میلی ثانیه تاخیر ایجاد کنیم.

در سیکل پخش کافی است عددی را که آدرس بلوک حافظه مورد نظر است، وارد کنیم و کلید Enter را فشار دهیم. عمل پخش آغاز می شود و برنامه در حلقه AA قرار می گیرد. با آمدن پالس EOM به وقفه Int0 متغیر B6 برابر یک می شود و برنامه از حلقه AA خارج می گردد. آی سی نیز به مد Standby می رود و برنامه در دستور Getatkbd منتظر می ماند.

 

 اطلاعات پروژه

 رمز فایل : www.electronics98.com

 حجم فایل : 217 کیلوبایت

 محیط برنامه نویسی : BASCOM-AVR

 برنامه نویسی شده به زبان : BASIC

 نویسنده : فرهاد اکبری

 تاریخ انتشار : 13 آگوست 2014

6 دیدگاه

  1. سلام برد امادش چنده ؟من حدود 20 عدد میخام

  2. سلام دوست عزیز
    متاسفانه کیت این پروژه به صورت آماده موجود نیست.

  3. سلام ،شبیه سازی هم داره،مثلا تو پرتئوس??آخه این آی سی تو پرتئوس نیست..

  4. سلام دوست عزیز
    خیر این پروژه شبیه ساز نداره

  5. سلام، این پروژه این قابلیت رو داره که چند صدا رو ضبط و ذخیره کنه و بازپخش کنه؟

  6. سلام دوست عزیز
    خیر این سیستم تک کاربره است

 شرایط و قوانین ثبت دیدگاه

 فارسی بنویسید و از کیبورد فارسی استفاده کنید.

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

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

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