امروزه یكی از مباحث بسیار رایج در مهندسی پزشكی، سنجش صحت دستگاه‌های پزشكی یا به اصطلاح فنی آن كالیبراسیون‎(Calibration) ‎‏ است. هر روزه روش‌ها و فانتوم‌ها و شبیه سازهای سخت افزاری و نرم افزاری با نسخه‌های جدیدتر در عرصه فناوری ظهور می‌كند و این امكان را فراهم می‌نماید كه پزشك با اطمینان بیشتری با دستگاه كار كند و در تشخیص خود احتمالات كمتری را به كار بندد

.‏
یكی از این دستگاه‌های مهم و حساس الكتروانسفالوگرام  یا ‏EEG‏ هم ماهیت سیگنال و هم مغز به عنوان ارگان مربوط و نیز نحوه ثبت آن دقت فراوانی را ایجاب می‌كند. چرا كه تشخیص نابجا عوارض جبران ناپذیری را به همراه دارد؛ از قبیل اینكه داروهایی تجویز می‌شود كه با بیماری اصلی فرد منافات دارد و منجر به بیماری‌های روانی جدید در فرد می‌گردد. با توجه به همه این عوارض شبیه ساز یا سیمولاتور ‏‎(SIMULATOR)‎‏ دستگاه ‏EEG‏ را به عنوان ابزاری سودمند جهت رفع خطا‌های احتمالی و اطمینان از صحت دستگاه دانشكده مهندسی پزشكی، دانشگاه آزاد اسلامی واحد علوم و تحقیقات به مرحله طراحی و ساخت رسیده است.


اطلاعات فنی
این دستگاه‎ ‎مجموعه‌ای از میكروكنترلر و المان‌های منطقی است كه در حالت دیجیتال، وظیفه ی گرفتن سیگنال به‌وسیله پورت سریال از كامپیوتر مبدأ و ذخیره آن در حافظه ‏ROM‏ و ارسال مجدد آن به كامپیوتر مقصد جهت اطلاع از شكل صحیح سیگنال در حافظه و نیز ارائه به افراد تحت آموزش توسط اساتید و مربیان و نیز قرار دادن همزمان سیگنال‌های آنالوگ در هشت كانال با قابلیت انتخاب از سه بانك اطلاعاتی، جهت كالیبراسیون دستگاه ‏EEG‏ و نمایش روی صفحه آن را بر عهده دارد. یعنی به دو صورت آنالوگ و دیجیتال می‌توان اطلاعات رادر خروجی نمایش داد.
یكی از توانمندی‌های این سامانه حفظ كردن سیگنال‌ها در حافظه‎(FLASH ROM) ‎‏ و سازماندهی آن توسط میكروكنترلر است. بدین ترتیب امكان ایجاد ‏‎ ‎بانك سیگنال یا مجموعه ی سیگنال‌ها را در هر كدام از بلوك‌های حافظه یا تغییر آن وجود دارد. معماری حافظه نیز به گونه ای طراحی شده است تا حجم سخت افزار و نرم افزار آن كمتر شود تا حافظه برنامه ‏‎(Program Memory)‎‏ كمتری به آن اختصاص یابد و بتوان با میكروكنترلر رایجتر و ارزانتر با سهولت بیشتری كار كرد. البته ساختار حافظه به تفصیل در ادامه ی بحث ارائه می‌گردد.
اگر وضعییت دیجیتال لحاظ گردد، میكرو تمامی اطلاعات یك بانك سیگنال انتخابی را به پورت سریال با نرخ باود‏‎(BOUD RATE)‎‏ 9600 ارسال می‌نماید كه توسط نرم افزار ‏MATLAB ‎‏ كامپیوتر دریافت می‌شود. این نرم افزار اطلاعات را در یك ماتریس 1*64000 می‌ریزد كه می‌بایست آن را با برنامه ای به 8 ماتریس 8000 تایی با همان آرایش اولیه تبدیل نمود. پس از آن 8 كانال نمایش داده خواهد شد كه البته قابلیت ذخیره هر كدام لحاظ شده است
در این سامانه برای ارسال و دریافت اطلاعات به كامپیوتر از پورت سریال استفاده شده است. برای ایجاد ارتباط سریال در كامپیوتر از نرم افزار ‏MATLAB‏ با نسخه ‏‎7.0.4‎‏ استفاده شده كه به آن پرداخته خواهد شد. حالت‌ها یا مدهای‏‎(MODE) ‎‏ كار با دستگاه كه توسط صفحه كلید‏‎(KEYPAD)‎‏ در اختیار كاربر قرار می‌گیرد نیز امكان قرار دادن سیمولاتور در وضعیت‌های دلخواه را فراهم می‌نماید.
این دستگاه با یك منبع پایدار ‏‎0.1‎‏ آمپر جریان كشی دارد و با توجه به ولتاژ مصرفی و طبق فرمول توان انتظار می‌رود كه ‏VI=5*100=500mW‏ توان منبع ‏‎5v‎‏ و‏‎ VI=10*10=100mW‎‏ توان منبع ‏‎10v‎‏ باشد لذا توان مصرفی كل دستگاه ‏‎600mW‎‏ خواهد بود.

بلوك دیاگرام طرح
همانطور كه در سیم است بلوك سخت افزاری مشاهده می‌شود داده‌ها از میكرو توسط پورت سریال دریافت شده و در یك حافظه موقت ‏RAM‏ ذخیره می‌گردد. به‌دلیل عدم گنجایش ‏RAM‏ داخل میكرو از ‏RAM‏ بیرونی استفاده شده است كه البته امكان افزایش داده بیش از 64000 را داشته و نیز قابلیت دریافت هر سه بانك سیگنال به صورت یكجا را نیز داراست. پس از آن میكروكنترلر، بلوك‌های 256 بایتی را از ‏RAM‏ برداشته و در ‏ROM‏ ذخیره می‌سازد. این دو مرحله آخر به جهت نحوه خاص نوشتن در حافظه ‏FLASH ROM‏ است. چرا كه در هر بار تنها می‌شود از قطعات 256 بایتی در حافظه استفاده كرد. دلیل استفاده از حافظه موقت یا ‏STACK‏ با حجم بیشتر از 256 بایت این است كه در صورت فقدان آن بایستی در هر بار  بسته‌های 256 بایتی از پورت سریال دریافت كرده و پس از یك وقفه جهت نوشتن آن در حافظه دائمی و خالی كردن ‏STACK‏  دوباره كار گرفتن اطلاعات از سر گرفته شود. برای حافظه دائمی از حافظه سریع استفاده شده كه نوعی حافظه نیمه هادی با زمان دستیابی ‏‎100ns‎‏ در مقایسه با زمان دستیابی چند ده میلی ثانیه در دیسك سخت است. سیكل برنامه نویسی/ پاك كردن عبارت است از تعداد دفعاتی كه تراشه قبل از استفاده شدن می‌تواند برنامه نویسی یا پاك شود. در حال حاضر دوره ذكر شده،‎10000 ‎بار برای حافظه سریع ‏EEPROMو‎1000‎‏ بار برای   ‏UV-EPROM‏( قابل برنامه نویسی و پاك كردن با اشعه ماورا بنفش) و برای ‏RAM‏ و دیسك‌ها مقدارش بی‌نهایت است.
اكنون حافظه بارگذاری شده و قابلیت بهره برداری در هر كدام از مدهای انتخابی كاربر را دارد. در این دستگاه دو وضعیت آنالوگ جهت كالیبراسیون و دیجیتال جهت آموزش تعبیه شده است. اگر دستگاه در وضعیت آنالوگ باشد، اطلاعات توسط میكرو از حافظه به بافرها منتقل می‌شود تا پس از آنالوگ شدن توسط مبدل ‏DAC‏ به خروجی ارسال شود. دلیل استفاده از بافرها، همزمانی و سنكرون بودن ‏‎(SYNCHRONOUS)‎‏ ارسال 8 كانال به خروجی به صورت آنالوگ است كه این عمل با فركانس‎300HZ‏ انجام می‌گیرد. از آنجا كه سیگنالهای دریافتی از ‏DAC‏ چاپ شده و منقطع است برای رفع آن از‏‎ ‎فیلترهای پایین گذر‎ ‎با فركانس قطع ‏HZ‏150‏‎ ‎استفاده شده است. این تناسب فركانسها طبق قضیه نایكوییست انتخاب شده است.
ساختار حافظه‎(MEMORY MAP)‎‏ ‏
همانطور كه قبلا" بیان شد، حافظه مورد استفاده256 كیلو بایت حجم دارد كه اكنون به تعداد نمونه‌ها در هر كانال و محاسبات مربوط به آنها پرداخته می‌شود:‏
* تعداد نمونه در هر كانال: 8000عدد،
* تعداد كانال:8‏ و ‏
* تعداد نمونه در هر بانك: 8000*8=64000‏.‏
لذا فضای اشغالی برای هر بانك سیگنال 64000 بایت، یعنی یك بلوك از حافظه ‏ROM‏ است. بنابراین  یك بلوك از حافظه را به 8 قسمت تقسیم شده است.‏
دو روش برای بارگذاری حافظه وجود دارد كه در نهایت یكی از آن دو با ساختار بهتر گزینش می‌گردد. در روش نخست برای بارگذاری حافظه می‌توان اطلاعات مربوط به هر كانال را پشت سر هم گذاشت و سپس به كانال بعدی رفت. در این صورت با خواندن هر بانك یك ماتریس 8*8000 (بایت) داریم كه باید برای پیمایش آن ابتدا 8 بیت(1بایت) از سطر اول- ستون اول و سپس 8 بیت بعدی از سطر دوم- ستون اول و ... را بخوانیم كه نیاز به یك نشانگر داریم كه با آدرس‌دهیlabel first‏ (برچسب اولین كانال) ابتدا آن را با 8 بیت اول یك كانال پر كرده و سپس هر بار برای پیمایش در ستون اول و ردكردن مابقی عناصر آن را با 8000 جمع كرده تا به 8 بیت اول از كانال دوم اشاره كند و بدین ترتیب ادامه یابد. شایان ذكر است كه رد كردن 8000 تا بلافاصله پس از اولی به دلیل ارسال همزمان 8 كانال به صورت آنالوگ در خروجی است.
این عمل باعث حجیم شدن دستورالعمل‌های برنامه شده و در ضمن بعضی از محدودیت‌های دستورالعملی میكرو از این امر ممانعت می‌كند. در ضمن از آنجا كه یكی از قابلیتهای این سیملاتور امكان انتخاب دلخواه هر كدام از كانالهاست، به روش مذكور امكان‌پذیر نیست.
در روش دوم قبل از ارسال اطلاعات به میكرو تمام داده‌های كانال‌ها پشت سرهم در لابه‌لای یكدیگر به روشی مرتب و اصولی چیده می‌شود و سپس ماتریس را به میكرو از طریق پورت سریال منتقل می‌نماییم. بدین ترتیب هنگامی كه همه كانالها را به بیرون بخواهیم منتقل می‌شود. تنها با افزودن یك واحد به نشانگر این عمل امكان پذیر است و قابلیت همزمانی ارسال كانالها را هم فراهم می‌نماید.
از طرف دیگر حجم برنامه هم كمتر شده و دیگر برای ارسال 8 كانال به ثباتهای واسط برای شمارش نیاز نیست. در ضمن هنگامی كه دو كانال یا بیشتر انتخاب شود، از طریق محاسبه فاصله اعدادی كه به هر كانال اختصاص داده می‌شود، راحتتر می‌توان رجیسترهایی را به عنوان شمارنده انتخاب كرده و این شمارش صورت پذیرفته و اطلاعات به طور همزمان به بیرون منتقل شود. این سامانه تا انتخاب چهار كانال به صورت تصادفی را به كاربر می‌دهد كه البته می‌توان آن تا 8 كانال افزایش داد اما ضرورتی ندارد.‏


ماهیت سیگنالها
ابتدا می‌بایست پردازش‌هایی را روی سیگنالهای 8 كانال انجام گیرد و سیگنالها را با فرمت ‏TXT‏ در یك ماتریس8*8000‏‎ ‎‏ قرار داده شود. هر سیگنال در یك ستون ماتریس قرار می‌گیرد و برای ساخت ماتریس نهایی باید سطرها را به ترتیب در یك ماتریس 1*64000‏‎ ‎‏ قرار گیرد و در صورت نیاز نرمالیزه كردن را در هر كدام از مراحل و ترجیحا" در قسمت آخر لحاظ نم نرمالیزه بین مقادیر 0 تا255 صورت می‌پذیرد. مطمئنا" در هنگام دریافت این 64000 عدد در كامپیوتر مقصد هم باید مراحل مذكور را به طریق معكوس دنبال كرد.
تمام برنامه‌ها در ‏GUI‏ تعبیه شده و كاربر را از پیچیدگی‌های محیط برنامه نویسی دور كرده است. دو نكته بسیار مهم در اجرای این بسته نرم افزاری اهمیت دارد. در صفحه اصلی آن دو كلیدSEND , RECEIVE ‎‏ وجود دارد كه دو عملكرد بسیار مهم ارتباط را فراهم می‌كند. جهت ارسال اطلاعات از ‏PC‏ به سیمولاتور، ابتدا باید دستگاه را در وضعیت ‏LD(LOAD)‎‏ قرار گیرد تا همه اطلاعات ارسالی ‏PC‏ را دریافت نماید. این عكس عمل گرفتن داده‌ها توسط كامپیوتر است كه در آن ابتدا باید برنامه نرم افزاری ‏RECEIVE‏ فعال گردد و سپس دستگاه در وضعیت ‏PC‏ قرار گیرد تا همه داده‌های ارسالی دستگاه توسط ‏PC‏ دریافت شده و داده‌ای گم نشود.
شایان ذكر است كه مدت زمان دریافت و ارسال دیجیتال سیگنالها با میزان 9600‏boundrate= ‎‏ در حدود54  ثانیه طول می‌كشد كه در مقایسه با بخش آنالوگ بسیار سریع تر است.(چراكه در حالت آنالوگ فركانس‏‎ hz‎‏ 150 لحاظ شده است.)
بعد از طی مراحل مذكور با تعبیه كلیدهایی در ‏GUI‏ برنامه‌های مذكور فراخوانی و اجرا می‌شود.


نرم افزار واسط گرافیكیGUI
این برنامه در سه پنجره طراحی شده است كه كاربر وارد پنجره اصلی(اولین تصویر سمت چپ) می‌شود و با توجه به هدف مورد نظر یكی را انتخاب می‌كند.‏‎ ‎در پنجره اصلی مطابق آنچه كه در شكل (2) نمایش داده، با انتخاب آیكون اول به نام ‏communicate‏ كاربر می‌تواند از طریق پنجره‌ای كه باز می‌شود، برنامه‌های مربوط به پورت سریال اعم از ارسال یا دریافت سیگنال را اجرا كندآیكون ‏Build‏ برای ایجاد یك بانك سیگنال در كامپیوتر، تعبیه شده است و از ‏Help‏ جهت آشنا شدن با نحوه كار دستگاه و نرم افزار بهره برد.


" آزمونهای صحت ‏EEG SIM‏"‏
از آنجا كه عملكرد این دستگاه بسیار حساس است و خود به عنوان ابزاری در جهت كالیبراسیون به كار می‌رود، لذا اطمینان از صحت دستگاه بسیار مهم است. برای این منظور لازم است تك تك قطعات دستگاه تست شود. برای تست گام به گام دستگاه، ابتدا می‌بایست آن را به چند جزء برای آزمودن تقسیم كرد‎.
‎اطمینان از صحت موارد زیر ضروری است:‏

* میكروكنترلر، حافظه ‏RAM، حافظه ‏ROM، كل قسمت آنالوگ، اتصال صفحه كلید و اتصال برنامه و پورت سریال.‏
جهت اطمینان از عملكرد هر سیستم اعم از سخت افزار و نرم افزار‏‎ ‎دو روش برای آزمون وجود دارد. روش اول، تحلیل كل به جزء و دیگر روش جزء به كل است. این دو روش علاوه بر اینكه برای تست دستگاه ‏SIMULATOR‏ برای مراحل كالیبراسیون ‏EEG‏ هم به كار رود.‏
در روش كل به جزء كه مبنای اصلی این سامانه است، از بزرگترین محدوده بررسی آغاز می‌شود و تا كوچكترین مرحله كه تست خود میكروكنترلر است، ادامه می‌یابد. از آنجا كه به طور تجربی مشخص شده است؛ بیشتر خطاها در بلوكهای نهایی رخ می‌دهد، از نظر هزینه مقرون به صرفه تر است.این اعمال توسط متخصص مربوطه صورت می‌گیرد و در دسترس كاربر قرار داده نمی شود چرا كه نتایج آن فقط برای متخصص قابل استفاده است.
كلی‌ترین بلوكی كه در این سامانه وجود دارد، قسمت آنالوگ است كه بیشتر نقصها در این محدوده رخ می‌دهد. برای آزمودن آن می‌بایست از یك اسیلوسكوپ آزمایشگاه استفاده نمود. برای این كار یك بانك سیگنال را كه بارگذاری آن توسط سازنده صورت می‌گیرد و حاوی سیگنالهای نمونه است، اجرا می‌شود. یك محدوده با وسعت كمتر به این ترتیب است كه برای اطمینان از صحت عملكرد میكرو و‏‎ ‎‏ ‏‎ PPI‎‏ و حافظه‌ها، یك مجموعه برنامه‌های زنجیروار اجرا می‌گردد كه در صورت بروز هر گونه اشكال خروجی ناهماهنگ با انتظار را در پورت‎ B ‎نمایان می‌كند. 
بررسی قسمت آنالوگ و دیجیتال، به صورت موازی انجام می‌گیرد. به عبارت دیگر با حدس و صلاحدید متخصص مبنی بر اشكال در هر یك انتخاب می‌شود. چنانچه اعتبار اطلاعات از جانب ‏PC‏ و یا ارتباط آن با سامانه نا صحیح بود، پیشنهاد می‌شود كه از ‏Hyper terminal‏ كامپیوتر، بدون استفاده از برنامه ‏Matlab‏ جهت برطرف نمودن مشكل نرم افزاری كمك گرفته می‌شود.‏


برآورد اقتصادی:
هزینه این دستگاه برای نمونه آزمایشی 80000 تومان برآورد شده كه البته هزینه‌های مربوط به ساخت به آن افزوده می‌شود و این مقدار در نهایت در مقابل هزینه خود دستگاه و سایر هزینه‌ها بسیار ناچیز است. علاوه بر آنكه این دستگاه قابلیت تعویض سیگنالها را برای آموزش به همراه دارد.                               


پیشنهادهایی جهت ارتقا در آینده
یكی از این نكات مهم ارتقاء سرعت ارسال و دریافت اطلاعات با كامپیوتر از طریق به‌كارگیری پورت ‏USB‏ به جای سریال است. اما به دلیل محدودیت زمانی قابل امكان پیاده‌سازی آن با وجود اهمیت فراوان این موضوع فراهم نشد.‏
نكته مهم دیگر كاستن ابعاد دستگاه در حد بسیار كوچك است كه قابلیت جابجایی و كم جا بودن آن را تضمین می‌كرد. لذا باید به دنبال تراشه‌هایی با حجم كوچكتر و احیانا" بوردهای دو طبقه و مینیاتوری بود كه از حوصله و هزینه سامانه دانشجویی خارج است.
نكته آخر كه بسیار مهم است استفاده از منبع تغذیه قابل شارژ مانند باتری‌های لیتیومی در ابعاد كوچك كه مانند گوشی همراه، قابل شارژ كردن باشد دیگر به اتصال مداوم به برق شهر را نداشته باشد.


                امید است كه روز به روز شاهد ارتقای سطح علمی و صنعتی جامعه باشیم.