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

 1. حذف خطاي بين سمبلها [1] (ISI).

2 .حذف اثر اعوجاج كانال

3. حذف اثر نويز استفاده مي‌شود.

شبكه با مينيمم كردن كردن سيگنال خطا عملا تلاش مي‌کند تا خطاي سيگنال خروجي به حداقل خود برسد. در این مقاله شبکه عصبی برای حذف اعوجاج طراحی شده است.
 

اعوجاج سیگنال:
سیگنال خروجی(Y(t را بدون اعوجاج مي‌گوییم هر گاه شبیه سیگنال ورودی(X(t باشد. به عبارت دقیقتر اگر(Y(t با(X(t در یک ضریب تناسب ثابت و یک تاخیر زمانی محدود اختلاف داشته باشند در اینصورت انتقال را بدون اعوجاج مي‌گوییم. یعنی برای انتقال بدون اعوجاج:



ثابت K ضریب تضعیف و td تاخیر زمانی است. افت توان در انتقال برابر است. شرایط لازم برای انتقال بدون اعوجاج بیان شده در معادله(1) در صورتی تامین خواهد شد که تابع تبدیل سیستم  برابر با عبارت زیر باشد:


که در آن fX پهنای باند سیگنال باند پایه مي‌باشد. اگر فرض کنیم که فرستنده و گیرنده هیچگونه اعوجاجی را روی سیگنال وارد نمي‌کنند در اینصورت بایستی پاسخ کانال برای انتقال بدون اعوجاج به صورت زیر باشد:


برقراری شرط بیان شده در معادله(3) خیلی دشوار است و در بهترین حالت کانالهای واقعی فقط با تقریب در این شرط صدق مي‌کنند. بنابراین همواره مقداری اعوجاج در انتقال سیگنال اتفاق مي‌افتد. اگر چه با طراحی مناسب مي‌توان آنرا به حداقل رسانید. روش مناسب برای به حداقل رسانیدن اعوجاج سیگنال مشخص کردن انواع مختلف اعوجاجها و تلاش برای حداقل کردن اثرات بد آنها بطور جداگانه مي‌باشد.
1.  اعوجاج دامنه ناشی از
2.  اعوجاج فاز (تاخیر زمانی) ناشی از:
            (m یک عدد بزرگتر از صفر)زاویه
3.  اعوجاج غیر خطی ناشی از وجود عناصر غیر خطی در کانال.
دو نوع اول را اعوجاج خطی و نوع سوم را اعوجاج غیر خطی گویند.
 
اعوجاج خطی:
اگر پاسخ دامنه کانال در فرکانسهایی که طیف ورودی برای آنها مخالف صفر است ثابت(پهن) نباشد، در اینصورت مولفه‌های مختلف طیفی سیگنال ورودی دارای تغییرات مختلفی خواهند بود و در نتیجه اعوجاج دامنه خواهیم داشت. متداولترین فرم اعوجاج دامنه، تضعیف و یا تقویت اضافی در فرکانسهای بالا یا پایین طیف سیگنال است. تجربه نشان داده است که اگر در باند فرکانسی پیام بین ±1 dB تغییر کند، در اینصورت اعوجاج دامنه قابل صرف نظر کردن است. بجز این بیان کیفی و بدون تجزیه و تحلیل کامل نمي‌توان مطلب بیشتری را در مورد اعوجاج دامنه بیان کرد. اگر انتقال فاز اختیاری باشد، مولفه‌های مختلف سیگنال ورودی با اندازه‌های مختلف تاخیر زمانی روبرو بوده و در نتیجه اعوجاج فاز یا تاخیر زمانی خواهیم داشت. تاخیر زمانی مولفه طیفی سیگنال ورودی در فرکانس f برابر است با:



مي‌توان ثابت کرد که زاویه تابع تبدیل خروجی، یعنی خروجی بدون اعوجاج را نتیجه خواهد داد. هر پاسخ فاز دیگری به انضمام انتقال فاز ثابت و اعوجاج را نتیجه مي‌دهد. اعوجاج تاخیر زمانی یک مساله مهم و اساسی در انتقال پالس (داده‌ها) مي‌باشد. اما در کمال تعجب گوش انسان نسبت به اعوجاج تاخیر زمانی حساس نیست در نتیجه در انتقال صدا، اعوجاج تاخیر زمانی بندرت مورد توجه قرار مي‌گیرد.
 
همسانسازی:
روش حذف نظری اعوجاج خطی، همسانسازی[2] است که در شکل(2) نشان داده شده است.

شکل(2) همسانساز کانال    

 

 


  شکل(3)  یک همسانساز با خط تاخیر[3] سه تاخیری (فیلتر عرضی)
 


اگر تابع تبدیل همسانساز در رابطه زیر صدق کند:

در اینصورت داریم و هیچگونه اعوجاجی نخواهیم داشت. اما بندرت مي‌توان همسانسازی طراحی نمود که در معادله(5) دقیقا صدق کند ولی تقریب خوب امکان پذیر است، مخصوصا با استفاده از همسانسازهای با خط تاخیردار و نشان داده شده در شکل(3). خروجی همسانساز نشان داده شده در شکل(3) را مي‌توان به صورت زیر نوشت:

از روی آن مي‌توان تابع تبدیل فیلتر را به صورت عبارت زیر به دست آورد:

با تعمیم یک رابطه فوق برای یک همسانساز با 2M+1 تا تاخیر، داریم:

که دارای فرم سری فوریه نمایی با دوره تناوب 1/∆ است. بنابراین، برای همسانسازی کانال در باند فرکانس پیام fx  مي‌توان سمت راست معادله(6) را با یک سری فوریه (در حوزه فرکانس) با دوره تناوب  تقریب زد. اگر تقریب سری فوریه دارای 2M+1 جمله باشد، در این صورت یک همسانساز با 2M+1تا تاخیر مورد نیاز خواهد بود. ضریب تقویت تاخیرهای همسانساز برابر با ضرایب بسط سری فوریه هستند.
 
حذف خطاي بين سمبلها:
يكي از مشكلات ارتباطات راديويي و موبايل تداخل سمبلها ISI ناشي از انتشار امواج راديويي در چند مسير مي‌باشد وسبب مي‌شود كه گيرنده در تشخيص سمبل دريافتي که اثر، سمبلهاي قبلي هنوز باقي است دچار مشکل شود. به این منظوراز فيلترهاي قابل تنظيم در داخل سيستم به منظور جبرانISI استفاده میشود.
 
همسان ساز عرضي:
واضح است كه فيلترهمسان ساز بايدداراي پاسخ فركانس باشد، بطوريكه وقتي پاسخ فركانس واقعي كانال در آن ضرب شود حاصل برابر با پاسخ فركانس فرضي كانال باشد كه در طراحي مورد استفاده قرار گرفته است. با توجه به اينكه فقط به شكل موج خروجي در چند لحظه نمونه برداري از قبل تعيين شده علاقمند هستيم، طراحي فيلتر همسانساز خيلي ساده‌تر خواهد شد. فيلتر عرضي نشان داده شده در شكل(4) ساده‌ترين همسانساز قابل تنظيم بوده و غالبا از آن براي اين منظور استفاده مي‌شود. همسانساز عرضي از يك خط تاخير با سوئيچ‌هايي(تاخیرهايي) به فاصله ثانيه از يكديگر تشكيل شده است.


شكل(4) همسانساز عرضي


 هر سوئيچ(تاخیر) توسط يك ضريب تقويت متغير به يك تقويت كننده جمع كننده متصل مي‌شود. براي سادگي فرض مي‌شود كه فيلتر شامل (2N+1) تاخیر و با ضرايب تقويتهايW-N,W-N+1,….,W0,W1,….WN  باشد. ورودي همسانساز شكل معلوم(Pr(tو خروجي آن(Peq(t خواهد بود. خروجي(Peq(tرا بر حسب Pr(t)  و ضريب تقويت تاخیرها به صورت زير مي‌توان نوشت:

اگر پيك(Pr(t در نقطه t=0 و ISIدر هر دو طرف آن باشد، در اينصورت خروجي  مي‌بايستي در لحظات tk=(k+N)Ts نمونه برداري شده و


 

اگر(Pr(nTS را با(Pr(n و tk  را با K نشان دهيم، در اينصورت:

در حالت ايده‌آل علاقمند به رابطه ساده زير هستيم:

با توجه به اينكه (2N+1) متغير (2N+1 وزن) در اختيار داريم، شرط بالا همسشه قابل حصول نخواهد بود، اما مي‌توان مقدارPeq(t) را در 2N+1 نقطه به صورت زير مشخص نمود:

با تركيب معادلات (10) و(11) داريم:

 

 معادله(12) بيانگر (2N+1) معادله همزمان است كه ضرايب WN  بدست مي‌آيند. اين همسانساز از اين نظر كه پيك تداخل بين سمبلها را حداقل مي‌کند بهينه است.
 
همسانساز خودكار:
طراحي و تنظيم ضرايب تقويت تاخیرهاي همسانساز  مراحل زير را لازم مي‌دارد:
1.  ارسال يك پالس آزمايشي توسط سيستم
2.  اندازه‌گيري خروجي فيلتر گيرنده(Pr(t در لحظات نمونه برداري
3. تعیین ضرايب تقويت تاخیرها توسط شبکه
در سالهاي اخير براي تنظيم ضرايب تقويت، سيستم‌هاي خودكار با دقت بالا و بسادگي قابل ساخت پيشنهاد شده‌اند. اين شبكه‌ها معمولا به دو گروه تقسيم مي‌شوند: نوع پيش تنظيم كه از يك دنباله پالسهاي مخصوص قبل از ارسال اطلاعات واقعي و يا در فواصل قطع اطلاعات واقعي استفاده مي‌کنند و در اين حين وزنها تنظيم مي‌شود تا خطا حداقل شود  و نوع  وفقي یا تطبیقی كه بطور پيوسته و در هنگام ارسال اطلاعات واقعي و عمل روي اطلاعات، وزنهاي خود را تنظيم مي‌نمايد.
 
همسانساز پيش تنظيم:
 يك همسانساز پيش تنظيم ساده در شكل(5) نشان داده شده است. در اين سيستم، مولفه‌هاي بردار خطا توسط ارسال يك دنباله پالسها با فاصله زياد از يكديگر توسط سيستم و مشاهده خروجي همسانساز يعني در لحظات نمونه برداري اندازه‌گيري مي‌شوند.

 

شكل(5) يك همسانساز پيش تنظيم سه تاخیري

 
 براي تنظيم ضرايب تنظيم تاخیرها، از نمو ثابت∆ استفاده مي‌شود. نمونه مركزي با +1 مقايسه شده و علامت مولفه خطا به دست مي‌آيد. علامت ساير مولفه‌هاي خطا از روي خروجي فيلتر در لحظات به دست مي‌آيند. اگر مقدار پالس همسانسازي شده در پايان تكرار k ام را با نشان دهيم، در اينصورت                                
در پايان پالس آزمايشي kام، دريچه باز شده و با توجه به علامت مولفه‌هاي، به اندازه ∆+ يا ∆- تغيير مي‌کنند. تكرار مرحله تا زمان همگرايي الگوريتم ادامه مي‌یابد. مرحله راه اندازي ممكن است شامل صدها پالس گردد. يكي از مشكلات ايجاد شده کاهش سرعت همگرايي الگوريتم است.
 
همسانساز وفقي:
همسانسازهاي وفقي، بردار خطا بطور پيوسته و در حين ارسال اطلاعات تخمين زده مي‌شود. اين نماها قدرت تطبيق با تغييرات در هنگام ارسال اطلاعات را داشته و نيازي به مرحله طولاني راه اندازي ندارند. همسانسازهاي وفقي در عمل بيشتر به كار رفته، دقيقتر، جامع تر از همسانسازهاي پيش تنظيم مي‌باشند. خروجي همسانساز(Y(t در لحظات نمونه برداري بايستي برابر با ± A  باشد: +A هنگامي كه بيت واقعي ورودي مربوط به لحظه نمونه برداري 1 و–A هنگامي كه بيت ورودي صفر است.
در يك سيستم واقعي به دليل وجود ISI، مقدار(‎Y(jTb متفاوت از مقادير±A خواهد بود. براي يك دنباله داده‌هاي تصادفي، اين تغييرات تصادفي خواهند بود. اگر ISI خيلي بزرگ نباشد، هنوز مي‌توان داده‌ها را آشكار سازي نمود و دنباله اي از سطوح ايده آل و يا دلخواه  Ajو Aj=±A را توليد كرد. از روي دنباله ايده‌آل Aj و مقادير واقعي اندازه‌گيري شده (‎Y(jTb ، غالبا مي‌توان مقدار ضرايب تقويت را تخمين زد زير را بكار برد.

 تخمين زننده بيشترين درست نمايي، jامين مولفه بردار خطا است. عبارت سمت راست معادله (13) عمل همبستگي متفابل را نشان مي‌دهد. m طول دنباله‌هاي بكار برده شده براي تخمين است. ضريب تقويت تاخیر jام مطابق رابطه زير تنظيم مي‌شود:

k  معرف تعداد تكرار در الگوريتم است. براي اينكه همسانساز وفقي بطور موثر كار كند دنباله بيت ورودي و دنباله نمونه‌هاي دريافتي Y(nTb) بايد تصادفي باشند. بعلاوه همسانساز وفقي مشكل تنظيم وقت را براي آغاز همسانسازي  دارا مي‌باشد. هرگاه همسانسازي صحيح حاصل شد، تخمين خطا دقيق بوده و حلقه همسانسازي تغييرات در مشخصات كانال را بسادگي دنبال مي‌کند. براي غلبه بر اين مشكل، غالبا از يك سيستم هايبريد استفاده مي‌شود كه در آن انتقال داده‌ها در يك زمان كوتاه كه سيستم خاموش است به تاخير افتاده و در اين زمان يك دنباله شبه تصادفي ارسال و دوباره در گيرنده توليد مي‌شود. هنگاميكه همسانسازي تا حدودي خوب انجام مي‌پذيرد همسانساز به حالت وفقي منتقل شده و ارسال اطلاعات آغاز مي‌شود.
 
شبکه عصبی:
خط تاخیردار:
برای استفاده کامل از شبکه عصبی به خط تاخیردار نیاز داریم. شکل(6) یک خط تاخیردار را نشان مي‌دهد. سیگنال ورودی از سمت چپ وارد میشود و سیگنالهای تاخیردار از سمت راست خارج مي‌شوند. سیگنال خروجی N بعدی است. همانطوری که گفتیم کار اصلی ما با شبکه آدالاین است. این شبکه از قانون یادگیری LMS استفاده مي‌کند قانون یاد گیری ویدرو-هوف (LMS) شبکه را به سمت تنها نقطه مينیمم مي‌برد مشروط به اینکه نرخ یادگیری آن مناسب اختیار شود.  یک مسیر یا کانال همواره دارای نویز است. مي‌توان کانال را با دیاگرام شکل(6) تخمین زد.

 

 

شکل(6) خط تاخیردار 


                                                
شکل(7) فیلتر خطی


فیلترهای خطی:
فیلترهای خطی در شبکه‌های تطبیقی کاربرد دارند. فرق شبکه‌های خطی با پرسپترون در تابع تبدیل آنها است. شبکه پرسپترون دارای خروجی 0 و1 است ولی خروجی شبکه خطی مي‌تواند هر مقداری را بگیرد. مي‌توان شبکه را برای کمترین خطا با الگوریتم(LMS(Widrow-Hoff ، آموزش داد. از ترکیب خط تاخیردار و شبکه خطی، فیلتر خطی حاصل مي‌شود. شکل(7) یک فیلتر خطی را نشان مي‌دهد. اگر یک خط تاخیردار را همراه شبکه آدالاین آن در نظر بگیریم بلوک دیاگرام شکل(7) را خواهیم داشت. خروجی شبکه برابر است با:

Mean Square Error:
مانند الگوریتم یادگیری پرسپترون، خطای LMS مثالی از یادگیری با ناظر است.  برای ورودیهای P و خروجیهای T یعنی:

که در آن Pi ورودی iام بهمراه Ti یعنی خروجی مربوط به ورودی Piام، خطای مجذور میانگین برابر است با:

الگوریتم LMS  (یا یادگیری ویدروهوف):
الگوریتم LMS یا روش یادگیری ویدروهوف مبتنی بر روش تقریبی از Steepest descent است. در این روش خطای مجذور میانگین از بدست آوردن مجذور خطا از هر تکرار بدست مي‌آید. معادلات این الگوریتم و روند بدست آمدن آنها در زیر آورده شده است. اگر مشتق جزئی مجذور خطا را نسبت به وزنها و بایاسها در kامین تکرار داشته باشیم، داریم: 


و برای

 


این دو رابطه آخری وزنها و بایاس بدست آمده از این الگوریتم هستند.
 
کاربرد شبکه آدالاین در فیلترهای تطبیقی:
اگر چه این شبکه محدودیت نگاشت پذیری دارد (فقط برای مسائلی که بطور خطی از هم متمایز هستند قابل استفاده مي‌باشد)، اما یکی از پر استفاده‌ترین شبکه‌های عصبی است که کاربردهای عملی بسیار زیادی، مخصوصا در پردازش سیگنالهای دیجیتالی دارد. یکی از کاربردهای مهم آن را در پردازش سیگنالها مي‌توان در فیلترهای تطبیقی دید. دستورات برنامه matlab برای حذف نویز دامنه عبارتند از:
با دستور (net = newlind(P,T مي‌توان شبکه خطی طراحی کرد. P ورودی وT هدف است. با دستور(Y = sim(net,P مي‌توان رفتار شبکه را مشاهده کرد. دستورات دیدن وزنها و بایاس بدین ترتیب هستند:

{weights = net.iw{1,1
bias = net.b(1)

قسمتی از برنامه:

X1 = sin(sin(time).*time*10);
P = con2seq(X1);
T1 = con2seq(2*[0 X1(1:(end-1))] + X1);
net1 = newlin([-3 3],1,[0 1],0.1);
[net1,Y1,E1,Pf1]=adapt(net1,P,T1);

نتایج شبیه سازی برنامه هم برای رفع نویز دامنه و تاخیر در شکل(8) مشاهده مي‌شود. شبیه سازی از1 تا 3 ثانیه انجام شده است. فرض شده دامنه ورودی بین 3 و -3 است. شبکه دارای نرخ یادگیری0.1 است. با دستور{W = net.IW{1,1، مي‌توانیم وزنهای شبکه را ببینیم. با دستور{b= net.b{1، مي‌توانیم بایاس شبکه را ببینیم.

 

 

شکل(8) نتایج شبیه سازی


پانوشت‌ها:

[1] Intersymbol Interference
[2] Equalization
[3] Tapped-delay line equalizer 


 

مرجع: www.irandoc.ac.ir   

+ نوشته شده در ساعت توسط alireza |

  چکيده :

در اين نوشتار به معرفي شبکه هاي عصبي مصنوعي[1] و ساختارهاي آنها به صورت خلاصه ميپردازيم. در ابتدا نرونهاي شبکه هاي عصبي طبيعي معرفي شده و طرز کار آنها نشان داده شده است. سپس مدل مصنوعي اين نرونها و ساختار آنها ، مدل رياضي آنها ، شبکه هاي عصبي مصنوعي و نحوه آموزش و بکار گيري اين شبکه ها به همراه روش يادگيري گراديان کاهنده نشان داده شده است. تمرکز بيشتر بر نوعي از اين شبکه ها بنام شبکه هاي عصبي مصنوعي پرسپترون چند لايه ميباشد.  ابزاهايي نيز براي پياده سازي اين شبکه ها نام برده شده است.

كليدواژه‌ها: شبکه هاي عصبي مصنوعي ، شبکه هاي عصبي، Artificial Neural networks Multi layered Perceptron, Gradient descent

 

مقدمه :

در ساليان اخير شاهد حرکتي مستمر از تحقيقات صرفا تئوري به تحقيقات کاربردي بخصوص در زمينه پردازش اطلاعات ، براي مسائلي که براي آنها راه حلي موجود نيست و يا براحتي قابل حل نيستند بوده ايم. با عنايت به اين امر ، علاقه اي فزاينده اي در توسعه تئوريکي سيستمهاي ديناميکي هوشمند مدل آزاد[2] -که مبتني بر داده هاي تجربي ميباشند ايجاد شده است. ANN ها جزء اين دسته از سيستمهاي مکانيکي قرار دارند که با پردازش روي داده هاي تجربي ، دانش يا قانون نهفته در وراي داده  ها را به ساختار شبکه منتقل ميکنند.به همين خاطر به اين سيستمها هوشمند گفته ميشود ، زيرا بر اساس محاسبات روي داده هاي عددي يا مثالها ، قوانين کلي را فرا ميگيرند.اين سيستمها در مدلسازي ساختار نرو-سيناپتيکي[3] مغز بشر ميکوشند.

البته اين سخن که" ANN ها در مدلسازي مغز بشر ميکوشند" اغراق آميز ميباشد.دانشمندان هرچه بيشتر در مورد مغز بشر تحقيق ميکنند و مي آموزند ، بيشتر در مي يابند که مغز بشر دست نيافتني است.در حقيقت در مورد مغز و ساختار سيستم عصبي انسان اطلاعات زيادي بدست آمده است. ولي پياده سازي ساختاري با پيچيدگي مغز انسان بر اساس اطلاعاتي و تکنولوژي که امروزه وجود دارد غير ممکن ميباشد.

ما ميتوانيم يک نرون عصبي انسان و عملکرد آنرا را توسط مدل هاي رياضي ، مدلسازي کنيم.شکل1 ساختار يک نرون طبيعي را نشان ميدهد.

شکل1 - ساختار نرون طبيعي انسان

هر نرون طبيعي از سه قسمت اصلي تشکيل شده است :

1.            بدنه سلول (Soma)

2.            دندريت(Dendrite)

3.            اکسون (Axon)

دندريتها به عنوان مناطق دريافت سيگنالهاي الکتريکي ، شبکه هايي تشکيل يافته از فيبرهاي سلولي هستند که داراي سطح نامنظم و شاخه هاي انشعابي بيشمار ميباشند .دندريتها سيگنالهاي الکتريکي را به هسته سلول منتقل ميکنند. بدنه سلول انرژي لازم را براي فعاليت نرون فراهم کرده و برروي سيگنالهاي دريافتي عمل ميکند ، که با يک عمل ساده جمع و مقايسه با يک سطح آستانه مدل ميگردد. اکسون بر خلاف دندريتها از سطحي هموارتر و تعداد شاخه هاي کمتري برخوردار ميباشد. اکسون طول بيشتري دارد و سيگنالهاي الکتروشيميايي دريافتي از هسته سلول را به نرونهاي ديگر منتقل ميکند.محل تلاقي يک اکسون از يک سلول به دندريتهاي سلولهاي ديگر را سيناپس ميگويند.توسط سيناپسها ارتباطات مابين نرونها برقرار ميشود.به فضاي مابين اکسون و دندريتها فضاي سيناپسي گويند.

در حقيقت دندريتها به عنوان ورودي نرون و اکسون به عنوان خروجي و فضاي سيناپسي محل اتصال  ايندو ميباشد. زمانيکه سيگنال عصبي از اکسون به نرونها و يا عناصر ديگر بدن مثل ماهيچه ها ميرسد ، باعث تحريک آنها ميشود.

نرونها از هريک از اتصالات ورودي خود يک ولتاژ کم دريافت ميکند ( توسط سيگنال عصبي ورودي ) و آنها را با هم جمع ميزند. اگر اين حاصل جمع به يک مقدار آستانه رسيد اصطلاحا نرون آتش ميکند و روي اکسون خود يک ولتاژ خروجي ارسال ميکند که اين ولتاژ به دندريتهايي که به اين اکسون متصلند رسيده و باعث يکسري فعل و انفعالهاي شيميايي در اتصالات سيناپسي ميشود و  ميتواند باعث آتش کردن نرونهاي ديگر شود. تمامي فعاليتهاي مغزي انسان توسط همين اتش کردنها انجام ميشود.

حافظه کوتاه مدت انسان جرقه هاي لحظه اي الکتريکي ميباشند و حافظه بلند مدت به صورت تغييرات الکتروشيميايي در اتصالات سيناپسي ذخيره ميشود که عمدتا منجر به تغيير يونها ميشود.

همانگونه که گفته شد ما ميتوانيم توسط مفاهيم رياضي يک نرون طبيعي را مدل کنيم.شکل 2 يک نرون عصبي مصنوعي را نشان ميدهد.

شکل 2 ساختار يک نرون مصنوعي

سيگنالهاي ورودي  تا معادل سيگنالهاي عصبي ورودي و وزنهاي تا معادل مقادير اتصالات سيناپسي وروديهاي نرون ميباشند که جمعا ورودي نرون را تشکيل داده است.

تابع جمع کننده  تمامي عمليات هسته سلول را انجام ميدهد.در مورد تابع فعال سازي[4] (فشرده سازي[5] ) صحبت خواهد شد.

خروجي نرون توسط تابع زير مشخص ميشود:

به خصوصيات زير در مورد مغز انسان توجه کنيد :

محاسبات کاملا به صورت توزيع شده وموازي انجام ميشود.

"يادگيري" جايگزين برنامه ريزي از قبل ميشود.

در مغز انسان يک ساختار ALU مشخص وجود ندارد. ALU ، حافظه و کنترل همگي در يک ساختار درهم تنيده شبکه اي از تعداد بسيار زيادي نرون توزيع و پخش شده است.

مغز انسان توسط يک پروسه يادگيري مي آموزد که در پاسخ به يک ورودي ، چه خروجي را توليد کرده و ارسال کند. اين فرآيند يادگيري در حقيقت توسط تنظيم اتصالات سيناپسي در نرونهاي طبيعي و معادل آنها در ANN ها ،يعني تنظيم وزنهاي  نرونهاي مصنوعي انجام ميشود. در حقيقت در طراحي يک نرون مصنوعي فقط کافيست وزنهاي  را مشخص کنيم تا شبکه عصبي بتواند خروجي مورد نظر را از ورودي خاص توليد کند. متدهاي مختلف يادگيري وجود دارد که ميتواند بر اساس زوج مرتبهاي <خروجي، ورودي> مقدار وزنها را بدست آورد.

حال بر اساس مطالب گفته شده ميتوان به تعريف ANN ها پرداخت.

تعريف شبکه هاي عصبي مصنوعي

يک ساختار شبکه اي از تعدادي عناصر مرتبط به هم به نام نرون که هر نرون داراي وروديها و خروجيهايي است و يک عمل نسبتا ساده و محلي[6] را انجام ميدهد.شبکه هاي عصبي عموما عملکرد خود را طي يک پروسه يادگيري[7] فرا ميگيرد.

شبکه هاي عصبي کاربردهاي عمده اي در تشخيص الگو ، گروه بندي ، پيش بيني يا برون يابي و ... دارا ميباشد.

تاريخچه

در سال 1949 مدل MP شبکه هاي عصبي مصنوعي توسط مک کالوخ و پيت مطرح شد که يک مدل خطي ساده بود . سپس پرسپترون الگوريتمهاي يادگيري را ارائه نمود. سال 1969 آغاز افول موقت شبکه هاي عصبي شد. زيرا عدم توانايي شبکه هاي عصبي در حل مسائل غير خطي آشکار شد. ANN هاي آن زمان فقط قادر به حل مسائلي بودند که ميتوانستيم پاسخهاي آن مسئله را توسط يک خط در محور مختصات از هم جدا کنيم. در 1982 هاپفيلد با معرفي شبکه هاي چند لايه و الگوريتمهاي يادگيري داراي feedback  ، راه حلي براي حل موارد غير خطي ارائه کرد.در اين زمان بود که شبکه هاي بازگشتي ، خودسازمانده ، Autoregressive ، RBF و روش يادگيري هيبيان مطرح شد.از نيمه دهه نود ، نسل سوم ANN  ها مطرح شدند که عبارت بودند از :

·                    تعيين محدوديتهاي تئوري و عملي شبکه

·                    عموميت و حدود آن

·                    ترکيب ANN و الگوريتمهاي ژنتيکي و منطق فازي

در نهايت امروزه استفاده عملي و پياده سازي تجاري و سخت افزاري ANN ها ممکن شده است .

 

معرفي مدل نرون ساده خطي

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

(bias)

+

Text Box: …

 

شکل3 : نرون ساده خطي

 

                        

ميتوان شبکه عصبي را به صورت يک سيستم محرک / پاسخ در نظر گرفت. مهم اينست که بدانيم تعليم شبکه يعني تنظيم پارامترهاي آن به نحويکه رفتار محرک / پاسخ طبق خواسته باشد. در حين تعليم در واقع مجهولات ما  وزنها(w) ميباشند. وزنها در غالب حافظه ها عمل ميکنند و نحوه توليد پاسخ را مشخص ميکنند. درصورتيکه وروديهاي و خروجيهاي متناظر موجود باشد ( به اين زوج ورودي و خروجي مجموعه تعليم[8]گفته ميشود )  ، ميتوان وزنها را بر اساس فرمول  بدست آورد.

ميتوانيم براي اينکه خروجي خاصي توليد شود از يک تابع به نام تابع فشرده سازي[9]استفاده کنيم.اين مسئله در شکل4 نشان داده شده است.

تابع فشرده سازی

Squashing

(bias)

+

Text Box: …

شکل 4 : مدل نرون خطي به همراه تابع فشرده سازي

 

تابع فشرده سازي(فعال سازي) رنج وسيعي از مقادير ورودي را به مقدار خاصي نگاشت ميکند.به عنوان مثال ميتوانيم هرمقدار خروجي را   به مقادير باينري 0 و 1 نگاشت کنيم. انواع مختلفي از توابع فشرده سازي در  ANNها استفاده ميشود. ولي بيشترين استفاده را تابع فشرده سازي سيگمويد[10] دارد.

ادعا ميشود که فرکانس آتش نرون طبيعي به صورت تابعي شبيه سيگمويد ميباشد. البته دلايل ديگري براي استفاده از سيگمويد وجود دارد. از جمله :

1.       فشرده سازي ميکند. ( رنج ورودي (-∞,+∞) و خروجي [0,1] ميباشد )

2.       تقريبا خطي ، افزايشي و مشتق پذير است.

3.       در فرم بسته قابل نمايش است.

4.       مشتق گيري از آن ساده است.

 

تکنيکهاي تعيين پارامترهاي نرون خطي

بطور کلي دو روش براي تعيين پارامترهاي نرون خطي يا به عبارت ديگر مشخص کردن مقادير وزنها وجود دارد:

1.       تعيين مستقيم

2.       روالهاي تکرار شونده

1 - تعيين مستقيم

فرض کنيم  که b بردار پاسخهاي دلخواه ميباشد.

بنابر اين :

بدين صورت ميتوان مقادير wرا بدست آورد.

2 – روالهاي تکرار شونده

نام ديگر اين روش "گراديان کاهنده[11]" ميباشد در ادامه به توضيح اين روش مي پردازيم :

قبل از هر چيز بردار گراديان را تعريف ميکنيم:

بردار گراديان در واقع جهت تغييرات ماکزيمم در تابع f را نشان ميدهد.

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

خطاي شبکه به ازاء وزنهاي  برابر است با :

در واقع همان تابعي است که بايد کمينه شود.پس :

خطاي خروجي برابر است با اختلاف مابين خورجي شبکه (0) و خروجي مطلوب (t).خطاي يک ورودي برابر است با :

و خطاي کلي برابر است با :

خطاي ميانگين مربع[12] برابر با :

قاعده کلي ،بدست آوردن مشتق خطا نسبت به w ميباشد تا بتوانيم تغييرات خطا نسبت به w را به صفر نزديک کنيم.يعني ما بدنبال پيدا کردن ميباشيم که k مرتبه تکرار اين روال است .به عبارتي ديگر :

در نتيجه تصحيح وزن jام در مرحله kام از تکرار الگوريتم تعليم به صورت زير ميباشد:

که ، مشتق تابع فشرده سازي ( اکتيواسيون) و α، نرخ يادگيري ميباشد که عموما مابين 0 و 1 انتخاب ميشود. بدين صورت ميتوان وزنهاي هر نرون را بدست آورد و روند تعليم شبکه را به اتمام رساند. پس از تعليم ، شبکه آماده توليد خروجي از ورودي متناظر ميباشد.

شبکه هاي پرسپترون[13] چند لايه

شبکه هايي که از يک نرون ساخته شده اند داراي محدوديتهايي ميباشند. اين شبکه ها توانايي پياده سازي توابع غير خطي را ندارند. به عنوان مثال توسط اين شبکه ها نميتوان تابع XOR را پياده سازي نمود. براي حل اين مشکل شبکه هاي ديگري پيشنهاد شد که ما به يکي از آنان که بيشترين استفاده را دارد مي پردازيم. دليل ديگر معرفي اين نوع شبکه ، استفاده از آن در ابن تحقيق مي باشد.

مدل عمومي شبکه هاي پرسپترون ، شبکه جلو رونده[14] با روال تعليم انتشار به عقب[15] است. شبکه هاي جلو رونده شبکه هايي هستند که وروديهاي لايه اول نرونهاي آن به لايه هاي بعدي متصل بوده و در هر سطح اين مسئله صادق بوده تا به لايه خروجي برسد. روال انتشار به عقب بدين معني است که پس از مشخص شدن خروجي شبکه ، ابتدا وزنهاي لايه آخر تصحيح شده و بعد به ترتيب اوزان لايه هاي قبلي تصحيح ميشوند.در اين موارد بيشتر توضيح داده ميشود.

 شبکه هاي پرسپترون از يک لايه ورودي ، تعدادي لايه پنهان و يک لايه خروجي تشکيل شده است.در شکل 5 يک شبکه پرسپترون با يک لايه پنهان نشان داده شده است.

شکل 5 : نمونه اي از يک شبکه پرسپترون

 

در اين شکل لايه X لايه ورودي ، لايه Z لايه پنهان و لايه Y نيز لايه خروجي ميباشد.

در اين شبکه ها  شرايط زير وجود دارد :

1.       نرونهاي هر لايه تنها به نرونهاي لايه بعدي متصل ميباشند.

2.       هر نرون به تمامي نرونهاي لايه بعد متصل است.

3.       نرونهاي لايه ورودي عملي را انجام نميدهند و اوزان آنها ثابت و برابر يک ميباشد. اين نرونها فاقد تابع فشرده سازي ميباشند.

4.       انتشار عملگر رو به جلو است. تمامي نرونها به غير از لايه ورودي جمع کننده بوده و هر نرون ميتواند تابع فشرده سازي مستقلي داشته باشد.

5.       هر نرون ميتواند داراي باياس مستقل باشد.

6.       تعداد لايه هاي پنهان مشخص نميباشد.

 

الگوريتم يادگيري شبکه هاي پرسپترون ( انتشار به عقب )

در اين بخش به نحوه يادگيري شبکه پرسپترون چند لايه که در شکل 5 نشان داده شده است مي پردازيم.

در الگوريتم يادگيري از علائم زير استفاده ميکنم:

x : بردار ورودي که براي يادگيري شبکه از آن استفاده ميشود.

t : بردار خروجيهاي مطلوب

: درصدي از خطا که براي تصحيح وزن استفاده ميشود و براساس خطاي واحد خروجي ميباشد . اين خطا در لايه پنهان قبل از لايه خروجي انتشار به عقب مي يابد.

:  درصدي از خطا که براي تصحيح وزن استفاده ميشودو بر اساس انتشار به عقب اطلاعات خطا از لايه خروجي به واحد پنهان  ميباشد.

α: نرخ يادگيري.

: واحد ورودي iام.

: باياس واحد پنهان jام.

: واحد پنهان jام.

ورودي شبکه به توسط نشان داده ميشود:

سيگنال خروجي  توسط  مشخص ميشود:

: باياس واحد خروجي kام.

: واحد خروجي kام:

ورودي  توسط مشخص ميشود:

سيگنال خروجي  توسط مشخص ميشود :

براي آموزش شبکه توسط انتشار به عقب ، سه مرحله بايد انجام شود : انتشار به جلو الگوهاي يادگيري ورودي ، انتشار به عقب خطاي بدست آمده و تنظيم اوزان.

در حين انتشار به جلو ، هر واحد ورودي  سيگنال ورودي خودرا در هرکدام از واحدهاي پنهان  توزيع ميکند.سپس هرکدام از واحدهاي پنهان اکتيواسيون خودرا محاسبه کرده و سيگنال حاصل را به هرکدام از واحدهاي خروجي ارسال ميکند.در نهايت هرکدام از واحدهاي خروجي  با محاسبه اکتيواسيون خود ،  را به عنوان پاسخ شبکه به الگوي وردي ، ارائه ميکند.

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

در نهايت زمانيکه تمامي δ مشخص شدند ، تمامي اوزان به صورت هم زمان تصحيح خواهند شد. تصحيح وزن (از لايه پنهان به لايه خروجي) بر اساس و  خواهد بود و تصحيح وزن ( از لايه ورودي به لايه پنهان) بر اساس  و  ميباشد.

حال بر اساس مطالب گفته شده الگوريتم يادگيري را شرح ميدهيم :

مرحله 0 : مقدار دهي اوليه اوزان بر اساس مقادير تصادفي کوچک

مرحله 1 : تازمانيکه شرط پايان برقرار نيست مراحل 2 تا 9 را تکرار کنيد.( در مورد شرط پايان صحبت خواهد شد)

مرحله 2 : به ازاء هر زوج تعليم ( ورودي و خروجي متناظر در مجموعه تعليم ) مراحل 3 تا 8 را تکرار کنيد :

مرحله 3 : هر واحد ورودي

 ,i=1,…,n

  سيگنال ورودي  را دريافت کرده و آنرا در تمامي واحدهاي لايه بعد از خويش توزيع ميکند.

مرحله 4 : هر واحد پنهان

 , j=1,…,p

حاصل جمع سيگنالهاي ورودي وزن دار خويش را محاسبه ميکند :

سپس تابع فشرده سازي مربوطه را بر حاصل اعمال ميکند :

و سيگنال حاصل را به تمامي واحدهاي لايه بعدي ارسال ميکند.

مرحله 5 : هر واحد خروجي

, k=1,…,m

حاصل جمع سيگنالهاي ورودي وزن دار خويش را بدست مي آورد:

و تابع فشرده سازي مربوط به خود را براي محاسبه خروجي به حاصل اعمال ميکند:

انتشار به عقب خطا :

مرحله 6 : هر واحد خروجي

, k=1,…,m

را بر اساس خروجي مطلوب و خروجي بدست آمده محاسبه ميکند :

و مقداري را که بعدا براي تصحيح وزن و باياس  نياز است ، بدست مي آورد :

و را به واحدهاي لايه قبل از خود ارسال ميکند.

مرحله 7 : هر کدام از واحدهاي پنهان

 , j=1,…,p

حاصل جمع دلتاي ورودي خود را که از واحدهاي لايه بعد از خود به آن رسيده است ، محاسبه ميکند:

و حاصل را در مشتق تابع فشرده سازي ضرب کرده تا ترم اطلاعات خطاي  بدست آيد:

سپس مقداري را که بعدا براي تصحيح وزن و باياس  نياز است ، بدست مي آورد :

تصحيح اوزان و باياسها :

مرحله 8 : هر کدام از واحدهاي خروجي وزنها ( j=0,…,p ) و باياس خودرا به صورت زير تصحيح ميکنند :

هر کدام از لايه هاي پنهان نيز وزنها ( i=0,…,n ) و باياس مربوطه را به صورت زير تصحيح ميکند :

مرحله 9 : شرط پايان برقرار است. پايان الگوريتم يادگيري.

البته در زمان پياده سازي بايد آرايه هاي مجزايي براي دلتاهاي واحدهاي خروجي ( مرحله 6 ،  ) و واحدهاي پنهان ( مرحله 7 ، ) تشکيل شود.

يک دوره[16] ، چرخه اي کامل حول مجموعه يادگيري است.تعداد زيادي چرخه براي آموزش يک شبکه عصبي انتشار به عقب لازم است. معمولا چرخه آموزش را تا زماني که ميانگين کل خطا به يک مقدار حداقل مطلوب يا صفر برسد ادامه مي دهند (شرط پايان) . در برخي مواقع مقدار خطاي ميانگين در طي چند دوره تغييري نميکند . در اين صورت نيز يادگيري شبکه عصبي پايان مي يابد.

عموما مقدار دهي اوليه اوزان و باياسها به صورت تصادفي با مقادير کوچک انجام ميشود. ثابت شده است که انتخاب هر مقدار اوليه براي وزنها و باياسها به سمت مقدار صحيح آنها همگرا است. بدين معني که هر مقداري براي آنها انتخاب کنيم ، پارامترهاي شبکه تنظيم خواهند شد. تنها تفاوتي که وجود دارد ، در صورت فاصله زياد مقادير اوليه وزنها و باياسها با مقادير صحيح آنها ،  براي رسيدن به مقادير مطلوب تعداد دوره ها زياد خواهد بود  . Nguyen-Widrow[1990] روشي را براي مقدار دهي اوليه اوزان و باياسها پيشنهاد داده اند که باعث ميشود وزنها با فاصله کمي نسبت به مقدار صحيح آنها انتخاب شوند . توضيح اين روش در حوصله اين مقوله نيست و علاقه مندان ميتوانند با مراجه به منابع شبکه هاي عصبي مصنوعي اين روش را بياموزند.

در زمينه تعيين تعداد الگوهاي يادگيري لازم براي تعليم شبکه روشي وجود دارد. اگر P تعداد الگوهاي يادگيري ، W تعداد وزنهاي شبکه و حداکثر خطاي مجاز شبکه e باشد ، بدين منظور که شبکه به صورت صحيح عمل کند و بتواند عمل دسته بندي را با دقت 1-e انجام دهد ، بايد رابطه زير برقرار باشد :

به عنوان مثال در صورتيکه e=0.1 و W=80 باشد ، ما به 800 (P=800) الگوي يادگيري نيازمنديم تا مطمئن شويم که شبکه عصبي مصنوعي طراحي شده در 90% مواقع به صورت صحيح عمل ميکند. اثبات اين مسئله توسط Baum و Haussler در سال 1989 انجام شد.

در شبکه هاي پرسپترون چند لايه ، تعداد لايه هاي پنهان ميتواند هر تعداد باشد. البته در بيشتر کاربردها يک لايه پنهان کفايت ميکند . در برخي مواقع نيز دولايه پنهان يادگيري شبکه را ساده تر ميکند. در حالتي که تعداد لايه هاي پنهان بيش از يک لايه باشد ، بايد الگوريتم ذکر شده در بالا را براي تمامي لايه ها تعميم داد.

روشي عملي براي تخمين  تعداد واحدها (نرونها ) در هر لايه پنهان در دست نيست. بدين منظور بايد از روشهاي سعي و خطا استفاده کرد تا به مقدار ميانگين خطاي کل مطلوب رسيد.

براي مدلسازي  شبکه هاي عصبي مصنوعي ابزاهاي زيادي وجود دارد . از اين جمله:

·         SNN (Stuttgart Neural Network Simulator)

·         Matlab standard NN Toolbox

·         Netlab toolbox for Matlab

به عنوان نمونه ميتوانيد از Netlab که يک تول باکس مجاني براي نرم افزار Matlab  ميباشد استفاده کنيد. براي استفاده از آن ميتوانيد به آدرس زير رجوع کنيد:

http://www.ncrg.aston.ac.uk/netlab/index.php

 


پانوشتها

[1] Artificial Neural Network

[2] Model Free

[3] Neuro-synaptic

[4] Activation function

[5] Squashing

[6] Local

[7] Training

[8] Training set

[9] Squashing

[10] Sigmoid

[11] Gradient descent

[12] Mean Square Error(MSE)

[13] Perseptron

[14] Feed forward

[15] Back propagation training

[16] Epoch

مرجع: www.irandoc.ac.ir   

+ نوشته شده در ساعت توسط alireza |

 

چكيده:

سيستم تشخیص گفتار نوعی فناوری است که به یک رايانه این امکان را می دهد که گفتار و کلمات گوینده را بازشناسی و خروجي آنرا به قالب مورد نظر، مانند "متن"، ارائه كند. در این مقاله پس از معرفی و ذكر تاريخچه‌اي ازفناوري سیستم ها تشخيص گفتار، دو نوع تقسیم بندی از سيستمها ارائه می شود، و سپس به برخی ضعف ها و نهایتاً کاربرد این فناوری اشاره می شود.

كليد واژه ها: سيستمهاي تشخیص گفتار، فناوري اطلاعات، بازشناسي گفتار


1. مقدمه
گفتار برای بشر طبیعی ترین و کارآمدترین ابزار مبادله اطلاعات است. کنترل محیط و ارتباط با ماشین بوسیله گفتار از آرزوهای او بوده است.طراحی و تولید سیستم های تشخیص گفتار هدف تحقیقاتی مراکز بسیاری در نیم قرن اخیر بوده است.یکی از اهداف انسانها در تولید چنین سیستم هایی مسلماً توجه به این نکته بوده است که "ورود اطلاعات به صورت صوتی ،اجرای دستورات علاوه بر صرفه جویی در وقت و هزینه ،به طرق مختلف کیفیت زندگی ما را افزایش می دهند.امروزه دامنه ای از نرم افزارها (که تحت عنوانSpeech Recognition Systems معرفی می شوند) وجود دارند که این امکان را برای ما فراهم کرده اند.با استفاده از این تکنولوژی می توانیم امیدوار باشیم که چالش های ارتباطی خود را با محیط پیرامون به حداقل برسانیم.
2.تعریف
قبل از پرداختن به به سیستم های تشخیص گفتار لازم است که فناوری تولید گفتار و تشخیص گفتار با تعریفی ساده از هم متمایز شوند:
 ● فناوری تولید گفتار(Text To Speech):تبدیل اطلاعاتی مثل متن یا سایر کدهای رایانه ای به گفتاراست.مثل ماشین های متن خوان برای نابینایان،سیستم های پیغام رسانی عمومی. سیستم های تولید گفتار به خاطر سادگی ساختارشان زودتر ابداع شدند. این نوع از فناوری پردازش گفتار موضوع مورد بحث در این مقاله نیستند.
 
 ● فناوری تشخیص گفتار(Speech Recognition System ): نوعی فناوری است که به یک کامپیوتراین امکان را می دهد که گفتارو کلمات گوینده ای را که از طریق میکروفن یا پشت گوشی تلفن صحبت می کند،بازشناسی نماید. به عبارت دیگر در این فناوری هدف خلق ماشینی است که گفتار را به عنوان ورودی دریافت کند و آنرا به اطلاعات مورد نیاز (مثل متن)تبدیل کند.


3.تاریخچه فناوری تشخیص گفتار
اولین سیستم های مبتنی بر فناوری تشخیص گفتار در سال 1952  در"آزمایشگاههای بل"طراحی شد.این سیستم به شیوه گفتار گسسته و به صورت وابسته به گوینده و با تعداد لغت محدود 10 لغت عمل می کرد.در اوایل دهه 80 میلادی برای اولین بار الگوریتم مدلهای مخفی مارکوف "Hidden Markov Model" ارائه شد.این الگوریتم گامی مهم در طراحی سیستم های مبتنی بر گفتار پیوسته به حساب می آمد.همچنین در طراحی این سیستم از مدل شبکه عصبی و نهایتاً ازهوش مصنوعی نیز استفاده می شود.در ابتدا شرکتهای تجاری این فناوری را برای کاربردهای خاصی طراحی کردند.به عنوان مثال شرکت Kurzweil در زمینه پزشکی و مخصوصاً برای کمک به معلولان و نابینایان و شرکت Dragon در زمینه خودکارسازی سیستمهای اداری محصولات اولیه وارد بازارکردند. توانجویان در واقع اولین گروهی بودند که از این دسته محصولات به عنوان یک فناوری انطباقی و یاریگر،عمدتاً برای دو عملکرد کنترل محیط و واژه پردازی استفاده کردند.
جیمز بیکر James K.Baker یکی از محققان شرکت IBM که در اواخر دهه 1970 در مورد این فناوری مقالات زیادی نوشت، یکی از پیشگامان این طرح بود.او و همکارانش یک شرکت خصوصی به نام Dragon Systems تاسیس کردند.این شرکت ابتدا در دهه 1990 نرم افزاری به نام Dragon Dictate تولید کرد که یک سیستم مبتنی بر گفتار گسسته بود.در سال 1997 این شرکت محصولی را تولید کرد که به جای استفاده از گفتارگسسته ،مبتنی بر گفتار پیوسته بود.در واقع این شرکت با ارائه نرم افزار Dragon Naturally Speaking (DNS) اولین سیستم تشخیص گفتار پیوسته را ارائه نمود.این سیستم توانایی تشخیص گفتار با سرعت 160 کلمه در دقیقه را داشت.همچنین شرکت تجاری IBM هم در این زمینه برای سالهای متمادی فعالیت می کرد که با طراحی بسته نرم افزاری Via Voice به ارائه سیستم های تشخیص گفتار پرداخت که در حال حاضر Scansoft محصولات IBM Via Voice  راتوزیع و پشتیبانی می کند.شرکت مایکروسافت نیز فعالیتهایی درجهت تولید و کاربرد این فناوری داشته است،و بیل گیتس Bill Gates در کتابها و سخنرانی هایش به کرات در مورد آینده درخشان استفاده از سیستم های تشخیص گفتار تاکید کرده است. البته عملاً تا قبل از ارائه نرم افزار office XP وword 2002 این تکنولوژی در محصولات این شرکت بکاربرده نشد.گرچه در ابتدا عمده موارد استفاده این تکنولوژی ،برای افراد توانجو پیش بینی شده بود اما بعدها پذیرش استفاده از آن گسترده تر شد و گروههای بسیاری در مدارس و دانشگاهها علاقه مند به استفاده ازاین فناوری شدند. بطوریکه Seton Hall University نیز برای تشویق دانشجویان به آشنایی با این سیستم به دانجشویان جدید الورود نرم افزار IBM Via Voice را اهدا می کرد.


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


 

شکل 1

 


1.4 تبدیل گفتاربه داده
برای تبدیل گفتار به یک متن روی صفحه یا یک فرمان کامپیوتری، یک سیستم باید راه دشواری را طی کند.وقتی که گوینده صحبت می کند،لرزشهایی در هوا ایجاد می شود،سیستم تشخیص گفتار ابتدا امواج صوتی آنالوگ را دریافت می کند،مبدل آنالوگ به دیجیتال Analog-to-digital converter (ADC) این امواج آنالوگ را به داده های دیجیتالی تبدیل می کند. سپس سیگنال به سگمنت های کوچکی که به اندازه چند صدم ثانیه یا در مورد صداهای Plosive Consonant چند هزارم یک ثانیه هستند،تقسیم می شود. در مرحله بعد برنامه این سگمنت ها را به phoneme های شناخته شده در زبان تبدیل می کند.Phoneme ،کوچکترین عنصریک زبان است (ارائه ای از صداهایی که ما می سازیم و برای شکل دادن واژه های معنی دار آنها را در کنار هم قرار می دهیم).گام بعدی ساده به نظر می رسد اما در واقع انجام آن بسیار دشوار است .برنامه Phoneme های موجود را با سایر Phoneme هایی که درکنار آن قرار دارد،امتحان می کند و Phonemeهای هم بافت را از طریق یک مدل آماری بسیار پیچیده نقطه (plot) می کندو آنها را با مجموعه بزرگی متشکل از واژه های شناخته شده،عبارات و جملات مقایسه می کند.برنامه سپس چیزی را که کاربر احتمالاً گفته است مشخص می کند و آن را به عنوان متن یا شکل یک فرمان کامپیوتری یا صوت بیرون می دهد.


2.4 تشخیص گفتار با استفاده از مدل(الگوریتم)آماری
سیستم های تشخیص گفتار اولیه سعی داشتند مجوعه ای از قوانین گرامری و دستوری را با گفتار ورودی منطبق کنند. به این صورت که اگر کلمه های گفته شده در داخل مجموعه ای از قواعد و قوانین جای می گرفتند و با آن سازگار می شدند،برنامه می توانست کلمه را تشخیص دهد. تنوع لهجه ها ونوع گفتار افراد مختلف در این حالت از تشخیص می توانست تاثیر منفی بر روی دقت این سیستم ها بگذارد. به عنون مثال تلفظ کلمه barn توسط فردی از بوستون و لندن متفاوت است در حالی که هر دو یک لغت را بکار برده اند.سیستم ها مبتنی بر قواعد و قوانین دستوری به این دلیل موفق نبودند که نمی توانستند گفتار ممتد را با حداقل میزان اشتباه تشخیص دهند.
سیستم های تشخیص گفتار امروزی از سیستم های مدل آماری بسیار قدرتمند و پیچیده ای استفاده می کنند.این سیستم ها از قواعد احتمالات وریای برای تشخیص نتیجه استفاده می کنند. دو مدل مسلط امروز در این حوزه مدل مخفی مارکوف "Hidden Markov Model" و مدل شبکه عصبی"Neural Netwok Model" هستند.این روشها اساساً برای مشخص کردن اطلاعات پنهان از سیستم،از اطلاعاتی که برای سیستم شناخته شده هستند استفاده می کنند. مدل Hidden Markov رایج ترین مدل است.در این مدل هرPhoneme مثل یک پیوند در یک زنجیره است و هنگامی این زنجیره تکمیل می شود،یک کلمه بوجود می آید.در طی این فرایند، برنامه یک score احتمالات را بر اساس دیکشنری توکار و آموزش کاربر به هر Phoneme اختصاص می دهد. این فرایند برای عبارات و جملات،حتی از این هم پیچیده تر است. (سیستم مجبور است مشخص کند که هر کلمه کجا شروع می شود و کجا به اتمام می رسد). گاهی برنامه ناچار است عباراتی را که شنیده است را با عبارت یا عبارت های قبل ار آن که در بافت جمله هستند مقایسه کند،آنرا تجزیه و تحلیل کند تا بتواند آنرا به درستی تشخیص دهد.بنابراین اگر یک برنامه دارای 60000 کلمه باشد ترتیبی از سه کلمه می تواند هر یک از 216 تریلیون احتمال ممکن باشد.بدیهی است که حتی قدرتمندترین سیستم هم نمی تواند بدون کمک،تمام این احتمالات را جستجو کند. این کمک به شکل"آموزش"برنامه ارائه می شود.با وجود اینکه توسعه دهندگان و طراحان نرم افزار که دستگاه واژگانی اصل سیستم را تنظیم می کنند،بخش اعظمی از این آموزش را انجام می دهند اما کاربر نهایی نیز باید زمان زیادی را صرف این آموزش کند.
 
5.سیستم های تشخیص گفتار:تقسیم بندی بر اساس عملکرد
فناوری تشخیص گفتار بر اساس سه معیارقابل بررسی و طبقه بندی است:
الف.تعدادگویندگان
ب.شیوه صحبت کردن
ج.اندازه بانک واژگان
که در ادامه به توضیح هر یک پرداخته می شود.


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


2.5 شیوه صحبت کردن
نحوه صحبت کردن گوینده می تواند به دو صورت "گفتار گسسته" و یا "گفتار پیوسته" باشد. در سیستم های مبتنی بر گفتار گسسته گوینده کلمات را جدا جدا و با مکث حداقل 200 میلی ثانیه بین آنها ادا می کند تا سیستم کلمات را بصورت مجزا تشخیص دهد. در این نوع از سیستم بانک واژگان شامل کلماتی است که برای سیستم از قبل تعریف شده است. وقتی که سیستم مبتنی بر گفتار پیوسته باشد،مرز کلمات گوینده واضح نیست که در این صورت برای انطباق گفتار با بانک واژگان، بانک واژگان از "واجهای" زبان تعریف شده تشکیل شده است.


3.5 اندازه بانک واژگان
اندازه بانک واژگان ، از نظر واژگان ذخیره شده در سیستم " محدود" ویا "بزرگ" است. که بین نوع سیستم از نظر وابستگی به گوینده و اندازه بانک واژگان رابطه معکوس وجود دارد.در سیستم های وابسته به گوینده اندازه بانک واژگان بزرگ و تعداد کاربر کم است. این نوع سیستم ها که معمولا در محیط های تجاری بکار گرفته می شوند و تعداد کمی کاربر با این برنامه کار می کنند به بهترین نحو ممکن جوابگو هستند. در حالی که این سیستم ها با سطح دقتی مناسب کار می کنند و دارای هزاران کلمه هستند باید طوری تنظیم شوند که با تعداد کوچکی از کاربران اصلی کار کنند و میزان دقت این سیستم ها تا حد بسیار زیادی به کاربر بستگی دارد. در سیستم هایی که مستقل از گوینده عمل می کنند،تعداد کاربران زیاد است اما تعداد واژاگان اندک است. در این سیستم ها کاربران می توانند با لهجه ها و الگوهای گوناگون تلفظ صحبت کنند هرچند،استفاده از این سیستم ها محدود به تعداد اندکی از فرامین و ورودی های از پیش تعریف شده نظیر گزینه های ابتدایی و اعداد است.
 
6.سیستم های تشخیص گفتار:تقسیم بندی بر اساس برونداد
سیستم های تشخیص گفتار همگی در یک ویژگی مشترک هستند و آن "لزوم درونداد به صورت صوتی" در این گونه سیستم هاست.این سیستم ها را بر اساس بروندادی که ارائه می کنند می توانیم به سه دسته تقسیم بندی کنیم:
الف.سیستم های گفتار به متنSpeech To Text  
ب. سیستم های گفتار به گفتارSpeech To Speech
ج.سیستم های گفتار به فرامین Speech To Command
که در ادامه هریک به طور مختصر معرفی می شوند.


1.6 گفتار به متن Speech To Text
این دسته از سیستم ها توانایی تبدیل گفتار به متن یا تشخیص خودکار گفتار را دارند.از این تکنولوژی برای "دیکته کردن و ایجاد مدرک" استفاده می شود.از آنجایی که تایپ کامپیوتری از کارهای متداول و وقت گیربرای کاربرهای عادی و پیشرفته می باشد بنابراین اولین موارد استفاده از این تکنولوژی ،تایپ کامپیوتری بوده است که باعث افزایش سهولت و سرعت تایپ می شده است مثل کاربرد این سیستم برای روزنامه نگاران و حقوقدانان. این امر به ویژه زمانی که افراد ملزم به تایپ مکرر هستند اهمیت پیدا می کند زیرا بیماری Carpal Tunnel Syndrome  (سندرم کانال مچی) که یکی از انواع آسیب های ناشی از تکرار می باشد در اثر استفاده تکرار شونده از کیبورد برای تایپ پدید می آید. با استفاده از سیستم های تشخیص صدا و تایپ با کیبورد به طور همزمان می توان از بروز اینگونه آسیب ها جلوگیری کرد.همچنین افراد توانجو یا کسانی که به هر نحو قادر به تایپ کردن نمی باشند، می توانند خود را با یان سیستم ها تطبیق دهند و از آنها بطور موثری استفاده کنند(به عنوان مثال افرادی که قادر به استفاده از دستان خود نیستند،یا از لحاظ بینایی دچار مشکل هستند). حتی گزارش شده است که استفاده از یک نرم افزار تشخیص صدا به یک مرد مبتلا به بیماری "زبان پریشی" کمک کرده است که بتواند عقایدش را در قالب زبان نوشتاری بیان کند و با اطرافیان خود ارتباط برقرار کند.برخی نرم افزارها در زیر برای آشنایی معرفی می شوند:

 


شکل 2


IBM Via Voice (IBM Voice Dictation for Linux)

●  تنها نرم افزاری است که سیستم عامل لینوکس را پشتیبانی می کند


 Myers Hidden Markov Model Software

●  نرم افزاری است که توسط ریچارد می یر با الگوی HMM نوشته و طراحی شده است و برای کاربران حرفه ای کاربرد دارد.
     فناوری استفاده شده در ویندوز ویستا
    فناوری استفاده شده در ویندوز XP
●  که در قالب برنامه های word xp و word 2002 به بعد، ارائه شده است.
 
نرم افزار دیکته خودکار فارسی/انگلیسی نویسا
●  یک نرم افزار تشخیص گفتار به دو زبان فارسی و انگلیسی بدون وابستگی به گوینده است که توسط گروه SPl (Speech processing Lab) در دانشگاه صنعتی شریف طراحی و تولید شده است. کاربرمی تواند از این نرم افزار در هر ویرایشگری در محیط ویندوز استفاده کند.


2.6 گفتار به گفتار Speech To Speech
سیستم های گفتار به گفتار شامل استفاده از فناوری تشخیص گفتارعمدتاً در تولید نرم افزارهای ترجمه گفتار به گفتار می باشد.شرکت Via یک تولید کننده کامپیوترهای پوشیدنی است. این شرکت یک مترجم زبانی را توسعه داده است که در اختیار انگلیسی زبانان قرار گرفته است که البته این محصول در تعداد انبوه وارد بازارنشده است.نام این ابزار که نوعی سخت افزار است ،"ابزار مترجم جهانی Via II" می باشد ،وسیله ای است به اندازه یک گوشی تلفن با عملکرد PC که به کمر کاربر متصل می شود یا در جیب لباس وی قرار می گیرد.Via II با یک نرم افزار تشخیص صدا سازگار است و با داشتن در گاه USB حتی امکان اتصال به ادوات جانبی را هم دارا است.این ابزار با قدرت شناسایی مجموعه گسترده ای از زبانها نظیر کره ای،صربستانی،عربی،تایلندی،چینی،و... ارائه می شود .این سیستم برای کاربران انگلیسی زبان طراحی شده است که قادر است صدای کاربر را شناسایی کندو به زبان مقصد ترجمه کندو از طریق بلندگو پخش کند و همچنین در مدت زمان کوتاهی قادر است که پاسخ فرد مخاطب را به انگلیسی ترجمه کند که به این ترتیب یک ترجمه دو طرفه انجام می شود.

 

شکل 3

 

 

 آژانس پروژه های تحقیقاتی پیشرفته دفاعی دارای سه تیم از محققانی است که بر روی Global Autonomous Language Exploitation یا (GALE) که برنامه ای که اطلاعات روزنامه ها و اخبار پخش شده در زبانهای خارجی را ترجمه می کند،کار می کنند. این پروژه امیدوار است که بتواند نرم افزاری ایجاد کند که بتواند دو زبان را با حداقل 90 درصد دقت به یکدیگر ترجمه کند.این آژانس همچنین بر روی یک پروژه تحقیقی و توسعه به نام TRANSTAC سرمایه گذاری کرده است که سربازان ایالات متحده امریکا را قادر می کند به شکل موثرتری با جمعیت غیر نظامی کشورهای غیر انگلیسی زبان به تعامل بپردازند.
موارد بالا نمونه هایی از تلاش محققان جهان برای توسعه این فناوری بودند.در ایران و برای کاربران فارسی زبان نیر "نرم افزار پارسیا" طراحی و تولید شده است که یک نرم افزار ترجمه صوتی(گفتار به گفتار) زبان فارسی است و عبارات رایج و مکالمات روزمره فارسی را به زبانهای مقصد (انگلیسی و عربی) ترجمه می کند. این نرم افزار توسط گروه SPL دانشگاه صنعتی شریف طراحی و تولید شده است.
 
3.6 گفتار به دستور  Speech To Command
از این نوع فناوری برای کنترل برنامه ها (computer control) استفاده می شود. با استفاده از این فناوری کاربر می تواند با ادا کردن دستورات آنها را انجام دهد. تقریباً اولین گروهی که روی به استفاده از این فناوری آوردند خلبانان بودند. خلبانان در اتاقک پرواز با استفاده از این سیستم ها علاوه کمک به کنترل امور پرواز بدون نیاز به دست، استرس ناشی از پرواز را کاهش می دادند. همچنین استفاده از این فناوری درحوزه های مشابه مانند فضا نوردی وهوانوردی نیزآزمایش شده است. علاوه بر این توانجویان به طور وسیع این فناوری را به عنوان ابزاری برای کنترل محیط و انطباق بیشتر با آن بکار بردند. به عنوان مثال توانجویان حرکتی قادر خواهند بود با کمک این فناوری دستورات حرکتی به صندلی چرخدار خود بدهند.یا حتی -در ایده ال ترین وضعیت- به کمک کار گذاشتن تراشه های هوشمند و سازگار با فناوری تشخیص صدا در عضو مصنوعی به دست و پای مصنوعی خود فرمانهای حرکتی متنوع صادرکنند.

 

شکل 4

 
با استفاده از این فناوری کاربر می تواند با گفتن جملات دستوری مانند" فایل را باز کن" یا "صفحه راببند" برنامه های مختلف کامپیوتری رانیزکنترل کند. از این فناوری به همراه قابلیت Speech To Text در برخی سیستم های عامل استفاده شده است. برخی از نرم افزارها در زیر آورده شده اند:


 C Voice Control (Consol Voice Control)

در سیستم عامل لینوکس استفاده می شود و امکان اجرای دستورات را بوسیله فرامین صوتی فراهم می کند.

Game Commander

برنامه ای است مستقل از گوینده و بدون نیاز به آموزش که با ایجاد فرمانهای صوتی برخی بازی های مشهور ویندوز را کنترل می کند.
 
7.کاربرد فناوری تشخیص گفتار در کتابخانه
سیستم های تشخیص گفتار آنچنان که در حوزه های دیگر مثل پزشکی و انجمن های  حقوقی مورد استفاده قرار گرفتند در کتابخانه ها بکار گرفته نشده اند و کتابخانه ها بیشتر موضعی منفعلانه نسبت به بکارگیری این فناوری از خود نشان داده اند.اما با توجه به ماهیت خدمات کتابخانه ای و همچنین تنوع کاربرانی که تمایل به استفاده ازکتابخانه دارند مطمئناً وجود چنین فناوری کمک فراوانی به کتابداران در تسریع و بهبود خدمات کتابخانه ای می کند.به عنوان مثال در کارهای خدماتی –فعالیت هایی که کتابدار به یک ابزار ارتباطی غیر از چشم ها و دست ها نیاز دارد- مثل رف خوانی و فهرست نویسی پیوسته، ویا در فعالیتهای مربوط به سرویسهای کتابخانه ای مثل بازیابی اطلاعات و کنترل فرایند امانت، و نهایتاً در ایجاد امکان دسترسی به پایگاههای اطلاعاتی از راه دور می تواند کاربرد موثری داشته باشد. همچنین با استفاده از اینگونه سیستم ها می توان به نمایه سازی چند رسانه ای ها (مانند فیلم و ویدئو ) پرداخت که دراین حالت کلمات کلیدی در قالب گفتار وارد می شوند و به صورت گفتارنیز بازیابی می شوند. از سوی دیگر با ورود این فناوری به کتابخانه ها و فعالیتهای آن می توان انتظار داشت که کاربران کتابخانه بطور چشمگیری افزایش یابند،چرا که همیشه کاربرانی هستند که نمی توانند با سیستم معمول کتابخانه کار کنند و از منابع اطلاعاتی آن استفاده کنند.این گروه کاربران می توانند کم سوادان ویا طیف وسیعی از توانجویان باشند که در صورت بکارگیری این فناوری آنها نیز با امکان دسترسی به منابع جزو کاربران همیشگی کتابخانه ها می شوند.
 
8.سیستم های تشخیص گفتار:ضعف ها و محدودیت ها
هیچ برنامه تشخیص گفتاری که بتواند صد در صد درست عمل کند وجود ندارد،چندین عامل وجود دارند که می توانند میزان دقت این برنامه ها را کاهش دهند ویا استفاده از آنها را محدود کنند:
 
1.8 ورود سرو صدای محیط(Noise)
 برنامه باید واژه هایی که ادا می شوند به طور واضح بشنود. هرنوع صدای اضافی همزمان با صدای گوینده وارد شود می تواند با واجهای صوتی اشتباه گرفته شود و در این فرایند تداخل ایجاد کند.منبع ایجاد نویز می تواند بسیار گوناگون باشد.مثل نویز موجود در صدای پس زمینه دریک محیط اداری و شلوغ که برای حذف آنها درهنگام استفاده کاربران باید در یک مکان نسبتاً آرام مستقر شوند و از میکروفن با کیفیت (مثل میکروفونهای noise-canseling) استفاده کنند و یا در هنگام صحبت میکروفن را در نزدیکی دهان خود قرار دهند.
گاهی نیز کارت های صوتی کیفیت پایین باعث کم شدن دقت سیستم می شوند این کارت ها اغلب فاقد لایه محافظ در برابر سیگنال الکتریکی ایجاد شده توسط سایر اجزای کامپیوتر هستند و می توانند صدای hum یا hiss را به سیگنال (صوتی) وارد کنند.
امروزه با بکار گیری" نرم افزار بهبود کیفیت " به همراه این فناوری تا حد زیادی سروصدای محیط و خش های اضافی قابل حذف شدن می باشد.این محصول می تواند هم به صورت نرم افزاری مستقل مورد استفاده قرار گیرد و هم به صورت یک امکان مجزا برای بهبود کیفیت گفتار و در نتیجه بهبود کارایی و دقت در نرم افزارهای دیگر بکار گرفته شود. این نرم افزار یکی از محصولات گروه SPL دانشگاه صنعیت شریف می باشد.


2.8 اثر گذاری کلمات بر یکدیگر و نحوه تلفظ آنها
اثر گذاری کلمات بر روی همدیگر هنگام ادا شدن توسط گوینده ها وحتی حذف شدن واج های ابتدایی و انتهایی هنگام چسبیدن کلمات به هم کار تشخیص را مشکل می سازد.همچنین نحوه تلفظ کلمات توسط افراد مختلف و وجود لهجه های گوناگون بر دقت سیستم تاثیر می گذارند.در یک محیط کاری ،کاربران اصلی برنامه باید زمان نسبتاً زیادی را صرف صحبت کردن در سیستم کنند تا سیستم را با الگوی تلفظی خود آموزش دهند و آنرا با گفتار خود هماهنگ کنند. همچنین آنها باید سیستم را با واژه ها ،اصطلاحات و کلمات مترادف ویژه ای که در آن محیط استفاده می کنند،آموزش دهند. نسخه های ویژه ایاز برنامه های تشخیص صدا(که معمولاً وابسته به گوینده هستند) برای دفاتر قانونی یا مراکز درمانی وجود دارد که دارای واژه های مصطلح و رایجی که در این محیط ها بکار برده می شوند هستند.


3.8 کلمات متشابه (Homonym ها)
Homonym ها واژه هایی هستند که از نظر تلفظ شبیه هم هستند اما از نظر معنی و ریشه و گاهی املا با هم فرق دارند.there ،their، air ،heir ؛ be و bee مثال هایی از این نوع کلمات هستند. هیچ راهی برای یک برنامه تشخیص صدا وجود ندارد که بتواند بطور دقیق تفاوت بین این واژه ها را بر اساس صدا به تنهای تشخیص دهد.هرچند که  آموزش های بسیار زیاد سیستم ها و مدلهای آماری که امروزه به کار می رود تا حد زیادی کارایی این برنامه ها را افزایش داده است.


4.8 ایجاد سرو صدا
ایجاد سرو صدا یکی از محدودیت های این سیستم ها است. با توجه به لزوم تعامل صوتی انسان با این سیستم در هنگام استفاده این مشکل امری طبیعی است ولیکن برای کاهش مزاحمت و افزایش کارایی بهتر است که از این فناوری در محیط های خاص دربسته و مجزا استفاده شود.محدودیت دیگری که هنگام کار با این سیستم با آن مواجه می شویم خطر فاش شدن اطلاعات شخصی و محرمانه هنگام ورد اطلاعات است .یک راه ابتکاری والبته معقول وجود دارد و آن استفاده از ماسک های مخصوص مجهز به میکروفن حساس است . با استفاده از این ماسک ها  می توان با پایین ترین فرکانس صوتی ممکن صحبت کرد به طوری که دیگران صدای ما را نشنوند ودر عین حال مطمئن باشیم که صدای ما از طریق میکروفن وارد شده است.
 
نتیجه گیری
استفاده از گفتار به عنوان درونداد اطلاعاتی علاوه بر سرعت،در نحوه تعامل انسان بر محیط تاثیر بسزایی داشته است. با وجودیکه در حال حاضر سیستم های زیادی برای تشخیص گفتار وجود دارد ولی همه این دستاوردها به گونه ای، دسته ای از محدودیت های ساده کننده را یدک می کشند که حذف این محدودیت ها می تواند به صورت قابل ملاحظه ای بر پیچیدگی این سیستم ها بیفزاید. هدف نهایی درسیستم های  ”تشخیص گفتار“ ایجاد سیستمهایی است که بتوانند مانند انسان بشنوند و عکس العمل مناسب نشان دهند(سیستم های مستقل از گوینده وگفتار پیوسته). تا کنون گروهها و حوزه های مختلف فراخور نیازهایشان در انجام فعالیت هایشان از این فناروی استفاده کرده اند. امااز این فناوری عملا در کتابخانه ها و مراکز اطلاع رسانی به ندرت استفاده شده است که می تواند نتیجه عدم شناخت قابلیتهای این فناوری توسط کاربران ، مدیران وکارکنان کتابخانه ها باشد. دسترس پذیر کردن منابع اطلاعاتی و گشودن دروازه های اطلاعاتی به روی همه کاربران یکی از اهداف مهم کتابخانه هاست.از اینرو ، این سازمان پویا با توجه به این اصل و حمایت های همه جانبه می تواند همگام با پیشرفت  فناوری به این هدف آرمانی خود نزدیک تر شود. حتی زمانی در آینده دور ممکن است تشخیص گفتار (Speech Recognition) تبدیل به در ک گفتار (Speech Understanding) شود. مدل های آماری که به سیستم ها اجازه می دهند در مورد گفتار یک فرد تصمیم گیری کنند، روزی به آن ها اجازه خواهند داد معنی نهفته در پشت کلمات را نیز درک کنند ،اگر چه قطعاً تنها مدل کاملاً موفق از سیستم تشخیص گفتار سیستم شنوایی انسان است که هنوز اسرار آمیز و ناشناخته جلوه می کند.
  

مرجع: www.irandoc.ac.ir   


+ نوشته شده در ساعت توسط alireza |


Error Description
1
Unknown statement
2
Unknown structure EXIT statement
3
WHILE expected
4
No more space for IRAM BIT
5
No more space for BIT
6 .
expected in filename
7
IF THEN expected
8
BASIC source file not found
9
Maximum 128 aliases allowed
10
Unknown LCD type
11
INPUT, OUTPUT, 0 or 1 expected
12
Unknown CONFIG parameter
13
CONST already specified
14
Only IRAM bytes supported
15
Wrong data type
16
Unknown Definition
17 9
parameters expected
18
BIT only allowed with IRAM or SRAM
19
STRING length expected (DIM S AS STRING * 12 ,for example)
20
Unknown DATA TYPE
21
Out of IRAM space
22
Out of SRAM space
23
Out of XRAM space
24
Out of EPROM space
25
Variable already dimensioned
26
AS expected
27
parameter expected
28
IF THEN expected
29
SELECT CASE expected
30
BIT's are GLOBAL and can not be erased
31
Invalid data type
32
Variable not dimensioned
33
GLOBAL variable can not be ERASED
34
Invalid number of parameters
35 3
parameters expected
36
THEN expected
37
Invalid comparison operator
38
Operation not possible on BITS
39
FOR expected
40
Variable can not be used with RESET
41
Variable can not be used with SET
42
Numeric parameter expected
43
File not found
44 2
variables expected
45
DO expected
46
Assignment error
47
UNTIL expected
50
Value doesn't fit into INTEGER
51
Value doesn't fit into WORD
52
Value doesn't fit into LONG
60
Duplicate label
61
Label not found
62
SUB or FUNCTION expected first
63
Integer or Long expected for ABS()
64 ,
expected
65
device was not OPEN
66
device already OPENED
68
channel expected
70
BAUD rate not possible
71
Different parameter type passed then declared
72
Getclass error. This is an internal error.
73
Printing this FUNCTION not yet supported
74 3
parameters expected
80
Code does not fit into target chip
81
Use HEX(var) instead of PRINTHEX
82
Use HEX(var) instead of LCDHEX
85
Unknown interrupt source
86
Invalid parameter for TIMER configuration
87
ALIAS already used
88 0
or 1 expected
89
Out of range : must be 1-4
90
Address out of bounds
91
INPUT, OUTPUT, BINARY, or RANDOM expected
92
LEFT or RIGHT expected
93
Variable not dimensioned
94
Too many bits specified
95
Falling or rising expected for edge
96
Prescale value must be 1,8,64,256 or 1024
97
SUB or FUNCTION must be DECLARED first
98
SET or RESET expected
99
TYPE expected
100
No array support for IRAM variables
101
Can't find HW-register
102
Error in internal routine
103 =
expected
104
LoadReg error
105
StoreBit error
106
Unknown register
107
LoadnumValue error
108
Unknown directive in device file
109 =
expected in include file for .EQU
110
Include file not found
111
SUB or FUNCTION not DECLARED
112
SUB/FUNCTION name expected
113
SUB/FUNCTION already DECLARED
114
LOCAL only allowed in SUB or FUNCTION
115 #
channel expected
116
Invalid register file
117
Unknown interrupt
200 .
DEF not found
201
Low Pointer register expected
202 .
EQU not found, probably using functions that are not supported by the selected chip
203
Error in LD or LDD statement
204
Error in ST or STD statement
205 }
expected
206
Library file not found
207
Library file already registered
210
Bit definition not found
211
External routine not found
212
LOW LEVEL, RISING or FALLING expected
213
String expected for assignment
214
Size of XRAM string 0
215
Unknown ASM mnemonic
216
CONST not defined
217
No arrays allowed with BIT/BOOLEAN data type
218
Register must be in range from R16-R31
219
INT0-INT3 are always low level triggered in the MEGA
220
Forward jump out of range
221
Backward jump out of range
222
Illegal character
223 *
expected
224
Index out of range
225 ()
may not be used with constants
226
Numeric of string constant expected
227
SRAM start greater than SRAM end
228
DATA line must be placed after the END statement
229
End Sub or End Function expected
230
You can not write to a PIN register
231
TO expected
232
Not supported for the selected micro
233
READ only works for normal DATA lines, not for EPROM data
234 ')
block comment expected first
235 '(
block comment expected first
236
Value does not fit into byte
238
Variable is not dimensioned as an array
239
Invalid code sequence because of AVR hardware bug
240
END FUNCTION expected
241
END SUB expected
242
Source variable does not match the target variable
243
Bit index out of range for supplied data type
244
Do not use the Y pointer
245
No arrays supported with IRAM variable
246
No more room for .DEF definitions
247 .
expected
248
BYVAL should be used in declaration
249
ISR already defined
250
GOSUB expected
251
Label must be named SECTIC
252
Integer or Word expected
253
ERAM variable can not be used
254
Variable expected
255
Z or Z+ expected
256
Single expected
257 ""
expected
258
SRAM string expected
259 -
not allowed for a byte
260
Value larger than string length
261
Array expected
262
ON or OFF expected
263
Array index out of range
264
Use ECHO OFF and ECHO ON instead
265
offset expected in LDD or STD like Z+1
266
TIMER0, TIMER1 or TIMER2 expected
267
Numeric constant expected
268
Param must be in range from 0-3
269
END SELECT expected
270
Address already occupied
322
Data type not supported with statement
323
Label too long
324
Chip not supported by I2C slave library
325
Pre-scale value must be 1,8,32,128,256 or 1024
326 #
ENDIF expected
327
Maximum size is 255
328
Not valid for SW UART
999
DEMO/BETA only supports 2048 bytes of code
Other error codes are internal ones. Please report them when you get them

منبع

 

+ نوشته شده در ساعت توسط alireza |

 مقایسه ما با تمام میکروهای 8 بیتی هست یعنی در مجموع میشه گفت AVR یه رقیب قدرتمند برای بقیه میکروهای قوی است و یه انقلاب بزرگ هم به شمار میره. هنوز هیچ میکرویی به سرعت بالای AVR در محاسبات دست پیدانکرده .در ضمن AVR قادره که محاسبات 16 بیتی رو هم انجام بده. شهار ATMEL هم اینکه شما پول یه میکرو 8 بیتی رو میدید ولی میتونید از قایلیتهای یک میکرو 16 بیتی استفاده کنید.
AVR از معماری RISC با تعداد دستورالعمل بالا بهره میبره که دربین میکروها کم نظیر هست. اکثر دستورالعمل های آن باوجود زیاد بودن تعداد دستورالعملها در یک سیکل انجام میشه.
این میکرو از مدهای کاهش توان به خوبی بهره برده و تایید کننده آن زیاد بودن مدهای کاهش توان آن و استفاده از تقسیم کلاک به صورت نرم افزاری است که در کمتر میکرویی دیده میشه.
AVR حتی برعکس میکروهای دیگه هیچ تقسیم کلاکی انجام نمیده(مثلا 8051 کلاک رو بر 12 و PIC که یه میکرو قدرتمند هست کلاک رو بر 4 تقسیم میکنه). این امر که AVR کلاک رو تقسیم نمیکنه موجب کاهش مصرف انژی و افزایش MIPS شده.

تکنولوژی بکار رفته در
AVR موجب شده که حتی میتوان از آن در محیط های صنعتی و پر نویز براحتی از آن استفاده کرد(به گفته خود ATMEL والا هنوز خودم یه تست دقیق انجام ندادم ولی اون رو با یه فیبر یه رو و با یه کابل LCD تقریبا 20 سانتی و یا استفاده از باتری ماشین در کنار شمع پیکان غیر انژکتوری تست کردم ولی فقط در فاصله تقریبا 5-6 سانتی از اون صفحه LCD قاتی میکرد ولی نمیدونم میکرو هم ریست میشد یا نه .در ضمن قسمت تغذیه فقط از یک 7805 تشکیل شده بود. و این آزمایش هم برای خودم و هم برای چند تا از دوستانم که کارهای صنعتی انجام میدادن شگفت آور بود). اما به دلیل اینکه هنوز هیچ کسی اون رو تابه حال در محیط صنعتی تست نکرده و به دلیل اطمینان بالای PIC هیچ کسی دوست نداره اعتبار خودش رو به خطر بندازه.
یه جا یه مهندسه میگفت توی یه محط صنعتی که حتی کامپیوتر ریست میکرده
PIC به خوبی کار خودشو انجام میداده!!!!!!!!!!

در ضمن
AVR مجهز به آخرین امکانات مثل تایمر واچ داگ و برون اوت دیتکتور و مبدل های ADC و PWM است.
یکی از مهمترین بخشی که کمتر در هر میکرویی دیده میشه مقایسه کننده آنالوگ با گین 1 و 10 و 200 و .. است که بسته به میکرو فرق میکنه.
این مقایسه کننده میتونه تو ورودی مبدل
ADC قرار بگیره . این بخش برای بعضی طراحان خیلی مهمه و اونا رو مجذوب خودش کرده.

forum.persiantools.com

+ نوشته شده در ساعت توسط alireza |

میکروهای AVR دارای انعطاف پذیری غیر قابل مقایسه و بی همتایی هستند.آنها قادر به ترکیب هر نوع کدی با یک معماری کارامد از طریق زبانهای C و Assembly هستند و قادرند از طریق این برنامه ها تمام پارامترهای ممکن در یک سیکل یا چرخه ماشین را با دقت بسیار بالا هماهنگ کنند.

میکرو AVR دارای معماریی است که میتواند در تمام جهات مورد استفاده شما،عمل کند میکرو AVR معماریی دارد که برای شما کارایی 16 بیتی ارائه می دهد که البته قیمتش به اندازه یک 8 بیتی تمام می شود.

بهره های کلیدی AVR :

 

دارای بهترین MCU برای حافظه فلش در جهان ! (MCU: Master Control Unit)

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

دارای بالاترین کارایی و اجرا در CPU (یک دستورالعمل در هر سیکل کلاک)

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

دارای حافظه خود برنامه ریز

دارای واسطه JTAG که با IEEE 1149.1 سازگار است

(IEEE: Institute of Electrical and Electronics Engineers.)

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

دارای بهترین ابزارها برای پیشرفت و ترقی

دارای حالات زیادی برای ترفیع دادن یا Upgrade .

واژگان کلیدی AVR :

 

میکرو کنترلر AVR به منظور اجرای دستورالعملهای قدرتمند در یک سیکل کلاک(ساعت) به اندازه کافی سریع است و می تواند برای شما آزادی عملی را که احتیاج دارید به منظور بهینه سازی توان مصرفی فراهم کند.

میکروکنترلر AVR بر مبنای معماری  RISC(کاهش مجموعه ی دستورالعملهای کامپیوتر) پایه گذاری شده و مجموعه ای از دستورالعملها را که با 32 ثبات کار میکنند ترکیب می کند.

به کارگرفتن حافظه از نوع Flash  که AVR ها به طور یکسان از آن بهره می برند از جمله مزایای آنها است.

یک میکرو AVR می تواند با استفاده از یک منبع تغذیه 2.7 تا 5.5 ولتی از طریق شش پین ساده در عرض چند ثانیه برنامه ریزی شود یا Program شود.

میکروهای AVR در هرجا که باشند با 1.8 ولت تا 5.5 ولت تغذیه می شوند البته با انواع توان پایین (Low Power)که موجودند.

راه حلهایی که AVR پیش پای شما می گذارد، برای یافتن نیازهای شما مناسب است:

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

 

توان مصرفی پایین:

  • توان مصرفی پایین آنها برای استفاده بهینه از باتری و همچنین کاربرد میکرو در وسایل سیار و سفری طراحی شده که میکروهای جدید AVR با توان مصرفی کم از شش روش اضافی در مقدار توان مصرفی ، برای انجام عملیات بهره می برند.
  • این میکروها تا مقدار 1.8 ولت قابل تغذیه هستند که این امر باعث طولانی تر شدن عمر باتری می شود.
  • در میکروهای با توان پایین ، عملیات شبیه حالت Standby است یعنی میکرو می تواند تمام اعمال داخلی و جنبی را متوقف کند و کریستال خارجی را به همان وضعیت شش کلاک در هر چرخه رها کند!

نکات کلیدی و سودمند حافظه ی فلش خود برنامه ریز:

  • قابلیت دوباره برنامه ریزی کردن بدون احتیاج به اجزای خارجی
  • 128 بایت کوچک که به صورت فلش سکتور بندی شده اند
  • داشتن مقدار متغیر در سایز بلوکه ی بوت (Boot Block)
  • خواندن به هنگام نوشتن
  • بسیار آسان برای استفاده
  • کاهش یافتن زمان برنامه ریزی
  • کنترل کردن برنامه ریزی به صورت سخت افزاری

راههای مختلف برای عمل برنامه ریزی:

موازی یا Parallel :

  • یکی از سریعترین روشهای برنامه ریزی
  • سازگار با برنامه نویس های(programmers) اصلی

 

خود برنامه ریزی توسط هر اتصال فیزیکی:

  • برنامه ریزی توسط هر نوع واسطه ای از قبیل TWI و SPI و غیره
  • دارا بودن امنیت صد درصد در بروزرسانی و کدکردن

 

ISP:

  • واسطه سه سیمی محلی برای بروزرسانی سریع
  • آسان و موثر در استفاده

 

واسطه JTAG :

  • واسطه ای که تسلیم قانون IEEE 1149.1 است و می تواند به صورت NVM برنامه ریزی کند یعنی هنگام قطع جریان برق داده ها از بین نروند.استفاده از فیوزها و بیتهای قفل.
  • بیشتر برای دیباگ کردن آنچیپ و به منظور تست استفاده می شود

 

منبع

 

+ نوشته شده در ساعت توسط alireza |

زبانهای سطح بالا یا همان HHL به سرعت در حال تبدیل شدن به زبان برنامه نویسی استاندارد بای میکروکنترلر ها حتی برای میکروهای 8 بیتی کوچک هستند. زبان برنامه نویسی BASIC و C بیشترین استفاده را در برنامه نویسی میکروها دارند ولی در اکثر کاربردها کدهای بیشتری را نسبت به زبان برنامه نویسی اسمبلی تولید میکنند. ATMEL ایجاد تحولی در معماری، جهت کاهش کد به مقدار مینیمم را درک کرد که نتیجه این تحول میکروهای AVR هستند که علاوه بر کاهش و بهینه سازی مقدار کدها به طور واقع عملیات را تنها در یک کلاک سیکل توسط معماری RISC انجام میدهند و از 32 رجیسر همه منظوره (Accumulator) استفاده میکنند که باعث شده 4 تا 12 بار سریعتر از میکروهای مورد استفاده کنونی باشند.

تکنولوژی حافظه کم مصرف غیر فرار اتمل برای برنامه نویسی
AVR مورد استفاده قرار گرفته است در نتیجه حافظه های فلش و EEPROM در داخل مدار قابل برنامه ریزی هستند(ISP). میکروهای AVR اولیه داری 1 ، 2 ، و 8 کیلوبایت حافظه فلش و به صورت کلمات 16 بیتی سازماندهی شده بودند.

AVR ها به عنوان میکروهای RISC با تعداد دستورات فراوان طراحی شده اند که باعث میشود حجم کد تولید شده کم و سرعت بالاتری به دست آید.

عملیات تک سیکل:
با انجام تک سیکل دستورات، کلاک اسیلاتور با کلاک داخلی سیستم یکی میشود. هیچ تقسیم کننده ای در داخل
AVR قرار ندارد که ایجاد اختلاف فاز کند. اکثر میکروها کلاک اسیلاتور به سیستم را به 4 یا 12 تقسیم میکنند که خود باعث کاهش سرحت میشود. بنابراین AVR ها 4 تا 12 بار سریعتر و مصرف آنها نیز 4-12 بار نسبت به میکروکنترولرهای مصرفی کنونی کمتر است زیرا در تکنولوژی CMOS استفاده شده در میکروهای AVR ، مصرف توان سطح منطقی متناسب با فرکانس است.

طراحی برای زبانهای
BASIC و C :
زبانهای
BASIC و C بیشترین استفاده را در دنیای امروز بعنوان زبانهای HLL دارند. تا امروز معماری بیشتر میکروها برای زبان اسمبلی طراحی شده بود و کمتر از زبانهای HLL حمایت کرده اند.
هدف
ATMEL طراحی معماری بود که هم برای زبان اسمبلی و هم زبانهای HLL مفید باشد. به طور مثال در زبانهای BASIC و C میتوان یک متغییر محلی به جای متغییر سراسری در داخل زیربرنامه تعریف کرد، در این صورت فقط در زمان اجرای زیربرنامه مکانی از حافظه RAM برای متغییر اشغال میشود در صورتی که اگر متغییری به عنوان سراسری تعریف گردد در تمام وقت مکانی از حافظه FLASH ROM را اشغال کرده است.
برای دسترسی سریعتر به متغییرهای محلی و کاهش کد، نیاز به افزایش رجیسترهای همه منظوره است.
AVR ها دارای 32 رجیستر هستند که مستقیما به LOGIC ALU (ARITHMETIC UNIT) متصل شده اند، و تنها در یک کلاک سیکل به این واحد دسترسی پیدا میککند. سه جفت از این رجیسترها میتوانند به عنوان رجیسترهای 16 بیتی استفاده شوند.

منبع

+ نوشته شده در ساعت توسط alireza |

زبانهای سطح بالا یا همان HHL به سرعت در حال تبدیل شدن به زبان برنامه نویسی استاندارد بای میکروکنترلر ها حتی برای میکروهای 8 بیتی کوچک هستند. زبان برنامه نویسی BASIC و C بیشترین استفاده را در برنامه نویسی میکروها دارند ولی در اکثر کاربردها کدهای بیشتری را نسبت به زبان برنامه نویسی اسمبلی تولید میکنند. ATMEL ایجاد تحولی در معماری، جهت کاهش کد به مقدار مینیمم را درک کرد که نتیجه این تحول میکروهای AVR هستند که علاوه بر کاهش و بهینه سازی مقدار کدها به طور واقع عملیات را تنها در یک کلاک سیکل توسط معماری RISC انجام میدهند و از 32 رجیسر همه منظوره (Accumulator) استفاده میکنند که باعث شده 4 تا 12 بار سریعتر از میکروهای مورد استفاده کنونی باشند.

تکنولوژی حافظه کم مصرف غیر فرار اتمل برای برنامه نویسی
AVR مورد استفاده قرار گرفته است در نتیجه حافظه های فلش و EEPROM در داخل مدار قابل برنامه ریزی هستند(ISP). میکروهای AVR اولیه داری 1 ، 2 ، و 8 کیلوبایت حافظه فلش و به صورت کلمات 16 بیتی سازماندهی شده بودند.

AVR ها به عنوان میکروهای RISC با تعداد دستورات فراوان طراحی شده اند که باعث میشود حجم کد تولید شده کم و سرعت بالاتری به دست آید.

عملیات تک سیکل:
با انجام تک سیکل دستورات، کلاک اسیلاتور با کلاک داخلی سیستم یکی میشود. هیچ تقسیم کننده ای در داخل
AVR قرار ندارد که ایجاد اختلاف فاز کند. اکثر میکروها کلاک اسیلاتور به سیستم را به 4 یا 12 تقسیم میکنند که خود باعث کاهش سرحت میشود. بنابراین AVR ها 4 تا 12 بار سریعتر و مصرف آنها نیز 4-12 بار نسبت به میکروکنترولرهای مصرفی کنونی کمتر است زیرا در تکنولوژی CMOS استفاده شده در میکروهای AVR ، مصرف توان سطح منطقی متناسب با فرکانس است.

طراحی برای زبانهای
BASIC و C :
زبانهای
BASIC و C بیشترین استفاده را در دنیای امروز بعنوان زبانهای HLL دارند. تا امروز معماری بیشتر میکروها برای زبان اسمبلی طراحی شده بود و کمتر از زبانهای HLL حمایت کرده اند.
هدف
ATMEL طراحی معماری بود که هم برای زبان اسمبلی و هم زبانهای HLL مفید باشد. به طور مثال در زبانهای BASIC و C میتوان یک متغییر محلی به جای متغییر سراسری در داخل زیربرنامه تعریف کرد، در این صورت فقط در زمان اجرای زیربرنامه مکانی از حافظه RAM برای متغییر اشغال میشود در صورتی که اگر متغییری به عنوان سراسری تعریف گردد در تمام وقت مکانی از حافظه FLASH ROM را اشغال کرده است.
برای دسترسی سریعتر به متغییرهای محلی و کاهش کد، نیاز به افزایش رجیسترهای همه منظوره است.
AVR ها دارای 32 رجیستر هستند که مستقیما به LOGIC ALU (ARITHMETIC UNIT) متصل شده اند، و تنها در یک کلاک سیکل به این واحد دسترسی پیدا میککند. سه جفت از این رجیسترها میتوانند به عنوان رجیسترهای 16 بیتی استفاده شوند

منبع

+ نوشته شده در ساعت توسط alireza |

ساده ترين معماري ميكرو كنترلر، متشكل از يك ريز پردازنده، حافظه و درگاه  ورودي/خروجي است. ريز  پردازنده نيز متشكل از واحد پردازش مركز (CPU) و  واحد كنترل (CU)است.

CPU درواقع مغز يك ريز پردازنده است و محلي است كه در آنجا تمام عمليات رياضي و منطقي ،انجام مي شود. واحد كنترل ، عمليات داخلي ريز پردازنده را كنترل مي كند و سيگنال هاي كنترلي را به ساير بخشهاي ريز پردازنده ارسال مي كند تا دستورالعمل ها ي مورد  نظر انجام شوند.

حافظه بخش خيلي مهم از يك سيستم ميكرو كامپيوتري است. ما مي توانيم بر اساس به كارگيري حافظه، آن را به دو گروه دسته بندي كنيم: حافظه برنامه و حافظه داده . حافظه برنامه ، تمام كد برنامه را ذخيره مي كند. اين حافظه معمولاً از نوع حافظه فقط خواندني (ROM) مي باشد. انواع ديگري از حافظه ها نظير EPROM و حافظه هاي فلش EEPROM براي كاربردهايي كه حجم توليد پاييني دارند و همچنين هنگام پياده سازي برنامه به كار مي روند . حافظه داده از نوع حافظه خواندن / نوشتن (RAM) مي باشد . در كاربردهاي پيچيده كه به حجم بالايي از حافظه RAM نياز داريم ، امكان اضافه كردن تراشه هاي حافظه بيروني به اغلب ميكرو كنترلر ها وجود دارد.

 

درگاهها ورودي / خروجي (I/O )به سيگنال هاي ديجيتال بيروني امكان مي دهند كه با ميكرو كنترلر ارتباط پيدا كند. درگاههاي I/O معمولاً به صورت گروههاي 8 بيتي دسته بندي مي شوند و به هر گروه نيز نام خاصي اطلاق مي شود. به عنوان مثال ، ميكروكنترلر 8051 داراي 4 درگاه ورودي / خروجي 8 بيت مي باشد كه P3, P2, P1, P0 ناميده مي شوند. در تعدادي از ميكرو كنترلر ها ، جهت خطوط درگاه I/O قابل برنامه ريزي مي باشد. لذا بيت هاي مختلف يك درگاه را مي توان به صورت ورودي يا خروجي برنامه ريزي نمود. در برخي ديگر از ميكروكنترلرها (از جمله ميكروكنترلرهاي 8051) درگاههاي I/O به صورت دو طرفه مي باشند. هر خط از درگاه I/O اين گونه ميكرو كنترلرها را مي توان به صورت ورودي و يا خروجي مورد استفاده قرار داد . معمولاً ، اين گونه خطوط خروجي ، به همراه مقاومتهاي بالا كش بيروني به كار برده مي شوند.

 

منبع

 

+ نوشته شده در ساعت توسط alireza |

 

به نام خدا

 

 

ميكروكنترلرهاي خانواده PIC از معماري هاردوارد استفاده ميكنند . اين بدان معنااست كه كل حافظه به دو قسمت تقسيم شده است  . كه عبارتند از : حافظه داده و حافظه برنامه .مزيت اين معماري آن است كه ميتوان به هر دو بخش حافظه در يك دستورالعمل دسترسي داشت  . اغلب PIC  ها داراي سه بلاك حافظه داخلي ميباشند :

 

 

۱_ Data memory  : كه اين حافظه به Bank0 و Bank1 و ... تقسيم ميشوند .هر بانك شامل حافظه  RAM  معمولي (general purpose register) و ريجيستر هاي مخصوص (status,intcon,option,…) مي باشد.

 

2_ Eeprom memory  : يكي از تفاوت هاي اصلي ميكروهاي گذشته مثل سري 8051 با PIC و AVR  ، همين حافظه ميباشد. اين حافظه تقريبا بينابين RAM  و ROM   از نظر كاربرد ميباشد . اين  حاظه به صورتي است كه ميتوان در حين برنامه نويسي ، اطلاعات را در آن ذخيره يا پاك  كرد (RAM) واطلاعات آن در صورت قطعي برق نيز پاك نمي شود (ROM) . نسيت به  RAM  و ROM  داراي سرعت به مراتب پايين تر ميباشد .

 

3_Program memory  : برنامه اي كه توسط كاربر نوشته ميشود . در اين حافظه LOAD ميشود . به عنوان مثال PIC16F877 (40 پين) داراي پروگرام كانتر 13 بيتي براي آدرس دهي كردن Flash program memory به حجم (8k*14bit) ميباشد .

 

 

PIC ها از لحاظ نوع Program memory  به 4 دسته تقسيم ميشوند .

 

1) Flash Program Memory

 

مزيت اين گونه PIC ها سرعت نسبتا بالاي خواندن اطلاعات از ROM و درنتيجه سرعت بالاتر اجراي عمليات ميباشد . حافظه هاي فلش موجب گرديده تا سرعت اجراي برنامه از 12 كلاك در 8051 به 4 كلاك در PIC و 1 كلاك در AVR كاهش يابد .

خانواده هايي كه نام IC داراي F باشد داراي اين گونه حافظه ميباشند (مانند 16F84 , 16F877.....) .

 

2) Eprom program memory

 

خانواده هايي كه نام IC داراي C يا CE باشد.(16C84)

 

3)Rom Program Memory

 

خانواده هايي كه نام IC  داراي CR باشد (16CR84)

 

4) Eeprom Program Memory

 

همچنين بعضي از PIC ها نيز داراي رنج ولتاژي گسترده ميباشند كه داراي مشخصه  L  در نام  IC  مي باشد.(PIC16LF84)

 

منبع

 

+ نوشته شده در ساعت توسط alireza |

قبل از شروع این بحث بهتر است آشنایي مختصري با تئوري موسیقي پیدا کنید.اجزاي یک ملودي نتها هستند.هر نت در واقع يک فرکانس یا يک باند فرکانسي است.مثلا طبق استاندارد جهاني نت لا ازپايينترین اکتاو (Octave)، با فرکانس 440HZ نواخته می شود.نتها در اکتاوها متوالیا تکرار می شوند.اما فرق یک نت در یک اکتاوتا اکتاودیگر چیست؟تفاوت دربمی وزیری صداست.درواقــــع صدای نتهـــــای واقع در اکتــاوهای بالاتر، زیرترمی شود.

فرکانس نتهای موسیقی را می توان طبق رابطه زیر به دست آورد.

fx=fbase * 2 ^(n/12)

در رابطه بالا fbase فرکانس یک نت معلوم است.مثلا نت لا که قبلا گفته شد وn فاصله کلید مجهول از کلید معلوم رو به بالاست.مثلا فرکانس نت سی از همان اکتاو،طبق زیر به دست می آید.

fsi=440*2^(2/12)=494HZ

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

برای شروع کار می توانيد مثال زير را دانلود کنيد.

 

Download : AVR-Music.zip

 

http://www.amnelec.persianblog.com

+ نوشته شده در ساعت توسط alireza |

 


میکرو کنترلر در اصطلاح به ریز پردازنده هایی گفته می شود که بجز
CPU حداقل شامل سیستم های ورودی و خرو جی (I/o) حافظه و مدارات ارتباط با حافظه در داخل تراشه اصلی هستند و نیازی به مدارات واسطه بیرونی جهت ارتباط با سیستم های جانبی را ندارد. البته امکانات همه میکرو کنترلر ها هشابه و یکسان نمی باشد و برخی از میکرو کنترلر ها علاوه بر امکانات فو ق العاده شامل مبدل های دیجیتال به آنالوگ و آنالوگ به دیجیتال و یا حتی امکانات بیشتر و اختصاصی تر می باشند.

میکرو کنترلر MC68HC7058 ساخت شرکت MOTOROLA نمونه ای از میکرو کنترلر های مدرن می باشد که امروزه در ساختمان مانیتور های پارس از آن استفاده شده است. قلب این میکرو کنترلر را ریز پردازنده 6805 تشکیل می دهد و حافظه آن شامل 3.75 کیلو بایت حافظه ROM جهت ذخیره کردن نرم افزار اجرایی و 256 بایت حافظه RAM جهت ذخیره سازی مو قت می باشد.
نرم افزار ذخیره شده در حافظه این میکرو کنترلر تحت امتیاز شرکت هیوندای کره جنوبی بوده و قابل دسترسی یا دخل و تصرف ننی باشد و فقط مختص 15 اینج مدل
HL -5870 می باشد. از و ضایف اصلی میک رو کنترلر می توان به موارد زیر اشاره کرد:
1- کنترل دکمه های جلوی مانیتور در صنعت ساخت
2- ایجاد ولتاژ های
DC جهت کنترل قسمت های مختلف مدار
3-ارتباط با حامظه
none volatile جهت ذخیره سازی و باز خوانی اطلاعات.
4- ارتباط با سیستم تغذیه جهت مدیریت توان مصرمی
5- ارتباط با سیستم مولد
OSD
6- ارتباط با سیستم تنظیم گر خودکار
7- تنظیم اعو جاجات و تصحیح خطاها
8- مضناتیس جدایی
9- پردازش سیگنال های همزمانی
10- کنترل پیچش تصویر

 

 

منبع

 

+ نوشته شده در ساعت توسط alireza |

اول الکتریسیته نبود، یعنی بود ولی آدم نمی دیدش! گاهی وقتا رعد و برق رو تو آسمون می دید ولی نمی دونست چیه! بعد که فهمید کهربا می تونه کاه رو جذب می کنه بازم نمی دونست چرا ولی فلاسفه یونان باستان می گفتند کهربا روح داره که می تونه چیزی رو حرکت بده! خب بیچاره ها حق هم داشتند شاید اگه ماکسول هم اون موقع زندگی می کرد همین حرف رو میزد! بعد که یه دو سه هزار سالی گذشت تا یه بابایی به اسم گیلبرت اومد گفت نه بابا این به خاطر اینه که کهربا در اثر اصطکاک با بعضی از مواد می تونه باردار بشه و خرده کاه رو جذب کنن. تا اینجا هیچ خبری از بار متحرک نبود و فقط بار ساکن مورد توجه بود تا اینکه تو اوائل قرن هجدهم بنجامین فرانکلین گفت الکتریسیته می تونه جاری بشه و در اینجا بود که مدار الکتریکی متولد شد چون ذره ی باردار فقط تو مسیر بسته می تونه دور بزنه. حدود صد سال بعد در سال 1831 مایکل فارادی تئوری تولید جریان الکتریکی بوسیله ی تغییر میدان مغناطیسی رو ارائه کرد و چند سال بعد ژنراتورها ساخته شدند. از همین جا بود که بشر تصمیم گرفت الکترون ها رو به شکلهای مختلف تو مسیرهای مختلف (مدار) به گردش دربیاره و همش تقصیر فارادی بود !!!!

تا اینجا هم تا پنجاه شصت سال همه چیز به خوبی و خوشی! پیش می رفت ولی در اواخر صده ی نوزدهم بود که یک روز آقای ادیسون لامپ خلا رو کشف کردند و دانش الکترونیک متولد شد. این اختراع مفید به سرعت منجر به ساخت تقویت کننده و فرستنده های رادیویی شد. بازهم تا چهل پنجاه سال مهندسان الکترونیک سرشون به لامپ های خلا گرم بود و برای خودشون با این لامپ ها انواع و اقسام مدارات آنالوگ و دیجیتال از آمپلی فایر صوتی گرفته تا ماشین حساب های بزرگ و کامپیوتر رو ساخته بودند. اولین کامپیوترشون انیاک (
ENIAC) بود با 30.000 تا لامپ و به اندازه یک ساختمان چند طبقه که قدرتش از ماشین حساب های جیبی شما هم کمتر بود!

این دفعه یه اتفاقی افتاد که تقصیر آزمایشگاه های بل بود که نیمه هادی ها رو به جون هم انداخت و ترانزیستور و دیود و ترایاک و انواع المان های غیرخطی با تولد اولین المان فیزیک حالت جامد (ترانزیستور) اختراع شدند و دنیا برای مهندسان الکترونیک گلستان شد!! لامپ های داغ، شکننده، گران، پرمصرف، حجیم و کم انعطاف جاشون رو به یک سوگلی سه پایه دادند که نه تنها داغ نمی شد و نمی شکست، خیلی کم مصرف و جمع و جور بود. تولد این جانور سه پا اولین انقلاب الکترونیک لقب گرفت ولی انقلاب اول زیاد دوام نداشت چون 10-15 سال بعد از اون دومین انقلاب که اختراع مدار مجتمع (
IC) بود صورت گرفت. مدارهایی که قبلا یک بار با لامپ طراحی شده بودند و یک بار با ترانزیستور باز طراحی شدند این بار روی یک تراشه ی سیلیکونی به صورت یک بسته بندی وارد بازار شدند.

یک پرانتز برای جمله ی آخر:

همه ی مدارهایی که با عناصر گسسته ساخته شده بودند بعد از اختراع
IC به صورت مجتمع ساخته نشدند چون اولا سیستم های کاربردی انقدر متنوعند که امکان تولید همه ی آن ها به صورت Package وجود ندارد و ثانیا گاهی ما نیاز به مداری داریم که فقط برای خودمان قابل استفاده است و بنابراین تا حد امکان مدارات مجتمع با کاربرد چند منظوره و به عنوان المان های اساسی تولید شدند و از آن ها در طراحی سیستم های مورد نیاز استفاده شد.

پرانتز بسته!

یه روز یه بابایی اومد گفت حالا که من برای طراحی یک سیستم باید از این همه المان استفاده کنم چقدر خوب می شد اگه یه المان داشتم که این سیستم رو توش جا می دادم!
خب با اینکه المان ها خیلی هاشون به صورت مجتمع و بسته تولید شده بودند ولی بازم این بابا حق داشت!! خب یه وقت می خواست یه مدار کنترلی طراحی کنه باید از چند ده جین المان استفاده می کرد. پس یه بابای دیگه حرفشو گوش کرد و یه المان براش ساخت که باهاش هرکاری که می خواست می تونست بکنه. اسم اون المان
میکروکنترلر بود.
ولی میکروکنترلر خام بود باید بهش می گفت که ازش چی می خواد. این کار رو برنامه نویسی برای میکروکنترلر انجام داد و به این ترتیب بود که این المان انقدر محبوب شد که هنوز چیزی جانشین اش نشده و همچنان بعد از حل بسیاری از مسائل به دنبال مسائلی برای حل می گردد ...

منبع

 

+ نوشته شده در ساعت توسط alireza |

به توضیح تک به تک قسمتها میپردازیم :

۱:در قسمت معرفی آی سی از کلمه کلیدی $Regfile برای معرفی استفاده شده است . این دستور به این صورت است که باید بعد ازآن کلمه معرف آی سی مورد استفاده را در جلوی آن وارد کنیم . البته برای هر آی سی کلمه ی مخصوصی وجود دارد که برای ATMEGA32 باید کلمه ی M32def.dat را تایپ کرد . البته باید توجه داشت که این کلمه باید داخل یک جفت کوتیشن ( گ + Shift ) قرار گیرد :
$
Regfile = “M32def.dat

۲: در قسمت بعدی که تعیین فرکانس کاری است کلمه کلیدی $Crystal باید نوشته شود و آنرا باید مساوی با فرکانس کار بر حسب هرتز قرار داد :
$
Crystal = 1000000

۳: حال به بخش معرفی سخت افزار رسیدیم . در این برنامه چون پورت B باید بتواند جریان بیرون دهد و سخت افزار خارجی ای که همان LED است را روشن کند بعنوان خروجی تعریف میشود . همیشه برای معرفی سخت افزار از کلمه کلیدی Config اسفاده میشود . پس برای خروجی کردن پورت B مینویسیم :
Config Portb = output

۴: چون در این برنامه نیازی به تعریف متغیری نبود به بخش برنامه اصلی میرویم و در این قسمت عددی را به پورت B خواهیم فرستاد تا طبق آن LED ها روشن شوند . البته ذکر این نکته لازم است که اگر بخواهیم عددی را در مبنای دودویی بنویسیم ابتدا باید &B را نوشته و بعد ععد مورد نظر را تایپ کنیم و همینطور برای نوشتن در مبنای هگز که &H تایپ میشود و اگر هیچکدام از کلمات ذکر شده را ننویسیم عدد در مبنای دسیمال محسوب میشود .

۵: در آخر برنامه نیز از کلمه کلیدی END برای مشخص نمودن پایان برنامه استفاده شده است .

دانلود برنامه ==> http://www.irankorea.com/microtak/microtak-about27.html

 

+ نوشته شده در ساعت توسط alireza |

 

 

تایمر ها از اجزاء پر کاربرد پروژه های 8051 می باشند.کار اصلی تایمر شمارش تعداد سیکل های کریستال می باشد.چون هر دوره تناوب کریستال در کسری از ثانیه رخ می دهد بنابراین می توان برای شمارش زمان سپری شده ، از آن استفاده کرد .
8051 دارای دو عدد تایمر 16 بیتی می باشد که با نامهای تایمر یک و تایمر صفر شناخته شده اند .هر تایمر در حقیقت از دو ثبات 8 بیتی با نام
TH و TL ساخته شده است .از تایمر ها در 4 مود کاری می توان استفاده کرد:
مود 00 که از تایمر به عنوان یک شمارشگر 13 بیتی استفاده می کند .
مود 01 از تایمر به عنوان شمارشگر 16 بیتی استفاده می کند .
مود 02 به عنوان شمارشگر 8 بیتی با راه اندازی خودکار استفاده می کند.(
AutoReload)
مود 03 تایمر را به دو تایمر 8 بیتی تقسیم می کند که به آن حالت تسخیر شده می گویند.

در 4 مود کاری بالا مود های یک و دو بیشترین کاربرد را در انجام پروژه ها دارند .تایمر 16 بیتی مود 01 می تواند از مقدار 0000 تا
FFFFH بشمارد پس از رسیدن به مقدار FFFF تایمر پرچم خود را (TF) را یک می کند و مجددا از مقدار 0000 شروع به شمارش می کند.

در مود 2 که همان حالت
AutoReload است تایمر به عنوان یک شمارشگر 8 بیتی از مقدار 00 تا FFh می شمارد البته در این مود می توان برای تایمر تعیین کرد که چه مقدار بشمارد فرضا در برنامه ای احتیاج به این پیدا می کنیم تا تایمر یک وظیفه ای را هر 100 میکرو ثانیه انجام دهد در این حالت از مود 2 استفاده می کنیم . مقدار اولیه شمارش را در ثبات TH قرار می دهیم .و سپس پس از راه اندازی تایمر این مقدار در ثبات TL قرار می گیرد و تایمر از مقدار تعیین شده تا FFh می شمارد . پس از رسیدن TL به FFh تایمر پس از یک کردن TF ، مجددا مقدارموجود در TH را در ،م کپی کرده و به همین ترتیب شمارش ادامه می یابد .

تایمر ها دارای دو ثبات با نامهای
TCON وTMOD هستندثبات ،TMOD برای مقدار اولیه دادن به تایمر مورد استفاده قرار می گیرند و ثبات TCON برای کنترل تایمر مورد استفاده قرار می گیرد ثبات TMOD همیشه باید قبل از راه اندازی تایمر مقدار دهی شود.شکل ثبات TMOD به صورت زیر است:


TMODیک ثبات 8 بیتی است که به دو قسمت 4 بیتی (nible) تقسیم می شود نیبل بالا برای تایمر 1 و نیبل پایین برای تایمر 0 مورداستفاده قرار می گیرد .اختلاف دو نیبل در همین است و غیر از این کاملا با هم مشابهند .
بیت
Gate ، می توان گفت که یک نوع راه انداز تایمر است . این بیت مشابه کلید روشن و خاموش عمل می کند در صورتی که مقدار این بیت را یک قرار دهیم کنترل تایمر از طریق پالس ورودی به پایه ی INT1 صورت می گیرد یکی از کاربرد های این بیت اندازه گیری پالس خارجی اعمال شده به پایه ی INT1 می باشد.
بیت
C/T نوع کارکرد تایمر را تعیین می کند که آیا تایمر برای شمارش تعداد پالس کریستال خارجی متصل به پایه T1 یا T0 مورداستفاده قرار گیرد یا برای شمارش تعداد پالس های کریستال مدار میکرو که آن هم به پایه های 18 و 19 متصل است .در حالت اول می گویند که تایمر به عنوان کانتر (شمارنده اتفاقات) عمل می کند و در حالت دوم می گویند که تایمر در حالت شمارش گر زمان کار می کند .در صورتی که بیتc/T را یک کنیم تایمر به عنوان کانتر و در صورتی که این بیت را صفر کنیم تایمر به عنوان شمارشگر واحد زمان به کار گرفته می شود.

بیتهای
M1و M0 هم مود کاری را که قبلا بررسی کردیم تعیین می کند .ابتدا مود مورد نظر را تعیین می کنیم سپس مقدار معادل آن در مبنای دو را در بیتهای M1, M2 قرار می دهیم .

یک مثال برای اینکه تایمر 1در حالت
AutoReload و به عنوان تایمر (شمارش گر زمان) مورد استفاده قرار گیرد :


معدل این کار دستور زیر است:

Mov Tmod,#00100000b


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


بیت
TF:قبلا هم در مورداین بیت صحبت کردیم هنگامی که تایمر شروع به شمارش کرد بسته به مودی که برای کار در آن تنظیم شده است پس از رسیدن به مقدار نهایی (FFh یا FFFFh یا1FFFh ) قبل از اینکه مجددا از صفر شروع به شمارش کند بیتTF را یک می کند تا نشان دهد که مقدار فعلی در دور دوم شمارش است و قبلا یک بار شمارش کامل شده است .
این بیت به صورت سخت افزاری یک می شود و ما باید به صورت نرم افزاری قبل از پایان دور دوم شمارش آن را صفر کنیم .
TF1 برای تایمر یک و TF0 پرچم شمارش برای تایمر صفر است.

بیت
TR: بیت کنترل راه اندازی نامیده شده است .در صورتی که این بیت را یک کنیم تایمر شروع به شمارش می کند و در صورتی که این بیت صفر شود تایمر متوقف می شود. مانند TF، ،TR1 برای کنترل تایمر 1 و TR0 برای کنترل راه اندازی تایمر 0 مورد استفاده قرار می گیرد.

4 بیت بعدی این ثبات برای عملیات وقفه کاربرد دارد که انشاالله در مبحث وقفه ها به صورت کامل توضیح خواهیم داد .
اکنون روش کار با تایمر را به صورت الگوریتم در می آوریم تا بهخاطر سپردن آن آسانتر شود.

1.از کدام تایمر استفاده خواهیمکرد؟
2.مود کاری تایمر را تعیین کنید.
3.تایمر مورد نظر شماست یا شمارنده
3.ثبات
TMOD را با معادل دودوئی آن بار گذاری کنید.
4.در صورتی که از
AutoReload استفاده می کنید TH را با مقدار اولیه مناسب بار کنید.
5.تایمر را راه اندازی کنید .
7.منتظر یک شدن
TF بمانید .


مثال:
برنامه ای بنویسید که یک پالس با دوره تناوب 200 میکرو ثانیه بر روی پایه ی
P1.0 تولید کند.


حل:
دوره تناوب پالس 200 میکرو ثانیه عنوان شده است یک پالس در نصف دوره تناوب در حالت
high و در نصف دیگر در حالت low قرار دارد . نصف دوره تناوب 100 میکرو ثانیه است و چون پالس متقارن است ما فقط به نصف دوره تناوب احتیاج داریم بنابراین مود تایمر را 2 یعنی حالت autoReload و مقدار اولیه را -100 در نظر می گیریم.
برای اینکه بفهمید چرا -100 ،توجه کنید که ما می خواهیم که تایمر 100 واحد بشمارد در حالت
AutoReload چون تایمر 8 بیتی است حداکثر مقدار شمارش FFh است بنابراین :
TH=FFh-100d=9Bh
اما -100 هم دقیقا مشابه مقدار بالا است .بنابراین اگر ما به جای -100 مقدار 9
Bh را در TH قرار می دادیم نیز نتیجه فرقی نمی کرد.

در این مثال فرقی نمی کند که از کدام تایمر استفاده کنیم .در حقیقت تایمر ها هیچ تفاوتی با هم ندارند .

Mov TMOD,#00100000b

Mov TH1,#-100
Setb TR1
Wait :jnb Tf1,wait
ClR TF1
CPL p1.0
Sjmp wait


همانطور که مشاهده می کنید قبل از پایان دور دوم شمارش مقدار
TF باید صفر شود.

منبع:دانشگاه کردستان

+ نوشته شده در ساعت توسط alireza |

 

از اوايل دهه هشتاد كارخانجات ساخت مدارهاي مجتمع به طراحي و توليد پردازنده هائي با كاربرد هاي خاص نمودند. يكي از اين محصولا‌ت كه در سالهاي اخير مصرف بسيار زيادي پيدا كرده است ميكروكنترلر ها مي باشند.
با ساخت ميكرو كنترلرها تحول شگرفي در ساخت تجهيزات الكترونيكي نظير لوازم خانگي، صنعتي، پزشكي ، تجاري و ... به وجود آمده است كه بدون آن تصورتجهيزات و وسايل پيشرفته امروز غير ممكن است. به عنوان مثال مي توان از ربات ها ، تلفن همراه و انواع سيستم هاي اتوماسيون نظير وانواع وسايل ديجيتالي مدرن ديگر نام برد.
علل پيدايش :
از آنجايي كه در مصارف صنعتي و ... جهت كنترل ماشينهاي صنعتي و... كنترل فرآيند معمولا‌ً با ارسال فرمانهاي مختلف و دريافت اطلا‌عات از قسمتهاي مختلف، اندازه گيري زمان ، شمارنده ، مبدل آنالوگ به ديجيتال(3) و بالعكس ، ارسال و دريافت اطلا‌عات به صورت سريال و موازي و ... نياز مي باشد
CPU ، شركتهاي ساخت قطعات الكترونيكي درصدد آن برآمدند تا با ساخت سيستمي يكپارچه همراه با يك قدرتمند تمامي امكانات فوق را دربر داشته باشد.
شركتهاي توليد كننده :
ازجمله شركتهايي كه در اين زمينه فعاليت داشته اند : شركت اينتل با سري چيپهاي
AT8050,8051,8052,...، شركت زايلوگ باسري چيپهاي Z8601,8602,8603,...و شركت موتورولا‌ با سري چيپهاي 6811A1,A2,...را مي توان نام برد. شركتهاي ديگري مانند هيتاچي و ... در اين زمينه توليداتي داشته اند ولي عمده ترين توليدكنندگان ميكروكنترلر كه به صورت حرفه اي عمل نموده اند سه شركت فوق مي باشند

 

 

+ نوشته شده در ساعت توسط alireza |

تا حالا فکر کردین AVR رو به مانیتور وصل کنین؟ چه قدر خوب می شه نه؟ اگه دیگه خروجی ویدیو هم داشته باشه که دیگه حرف نداره نه؟ ولی نمی ارزه حتما خیلی پیچیده می شه ولی تعجب نکنین اگه بگم چند تا مقاومت می خواد ادامه رو ببینین

این یه کارت گرافیک که می تونه متن رو از طریق پورت سریالش در یافت کنه و به خروجی
VGA یا ویدئو ارسال کنه برنامش رو هم می تونید روی ATMega16 ، 32 یا میکرو های مشابه اجرا کنید.
خود برنامه به زبان
C نوشته شده و باید با GCC اجراش کنید (مقاله AVR GCC رو ببینین http://www.iranled.com/modules.php?name=News&file=article&sid=41 )
نقشه خیلی ساده ای هم داره توی فایل می تونید کل سورس نقشه و ... رو پیدا کنید

Download File

 

+ نوشته شده در ساعت توسط alireza |

این یه PDF آموزشی برای AVRStudio
AVR Studio یک نرم افزار رایگان برای دیباگ کردن نوشتن برنامه اسمبلی برای AVR های شرکت Atmel است که می توانید آنرا از سایت این شرکت (www.atmel.com) در یافت کنید

آخرین ورژن
AVR Studio در هنگام نوشتن این مقاله 4 است از این نرم افزار به غیر از دیباگ کردن برنامه های اسمبلی می توانید برای دیباگ کردن کد های کمپایل شده را نیز استفاده کنید و به عنوان دیباگ برای نرم افزار های که فرمتهای COFF را مانند Codevision پشتیبانی می کنند استفاده کنید(از ورژن 4.06 به بعد) با این روش می توانید برنامه نوشته شده به زبان مثلا C را داخل AVRStudio دیباگ کنید.

Download File

 

http://www.iranled.com/article33.html

+ نوشته شده در ساعت توسط alireza |

آیا تا کنون درگیر پروژه ای شده اید که به حافظه غیرفرارخیلی بالا(چند ده یا صد مگا بایت)احتیاج داشته باشید!؟ اگر این طورباشد،حتما در ابتدا ناامید شده اید.چون این چنین حافظه ای به صورت چیپ وجود ندارد.اما برای من خیلی وقتها یک محدودیت بزرگ،باعث یک جهش بزرگ شده است.همین محدودیت باعث شدکه کارتهای مالتی مدیا(MMC) را شکار کنم.گرچه حتی خود شرکتهای سازنده این کارتها هم اطلاعات فنی آنها را به راحتی در اختیار دیگران قرارنمی دهند.اما چیزی به دست آوردم که ارزش زحمتش را داشت.

بگذریم! شما میتوانید یک MMC را با ظرفیت 128مگا بایت به قیمت حدود 10000تومان بخرید.چیزی که گفتم برای یک مهندس برق و سخت افزار خیلی وسوسه کننده است.با این حجم حافظه شما می توانید با فرکانس نمونه گیری 20کیلو نمونه در ثانیه(20ksps) و با یک A/DوD/A هشت بیتی حداقل یک ساعت و چهل و پنج دقیقه صدا ضبط کنید!و اما این کارتها مزایایی دارند که روز به روز بر کاربردشان افزوده می شود.

1-اندزه کوچکی دارند.

2-حجم حافظه بالایی دارند.

3-سرعت بالایی دارند(با ارتباط دهی SPI تا 20 مگا بیت در ثانیه)

4-سیم کشی کمی لازم دارند.

5-قیمت خیلی کمی دارند.

6-همه جا یافت می شوند.در شهرستان ما(لارستان) ، شاید برای پیدا کردن یک میکروکنترلر8051دچار مشکل شوید.ولی MMCفقط در دکه های نوشابه فروشی یافت نمی شود.

در کنار همه مزایای ذکر شده اکثر آنها فقط یک عیب دارند که به صورت سکتوری برنامه زیری می شوند.یعنی برای خواندن و نوشتن یک بایت باید کل سکتور در بر گیرنده آن بایت را خواند یا نوشت(البته مشکل بزرگی نسیت.).

MMCها به دو روش برنامه ریزی می شوند:MMCوSPI

کسانی که با میکروکنترلرهای جدید مثل AVR کار می کنندباید خیلی خوشحال باشند.چون می توانند به روش SPI با سرعت 8Mbps با MMC کار کنند.البته اولش کمی سخت است.

شما می توانید کارت خود را به AVR وصل کنید.

تغذیه MMC ها می تواند بین 2.9 تا 3.6 ولت باشد.اگر بخواهید Datasheet کامل یک MMC را داشته باشید،در سایت www.alldatasheet.com کارت HB288032MM1 را جستجو کنید.این کارت 32مگابایتی است.

من خودم برای ارتباط دهی MMCبا AVR یک کتابخانه نوشته ام وبه کتابخانه های CodeVision خود اضافه کرده ام.کسانی که این کتابخانه را بخواهند،می توانند به Emailمن درخواست بفرستند تا با هزینه ای مناسب برای آنها فرستاده شود.البته با این تعهد اخلاقی که به فکر تکثیر آن مخصوصا در اینترنت نباشند.

datasheet اين کتابخانه را در زير دانلود کنيد .

Download : MMC_Lib_Help.pdf

+ نوشته شده در ساعت توسط alireza |

اين پروگرامر قابليت برنامه ريزي ميکروهاي سري 8051 را دارا مي باشد.
از قابليتهاي اين پروگرامر مي توان به موارد زير اشاره کرد:
-
قابليت اتصال از طريق پورت سريال
-
شناسايي ميکروکنترلر بصورت خودکار
-
بازبيني اطلاعات
-
شناسايي سخت افزار بصورت خودکار

ميکروکنترلري که روي چيپ نياز است را بايد با برنامه EZ52.hex برنامه ريزي کرد .
بقيه قطعات را طبق شماتيک تهيه و از آن لذت ببريد. برگرفته از سایت IC4IR.com 

http://electronic.persiangig.com/Software/EZDownloader8051.zip

 

+ نوشته شده در ساعت توسط alireza |

آی سی PIC  به زبان های مختلفی قابل برنامه ریزی است مثل C#,C,Basic و... حال برای پروگرم کردن این آی سی به یک مدار نیاز داریم تا اتصال آی سی به کامپیوتر رو برقرار کنه.
این مدار قابلیت پروگرم کردن آی سی های(
PIC18F442و PIC18F458و PIC18F452و PIC18F252و PIC18F6620و PIC18F8720و PIC18F2620و PIC16C66و PIC16C72و PIC16C745و PIC16F84و PIC18F876) را دارد.
این مدار رو می تونید با روشهای مختلفی تهیه کنید مثلا می تونید از برد سوراخ دار یا برد برد استفاده کنید یا استفاده از
PCB آماده که من لینکشو در پایین گذاشتم یا آماده اون رو از بازار بخرید(به احتمال زیاد تو تهران پیدا میشه خصوصا تو پاساژ امجد!). برای ساخت این مدار من پیشنهاد میکنم از PCB استفاده کنید چون هم راحتتره و هم تمیزتر! برای ساخت این مدار به وسایل تقریبا زیادی احتیاج داریم که همه آنها در شمای کلی مدار نوشته شده است. در ضمن این مدار ورودی رو از پورت پرینتر میگیره.
نوعی دیگر از آی سی های میکرو نیز وجود دارد به نام
AVR که معمولا روی خود مدار اصلی پروگرم میشوند.
 در ضمن اگر مشکلی  داشتید حتما در قسمت نظرات مطرح کنید.

شمای کلی مدار
PCB آماده مدار

 

منبع : www.electronic.shahkey.com

+ نوشته شده در ساعت توسط alireza |

نرم افزار ارائه شده توسط شرکت ATMELبه نام  AVR Studio 4

این نرم افزار به صورت رایگان در سایت شرکت ATMEL قرار دارد می توانید با رجوع به آدرس http://www.atmel.com آن را دانلود کنید.

این نرم افزار در حقیقت یک اسمبلر برای محصولات AVR اتمل است و به صورت کاملا ویژوالی است.

می تواند با انواع دستگاههای برنامه نویس میکرو ارتباط برقرار کند و کدها را در میکرو دانلود کند.

و قابلیت ترجمه کدها به زبانهای C و Assembly را دارد و ...

انواع برنامه نویسها که AVR Studio 4 با آنها سازگار است:

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

 

Emulators Platforms

In System Programmers

Starter Kits

ICE 40/50

AVRISP

STK500

JTAGICE

JTAGICE

STK501

 

 

STK502

STK500/STK501/STK502

STK500

Supports All AVR Devices

Interfaces with AVR Studio

Early Support for NewDevices Push Buttons, LEDs & RS232

 

STK501

STK500 Expansion Module for ATmega64/128

ZIF Socket & PCB Footprint

Onboard 32 kHz Oscillator

Additional RS232 Port

 

STK502

STK500 Expansion Module for ATmega169

ZIF Socket & PCB Footprint

Onboard 32 kHz Oscillator

Demo Application with Temperature Sensor

JTAGICE / JTAGICE mkII

Interfaced using AVR Studio

Real-Time Emulation in Actual Silicon

Debug the Real Device at the Target Level

Communicates Directly to the Device through 4-Pin JTAG Interface

One-wire Debug Interface (JTAGICE mkII only)

Supports

Program Breakpoints

Data Breakpoints

Full I/O View and Watches

Full Execution Control

ICE40/50 Emulator

ICE50

Emulates all Peripherals (Both Digital and Analog)

Supports all Instructions And Peripherals Real-Time

All Configurations Done from AVR Studio

Unlimited Number of Breakpoints

Source Level Debugging

Supports the Newest Members of AT mega

And AT tiny Product Families

 

ICE40

Same Features as ICE50

End Low Cost ICE for ATtiny13, ATtiny26, ATmega8, ATmega8515,ATmega853

ICE50 Upgrade Available

 

منبع

 

+ نوشته شده در ساعت توسط alireza |

 

یکی از انواع میکروکنترلرهای جدید که در بازار الکترونیک ارائه شده است، میکروکنترلر های شرکت ATMEL با نام میکروکنترلرهای خانوادهAVR  می باشد. این میکروکنترلر های هشت بیتی به دلیل قابلیت برنامه نویسی  توسط کامپایلر زبان های سطح بالا (HLL ) بسیار مورد توجه قرار می گیرند. این میکروکنترلر ها از معماری RISC برخوردارند و شرکت ATMEL سعی نموده است با استفاده از معماری پیشرفته و دستورات بهینه، حجم کد تولید شده را کم و سرعت اجرای برنامه را بالا ببرد. یکی از مشخصات این نوع میکروکنترلر ها دارا بودن 32 رجیستر همه منظوره می باشد. همچنین در این میکروکنترلر ها از حافظه های کم مصرف و غیر فرار FLASH و EEPROM استفاده می شود.

کامپایلر هایی به زبان BASIC  و C که زبانهای پرکاربرد در دنیا هستند برای این نوع میکرو ها طراحی شده است و علاوه برآن از زبان اسمبلی نیز همچنان می توان برای برنامه نویسی استفاده کرد.

به عنوان مثال کامپایلر BASCOM با زبان BASIC برای برنامه نویسی این نوع از میکروکنترلر ها می تواند مورد استفاده قرار گیرد.

 

میکروکنترلر های AVR به سه دسته اصلی تقسیم می شوند:

·        سری AT90S یا  AVR

·        سری TINYAVR

·        سری MEGAAVR

 

میکروکنترلر های نوع MEGAAVR  دارای قابلیت های بیشتری نسبت به دو سری دیگر هستند. در اینجا به بررسی مشخصات و پایه های یکی از میکروکنترلرهای پرکاربرد سری MEGA به نام ATMega32 می پردازیم:

 

ATMega32

 

 

مهمترین مشخضات این میکروکنترلر 40 پایه عبارت است از:

 

·        کارایی بالا و توان مصرفی کم

·        32 رجیستر (ثبات) 8 بیتی

·        سرعت با سقف 16 میلیون دستور در ثانیه در فرکانس 16 Mhz

·        32 کیلو بایت حافظه FLASH داخلی قابل برنامه ریزی با قابلیت ده هزار بار نوشتن و پاک کردن

·        2 کیلو بایت حافظه داخلی SRAM

·        1024 بایت حافظه EEPROM داخلی قابل برنامه ریزی با قابلیت صد هزار بار نوشتن و خواندن

·        قابلیت ارتباط JTAG

·        دو تایمر/شمارنده  هشت بیتی

·        یک تایمر/شمارنده  شانزده بیتی

·        چهار کانال PWM

·        هشت کانال مبدل A/D  ده بیتی

·        یک مقایسه کننده آنالوگ داخلی

·        WATCHDOG قابل برنامه ریزی با اسیلاتور داخلی

·        ارتباط سریال برای برنامه ریزی: ISP

·        USART سریال قابل برنامه ریزی

·        دارای شش حالت SLEEP

·        منابع وقفه داخلی و خارجی

·        اسیلاتور داخلی RC

·        کار با ولتاژ 4.5  تا 5.5

·        فرکانس کاری 0 تا 16 مگاهرتز

·        32 خط داده ورودی و خروجی قابل برنامه ریزی

·        ...

 

پایه های میکروکنترلرATMega32:

 

منبع :http://www.nurc.ir

 

+ نوشته شده در ساعت توسط alireza |

یک هنرمند پرتغالی اولین باغ وحش روبات های حیوان نمای دنیا را در کشور پرتغال راه اندازی کرده است.

این باغ وحش روبات های حیوان نما که "Robotarium X" نام دارد، در ویلای فرانک دو خیرا واقع شده است. این باغ وحش را یک هنرمند پرتغالی به نام "لئونل موئورا" طراحی و ساخته است.

در این باغ وحش که ساختاری زرد از جنس فلز و شیشه دارد، 45 گونه روبات حیوان نما زندگی می کنند.

در این باغ وحش قانون جنگل حکمفرما است. بنابراین هر روبات برای بقا مجبور است مبارزه کند. بطوری که روبات های بزرگتر به روبات های کوچکتر حمله می کنند.

براساس گزارش روبات نت، اغلب روبات های این باغ وحش، کوچک و بی دفاع هستند و روی چرخ یا پاهای کوچک راه می روند. در بین این روبات ها، نه گونه روبات بزرگ هم دیده می شوند.

+ نوشته شده در ساعت توسط alireza |

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

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

ایده اصلی برگزاری چنین مسابقاتی در قالب برگزاری رقابت های روبات های فوتبالیست برای اولین بار در سال 1993 ارایه شد.

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

در جولای سال 1997، نخستین کنفرانس رسمی و بازی های مرتبط با آن در ناگویای ژاپن برگزارشد. به دنبال آن، این هم آوردها در پاریس، استکهلم، ملبورن، سیاتل، فوکوآکا/بوسان، پاودا، لیسبون، اوزاکا و برمن آلمان ادامه یافت.

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

منبع:خبرگزاری مهر
+ نوشته شده در ساعت توسط alireza |

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

دکتر موسویان رئیس گروه مکاترونیک این دانشگاه در گفتگو با خبرنگار مهر گفت: من به عنوان محققی که با دنیای روبات ها در ارتباطم معتقدم که دنیای ما خیلی سریع تر از آنچه که پیش بینی می کنیم در حال تغییر است و در این میان تجهیزات روباتیکی نیز به نوبه خود خیلی سریعتر از تصورات قبلی در حال رشد و روتق هستند.

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

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

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

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

منبع:خبرگزاری مهر
+ نوشته شده در ساعت توسط alireza |

Robocup ابتکار عمل بین المللی آموزشی و تحقیقاتی است که هدف عمده آن تعمیق و گسترش تحقیقات روباتیک و هوش مصنوعی به واسطه طرح سوال استاندارد و استفاده از فناوری های نوین روباتیکی و الکترونیکی در بررسی و ارایه راه حل آنهاست.

به گزارش خبرگزاری مهر، ایده اصلی برگزاری چنین مسابقاتی در قالب برگزاری رقابت های روبات های فوتبالیست برای اولین بار در سال 1993 ارایه شد.

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

در جولای سال 1997، نخستین کنفرانس رسمی و بازی های مرتبط با آن در ناگویای ژاپن برگزارشد. به دنبال آن، این هم آوردها در پاریس، استکهلم، ملبورن، سیاتل، فوکوآکا/بوسان، پاودا، لیسبون، اوزاکا و برمن آلمان ادامه یافت.

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

منبع:خبرگزاری مهر
+ نوشته شده در ساعت توسط alireza |

اقدام آمریکا در عدم صدور ویزا برای تیمهای ایرانی مضحک است
رئیس و برگزار کننده اصلی مسابقات روبوکاپ 2007 آتلانتا گفت: اقدام دولت آمریکا درخصوص عدم صدور ویزا برای برخی از تیمهای شرکت کننده ایرانی، مضحک و سوال برانگیز است.

پروفسور تاکر بالچ - برگزار کننده اصلی مسابقات روبوکاپ 2007 آتلانتا در گفتگو با خبرنگار مهر گفت : من نسبت به اقدام آمریکا برای عدم صدور ویزا به تیم های ایرانی ناامید شده ام و این حرکت را کاملا سیاسی می دانم.

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

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

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

خبرگزاری مهر
+ نوشته شده در ساعت توسط alireza |

آغاز نبرد روباتهای 39 کشور دنیا در آمریکا / شانس بالای روباتهای ایران
یازدهمین دوره مسابقات جهانی روبوکاپ تا ساعاتی دیگر و به میزبانی انستیتو فناوری جورجیا در آتلانتا برگزار می شود.

به گزارش خبرگزاری مهر، در مسابقات امسال بالغ بر 1700 محقق و 300 تیم روباتیک شرکت کننده از 39 کشور جهان حضور خواهند بود.

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

البته در رسانه های خبری عنوان شده است که 33 کشور جهان تیمهای خود را روانه این مسابقات کرده اند اما رئیس این مسابقات در گقفتگوی تلفنی با خبرنگار مهر از شرکت 39 تیم در مسابقات 2007 آمریکا خبر داد.

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

منبع:خبرطؤاري مهر
+ نوشته شده در ساعت توسط alireza |

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

پروفسور تاکر بالچ رئیس مسابقات روبوکاپ 2007 در گفتگوی اختصاصی با خبرنگار مهر افزود: اقدام دولت آمریکا در خصوص عدم صدور ویزا برای برخی از تیمهای شرکت کننده ایرانی، مضحک و سوال برانگیز است.

رئیس مسابقات روبوکاپ 2007 آمریکا افزود: من نسبت به اقدام آمریکا برای عدم صدور ویزا به تیم های ایرانی نا امید شده ام و این حرکت را کاملا سیاسی می دانم.

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

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

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

پروفسور تاکر بالچ - رئیس مسابقات روبوکاپ 2007  

وی افزود: متاسفانه متوجه شدیم برخی تیمهای ایرانی که موفق به دریافت ویزا به بهترین راه شده بودند از راهنمایی دوستان ایرانی خود خودداری کرده اند و این برای من جای تاسف دارد. این مشکلی است که در خصوص برخی تیم های چینی نیز شاهد آن بوده ایم.

استاد برجسته محاسبات هوشمندانه انستیتوفناوری جورجیا تاکید کرد: از این که تیم های ایرانی در این جا حضور دارند خرسند هستم. ما از کار کردن با تیم های هوشمند ایرانی لذت می بریم.

پروفسور تاکر بالچ در پایان نسبت به موفقیت تیمهای ایرانی ابراز خشنودی کرد و گفت: تیم های ایرانی همواره جزء بهترین ها بوده اند.

منبع:خبرگزاری مهر
+ نوشته شده در ساعت توسط alireza |

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

به گزارش خبرگزاری مهر، در قرن نوزدهم تئوری کانت و لاپلاس درباره منشاء و ماهیت منظومه شمسی به عنوان یک رویای دست نیافتنی باقی ماند. براساس این تئوری منظومه شمسی در ادامه تراکم حلقه های گرد و غبار و گاز که با یک چرخش کند و آهسته به طرف مرکز گرانش خود فشرده می شوند، شکل گرفته است.

این تئوری منشاء اصلی بسیاری از داستان های علمی تخیلی است که از قرن نوزدهم تا امروز درباره مریخ و موجودات فرا زمینی نوشته شده است.

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

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

این فرضیه پس از اولین مشاهدات سطح مریخ با تلسکوپ قوت گرفت. برپایه این رصدها به نظر می رسید که مریخ و زمین شباهت های بسیاری با یکدیگر دارند. به ویژه آنکه مریخ هر 24 ساعت و 37 دقیقه یکبار به دور خود می چرخد و بنابراین طول شبانه روز این سیاره بسیار نزدیک به طول شبانه روز زمین است. هرچند به دلیل اینکه سیاره سرخ نسبت به زمین در مدار بالاتری قراردارد، هر 687 روز یکبار به دور خورشید می چرخد و بنابراین هر سال مریخی تقریبا دو برابر سال زمینی است.
موقعیت مداری زمین و مریخ به گونه ای است که سیاره سرخ می تواند حداقل در فاصله 56 میلیون کیلومتری و حداکثر در فاصله 380 کیلومتری زمین قرارگیرد.

این دو سیاره بین 15 تا 17 سال یکبار کاملا در دو جهت مخالف هم قرار می گیرند که به این پدیده "تضاد بزرگ" می گویند. آخرین بار در 13 ژوئن 2001 تضاد بزرگ رخ داد.

کاوشگر "فرصت"

انسان از آغاز دهه 60 قرن گذشته تلاش های خود را برای دست یافتن به سیاره مریخ و اعزام کاوشگرها شروع کرد. در این راستا تا به امروز 37  ناو فضایی کنترل از راه دور برای رسیدن به مریخ تلاش کرده اند که از این تعداد تنها 15 کاوشگر موفق شده اند قدم به خاک مریخ گذاشته و ماموریت خود را انجام دهند.

اتحاد جماهیر شوروی سابق بین سالهای 1960 تا 1962 اولین تلاش ها را برای فتح مریخ انجام داد و بصورت کاملا سری چندین کاوشگر را بدون موفقیت به این سیاره سرخ فرستاد.

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

پس از آزمایشات اولیه برای سفر به خلا، در 28 نوامبر 1964 کاوشگر "مارینر 4 " که 4 جولای همان سال تنها 10هزار کیلومتر از سطح زمین فاصله گرفته بود، به مریخ رسید. تصاویری که این کاوشگر به زمین ارسال کرد تنها یک درصد از سطح سیاره را پوشش می داد.

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

کاوشگر مارینر 4 علامت را از فشار اتمسفر این سیاره و ارزش میزان تبخیر آب به زمین فرستاد که احتمال حیات را در این فشار و میزان بخار آب غیرمحتمل می کرد.

پس از مارینر 4 ، آمریکایی ها در 24 فوریه 1969 مارینر 6 و درمدت زمان کمی پس ازآن مارینر 7 را به مریخ فرستادند.
این دو کاوشگر شباهت های بسیاری به مارینر 4 داشتند ، باوجود این برای اندازه گیری ترکیبات اتمسفری مریخ و دمای این سیاره به ابزارهای پیشرفته تری مجهز بودند.

این کاوشگرها نشان دادند که 95 درصد از اتمسفر مریخ از دی اکسید کربن جامد تشکیل شده است. دی اکسیدکربن در شرایط زمینی در دمای منفی 70 درجه سانتیگراد به صورت بلورهای یخی ساخته می شود.

وجود دی اکسیدکربن در مریخ چندان دور از انتظار نبود، چرا که از ابتدای قرن بیستم در داستان های علمی تخیلی، آدم های یک چشم سبز رنگی وارد شده بودند که در مریخ به جای اکسیژن از دی اکسیدکربن تنفس می کردند!

کاوشگر " روح"

در 30 می 1971 آمریکا موفق شد برای اولین بار مارینر 9 را به مدار مریخ اعزام کند. این کاوشگر توانست تصاویر واضحی از گرد و غبار اتمسفر این سیاره نشان دهد.

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

دو کاوشگر اول "ویکینگ 1 و 2" بودند که ماموریت خود را از سال 1975 آغاز کردند. این دو کاوشگر در مدت ماموریت خود 50 هزار تصویر که 97 درصد از سطح مریخ را پوشش می داد به زمین ارسال کردند. 20 سال پس از موفقیت دوقلوهای "ویکینگ" در 4 جولای 1997، کاوشگر "آدم سیار" (Sojourner) که درحقیقت یک روبات کوچک بود در سطح مریخ به گردش و جمع آوری اطلاعت مفیدی پرداخت.

درحال حاضر کاوشگرهای دوقلوی "روح" و "فرصت " در کنار کاوشگر "مارس اکسپرس" در سطح سیاره سرخ ماموریت خود را انجام می دهند.

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

خبرگزاری مهر
+ نوشته شده در ساعت توسط alireza |

روباتها هم شاید روزی دچار انحرافات رفتاری شوند / اعتقادی به استفاده از روبات در خانه‌ام ندارم!
رئیس آزمایشگاه سیستمهای غیرخطی دانشگاه MIT با بیان اینکه روباتها هم شاید روزی دچار انحرافات رفتاری می‌شوند، گفت : البته بدون شک تا چند دهه آتی نمی توان تصور کرد که روباتها به آن سطح از پیشرفت برسند که انحراف رفتاری از آنها سر بزند.

پروفسور ژان ژاکوس سلطان رئیس آزمایشگاه سیستم های غیرخطی دانشگاه MIT در گفتگوی اختصاصی به خبرنگار مهر گفت : مطرح شدن نکاتی همچون امکان بروز انحرافات رفتاری از سوی روبات ها در آینده مبحثی فوق العاده پیچیده است. من به عنوان یک متخصص معتقدم که حتی تصور چنین فرآیندی نیز می تواند هیجان انگیز باشد اما چندان هم به تحقق آن حداقل در آینده نزدیک خوش بین نیستم چون هنوز ارتقایی قابل توجه برای شکل گیری انحرافات حرکتی در آنها صورت نگرفته است.

پروفسور ژان ژاکوس سلطان
رئیس آزمایشگاه سیستم های غیرخطی دانشگاه MIT

پروفسور ژان ژاکوس در ادامه این گفتگو به مبحث جدیدی در صنعت روبات سازی یعنی یافتن منابع جدید فعال سازی روبات ها اشاره کرد و گفت : بدیهی است که بتوان برای فعال سازی روباتها با توجه به پیشرفتهای سریع این عرصه از فناوری، منابع جدید انرژی و فعال سازی را تعریف کرد.

وی افزود: استفاده از منابعی همچون منابع زیستی و خورشیدی به نوع روبات و میزان پیشرفت دانش ساخت آن باز می گردد.

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

منبع:خبرگزاری مهر
+ نوشته شده در ساعت توسط alireza |

MATLAB نرم افزار يا زبان برنامه نويسي؟
معمولا نرم افزارها را با کمک یک زبان برنامه نویسی قدرتمند طراحی می کنند زیبایی، خوانایی وتوانمندی وسادگی هر نرم افزار به زبان برنامه نویسی مربوط می شود که با آن نرم افزار نوشته اند . اما در نهایت هر نرم افزار دارای امکانات محدودی می باشد. ممکن است بسیاری از حالات خاص یک مسئله را در طراحی آن نرم افزار در نظر نگرفته با شند که محدودیتهایی برای نرم افزارایجاد می کند

نگرشي به تواناييهاي MATLAB

نويسنده : احمد زيني

معمولا نرم افزارها را با كمك يك زبان برنامه نويسي قدرتمند طراحي مي كنند زيبايي، خوانايي وتوانمندي وسادگي هر نرم افزار به زبان برنامه نويسي مربوط مي شود كه با آن نرم افزار نوشته اند . اما در نهايت هر نرم افزار داراي امكانات محدودي مي باشد. ممكن است بسياري از حالات خاص يك مسئله را در طراحي آن نرم افزار در نظر نگرفته با شند كه محدوديتهايي براي نرم افزارايجاد مي كند.

اما يك زبان برنامه نويسي ديگرمحدوديت هاي گفته شده را ندارد. يك برنامه نويس به طور سليقه اي هر گونه امكاناتي را به برنامه اي كه طراحي مي كند ودر نهايت يك نرم افزار در اختيار كار بران قرار مي دهد. بالطبع استفاده از چنين توانايي مشكلاتي نيز با خود به همراه دارد چون اگر شما خواستيد طراحيتان را با يك زبان انجام دهيد، بايد تمامي توابع مورد نياز را خودتان بنويسيد كه اين كاري بس دشوار ووقت گير است.

اينجانب كه بايد مصامحه اي بين قابليت بالا و زمان صرف شده وآساني كار انجام شود كه از طرفي هم براي نوشتن يك برنامه ساده نياز نباشد تمامي توابع اساسي را خودمان بنويسيم وهم برنامه اي كه با آن كارمي كنيم توانايي كافي براي انجام پرمژه هاي ما داشته باشد. اولين چيزي كه به ذهن خطور مي كند اين است كه براي طراحي يك سيستم خاص مثلا طراحي خطوط هوايي نياز است كه نيروهايي كه سيم دكل ها وارد مي كنند را محاسبه كرد. همچنين ميزان وزش باد، نشست برف ويخ را در اين محاسبات لحاظ نمود از طرفي بايد در اين محاسبات مسائل الكتريكي قضيه را نيز در نظر بگيريم ( مباحث مربوط به اتصال كوتاه وصاعقه) همچنين از داده هاي آماري براي لحاظ كردن شرايط محيطي در فصول سرد وگرم استفاده كنيم . مسلما نرم افزاري كه هم در زمينه مكانيك والكتريك وآمار توانمند باشد همچنين محاسبات رياضي نيز در آن در نظر گرفته شده باشد براي كاربران عمومي ساخته نشده است يا حداقل ما از آن بي خبريم.بنابراين براي طراحي چنين سيستم خاصي حتما بايد از يك زبان برنامه نويسي كمك گرفت. البته اگر اين زبان از قابليت خاص نرم افزارهاي ديگر نيز استفاده مي كند كه كار ما راحتر مي شود. فرض كنيد از توابع رياضي به راحتي وتوانمندي Maple يا Mathematical كه نرم افزارهاي تخصصي رياضي هستند بهره مند باشدويا از محيط شبيه سازي قوي مانند Labview برخوردار باشد

با اين تفاوت كه فرض كنيد كه بتوانيد در محيط Labview هر نوع بلوكي راكه به طور آماده وجود نداشته باشد با هنر برنامه نويسي خودتان اضافه كنيد همچنين محيطي مثل Excel براي وارد كردن داده هاي مسأله در اختيار داشته باشيد با توجه به اين نكته كه ميزان داده هاي يك مسئله مهندسي در مواردي حتي تا هزاران عدد اعشاري وتوان دار مي تواند باشد البته چه بهتر است كه اين زبان برنامه نويسي خيلي خيلي سطح بالا باشد تا حدودي كه دقيقا از رسم الخط خودمان استفاده كند.

  MATLAB:   زباني است كه تمامي توانمنديهاي ذكر شده را داراست. البته علاوه بر قابليتهايي كه قبلا ذكر شده ويژگيهاي منحصر به فرد ديگري نيز دارد كه ملاك مهمي در انتخاب آن به عنوان ابزار طراحي محسوب مي شود.

1- ويژگي منحصر به فرد ماتريسي مهمترين ويژگي آن است كه اسم آن از ماتريس گرفته شده است ( آزمايشگاه ماتريس Matrix Laboratory )

تعريف ماتريس در مطلب بسيار راحتر از ساير زبانها است. تصور كنيد ماتريس n×n×n×… با اين ابعاد كه اندازه آن به صورت شناور باشد وبه طور دلخواه، همچنين با توجه به اينكه بيشتر محاسبات مهندسي به صورت ماتريستي انجام مي شود داشتن قابليتهاي خاص در اين مورد مانند ترانهاده، معكوس، دترمينال قطري كردن، بالا مثلثي و... يكي ديگر از ويژگيهاي منحصر به فرد مطلب است.

2- استفاده از تجربيات وزحمات كساني كه با مطلب كار مي كنند به اين ترتيب كه هر كسي در هر زمينه اي با مطلب كاري انجام داده باشدشركت سازنده مطلب آنها را در نسخه هاي بعدي اضافه مي كند بنابراين برنامه نوشتن با چنين زباني خيلي راحت مي باشد زيرا بسياري از توابع مورد نظر ما توسط ديگران آماده شده فقط كافي است بتوانيم آنرا از ليست توابع مطلب پيدا كرده از آن برنامه استفاده كنيم. كه خود باعث صرفه جويي در وقت وبالا رفتن دقت كار مي شود.

3- سازگاري با زبانهاي برنامه نويسي ديگر: مي توان توابعي كه با زباني ديگر مثل زبانC نوشته شده باشد را دقيقا در محيطمطلب بكار برد يا برنامه هاي مطلب را به كد زبان C تبديل كنبم وآن را در محيط استفاده نماييم.

4- تنوع زمينه هايي كه مطلب به آنها پرداخته است مثلا مخابرات، كنترل، فازي، پردازش تصوير وصوت، معادلات ديفرانسيل جزئي، شبكه عصبي، سيستم هاي قدرت، رياضيات، بانك اطلاعاتي، سيستم هاي هيبريدو...

از آنجا كه براي يك پروژه عملي نياز است عمليات متنوعي در زمينه هاي مختلف علمي انجام دهيم مطلب مارا براي انجام چنين پروژه هايي كمك مي كند.

5- ابزار لازم جهت طراحي يك سيستم محيطي است كه درآن امكانات شبيه سازي قوي وجود داشته باشد.

محيط مدل سازي مطلب) (SIMULINK ابزاري مناسب را براي اين منظور در اختيار شما مي گذاردمحيطي كه درآن شما مي توانيدارتباط علوم مختلف را هر آن لمس كنيد وتمامي جنبه هاي علمي وعملي يك سيستمرادر نظر بگيريد.

6- راحتي استفاده از برنامه كه يكي از ويژگيهاي برنامه شماست، قابليت GUI به شما اين امكان را مي دهد كه كاربراني كه قصد استفاده از برنامه شما را دارند به راحتي با چند كليك موس داده هاي خود را وارد كرده وبرنامه را اجرا كنند وخود را درگير قالب نامانوس شما نكنند. باتعريف يك پنجره كه در آن چند دكمه ونمودار وورودي متني موجود است به راحتي مي توان از اصل برنامه استفاده كرد.


http://www.autoir.com
+ نوشته شده در ساعت توسط alireza |

 

متلب نام يكي از نرم‌افزارهاي رايانه‌اي براي انجام محاسبات رياضي است. واژه متلب هم به معني محيط محاسبات رقمي و هم به معني خود زبان برنامه‌نويسي مربوطه است از تركيب دو واژهٔ MATrix و LABratuary ايجاد شده است. اين نام حاكي از رويكرد ماتريس محور برنامه است، كه در آن حتي اعداد عادي هم به عنوان ماتريس در نظر گرفته مي‌شوند.

با نرم‌افزار متلب مي‌توان ماتريس‌ها را به راحتي تغيير داد، توابع يا داده‌ها را ترسيم كرد، الگوريتم‌ها را اجرا كرد و همچنين صفحات رابط ميان كاربر و رايانه ايجاد كرد.

متلب كه از محصولات شركت مث‌وركس (The MathWorks) است، براي گروه‌هاي مختلف مهندسان رشته‌هاي مختلف از جمله مهندسي برق، مكانيك، كامپيوتر و ... كاربرد بسياري دارد.

قدرت متلب

 برنامه‌هاي متلب همگي متن‌باز هستند و در واقع متلب مفسر است نه كامپايلر. قدرت متلب از انعطاف‌پذيري آن و راحت بودن كار با آن ناشي مي‌شود، همچنين شركت سازنده و گروه‌هاي مختلف، از جمله دانشگاه‌هاي سرتاسر جهان و برخي شركتهاي مهندسي هر ساله جعبه‌ابزارهاي خاص-كاربردي به آن مي‌افزايند كه باعث افزايش كاراي و محبوبيت آن شده است. فهرستي از اين جعبه‌ابزارها در زير آمده است:

  • جعبه‌ابزار مخابرات متلب
  • جعبه‌ابزار كنترل متلب
  • جعبه‌ابزار فازي متلب
  • جعبه‌ابزار محاسبات متلب
  • جعبه‌ابزار سيمولينك متلب
  • جعبه‌ابزار تخمين متلب
  • جعبه‌ابزار آمار متلب
  • جعبه‌ابزار جمع‌آوري دادهٔ متلب
  • جعبه‌ابزار شبكه عصبي متلب
  • جعبه‌ابزار پردازش تصوير متلب
  • جعبه‌ابزار پردازش صوت متلب
  • جعبه‌ابزار احتمالات متلب
  • جعبه‌ابزار كارگاه بلادرنگ متلب

 

MATLAB محيطي براي محاسبات عددي و زبان برنامه سازي مي باشد كه توسط MATH WORKS ساخته شده است ، MATLAB   امكان دستكاري و كاركردن ساده با ماتريس ، رسم نمودار توابع و ديتا ، اجراي الگوريتم ، ساخت واسط كاربر و واسط برنامه با ساير زبانهاي برنامه نويسي را بوجود مي آورد . اگر چه MATLAB مخصوص محاسبات عددي است اما toolbox ي با استفاده از موتور maple آنرا به سيستم كامپيوتري – جبري تبديل مي كند . اين نرم افزار توسط يك ميليون نفر در دانشگاهها و صنعت مورد استفاده قرار مي گيرد . هزينه اين نرم افزار براي مصارف تجاري بدون tool box حدود 2000 دلار آمريكا و براي مصارف دانشگاهي با toolbox محدود حدود 100 دلار آمريكا است .

 
متلب  
بخش اول - ملزومات و پيش نيازهاي آموزش MATLAB

اين آموزش شما را به طور مرحله به مرحله با جنبه هاي مختلف MATLAB آشنا مي كند . پس از كامل نمودن اين دوره آموزشي شما به سادگي با استفاده از HELP MATLAB مي توانيد ويژگي هاي پيشرفته MATLAB را ياد بگيرد . و همچنين در استفاده از ويژگي هاي پيشرفته MATLAB راحت خواهيد بود و قادر خواهيد بود نكات بسيار كاربردي و پيشرفته تري كه به رشته تحصيلي يا كارتان مربوط مي شود را به خودتان آموزش بدهيد .

شما بايد داراي مهارت هاي ا وليه استفاده از كامپيوتر باشيد بعنوان مثال شما بايد قادر باشيد كه برنامه اي را اجرا كنيد ، آنرا ببنديد و فايلهايتان را ذخيره كنيد ، نوشته را كات كنيد و در جاي مورد نظر پيست كنيد و ...

شما بايد بدانيد كه از يك نرم افزار واژه پرداز چگونه استفاده كنيد ، مانند نوت پد در ويندوز كه شما مي توانيد از آن براي نوشتن برنامه هاي MATLAB استفاده كنيد .همچنين MATLAB نرم افزار واژه پرداز مخصوص خود را دارد كه شما مي توانيد از آن استفاده كنيد (‌كه در اين آموزش به شما نشان خواهيم داد )

شما بايد دانش اوليه اي در مورد جبر و مثلثات داشته باشيد مانند آنچه كه در دبيرستان پوشش داده شده همچنين اطلاعاتي در مورد جبر خطي ( مانند ماتريس ها ، بردارها و معكوس آنها و ... ) دانستن اين موارد موقع شروع آموزش MATLAB بسيار سودمند است اما اصول جبر خطي مورد نياز در اين آموزش شرح داده خواهد شد

ما در اين آموزش با يكديگر تعامل خواهيم داشت و آموزش همراه كار و تمرين خواهد بود . در حاليكه شما صفحه تمرين را مطالعه مي كنيد بايد نرم افزار MATLAB را در پنجره جداگانه اي اجرا كنيد و تمرينات را حل كنيد .

حالا شما آماده ايد كه آموزش MATLAB را شروع كنيد .

اميدوارم اوقات خوشي با MATLAB داشته باشيد . حين آموزش خواهش مي كنم تا جايي كه امكان دارد تمرين حل كنيد چون بهترين راه يادگيري MATLAB استفاده از آن است . 

 
 
بخش دوم - آموزش بسيار مقدماتي MATLAB
 
 
MATLAB برنامه اي است كه هنگام مواجه شدن با مسائل رياضياتي بسيار سودمند خواهد بود مخصوصا در زمينه تكنيك و مهندسي .

شما مي توانيد از ويژگي built-in MATLAB براي حل بسياري از مسائل بدون انجام زحمت خاصي ، بهره ببريد از معادلات دو معادله دو مجهول ساده مانند

X + 2Y = 24
12X - 5Y = 10

گرفته تا معادلات بسيار پيچيده مانند فاكتور گيري چند منظوره ، تطابقت منحني با اطلاعات داده شده ، انجام محاسبات با استفاده از ماتريس ، انجام مسائل مربوط به پردازش سيگنال مانند تبديلات فوريه ، و ساخت و گسترش شبكه هاي عصبي .

يك جنبه بسيار قدرتمند و سودمند MATLAB اين است كه براي رسم بسياري از انواع منحني ها مفيد واقع مي شود و شما را قادر مي كند تا توابع پيچيده ماتريسي را رسم كنيد و در كل يك آزمايشگاه ديتا است . بعنوان مثال سه شكل زير با استفاده از توابع چاپ ( plotting ) ساخته شده اند .

                  
آموزش MATLAB دقيقا شبيه آموزش رانندگي است . شما مي توانيد كليه قوانين را ياد بگيريد ولي براي اينكه راننده خوبي باشيد بايد سوار اتومبيل شويد و براي رانندگي به خيابان برويد .

اگر شما قبلا پيش زمينه قويتري از رياضات و برنامه سازي كامپيوتري داشته باشيد شما سريعا ياد مي گيريد كه از MATLAB چگونه براي اهداف طراحي و يا زمينه كاري خودتان استفاده كنيد .
 

بخش سوم : اجراي نرم افزار MATLAB
 

شما به سادگي مي توانيد با دابل كليك روي ايكون MATLAB اين نرم افزار را اجرا كنيد يا اينكه با استفاده از منوي start ويندوز اين نرم افزار را فراخواني كنيد . پنجره اصلي MATLAB ، دسكتاپ MATLAB ناميده مي شود ، كه شبيه پنجره زير است .

شما هنگام اجراي برنامه متوجه خواهيد شد كه در خط فرمان متن زير نوشته شده است :

To get started, select "MATLAB Help" from the Help menu.

علامت>>   command prompt ( گوش به فرمان ) ناميده مي شود ،كه مانند يك چشمك زن است و منتظر فرمان شماست . بعد از اينكه شما متني را در خط فرمان تايپ كرديد MATLAB فرمان شما را اجرا مي كند و نتيجه را نشان مي دهد و منتظر فرمان بعدي شما مي ماند بدين ترتيب شما مي توانيد دستوراتي را كه مي خواهيد وارد كنيد . ( MATLAB فرمان را خط به خط اجرا مي كند )

درس بعدي در مورد دستورات خاص MATLAB است ، اما الان براي اينكه فقط MATLAB را شروع كرده باشيد دستور ساده زير را وارد كنيد . دستور dateرا تايپ كنيد و اينتر را بزندي . MATLAB نتيجه را چيزي شبيه متن زير نمايش مي دهد .

>>date

ans =
11-Jun-1998

بدين ترتيب شما بطور موفقيت آميز اولين دستور ATLAB را اجرا كرده ايد .

دستور ساده ديگري كه شما الان مي توانيد امتحان كنيد دستور clc است (clear command window ) اگر شما در صفحه فرمان MATLAB بخواهيد همه نوشته ها و دستورات را پاك كنيد و چشمك زن به ابتداي صفحه برود مي توانيد در خط فرمان clc را تايپ كنيد و اينتر بزنيد . همين حالا به صفحه MATLAB برويد و اين دو دستور را اجرا كنيد . ساده بود . نه ؟

براي خارج شدن از MATLAB مي توانيد وارد منوي فايل شويد و گزينه exit matlab را انتخاب كنيد يا در خط فرمان دستور quit را تايپ كنيد و اينتر بزنيد .و يا اينكه به سادگي پنجره را ببنديد.  

 

 

 

 
 
 
 
بخش چهارم : اجراي دموها
 

 

 

 

شما قبلاً MATLAB را اجرا كرده ايد و دسكتاپ MATLAB را روي دستكتاپ ويندوز باز كرده ايد . اگر اين كار را انجام نداده ايد به بخش قبل مراجعه كنيد .

حالا كمي روي Demo ها بحث مي كنيم . در واقع Demo زيادي در MATLAB وجود دارد و همه آنها با تايپ كردن دستور Demo در خط فرمان نشان داده مي شوند .

ما واقعا انتظار نداريم شما جزئيات MATLAB را با استفاده از اين Demo ياد بگيرد اما با استفاده از اين Demo ها نسبت به كاراهايي كه مي توانيد با استفاده از MATLAB انجام دهيد ديد بهتري خواهيد يافت . حتي در اين Demo چند بازي هم وجود دارد و بعضي از آنها هم كاملا گرافيكي هستند و شما مي توانيد با استفاده ازاين Demo ها از MATLAB لذت ببريد . MATLAB ابزاري قدرتمند براي حل بسياري از مسائل است و شما بايد اين قدرت را بعد از آشنايي با دموها درك كنيد .

خوب براي شروع درخط فرمان Demo را تايپ كنيد و اينتر بزنيد . با اين كار صفحه Demo MATLAB بالا مي آيد و منتظر مي ماند تا شما دموي مورد نظرتان را انتخاب واجرا كنيد . پنجره Demo MATLAB مشابه صفحه زير است

 

در اين مبحث نمي توانيم به كل دموها سر بزنيم ولي شروع كردن يكي از دموها را به شما نشان مي دهيم و شما مي توانيد براي بقيه دموها نيز همين كار را انجام دهيد .

براي ديدن ليست دموهاي مختلف روي علامت + كنار گزينه matlab كليك كنيد با اينكار شما مي توانيد دموهايي در مورد ماتريس ها ،‌اعداد ، اجسام گرافيكي و ... را مشاهده كنيد . در ليست هر يك از دموها ، دموهاي متعددي در آن مورد وجود دارد .

پنجره سمت راست شما چكيده اي در مورد دموي انتخابي به شما نشان مي دهد . بعنوان مثال اگر شما gallery را بعنوان دسته مورد نظر خودتان انتخاب كنيد  text box سمت راست چيكيده اي از اين دسته دموها را به شما نشان مي دهد .

شما مي توانيد دموها ي مختلفي را با توجه به كلاس انتخابي تان ببينيد . در كلاس gallery دموهايي به نامهاي Knot, Quiver, Klein IIو ... وجود دارد اگر شما يكي از اين دموها را انتخاب كنيد اطلاعاتي با توجه به دمو در سمت راست نمايش داده مي شود . و دو گزينه وجود دارد.

1-      اجراي دمو

2-      ديدن كدهاي دمو

بعنوان مثال اين كار را انجام دهيد . كلاس gallery را در صفحه MATLAB خود انتخاب كنيد سپس دموي spherical surface harmonicحال شما بايد پنجره زير را ببينيد

 

اين دمو به شما يك مثال گرافيكي خوب را نشان ميد هد كه شما مي توانيد با استفاده از MATLAB به آن برسيد .

حالا كمي وقت صرف كنيد و ساير دموها را انتخاب و اجرا كنيد تا محدوده توانايي و امكانات MATLAB را بدرستي درك كنيد .

قبل از شروع شايد بخواهيد دستور intro demo را امتحان كنيد . اين مثال ديگري است كه مقدمه ابتدايي از توانايي هاي MATLAB را به شما نشان مي دهد . براي اجراي intro كلاس matlab از دموها را انتخاب كنيد و سپس matrices بعد basic matrix operation يا اينكه دستور play show intro را تايپ كنيد پنچره ديگري بالا مي آيد و شما مي توانيد با استفاده از دكمه هايي كه در اين پنجره وجود دارد جزئيات اين دمو را مشاهده كنيد .

 

 
 بخش پنجم : استفاده از help

متلب داراي سيستم help گسترده اي است ، كه شامل جزئيات و اطلاعات help در مورد كليه دستورها و توابع متلب مي شود . اين سيستم help براي افرادي كه مبتدي هستند بسيار مناسب خواهد بود ، اما حتي بعد از اينكه شما به يك متخصص متلب بدل شديد ، از اين سيستم براي يادگيري ساير توابع متلب كه تا به حال از آنها استفاده نكرده ايد استفاده خواهيد كرد . اين درس به شما مي آموزد كه چگونه از اين سيستم استفاده كنيد

دسترسي به help از طريق خط فرمان :

سه تابع اصلي وجود دارد كه شما مي توانيد از آنها براي كسب اطلاعات در مورد توابع ديگر استفاده كنيد : help ، helpwin ( اختصاري help window  ) و doc ( اختصاري documentation  ) . تابع help و helpwin اطلاعات مشابهي به شما مي دهند ، اما با پنجره هاي متفاوت ، دستور doc يك صفحه html با يك سري اطلاعات بيشتر را نمايش مي دهد .

قسمت پايين نمايش help در مورد تابع date را به شما نشان مي دهد كه اين نمايش با استفاده از دستوارات متفاوت انجام شده .

help date

DATE Current date as date string. S = DATE returns a string containing the date in dd-mmm-yyyy format.

See also NOW, CLOCK, DATENUM

توجه : خروجي help معمولاً توابعي كه به موضوع مربوط هستند را نيز نشان مي دهد . در اين مثال ، help علاوه بر موضوع اصلي به شما مي گويد : See also NOW, CLOCK, DATENUM. حالا شما مي توانيد در مورد همين توابع نيز از help  استفاه كنيد

helpwin date

توجه : محتواي اطلاعات دستور help و helpwin يكسان است ولي بهتر است از helpwin استفاده كنيد چون :

1-      متن در صفحه هاي مجزا نشان داده مي شود

2-      شما در قسمت see also مي توانيد روي تابع يا توابعي كه در همين قسمت ليست شده كليك كنيد تا اطلاعاتي در مورد آنها كسب كنيد تا اينكه مجبور باشيد آنرا در خط فرمان تايپ كنيد تا اطلاعاتي در مورد آن بدست آوريد .

3-      لينك موضوعات پيش فرض ، كليه دسته بندي ها را ليست مي كند و شما مي توانيد تابع مربوطه با دسته بندي مربوطه را ببينيد . بعنوان مثال ، اگر شما بخواهيد بدانيد خروجي دستور پلات x  بر حسب y چيست مي توانيد روي لينك matlab\graph2d topic كليك كنيد .

doc date

توجه : خروجي دستور doc بسيار كامل است و فقط يه قسمت از اطلاعات خواسته شده در مورد موضوع مورد نظر نيست بلكه مثال هاي كاملي ارائه مي كند كه مي توانند مورد مطالعه قرار گيرند يا اجرا شوند .

سعي كنيد براي توابع مقابل از دستورات مختلف اجراي help  استفاده كنيد : magic, fft, and surf

استفاده از جستجوگر help متلب

منبع ديگر help در متلب ، جستجوگر help  متلب است . شما مي توانيد جستجوگر help  متلب را با تايپ دستور helpbrowser در خط فرمان متلب فراخواني كنيد ، روي دكمه ؟ كليك كنيد يا با انتخاب Start->MATLAB-> از desktopاين جستجوگر را فرخواني كنيد .

جستجوگر help دو قسمت عمده دارد ، help navigator و صفحه نمايش . صفحه نمايش ، همانگونه كه از نامش پيداست ، اطلاعاتي در مورد موضوع انتخاب شده را نشان مي دهد . help navigator در قسمت سمت چپ جستجوگر قرارگرفته ، و براي هدايت كردن از طريق اطلاعات online در مورد موضوع انتخاب شده كاربرد دارد . اين قسمت در برگيرنده موارد زير است :

  • فيلتر فراورده
  • نوار محتويات
  • نوار شاخص
  • نوار دمو
  • نوار جستجو
  • نوار favorit

اين بخش منبع گسترده اي براي شما خواهد بود اگر بدنبال يادگيري نكات بيشتري در مورد موضوع داده شده باشيد . نوار سرچ در مورد موضوع مورد نظر از ميان كليه اطلاعات موجود جستجو مي كند ، و لغات كليدي كه آنها را سرچ كرده ايد را بصورت highlight مشخص مي كند تا خواندن اطلاعات مورد نظر راحتتر باشد .

حالا با استفاده از امكانات سرج در مورد help از جستجوگر خودش استفاده كنيد

 

بخش ششم: ساخت متغير
 
يكي از جنبه هاي اصلي متلب متغير ها هستند ، و شما همواره از آنها استفاده مي كنيد . در اصل ، يك متغير مكاني است براي يك مقدار كه شما مي توانيد نامي را به آن نسبت دهيد . منظور ما اين است كه ، هنگامي كه چيزي را بعداً محاسبه خواهيد كرد ، شما مي توانيد ازاين مقدار استفاده كنيد كه متغيري است كه بعنوان قسمتي از محاسبات جديد بكار رفته . بيايد تا براي واضح تر شدن مطلب از چند مثال استفاده كنيد .

در ساده ترين حالت ، متلب مي تواند بعنوان يك ماشين حساب جيبي باشد . بعنوان مثال دراينجا شما چند محاسبه ساده با استفاده از متلب مانند يك ماشين حساب انجام مي دهيد .

4 + 10
ans =
14
5 *10 + 6

ans =
56
(6 + 6) / 3

ans =
4
9^2

ans =
81

شما مي توانيد ببينيد كه متلب كليه اپراتورهاي اصلي رياضياتي را شامل + ، - ، * ، / ، ^ و ... را ساپرت مي كند . و شما مي توانيد عملگر هاي را با قرار دادن آنها در داخل پرانتز بصورت دسته و گروه در آوريد . با اين وجود عبارت ans دقيقا چيست ؟ ans اختصاري answer يا همان پاسخ است ، و در متلب اين عبارت بعوان نام پيش فرض متغير ها در نظر گرفته شده . و شما مي توانيد به متغيري كه فعلا اسمي براي ان انتخاب نشده فقط با تايپ عبارت ans دست پيدا كنيد .

4 + >>5

ans = 9

 >>ans

ans = 9

با اين وجود اگر معادله جديدي وارد شود ، مقدار ans تغيير خواهد كرد .

>>ans + 10

ans = 19

حالا شما هم متغير هاي خودتان را بعنوان تمرين وارد كنيد .

متغير ans به خودي خود سودمند نيست ، اما قدرت حقيقي ان در اين است كه شما مي توانيد متغير خودتان را تعريف و استفاده كنيد . بعنوان مثال :

>>a = 10

a = 10

 >>b = 20

b = 20

 >>c = 30

c = 30

 >>a

a = 10

 >>the_average = (a + b + c) / 3

the_average = 20

حالا بياييد بگوئيم كه شما متغير هاي زيادي را تعريف كرده ايد . احتمالاً نام كليه متغير هايي را كه تعريف كرده ايد بخاطر نخواهيد آورد ، پس داشتن ليستي از كليه متغير هايي كه تعريف شده اند سودمند خواهند بود . اين دقيقا چيزي است كه دستور whos انجام مي دهد . حالا با تايپ كردن دستور whos در خط فرمان و زدن اينتر شما مي توانيد نام و مقدار كليه متغير هايي را كه تا كنون وارد كرده ايد ببينيد . بعنوان مثال :

>>a = 5

a = 5

 >>b = 6

b = 6

 whos

Name
Size
Bytes
Class
a
1x1
8
double array
b
1x1
8
double array

در كل دو عنصر داريم كه از شانزده بيت استفاده كردهاند

براي پاك كردن متغير هايي كه قبلا وارد كرده ايدو در حافظه ذخيره شده اند چه كاري بايد انجام داد ؟ پاسخ اين سوال دقيقا پاسخ به اين است كه دستور clear چه كاري انجام مي دهد . clear را در خط فرمان تايپ كنيد ، خواهيد ديد كه كليه متغير ها و مقاديري را كه قبلا ذخيره شده اند را پاك مي كند . مثال فوق را ادامه مي دهيم .

whos

Name    Size      Bytes     Class

a          1x1       8          double array

b          1x1       8          double array

Grand total is 2 elements using 16 bytes

 clear

 whos

جلوگيري از نمايش نتايج بااستفاده از «؛»

اگر بعد از دستور سميكولون تايپ شود باعث مي شود كه نتيجه نشان داده نشود . اگر شما عبارتي تايپ كنيد ( مثلا b=4+5 ) و در انتهاي آن سميكولون بگذاريد ، سپس متلب عبارت را محاسبه مي كند ولي نتايج را در حافظه بصورت داخلي ( بدون نمايش ) ذخيره مي كند . بعنوان مثال :

>>a = 10;

>>b = 20;

>>c = 30;

>>d = 40;

>>the_average = (a + b + c + d) / 4

the_average =

25

the_average;

>>b

b =

20

>>e = 50

e =

50

the_blank_average = (a + b + c + d + e) / 5;

>>the_blank_average

the_blank_average =

30

ممكن است اينطور به نظر برسد كه استفاده از سميكولون زياد هم مهم نيست ، اما در حقيقت سميكولون هميشه دم دست است و هميشه استفاده مي شود . نتيجه نهايي عملياتي كه در متلب انجام داده ايد برايتان مهم است ، كه با تركيب بسياري از داده ها و نتايج موقت و متغير هاي مياني  محاسبه مي شود . و با افزودن سميكولون به انتهاي دستوري كه مقدار آن موقت يا نتيجه بصورت نتيجه مياني است باعث مي شود كه نتيجه آنها نشان داده نشود . بعنوان مثال ، در مثال بالا سميكولون بعداز متغير ها a,b,c,d تايپ شده است ولي فقط نتيجه نهايي كه ميانگين اين چهار متغير است مهم مي باشد و مي بينيم كه سميكولون بعد از عبارت the_average تايپ نشده است و نتيجه اين دستور نشان داده مي شود . 
 
برگرفته از وبلاگ : http://azizkhani.mihanblog.com
+ نوشته شده در ساعت توسط alireza |

 
حسگر يك وسيله الكتريكي است كه تغييرات فيزيكي يا شيميايي را اندازه گيري مي كند و آن را به سيگنال الكتريكي تبديل مي نمايد.حسگرها در واقع ابزار ارتباط ربات با دنياي خارج و كسب اطلاعات محيطي و نيز داخلي مي باشند. انتخاب درست حسگرها تأثير بسيار زيادي در ميزان كارايي ربات دارد. بسته به نوع اطلاعاتي كه ربات نياز دارد از حسگرهاي مختلفي مي توان استفاده نمود:
فاصله
رنگ
نور
صدا
حركت و لرزش
دما
دود
و...

اما چرا از حسگرها استفاده مي كنيم ؟ همانطور كه در ابتداي اين گفتار اشاره شد حسگرها اطلاعات مورد نياز ربات را در اختيار آن قرار مي دهند و كميتهاي فيزيكي يا شيميايي موردنظر را به سيگنالهاي الكتريكي تبديل مي كنند.مزاياي سيگنالهاي الكتريكي را مي توان بصورت زير دسته بندي كرد:
پردازش راحتتر و ارزانتر
انتقال آسان
دقت بالا
سرعت بالا
و...
حسگرهاي مورد استفاده در رباتيك:
در يك دسته بندي كلي حسگرهاي مورد استفاده در رباتها را مي توان در يك دسته خلاصه كرد:
حسگرهاي تماسي ( Contact )
مهمترين كاربردهاي اين حسگرها به اين شرح مي باشد:
آشكارسازي تماس دو جسم
اندازه گيري نيروها و گشتاورهايي كه حين حركت ربات بين اجزاي مختلف آن ايجاد مي شود .

در شكل يك ميكرو سوئيچ يا حسگر تماسي نشان داده شده است. در صورت برخورد تيغه فلزي به مانع و فشرده شدن كليد زير تيغه همانند قطع و وصل شدن يك كليد ولتاژ خروجي سوئيچ تغيير مي كند.
حسگرهاي هم جواري (Proximity )
آشكارسازي اشيا نزديك به روبات مهمترين كاربرد اين حسگرها مي باشد. انواع مختلفي از حسگرهاي هم جواري در بازار موجود است از جمله مي توان به موارد زير اشاره نمود:
القايي
اثرهال
خازني
اولتراسونيك
نوري

حسگرهاي دوربرد ( Far away)
كاربرد اصلي اين حسگرها به شرح زير مي باشد:
فاصله سنج (ليزو و اولتراسونيك)
بينايي (دوربينCCD)

در شكل يك زوج گيرنده و فرستنده اولتراسونيك (ماورا صوت) نشان داده شده است. اساس كار اين حسگرها بر مبناي پديده داپلر مي باشد.
- حسگر نوري (گيرنده-فرستنده)
يكي از پركاربردترين حسگرهاي مورد استفاده در ساخت رباتها حسگرهاي نوري هستند. حسگر نوري گيرنده- فرستنده از يك ديود نوراني (فرستنده) و يك ترانزيستور نوري (گيرنده) تشكيل شده است.
خروجي اين حسگر در صورتيكه مقابل سطح سفيد قرار بگيرد 5 ولت و در صورتي كه در مقابل يك سطح تيره قرار گيرد صفر ولت مي باشد. البته اين وضعيت مي تواند در مدلهاي مختلف حسگر برعكس باشد. در هر حال اين حسگر در مواجهه با دو سطح نوري مختلف ولتاژ متفاوتي توليد مي كند.

در زير يك نمونه مدار راه انداز زوج حسگر نوري گيرنده فرستنده نشان داده شده است. مقادير مقاوتهاي نشان داده شده در مدلهاي متفاوت متغيير است و با مطالعه ديتا شيت آنها مي توان مقدار بهينه مقاومت را بدست آورد.

منبع : http://www.bselectron.mihanblog.com

+ نوشته شده در ساعت توسط alireza |

 
1. آشنايي با مدارهاي مجتمع تي تي ال TTL 74000 – مسعود نظرزاده – جليل شبري – مؤسسه انتشارات تلاش – 1371
 
2. آشنايي با مهندسي برق و الكترونيك – حسن كلهر – انتشارات شركت سهامي انتشار – 1363
 
3. آنتن ها تحليل و طراحي- حبيب الله عبيري و ديگران – انتشارات دانشـگاه شـيراز- 1373
 
4. آنتن ها ( زميني – ماهواره اي ) – توماس آدامسون – عليرضا سروالدين – انتشارات نيريز – 1378
 
5. اصول الكترونيك – سيدمحسن موسوي – ابراهيم برزآبادي – انتشارات دانشگاه اصفهان – 1381
 
6. اصول عيب يابي مدارات الكترونيك – حسن صمدي آذر – انتشارات سازمان آموزش فني و حرفه اي مديريت پژوهش – 1372
 
7. اصول مقدماتي الكتريسيته – غلامعلي سرابي تبريزي – انتشارات سازمان آموزش فني و حرفه اي مديريت پژوهش – 1371
 
8. اصول مهندسي فشار قوي الكتريكي – محمدقلي محمدي – انتشارات مركز نشر دانشگاه صنعتي اميركبير – 1375
 
9. اصول و روشهاي اندازه گيري -  بهرام جريهي - انتشارات دانشـگاه شـيراز - 1376
 
10.     اصول و مباني عيب يابي و تعمير سيستمهاي صوتي و تصويري بدون استفاده از نقشه – هومر. ال. ديويدسون – رضا خوش كيش – انتشارات ناقوس – 1378
 
11.     الكترومغناطيس – درك. ف. لاودن – عليرضا بينش – انتشارات نيما – 1367
 
12.     الكترومغناطيس – ژوزف ادمينيستر – محمدصادق ابريشميان – نصرت ا... گرانپايه – انتشارات دانشگاه صنعتي خواجه نصيرالدين طوسي – 1378
 
13.     الكترومغناطيس مهندسي – ويليام اچ. هايت – جان ا. باك – محمود دياني – انتشارات نشر علوم دانشگاهي – 1380 
 
14.     الكترونيك – جي. ام. كالورت – ام. آ. اچ. مك كازلند – ابراهيم برزآبادي – حسين حسن زهرايي – سيدمحسن موسوي – مركز نشر دانشگاهي – 1368
 
15.     الكترونيك صنعتي : الكترونيك قدرت – هانس رودي بولر – قدير عزيزي قنادي – انتشارات مركز نشر دانشگاهي – 1369
 
16.     الكترونيك عملي – ابراهيم برزآبادي – محسن موسوي – انتشارات دانشگاه اصفهان – 1378
 
17.   الكترونيك قدرت – ريموند ريمشو – ابراهيم سيدگوگاني – مركز نشر دانشگاهي – 1364 
 
 
19.   انتشار امواج و طراحي سيستمهاي ارتباط راديويي – محمد سليحي – محمدعلي رزمي – حسن افضل – انتشارات نويد شيراز
 
20.   انتقال و توزيع قدرت الكتريكي – ام. فالكنبري – والتر كافر – محمود جورابيان – صادق زنده بودي – انتشارات شركت برق منطقه اي خوزستان – اهواز – 1384
 
21.   بررسي سيستمهاي قدرت – گرينگر – استيونسون – محمد فرخي – انتشارات شهر آب – 1381
 
22.     بررسي مبدلهاي ِDC به AC از نوع كموتاسيون باز- محمدحسينفتوحي اردكاني-فرحناز فرهمندفر- انتشارات دانشـگاه شـيراز- 1373
 
23.     بهينه سازي و طراحي كامپيوتري ماشينهاي الكتريكي – م. رامامورتي – هاشم اورعي – انتشارات خراسان – 1370
 
 
25.     تحقيق در مباني مهندسي برق ( اصول تجربي ) – محمدعلي رحيمخاني – انتشارات دانشگاه علم و صنعت ايران – 1370
 
26.     تشريح اصول مهندسي الكترونيك – حسين چشمه قصاباني – انتشارات جهاد دانشگاهي
 
27.     تشريح مسائل ماشينهاي الكتريكي – ج. ر. سلمون – ا. استراون – حميد لساني – انتشارات نداي دانش – 1377
 
28.     تعمير تلويزيون به زبان ساده – بهروز سهرابيان – ناشر : مؤلف – 1370
 
29.     تعمير و سيم پيچي الكتروموتورهاي سه فازه – غلامعلي سرابي تبريز – انتشارات سازمان آموزش فني و حرفه اي كشور – 1375
 
30.     iتكنولوژي تلويزيون اصول و چشم انداز آينده – اA. Michael Noll – ماهرخ مقصودي – نشر طراح – 1381
 
31.     تكنولوژي ساخت و طراحي مدارهاي مجتمع الكترونيكي – جان آليسون – يحيي جاسم زاده – حميدرضا شهروي – انتشارات قائم – 1378
 
32.     تلويزيون رنگي (سيستم سكام و شرح مداري گيرنده آن) – خليل باغاني – انتشارات خراسان – 1370
 
33.     توربو ماشين – اس. ال. ديكسون – جعفر مددنيا – رضا رضايي ساروي – مركز نشر دانشگاهي تهران – 1368
 
34.     تَئوري و كاربرد الكترومغناطيس -حسن كلهر- انتشارات دانشـگاه شـيراز- 1371
 
35.     تئوري و مسائلي از الكترومغناطيس – جوزف ا. ادمينيستر – محمود حقي – محمدجعفر اكبرزاده خويي – انتشارات مؤسسه خدمات فرهنگي رسا – 1375
 
36.     خطوط انتقال وموج برها- محمودكمالي معاوني – انتشارات دانشگاه شيراز- 1365
 
37.     درآمدي بر ميكروتكنولوژي نيمه هاديها(مدارهاي مجتمع) – دي. وي. مورگان – كي. بورد – عليرضا صالحي – انتشارات دانشگاه صنعتي خواجه نصيرالدين طوسي – 1380
 
38.     دستگاههاي ديجيتالي – ا. ج. باونز – حميدرضا صادق محمدي – انتشارات جهاددانشگاهي دانشگاه علم و صنعت ايران – 1370
 
39.     راديو ديجيتال – حميدرضا رحيمي – انتشارات نويد شيراز – 1378
 
40.     راهنماي آزمايشگاه فن فشار قوي – مسعود سلطاني – انتشارات افروز – 1375
 
41.     راهنماي سيستم هاي مخابراتي – ا. ب. كارلسون – فريال فرماني – هاجر عليزاده – انتشارات استاد – 1377
 
42.     راهنماي طراحي ترانسفورماتور و القاگر – كلنل. و. ت. مكلي من – حسن مقبلي – زهرا زارع زاده – انتشارات محتشم – 1380
 
43.     راهنماي كامل تعمير و عيب يابي ابزار تلفني – جان. د. لنك – مهرنوش حريرچيان – انتشارات جهاددانشگاهي دانشگاه صنعتي اميركبير – 1374
 
44.     راهنماي كاهش هزينه هاي مصرف انرژي در موتورهاي الكتريكي و سيستم هاي محرك – سازمان بهره وري انرژي ايران- انتشارات وزارت نيرو ، معاونت امور انرژي – 1378
 
45.     روشهاي محاسباتي براي الكترومغناطيس و مايكروويو – ريچارد سي بوتن – محمدسليماني – انتشارات دانشگاه علم و صنعت ايران – 1375
 
46.     سيستم توزيع انرژي الكتريكي – محمد قرباني – انتشارات نيلوفر – 1372
 
47.     سيستمهاي كنترل ديجيتالي – بنيامين سي. كو – بهزاد قهرمان – انتشارات معاونت فرهنگي آستان قدس رضوي – 1372
 
48.     سيصدوسه مدار الكترونيك – جان ماركوس - بهروز احمدي – انتشارات اسكار – 1375
 
49.     طراحي موتور جريان متناوب – اچ. سي. جي. دوجانگ – جواد فيض – انتشارات دانشگاه صنعتي سهند – 1373
 
50.     طراحي و اندازه گيري مدارات فركانس بالا – پيتر سي. ال. ئيپ – محمد سليماني – انتشارات دانشگاه علم و صنعت ايران – 1376
 
51.     طرح ايزولاسيون خطوط انتقال انرژي و محيط زيست – گ. ن. الكساندرف – ط. شاهرخشاهي – نشر دانش امروز – 1372
 
52.     طرحهاي جالب الكترونيكي – امير اميد – انتشارات فني حسينيان – 1372
 
53.     قطعه ها و مدارهاي الكترونيكي - محمدرضا آزادي - انتشارات دانشـگاه شـيراز- 1373
 
54.     كاربرد MATLAB در علوم مهندسي – حيدرعلي شايان فر – حسين شايقي – انتشارات ياوريان – 1382
 
55.     كنترل توان راكتيو در سيستمهاي الكتريكي – تي.جي.اي.ميلر – رضا قاضي – انتشارات جهاد دانشگاهي مشهد – 1371
 
56.     كنترل كننده هاي منطقي برنامه پذير : اصول و كاربردها – جان وب – رونالد ريس – علي اكبر جلالي – حميد محمودي – انتشارات دانشگاه علم و صنعت ايران – 1378
 
57.     كنترل كننده هاي منطقي قابل برنامه ريزي PLC – حجت سبزپوشان – مركز انتشارات دانشگاه علم و صنعت ايران – 1377
 
58.     كويل متغير-  محمد حسين رهنورد- انتشارات دانشـگاه شـيراز- 1374
 
59.     كيفيت توان سيستم هاي الكتريكي – راجر سي. دوگان – مارك اف. مگ گراناهان – اچ. واين بيتي – جواد روحي – علي نبوي نياكي – عبدالرضا شيخ الاسلامي – حسين محمديان – انتشارات دانشگاه مازندران – 1378
 
60.     گزينش قطعات الكترونيكي و دستگاههاي اندازه گير- احمداسلامي - انتشارات دانشـگاه شـيراز- 1375
 
61.     ماشينهاي الكتريكي – فيتز جرالد – كينگسلي – اومنس – بهزاد قهرمان – انتشارات نما+اسفند – 1381
 
62.     ماشينهاي مخصوص و كنترل سرعت ماشين هاي الكتريكي – اسحق ثابت مرزوقي – انتشارات دانشگاه تهران – 1371
 
63.     مباني طراحي مخابرات سيار – ويليام سي. واي. لي – محمد حكاك – مسعود كهريزي – مركز نشر دانشگاهي – 1380
 
64.     مباني ماشينهاي الكتريكي و كاربرد الكترونيك قدرت در كنترل آنها – پي.جي.مك لادن – بهزاد قهرمان – هاشم اورعي – چاپ و انتشارات آستان قدس رضوي – 1367
 
65.     مباني مدارهاي ترانزيستوري: مقدمه اي بر طراحي تقويت كننده ها، گيرنده ها و مدارهاي منطقي – اس. و. ايموس – نسترن عادلي رانكوهي – شركت انتشارات فني ايران – 1379
 
66.     مباني مهندسي فشار قوي – كافل – زانگل – عبدالرضا رنجبران – انتشارات دانشگاه آزاد اسلامي – 1373
 
67.     محاسبات اتصال كوتاه در شبكه – مسعود سلطاني – انتشارات دانشگاه تهران -1366
 
68.     مخابرات فيبر نوري – جوزف س. پالي – محمد مولوي – مجتبي محدث – انتشارات دانشگاه امام رضا(ع) – 1374
 
69.     مدارهاي مجتمع سي موس CMOS4000 – مسعود نظرزاده – جليل شبري – ناشر: حميدغفاري – 1371
 
70.     مقدمه اي بر سيستم هاي توليد مشترك برق و حرارت – مطلب ميري – غلامرضا بياتي – محمدحسن زربخش – انتشارات سازمان بهرهوري انرژي ايران – 1383
 
71.     مقدمه اي بر سيستمهاي رادار – اسكو لنيك – محمد سليماني – انتشارات پژوهشكده الكترونيك و مخابرات شهيد بهشتي – 1370
 
72.     موتورهاي الكتريكي مغناطيس دايم و بدون جاروبك – تي. كنجو – اس. ناگاموري – هاشم اورعي – احمدغفوري – انتشارات سحوري – 1363
 
73.     موتورهاي الكتريكي و كاربرد آنها در صنعت – تام. سي. لويد – مرتضي سقائيان نژاد – انتشارات جهاددانشگاهي واحد صنعتي اصفهان – 1381
 
74.     مهندسي روشنايي – حسن كلهر – انتشارات شركت سهامي انتشار – 1364
 
75.     مهندسي مايكروويو – پيتر ريزي – محمد خيام روحاني – انتشارات دانشگاه صنعتي شريف – 1374
 
76.     نظريه سيستم هاي انرژي الكتريكي – ال آي. الگرد – نجات مهدوي طباطبائي – سعيد قاسم زاده – حسين حسيني – انتشارات دانشگاه صنعتي سهند – تبريز – 1373
 
77.     نظريه سيستمهاي كنترل خطي – محمدرضا هاشمي گلپايگاني – مركز نشر دانشگاهي ، دانشگاه تهران – 1370
 
78.     نمونه مسايل امتحاني مدارهاي الكتريكي – مهرداد عابدي – رسول دليرروي فرد – انتشارات دانشگاه صنعتي اميركبير واحد تفرش – 1376
 
79.     هنر الكترونيك (جلد اول) – پاول هوروويتز – وين فيلدهيل – محمود دياني – مؤسسه انتشارات علمي دانشگاه صنعتي شريف – 1377
+ نوشته شده در ساعت توسط alireza |

+ نوشته شده در ساعت توسط alireza |

 
مقدمه

اسيلوسكوپ در حقيقت رسامهاي بسيار سريع هستند كه سيگنال ورودي را در برابر زمان يا در برابر سيگنال ديگر نمايش مي‌‌دهند. قلم اين رسام يك لكه نوراني است كه در اثر برخورد يك باريكه الكترون به پرده‌اي فلوئورسان بوجود مي‌آيد.

به علت لختي بسيار كم باريكه الكترون مي‌‌توان اين باريكه را براي دنبال كردن تغييرات لحظه‌اي (ولتاژهايي كه بسيار سريع تغيير مي‌كنند، يا فركانسهاي بسيار بالا) بكار برد. اسيلوسكوپ بر اساس
ولتاژ كار مي‌‌كند. البته به كمك مبدلها (ترانزيستورها
) مي‌‌توان جريان الكتريكي و كميتهاي ديگر فيزيكي و مكانيكي را به ولتاژ تبديل كرد.




قسمتهاي مختلف اسيلوسكوپ

لامپ پرتو كاتدي

اسيلوسكوپ از يك لامپ پرتو كاتدي كه قلب دستگاه است و تعدادي مدار براي كار كردن لامپ پرتو كاتدي تشكيل شده است. قسمتهاي مختلف لامپ پرتو كاتدي عبارتند از:


  • تفنگ الكتروني :

    تفنگ الكتروني باريكه متمركزي ازالكترونهارا بوجود مي‌‌آورد كه شتاب
    زيادي كسب كرده‌اند. اين باريكه الكترون با انرژي كافي به صفحه فلوئورسان برخورد مي‌كند و بر روي آن يك لكه نوراني توليد مي‌‌كند. تفنگ الكتروني از رشته گرمكن ، كاتد ، شبكه آند پيش شتاب دهنده ، آند كانوني كننده و آند شتاب دهنده تشكيل شده است.

    الكترونها از كاتدي كه بطور غير مستقيم گرم مي‌شود، گسيل مي‌‌شوند. اين الكترونها از روزنه كوچكي در شبكه كنترل مي‌‌گردند. شبكه كنترل معمولا يك استوانه هم محور با لامپ است و داراي سوراخي است كه در مركز آن قرار دارد. الكترونهاي گسيل شده از كاتد كه از روزنه مي‌‌گذرند (به دليل پتانسيل مثبت زيادي كه به آندهاي پيش شتاب دهنده و شتاب دهنده اعمال مي‌‌شود)، شتاب مي‌‌گيرند. باريكه الكتروني را آند كانوني كننده ، كانوني مي‌‌كند.

  • صفحات انحراف دهنده :

    صفحات انحراف دهنده شامل دو دسته صفحه است. صفحات انحراف قائم كه بطور افقي نسب مي‌شوند و يك ميدان الكتريكي
     در صفحه قائم ايجاد مي‌‌كنند و صفحات y ناميده مي‌‌شوند. صفحات انحراف افقي بطور قائم نصب مي‌شوند و انحراف افقي ايجاد مي‌‌كنند و صفحات x ناميده مي‌‌شوند. فاصله صفحات به اندازه كافي زياد است كه باريكه بتواند بدون برخورد با آنها عبور كند.

  • صفحه فلوئورسان :

    جنس اين پرده كه در داخل لامپ پرتو كاتدي قرار دارد، از جنس فسفر است. اين ماده داراي اين خاصيت است كه انرژي جنبشي الكترونهاي برخورد كننده را جذب مي‌‌كند و آنها را به صورت يك لكه نوراني ظاهر مي‌سازد. قسمتهاي ديگر لامپ پرتو كاتدي شامل پوشش شيشه‌اي ، پايه كه از طريق آن اتصالات برقرار مي‌‌شود، است.

مولد مبناي زمان

اسيلوسكوپها بيشتر براي اندازه گيري و نمايش كميات وابسته به زمان بكار مي‌‌روند. براي اين كار لازم است كه لكه نوراني لامپ روي پرده با سرعت ثابت از چپ به راست حركت كند. بدين منظور يك ولتاژ مثبت به صفحات انحراف افقي اعمال مي‌‌شود. مداري كه اين ولتاژ مثبت را توليد مي‌‌كند، مولد مبناي زمان يا مولد رويش ناميده مي‌‌شود.

مدارهاي اصلي اسيلوسكوپ

سيستم انحراف قائم

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




سيستم انحراف افقي

صفحات انحراف افقي را ولتاژ رويش كه مولد مبناي زمان توليد مي‌‌كند، تغذيه مي‌كند. اين سيگنال از طريق يك تقويت كننده اعمال مي‌‌شود، ولي اگر دامنه سيگنالها به اندازه كافي باشد، مي‌‌توان آن را مستقيما اعمال كرد. هنگامي ‌كه به سيستم انحراف افقي ، سيگنال خارجي اعمال مي‌‌شود، باز هم از طرق تقويت كننده افقي و كليد انتخاب رويش در وضعيت خارجي اعمال خواهد شد. اگر كليد انتخاب رويش در وضعيت داخلي باشد، تقويت كننده افقي ، سيگنال ورودي خود را از مولد رويش دندانه‌داري كه با تقويت كننده همزمان راه اندازي مي‌‌شود، مي‌‌گيرد.

همزماني

هر نوع رويشي كه بكار مي‌‌رود، بايد با سيگنال مورد بررسي همزمان باشد. تا يك تصوير بي حركت بوجود آيد. براي اين كار بايد فركانس سيگنال مبناي زمان مقسوم عليه‌اي از فركانس سيگنال مورد بررسي باشد.

مواد محو كننده

در طي زمان رويش ، ولتاژ دندانه‌دار رويش اعمال شده به صفحات x ، لكه نوراني را بر يك خط افقي از چپ به راست روي صفحه لامپ حركت مي‌دهد. اگر سرعت حركت كم باشد، يك لكه ديده مي‌‌شود و اگر سرعت زياد باشد، لكه به صورت يك خط ديده مي‌‌شود. در سرعتهاي خيلي زياد ، ضخامت خط كم شده و تار به نظر مي‌‌رسد و يا حتي ديده نمي‌‌شود.

كنترل وضعيت

وسيله‌اي براي كنترل حركت مسير باريكه بر روي صفحه لازم است. با اين كار شكل موج ظاهر شده بر روي صفحه را مي‌‌توان بالا يا پائين يا به چپ يا راست حركت داد. اين كار را مي‌‌توان با اعمال يك ولتاژ كوچك سيستم داخلي (كه مستقل است) به صفحات انحراف دهنده انجام داد. اين ولتاژ را مي‌‌توان با يك پتانسيومتر تغيير داد.

كنترل كانوني بودن

الكترود كانوني كننده مثل يك عدسي با فاصله كانوني تغيير مي‌‌كند. اين تغيير با تغيير پتانسيل آند كانوني كننده صورت مي‌‌گيرد.

كنترل شدت

شدت باريكه با پتانسيومتر كنترل كننده شدت كه پتانسيل شبكه را نسبت به كاتد تغيير مي‌‌دهد، تنظيم مي‌‌شود.

مدار كاليبره سازي

در اسيلوسكوپهاي آزمايشگاهي معمولا يك ولتاژ پايدار داخلي توليد مي‌‌شود كه دامنه مشخصي دارد. اين ولتاژ كه براي كاليبره سازي مورد استفاده قرار مي‌گيرد، معمولا يك موج مربعي است.

+ نوشته شده در ساعت توسط alireza |

 

img/daneshnameh_up/c/c6/compics0005.jpg


براي كساني كه از يك زبان سطح بالا مانند pascal يا basic به سراغ سي ميايند ممكن است جمله "اين زبان سطح پايين است " برايشان چندان با معني نباشد. حقيقتا زبان سي فقط مقداري از يك اسمبلر بيشتر دارد و البته به همراه تعدادي قابليت سطح بالا ، در سي مانند اسمبلي همه چيز به عهده خودتان است.دليلي كه بخاطر آن سي هنوز وجود دارد سرعت آن است ! سرعت اجراي كد برنامه شما براي C يعني همه چيز ! البته اين بدان معني نيست كه سرعت برنامه نويسي براي شما افزايش ميابد درواقع C براي اينكه برنامه شما را با تمام سرعت اجرا كند از تمام قابليتهايي كه به نوعي باعث ميشود بتوان به برنامه شما SAFE گفت چشم پوشي كرده است .ميتوان زبان C را به ماشين مسابقه ايي تشبيه كرد كه كمربند ايمني ندارد ! با اين ماشين ميتوان با حد اكثر سرعت حركت كرد ولي اگر تصادفي رخ دهد... !C زبان برنامه نويسي سيستم است: ويندوز 95 - 96 - NT و UNIX نيز با كمك اين زبان طراحي شده اند. اغلب هم ديده ايم كه در اين سيستم عاملها C اولين زباني است كه پشتيباني ميشود. يكي از مسائلي كه شما احتمالا از آن خبر داريد آن است كه اسمبلر Portable نيست . حتي آنجا كه يك برنامه به زبان پاسكال بهتر عمل ميكند برنامه نوشته شده با اسمبلر اجرا نميشود. اگر بگوييم كه C چيزي بيشتر از يك اسمبلر نيست پس بايد بگوييم كه اصلا Portable هم نيست ، اما اين موضوع به شيوه طراحي C بر ميگردد. در اين مورد زبان C طوري طراحي شده است كه به هيچ عنوان مشكلي نخواهد داشت . البته منظور اين نيست كه برنامه اي كه تحت داس با سي نوشته شده است تحت لينوكس هم كار خواهد كرد بلكه بحث در مورد سيستم سخت افزاري و پردازنده است.زبان C داراي يك شهرت ترسناك! به نام "Write Only" است . اين بدين معني است كه شما ميتوانيد كدي بنويسيد كه قابل خواندن و اجرا شدن نباشد (نه به اين معني كه خطاي كامپايل يا لينكر داشته باشد).تاريخچه زبان سي:- در سال 1972 توسط برايان كرناين ( Brian Kernighan ) و دنيس ريچي ( Dennis Ritchie ) در AT&T Bell Labs اختراع شد.- در سال 1983 موسسه استاندارد آمريكا شروع به استانهدارد سازي اين زبان كرد.- در سال 1989 كار استاندارد سازي زبان سي توسط سازمان جهاني استاندارد ادامه ادامه پيدا كرد.- در سال 1990 كار استاندارد سازي به پايان رسيد و امروزه آن را به نام C استاندارد مي شناسيم.- هر چيزي قبل از اين C را به نام K&R C مي شناسيم.سي اولين بار توسط برايان كرناين و دنيس ريچي در شركت AT&T اختراع شد . موضوع از آنجا شروع شد كه سعي كردند يك بازي به نام "asteroids" را بر روي مين فريم هاي شركت AT&T اجرا كنند ولي متاسفانه كارايي مين فريم باعث شد كه نتوانند آنچه را كه ميخواهند به اجرا در بياورند. بعد ها آنها با استفاده از قدرت كامپيوتر هاي 386 و تقريبا كمك 100 نفر كاربر متوجه شدند كه به اندازه كافي كنترل بر روي فضانورد موجود در بازي ندارند. فضانوردها معمولا به محض اينكه از كنار يك سياره رد ميشدند از بين ميرفتند!اين قضيه تقريبا جنبه شخصي پيدا كرد تا اينكه آنها تصميم به كد نويسي مجدد بازي بر روي يك سيستم DEC PDP-7 كه در شركت بلا استفاده مانده بود ، گرفتند متاسفانه PDP-7 هيچ سيستم عاملي نداشت بنابر اين آنها يك سيستم عامل هم طراحي كردند.پروژه طراحي سيستم عامل آنقدر عظيم شد كه عملا باعث فراموشي بازي astroids گرديد . بعدها تصميم بر آن شد كه اين سيستم عامل را براي يك DEC PDP-11 آماده كنند ولي اين كار واقعا كار سخت و مشكلي بود چرا كه تمام كد با دست و بدون كمك هرنوع اسمبلري به زبان ماشين نوشته شده بود.مجددا تصميم گيري شد كه سيستم عامل را دوباره با كمك يك زبان سطح بالا كد نويسي كنند بنابراين اين برنامه بين ماشين هاي مختلف قابليت portablity بيشتري پيدا ميكرد. تنها چيز مورد نياز طراحي يك كامپايلر براي هر ماشين جديد و نهايتا كامپايل مجدد كد در ماشين جديد بود.زباني كه در آن زمان براي اين منظور طراحي شد B نام داشت . اما اين زبان براي PDP-7 طراحي شده بود و امكانات آن به اندازه اي نبود كه بتواند از Instruction Set ماشين PDP-11 استفاده كند در نتيجه زبان C اختراع شد.Instruction Set مجموعه دستوراتي است كه توسط واحد پردازش مركزي سيستم قابل اجرا است به عنوان مثال تعدادي از دستورات موجود در instruction set يك PIC16Fxxx عبارتند از :

MOVLWADDLWSETB....


تقريبا همان دستورات اسمبلي!STANDARDIZATION :C كم كم داشت بسيار مشهور ميشد و با رشد سريع برنامه نويسان در اوايل دهه 1980 هزاران نفر به كمك آن مشغول به برنامه نويسي شدند . حالا زمان آن رسيده بود كه قواعد اين زبان استاندارد شود.ANSI :در آمريكا مسوليت استاندارد سازي زبانها به عهده موسسه استاندارد ايالات آمريكا ( ANSI ) ميباشد . نام ANSI در C معرف آن است كه اين نسخه از زبان C توسط كميته اي وابسته به ANSI استاندارد سازي شده است . اولين استاندارد ANSI ، X3J11 نام داشت . امروزه استاندارد ANSI براي C ض X3.15901989 ميباشد .ISO :در عرصه جهاني سازمان استاندارد جهاني ( ISO ) مسوليت استاندارد سازي زبانهاي كامپيوتري را بر عهدا دارد. ISO يك كميته متخصص JTC1/SC22/WG14 را براي برسي استاندارد X3J11 تشكيل داد. در حال حاظر استاندارد ISO براي C ض ISO 9889:1990 ميباشد كه بسيار شبيه و هماهنگ با X3.159 است.در بين استاندارد هاي مختلف تفاوتي در مورد زبان و قواعد آن وجود ندارد و


تنها اختلاف در مورد قالب بندي و موارد اين چنيني است .در آخر زبان C كه امروزه از آن استفاده ميكنيم ISO Standard C است كه آن را Standard C ميشناسند و آن چيزي را كه Kernighan و Dennis طراحي كرده بودند K&R C ميشناسيم.Standard C در مقابل K&R C :- قابليت برسي نوع داده اضافه شد.- محاسبات مميز شناور اضافه شد.- كتابخانه استاندارد براي C طراحي شد.- قابليت هاي جديدي اضافه گرديد- امروزه تنها انتخابStandard C است.- بسياري از كامپايلر هاي جديد سي از Standard C استفاده ميكنند.- از اين به بعد در مباحث درسي منظور ما از سي همان سي استاندارد است. زبان C بسياري از محاسن خود را مديون مراحل استاندارد سازي است . سي كه امروزه از آن استفاده ميكنيم با آنچه در گذشته بوده بسيار فرق دارد. در K&R C هيچ مكانيزم و روشي براي برسي نوع داده پارامترهايي كه به توابع ارسال ميگردد وجود نداشت بنابراين اگر شما به عنوان يك برنامه نويس ميخواستيد يك تابع خاص از زبان سي را CALL كنيد مسئوليت خواندن دقيق راهنما و ارسال صحيح پارامتر ها به عهده خودتان بود و كامپايلر هيچ كمكي در اين مورد به شما نميكرد. البته يك برنامه به نام lint در آن زمان براي انجام اين كار طراحي شد.محاسبات مميز شناور در K&R C بيشتر شبيه به جوك بود تا واقعيت ! در تمام محاسبات از نوع داده double استفاده ميشد. با وجود اينكه نوع ساده اي از مميز شناور به نام float وجود داشت اما چون براي محاسبات اعداد float اول بايد آنها را به double تبديل ميكرديم و بعد دوباره به float ، انجام اين گونه محاسبات بسيار كند بود.(n9 اگرچه يك كتابخانه همراه زبان K&R C وجود داشت اما هيچ استانداردي در مورد اينكه اين كتابخانه سامل چه توابعي است وجود نداشت . در بسياري موارد ممكن يك تابع خاص نامهاي متفاوتي داشته باشد ! يا حتي به روشهاي متفاوتي از هم كار ميكردند .يك برنامه به زبان سي:در اينجا فقط ميخواهيم يك كليت از نحوه برنامه نويسي در سي را بيان كنيم.

  1. include /* comment */int main(void){printf("Hellon");printf("Welcome to the Course! n");return 0;}
  2. includeاين يك دستور پيش پردازنده است . به كمك اين دستور محتويات يك فايل خاص به برنامه شما اضافه ميشود بنابراين شما ميتوانيد از توابع و ... موجود در آن استفاده كنيد. stdio مخفف نام Standard Input and Output ميباشد و همانطور كه از نامش پيداست حاوي توابع مربوط به ورودي و خروجي ميباشد.پسوند h. نشان دهنده آن است كه اين فايل يك فايل سر باره ( Header ) است نه يك فايل سورس ( فايلهاي سورس داراي پسوند c. هستند. ) در اين باره بيشتر توضيح داده خواهد شد.Commentsتوضيحات در برنامه بين */ و /* قرار ميگيرند و هر تعداد خط كه بين اين دو قرار گيرند از نظر كامپايلر مفهوم نخواهند داشت . نكته : اگر توضيحات شما يك خطي است به كمك // ميتوانيد توضيحات خود را در برنامه اضافه كنيد :
printf("Hello"); // comment


mainمهمترين تابع در سي main ميباشد. اين تابع نقطه اي كه اجراي برنامه شما از آنجا شروع ميشود را مشخص ميكند . در واقع اگر شما اين تابع را در برنامه تان ننويسيد برنامه شما اصلا اجرا نميشود ( شروع برنامه شما كجاست ؟! ) و صد البته برنامه شما كامپايل هم نخواهد شد.آكولاد Brace در زبان سي از اكولاد باز "}" به معني شروع "Begin" و آكولاد بسته "{" به معني "End" ميباشد . اين روش نسبت به پاسكال هم ساده تر است و هم در آينده خواهند كد برنامه را سهل تر ميكند.nترتيب دو كاراكتر و n در سي ايجاد يك كد ميكند ( اين كد ها در مباحث بعدي مطرح شده اند ) كد n به معني "برو به ابتداي خط بعد" است . returnاين دستور در اين مثال باعث ميگردد كه مقدار 0 به سيستم عامل برگردانده شود و اجراي برنامه پايان يابد . اينكه سيستم عامل چگونه از اين اطلاعات استفاده خواهد كرد به خودش مربوط ميگردد.!به عنوان مثال MS-DOS اين مقدار را در متغير ERRORLEVEL و UNIX آن را در يك متغير موقت ?$ ذخيره ميكند. تا به حال عرف بر آن بوده است كه 0 به معني عدم رخداد خطا تلقي ميگردد و هر مقداري مانند 1و2و3و... نشاندهنده يك كد خطا ميباشد. تمام سيستم عاملها مقادير به بزرگي 255 را پشتيباني ميكنند و بعضي ديگر تا 65535 ! البته اگر Portable بودن برنامه تان برايتان مهم است بهتر است از مقادير بين 0 تا 255 استفاده كنيد.قالب زبان سي:- هر دستور با يك سميكالن (‌;‌ ) ختم ميشود.- فضاهاي خالي كه قبل يا بين دستورها قرار ميگيرد از طرف كامپايلر ناديده گرفته ميشود.- زبان سي به بزرگي و كوچكي حروف تايپ شده حساس است (Case sensitive) تمامي كلمات كليدي (Keyword) و توابع كتابخانه اي استاندارد در سي حرف كوچك هستند.- عبارات رشته اي (Strings) در بين دو علامت نقل قول - كوتيشن - ("......") قرار ميگيرند.- مفهوم خط بعد توسط n به كامپايلر سي فهمانده ميگردد. ( مثلا در دستور printf )- رفتار شانسيسميكالن :سميكالنها در سي بسيار مهم هستند. آنها دستورات را از هم متمايز ميكنند و به كامپايلر سي ميفهمانند كه چه زمان يك دستور به پايان رسيده و دستور بعدي شروع شده است. اگر شما فراموش كنيد كه در انتهاي يك دستور علامت سميكالن را قرار دهيد كامپايلر از برنامه شما خطا ميگيرد.قالب آزاد:زبان سي يك زبان آزاد در قالب بندي است يعني شما ميتوانيد كه كل برنامه تان را در يك خط بنويسيد فقط كافي است كه انتهاي هر دستور يك سميكالن بگذاريد و اين دليل اجباري بودن سميكالن است . همچنين همانطور كه گفتيم هرگونه tab يا فضاي خالي بين دستورات ناديده گرفته ميشود و فقط براي فرم دادن برنامه است.نكته : بهتر است شما هم از الگويي كه براي برنامه نويسي در اين مباحث استفاده شده استفاده كنيد تا برنامه تان در آينده خوانا تر باشد .بزرگي و كوچكي حروف :زبان سي يك زبان حساس به بزرگي و كوچكي حروف است يعني int با Int يا INT يا ... فرق دارد . به عنوان مثال شما ميتوانيد يك متغير به نام InT از نوع int داشته باشيد. تمامي كلمات كليدي و توابع كتابخانه اي استاندارد در سي حرف كوچك هستند. انواع داده اي در ادامه بحث خواهند شد.رفتار شانسي :اگر به هر دليلي دستور return در تابع main قرار نگيرد رفتار برنامه در زمان بازگشت به سيستم عامل مشخص نميباشد يعني هر بار يك مقدار شانسي به سيستم عامل تحويل داده ميشود كه اين مقدار ميتواند 0 به معناي خروج موفق و بدون خطا يا هر مقدار عددي ديگر به عنوان رخداد خطا باشد.متغير ها :- هر متغيري قبل از استفاده بايد



تعريف شده باشد . در سي استاندارد تعريف متغير دقيقا بعد از آكولاد باز } امكان پذير است ولي در ورژن هاي بعد و خصوصا ويژوال سي اين تعريف ميتواند در هر كجاي برنامه صورت گيرد.- كاراكترهاي مورد قبول براي نامگذاري متغير ها ميتواند حرف ، عدد و "_" باشد.- كاراكتر اول در نام يك متغير نميتواند عدد باشد.- 31 كاراكتر اول در نام متغير محلي ( Local ) از طرف كامپايلر سي براي تشخيص نام متغير استفاده ميگردد و مابقي آن ناديده گرفته ميشود.- در برخي از نسخه هاي سي تا 6 كاراكتر اول در نام يك متغير سرتاسري ( Global ) براي تشخيص آن به كار ميرود اين مساله در مورد نام توابع نيز وجود دارد.- حروف كوچك و بزرگ در نام گذاري متغيرها و يا توابع آنها را از هم متمايز ميكند.تعريف متغير ها :در زبان سي ، تمامي متغير ها قبل از استفاده بايد بعريف شده باشند.( دليل اين كار قبلا توضيح داده شده است ) البته اين هيچ شباهتي با زبان فرترن ندارد زيرا در اين زبان هرگاه كامپايلر به نام متغيري برخورد كند كه قبلا برخورد نكرده است آن را همانجا تعريف كرده و نوع آن را بر اساس نام متغير تعيين ميكند. در زبان سي شما بايد هر متغيري را قبل از استفاده تعريف كنيد و نوع آن را مشخ كرده و در صورت نياز آن را مقدار دهي اوليه كنيد.نام گذاري :همانطور كه گفته شد كاراكترهاي مورد قبول براي نامگذاري متغير ها ميتواند حرف ، عدد و "_" باشد. اولين كاراكتر نام يك متغير يا تابع ميتواند حرف يا خط زير باشد اگرچه استاندارد سي پيشنهاد ميكند كه از خط زير به عنوان كاراكتر اول استفاده نكنيد.بنابر اين نامهاي "temp_in_celsius" يا "index32" نامهاي قابل قبول و "32index" يا "temp$celsius" نامهاي غير قابل قبول هستند.طبق توضيح داده شده دقت كنيد كه در نامگذاري متغير ها اختلاف نام آنها در 31 كاراكتر اول آنها باشد. حروف بزرگ :حروف بزرگ ممكن است بر طبق تصميم شما در نام گذاري يك متغير استفاده شود . معمولا برنامه نويسان براي خود داري از استفاده از "_" در نام متغير از حروف بزرگ استفاده ميكنند بنابر اين نام "temp_in_celsius" به صورت "TempInCelsius" در خواهد آمد.امروزه اين روش نام گذاري بين برنامه نويسان متداول شده است و استفاده از خط زير تقريبا به فراموشي سپرده شده است.دستورات printf و scanf - printf مقادير عددي صحيح را زماني كه از كاراكتر فرمت i% استفاده شود در روي مانيتور چاپ ميكند. - scanf مقادير عددي صحيح را زماني كه از كاراكتر فرمت i% استفاده شود از ورودي ( كاربر - صفحه كليد ) ميخواند.- "&" در دستور scanf بسيار مهم مي باشد — مفهوم و كاربرد آن جلو تر گفته خواهد شد . — چنانچه فراموش شود برنامه شما شديدا با اشكال روبرو خواهد شد !!- "&" در دستور printf لازم نيست زيرا مقدار فعلي يك متغير در اين دستور مورد استفاده قرار ميگيرد.printf : اين دستور عبارات مورد نظر شما را در خروجي چاپ ميكند و به عنوان مثال چنانچه به كاراكتر فرمت i% برخورد كند مقدار عددي متغير متناظر با آن را چاپ ميكند. با اين مورد از مثال قبل آشنا هستيد .scanf : همانطور كه گفته شد اين دستور از صفحه كليد يك مقدار ميخواند. به عنوان مثال زماني كه به كاراكتر فرمت i% برخورد ميكند منتظر دريافت يك مقدار عددي از صفحه كليد ميماند. & :همانطور كه گفتيم عملگر "&" در دستور scanf بسيار مهم مي باشد . اين عملگر به دستور scanf قابليت تغيير مقدار ذخيره شده در متغير مربوطه اش را ميدهد.چنانچه فراموش كنيد كه اين عملگر را قبل از نام متغير قرار دهيد سي نميتواند مقدار موجود در متغير را تغيير دهد و بد تر از آن اگر اين متغير را مقدار دهي اوليه نكرده باشد در آنصورت هر بار يك مقدار شانسي در آن خواهد بود و طبعا باعث گيج شدن شما خواهد شد.از آنجاييكه دستور printf نيازي به تغيير مقدار ذخيره شده در متغير را ندارد بنابر اين نيازي هم به استفاده از عملگر & قبل از نام متغير در آن نيست . بنابر اين اگر به عنوان مثال تا قبل از اجراي دستور زير در متغير j عدد 15 ذخيره شده باشد بازهم همان مقدار ذخيره خواهد بود .
prinf( " %i " , j );


انواع عددي صحيح در سي - زبان سي انواع مختلفي از اعداد صحيح را پشتيباني ميكند. - حداكثر و حداقل مقادير قابل ذخيره سازي در هر نوع داده اي در فايل "limits.h" تعريف شده اند.نوع داده كاراكتر فرمت تعداد بايت حداقل مقدار حداكثر مقدار
CHAR_MAX CHAR_MIN 1 %c charSCHAR_MAX SCHAR_MIN 1 %c signed charUCHAR_MAX 0 1 %c unsigned charSHRT_MAX SHRT_MIN 2 %hi short (int)USHRT_MAX 0 2 %hu unsigned shortINT_MAX INT_MIN 2 or 4 %i intUINT_MAX 0 2 or 4 %u unsigned intLONG_MAX LONG_MIN 4 %li long (int)ULONG_MAX 0 4 %lu unsigned long



limits.h :اين دومين فايل سرباره استانداردي است كه تا به حال ديده ايم. اين فايل شامل تعريف مقادير عددي ثابتي است كه حداقل و حداكثر اندازه انواع متفاوت عددي صحيح را در خود ذخيره كرده اند. اين فايل هم يك فايل متني است و محتويات آن با هر اديتوري حتي notepad قابل رويت است . انواع اعداد صحيح :زبان سي انواع عددي در اندازه هاي مختلف را پشتيباني ميكند. كلمات short و long نشان دهنده ميزان حافظه مورد نياز و تخصيص داده شده براي هر نوع داده است . اين به دليل وسواس سي در ميزان استفاده از حافظه است بنابر اين به شما به عنوان برنامه نويس امكان ميدهد بسته به كاري كه ميخواهيد با متغير انجام دهيد و ميزان حافظه اي كه احتياج دارد نوع مناسب را براي آن انتخاب كنيد و از تخصيص حافظه اي كه بلا استفاده ميماند خود داري كنيد.مثلا فرض كنيد كه در برنامه خود ميخواهيد يك حلقه شمارش ايجاد كنيد كه از 1 تا 800 شمارش كند در اين صورت نيازي به تعريف متغير مربوطه از نوع long نيست و بهتر است آن را از نوع short تعريف كنيد.SHRT_MAX يا LONG_MAX درواقع مقادير ثابتي هستند كه حداكثر مقدار عددي قابل ذخيره در متغير از نوع short و long را در خود نگه ميدارند مثلا براي short حداكثر مقدار 32,767 و براي long حداكثر مقدار 2,147,483,647 قابل ذخيره سازي است . البته اجباري نيست كه در ماشينهاي متفاوت اين مقادير يكسان باشد و براي رفع اين مشكل ، سي راه حل هايي دارد كه در آينده گفته خواهد شد.نكته مهم و قابل توجه در اينجا آن است كه تعداد بايت نوع داده int برابر 2 يا 4 ميتواند باشد بنابراين در حالت كلي نميتوانيم مشخص كنيم كه در يك متغير عددي صحيح int حداكثر مقدار 32 هزار قرار ميگيرد ويا مقدار 2 هزار ميليون ! به همين دليل برنامه هايي كه واقعا ميخواهند portable باشند هرگز از نوع عددي int استفاده نميكنند بلكه از long يا short استفاده ميكنند. البته اغلب ماشينها خصوصا PC ها طول 4 بايت را براي نوع عددي int در نظر گرفته اند.unsigned :اين كلمه كليدي باعث ميشود تا تمام بيتهاي يك متغير از اين نوع عددي ، براي ذخيره سازي عدد استفاده شود و طبعا بيت علامت ( براي اعداد منفي ) نخواهيم داشت . در اين نوع داده نميتوان مقادير منفي را ذخيره كرد ، فقط اعداد مثبت و عدد صفر !char :در سي هيچ نوع داده اي براي ذخيره رشته هاي كاراكتري وجود ندارد البته در ++C اين مشكل با بوجود آمدن كلاس CString رفع شده است ولي فعلا به آن نمي پردازيم.در نوع داده char تنها ميتوان يك كاراكتر ذخيره كرد و براي ذخيره سازي رشته هاي كاراكتري بايد هر كاراكتر را در يك عنصر آرايه اي از نوع char ذخيره كرد.ih% :كاراكتر h در موارد فوق بيانگر half يا نيمه است زيرا معمولا short داراي نصف اندازه نوع داده int است ( از نظر تعداد بايتها در يك ماشين كه طول int در آن 4 است ) انواع عددي حقيقي در سي - مانند اعداد صحيح ، اعداد حقيقي هم انواع مختلفي دارند. - مقادير حداكثر و حداقل در فايل float.h تعريف شده اند.مثل قبل :نوع داده كاراكتر فرمت تعداد بايت حداقل مقدار حداكثر مقدار
FLT_MAX FLT_MIN 4 %g %e %f floatDBL_MAX DBL_MIN 8 %lg %le %lf doaubleLDBL_MAX LDBL_MIN 10 %Lg %Le %Lf long double
float.h اين سومين فايل سرباره استاندارد سي است كه تا به حال ديده ايم . اين فايل علاوه بر مقادير ثابت كمينه و بيشينه اعداد مميز شناور محتوي چيزهاي با ارزش ديگري هم است ازجمله ميزان دقت و خطاي هر يك از سه نوع مذكور.float اين نوع داده كوچكترين نوع عددي از انواع عددي حقيقي در سي است . محاسبات به كمك اين نوع سريع تر است ولي از دقت كمتري برخوردار است همچنين براي اعداد اعشاري تا 6 رقم اعشار مناسب ميباشد. در حالت كلي بزرگترين و كوچكترين عدد قابل ذخيره توسط اين نوع عددي به ترتيب 10 به توان مثبت 38 و 10 به توان منفي 38 است.doubleاين نوع عددي درواقع نوع ميانه در بين سه نوع اشاره شده است محاسبات كند تر از نوع قبل ولي قابل اطمينان تر است . ميتوان تا 12 رقم اعشار به كمك اين نوع عددي دقت داشت . چون فضاي بيشتري براي ذخيره سازي اعداد دارد طبعا اعداد بزرگتري هم ميتواند ذخيره كند ( 10 به توان مثبت 308 يا حتي مثبت 1000 )long doubleاين نوع عددي بزرگترين نوع عددي است كه سي ميتواند آن را هندل كند و البته كند ترين و مطمئن ترين !! به كمك اين نوع ميتوان اعداد را تا 18 رقم اعشار محاسبه كرد بدون اينكه به هيچ حقه و روش رياضي خاصي براي شبيه سازي اين عدد بزرگ نياز باشد. برخي از پياده سازي هاي سي امكان ذخيره سازي اعداد به بزرگي 10 به توان مثبت 4000 را ميدهند.Constants- ثابتها در سي براي خودشان نوع داده دارند.- اعدادي كه در آنها كاراكترهاي "." يا "e" به كار رفته باشند به عنوان عدد double در نظر گرفته ميشوند.- اگر ميخواهيد صراحتا بگوييد كه عددتان float است بايد در انتهاي آن يك كاراكتر F قرار دهيد مانند : 3.5F يا 1e-7F- براي اعداد long double يك L قرارداده ميشود.- هر عددي كه حداقل شامل يكي از كاراكترهاي "." يا "e" يا "F" نباشد int در نظر گرفته خواهد شد.- اگر يك عدد int در نظر گرفته شود و بزرگي عدد چنان باشد كه از محدوده int خارج گردد بعضي از كامپايلرها بصورت اتوماتيك آن را long int در نظر ميگيرند.- اگر ميخواهيد كه صراحتا بگوييد كه عددتان يك long int است در انتهاي عدد يك L قرار دهيد مانند 9000000Lثابتهاوقتي كه يك متغير تعريف ميگردد قطعا يك نوع هم براي آن در نظر گرفته ميشود. اين نوع باعث ميگردد كه كامپايلر بداند كه اين متغير چه فضايي از حافظه اشغال ميكند و ضمنا چگونه بايد با آن برخورد كند. به طور مشابه وقتي كه يك "ثابت" تعريف ميگردد كامپايلر براي آن يك نوع داده در نظر ميگيرد فقط يك تفاوت داريم و آنهم اينكه در مورد متغير ها برنامه نويس صراحتا نوع داده اي متغير را تعيين ميكند حال اينكه در مورد ثابتها هميشه اينطور نيست. قوانين تعيين نوع داده براي "ثابتها" در بالا گفته شده است . ميبينيد كه تنها نبود "." به كامپايلر ميگويد كه عدد از نوع int است . اما كافي است شما اينگونه بنويسيد ".120" تا كامپايلر آن را بصورت "120.0" ديده و double برايش درنظر بگيرد.عملگر ها در زبان سي در زبان سي مجموعه عملگر هاي زير را داريم :- عملگرهاي حسابي- عملگرهاي casting ( كه از هولمون جلو جلو در موردش صحبت كرديم. )- عملگرهاي افزايش و كاهش يك واحد- عملگرهاي دستكاري بيتها ( Bitwise )- عملگرهاي مقايسه اي- عملگرهاي مقداردهي- عملگر sizeof- عملگرهاي شرطي

+ نوشته شده در ساعت توسط alireza |

اطلاعات كلي در مورد ميكروكنترلرهاي AVR
میکروهای AVR دارای انعطاف پذیری غیر قابل مقایسه و بی همتایی هستند.آنها قادر به ترکیب هر نوع کدی با یک معماری کارامد از طریق زبانهای C و Assembly هستند و قادرند از طریق این برنامه ها تمام پارامترهای ممکن در یک سیکل یا چرخه ماشین را با دقت بسیار بالا هماهنگ کنند.

 

اين مقاله اطلاعات كلي در مورد ساختار داخلي و انواع مختلف ميكروهاي AVR و همچنين مزاياي آنها نسبت به نمونه هاي قبلي 8051 پرداخته است.در ترجمه آن سعي كردم بيشتر از لغات فارسي معادل استفاده كنم با اينكه خودم زياد راضي نيستم ولي چاره اي نداشتم بايد فارسي را پاس بداريم ! حتما مي دانيد كه براي برخي لغات تخصصي انگليسي هيچ معادل فارسي وجود ندارد به خاطر همين در بعضي از قسمتها خود لغت انگيسي را آورده ام كه فهم صحيح آن بستگي به تجربه ي خواننده دارد.مسلم است كه اگر شما درباره ي ميكروكنترلرها پيش زمينه اي داشته باشيد آنگاه آمادگي بيشتري براي فهم اين مقاله خواهيد داشت پس اگر يك خواننده مبتدي در ميكروكنترلرها هستيد ممكن است در درك برخي مطالب كمي دچار مشكل شويد البته كمي ! كه با پرسيدن چند سوال كوچك از كسي كه اينكاره است مي توانيد بعضي ابهامات را برطرف كنيد.اميدوارم هميشه پيروز و شاد باشيد .

 

مقدمه اي بر ميكروكنترلرهاي AVR

ميكروهاي AVR داراي انعطاف پذيري غير قابل مقايسه و بي همتايي هستند.آنها قادر به تركيب هر نوع كدي با يك معماري كارامد از طريق زبانهاي C و Assembly هستند و قادرند از طريق اين برنامه ها تمام پارامترهاي ممكن در يك سيكل يا چرخه ماشين را با دقت بسيار بالا هماهنگ كنند.ميكرو AVR داراي معماريي است كه ميتواند در تمام جهات مورد استفاده شما،عمل كند ميكرو AVR معماريي دارد كه براي شما كارايي 16 بيتي ارائه مي دهد كه البته قيمتش به اندازه يك 8 بيتي تمام مي شود.

 بهره هاي كليدي AVR :

داراي بهترين MCU براي حافظه فلش در جهان ! (MCU: Master Control Unit)

داراي سيستمي با بهترين هماهنگي

داراي بالاترين كارايي و اجرا در CPU (يك دستورالعمل در هر سيكل كلاك)

داراي كدهايي با كوچكترين سايز

داراي حافظه خود برنامه ريز

داراي واسطه JTAG كه با IEEE 1149.1 سازگار است

 (IEEE: Institute of Electrical and Electronics Engineers.)

داراي سخت افزار ضرب كننده روي خود

داراي بهترين ابزارها براي پيشرفت و ترقي

داراي حالات زيادي براي ترفيع دادن يا Upgrade .

 واژگان كليدي AVR :

 ميكرو كنترلر AVR به منظور اجراي دستورالعملهاي قدرتمند در يك سيكل كلاك(ساعت) به اندازه كافي سريع است و مي تواند براي شما آزادي عملي را كه احتياج داريد به منظور بهينه سازي توان مصرفي فراهم كند.

ميكروكنترلر AVR بر مبناي معماري  RISC(كاهش مجموعه ي دستورالعملهاي كامپيوتر) پايه گذاري شده و مجموعه اي از دستورالعملها را كه با 32 ثبات كار ميكنند تركيب مي كند.

به كارگرفتن حافظه از نوع Flash  كه AVR ها به طور يكسان از آن بهره مي برند از جمله مزاياي آنها است.

يك ميكرو AVR مي تواند با استفاده از يك منبع تغذيه 2.7 تا 5.5 ولتي از طريق شش پين ساده در عرض چند ثانيه برنامه ريزي شود يا Program شود.

ميكروهاي AVR در هرجا كه باشند با 1.8 ولت تا 5.5 ولت تغذيه مي شوند البته با انواع توان پايين (Low Power)كه موجودند.

راه حلهايي كه AVR پيش پاي شما مي گذارد، براي يافتن نيازهاي شما مناسب است:

با داشتن تنوعي باور نكردني و اختيارات فراوان در كارايي محصولات AVR، آنها به عنوان محصولاتي كه هميشه در رقابت ها پيروز هستند شناخته شدند.در همه محصولات AVR مجموعه ي دستورالعملها و معماري يكسان هستند بنابراين زماني كه حجم كدهاي دستورالعمل شما كه قرار است در ميكرو دانلود شود به دلايلي افزايش يابد يعني بيشتر از گنجايش ميكرويي كه شما در نظر گرفته ايد شود مي توانيد از همان كدها استفاده كنيد و در عوض آن را در يك ميكروي با گنجايش بالاتر دانلود كنيد.

خانواده هاي محصولات AVR :

Tiny AVR:

ميكروكنترلري با اهداف كلي و با بيش از 4 كيلو بايت حافظه فلش و 128 بايت حافظه استاتيك و قابل برنامه ريزي است.(منظور از حافظه استاتيك SRAM و حافظه قابل برنامه ريزي EEPROM است.)

Mega AVR:

اين نوع ميكروها قابليت خود برنامه ريزي دارند و مي توان آنها را بدون استفاده از مدارات اضافي برنامه ريزي كرد همچنين بيش از 256K بايت حافظه فلش و 4K بايت حافظه استاتيك و قابل برنامه ريزي دارند.

LCD AVR:

اين نوع ميكرو داراي درايور براي نمايشگر LCD با قابليت كنترل اتوماتيك تباين و مقايسه تصوير مي باشد.باعث تمديد عمر باتري مي شود و در حالت فعال داراي توان مصرفي پاييني است.

توان مصرفي پايين:

توان مصرفي پايين آنها براي استفاده بهينه از باتري و همچنين كاربرد ميكرو در وسايل سيار و سفري طراحي شده كه ميكروهاي جديد AVR با توان مصرفي كم از شش روش اضافي در مقدار توان مصرفي ، براي انجام عمليات بهره مي برند.

اين ميكروها تا مقدار 1.8 ولت قابل تغذيه هستند كه اين امر باعث طولاني تر شدن عمر باتري مي شود.

در ميكروهاي با توان پايين ، عمليات شبيه حالت Standby است يعني ميكرو مي تواند تمام اعمال داخلي و جنبي را متوقف كند و كريستال خارجي را به همان وضعيت شش كلاك در هر چرخه رها كند!

ابعاد مختلف ميكروهاي AVR را در اشكال زير مشاهده مي كنيد:

 AVR هاي مدل tiny:

به خود اجازه ندهيد كه نام آن شما را گول بزند... ميكروهاي مدل tiny توانايي هاي عظيمي دارند.به خاطر كوچك بودن و داشتن MCU بسيار پر قدرت به اينگونه ميكروها نياز فراواني هست آنها به هيچ منطق خارجي نياز نداشته و به همراه يك مجتمع مبدل آنالوگ به ديجيتال و يك حافظه قابل برنامه ريزي EEPROM قابليتهاي خود را ثابت مي كنند.

نكات كليدي و سودمند مدل Tiny :

آنها به منظور انجام يك عمليات ساده بهينه سازي شده و در ساخت وسايلي كه به ميكروهاي كوچك احتياج است كاربرد فراوان دارند.

كارايي عظيم آنها براي ارزش و بهاي وسايل موثر است.

 AVR هاي مدل Mega:

اگر شما به ميكرويي احتياج داريد كه داراي سرعت و كارايي بالا باشد و توانايي اجراي حجم زيادي از كد برنامه را داشته و بتواند داده هاي زيادي را سروسامان دهد بايد از AVR هاي مدل Mega استفاده كنيد آنها به ازاي هر يك مگا هرتز سرعت ، توانايي اجراي يك ميليون دستورالعمل در هر يك ثانيه را دارند همچنين قابل برنامه ريزي و بروزرساني كدها با سرعت و امنيت بسيار بالايي هستند.

نكات كليدي و سودمند مدل Mega :

حافظه سريع از نوع فلش با عملكرد خود برنامه ريز و بلوكه ي بوت (Boot Block)

دقت بسيار بالاي 8-كانال در تبديل آنالوگ به ديجيتال 10 بيتي

USART و SPI و TWI بر طبق واسطه هاي سريال

واسطه ي JTAG بر طبق IEEE 1149.1

TWI: Two Wire Interface is a byte oriented interface

USART: Universal Serial Asynchronous Receiver/Transmitter

SPI: Serial Peripheral Interface

JTAG available only on devices with 16KB Flash and up

واسط JTAG فقط در ميكروهاي با بيش از 16 كيلوبايت حافظه فلش موجود است.

AVR هاي مدل LCD:

آنها با بالاترين يكپارچگي و انعطاف پذيري ممكن طراحي شده اند و با داشتن درايور LCD و كنترلر اتوماتيك وضوح تصوير ،بهترين واسطه را با انسان دارند و داراي توان مصرفي پايين و كارايي بالايي هستند.اولين عضو اين خانواده 100 سگمنت داشت و داراي يك UART و SPI به منظور ارتباط به صورت سريال بود.

نكات كليدي وسودمند مدل LCD :

كارايي فوق العاده با سرعت يك ميليون دستورالعمل در ثانيه به ازاي يك مگاهرتز

واسطه ها براي ارتباط با انسان: وقفه هاي صفحه كليد و درايور نمايشگر LCD

آنها اين اجازه را به طراح سيستم مي دهند كه توان مصرفي را در برابر سرعت پردازش تا جايي كه امكان دارد بهينه كند.

نكات كليدي و سودمند حافظه ي فلش خود برنامه ريز:

قابليت دوباره برنامه ريزي كردن بدون احتياج به اجزاي خارجي

128 بايت كوچك كه به صورت فلش سكتور بندي شده اند

داشتن مقدار متغير در سايز بلوكه ي بوت (Boot Block)

خواندن به هنگام نوشتن

بسيار آسان براي استفاده

كاهش يافتن زمان برنامه ريزي

كنترل كردن برنامه ريزي به صورت سخت افزاري

راههاي مختلف براي عمل برنامه ريزي:

موازي يا Parallel :

يكي از سريعترين روشهاي برنامه ريزي

سازگار با برنامه نويس هاي(programmers) اصلي

 خود برنامه ريزي توسط هر اتصال فيزيكي:

برنامه ريزي توسط هر نوع واسطه اي از قبيل TWI و SPI و غيره

دارا بودن امنيت صد درصد در بروزرساني و كدكردن

ISP:

واسطه سه سيمي محلي براي بروزرساني سريع

آسان و موثر در استفاده

 واسطه JTAG :

واسطه اي كه تسليم قانون IEEE 1149.1 است و مي تواند به صورت NVM برنامه ريزي كند يعني هنگام قطع جريان برق داده ها از بين نروند.استفاده از فيوزها و بيتهاي قفل.

بيشتر براي ديباگ كردن آنچيپ و به منظور تست استفاده مي شود

نرم افزار ارائه شده توسط شركتATMEL به نام AVR Studio 4 :

اين نرم افزار به صورت رايگان در سايت شركت ATMEL قرار دارد مي توانيد با رجوع به آدرس http://www.atmel.com آن را دانلود كنيد.

اين نرم افزار در حقيقت يك اسمبلر براي محصولات AVR اتمل است و به صورت كاملا ويژوالي است.

مي تواند با انواع دستگاههاي برنامه نويس ميكرو ارتباط برقرار كند و كدها را در ميكرو دانلود كند.

و قابليت ترجمه كدها به زبانهاي C و Assembly را دارد و ...

 انواع برنامه نويسها كه AVR Studio 4 با آنها سازگار است:

در اين قسمت خصوصيات پروگرامر ها را به زبان انگليسي ارائه كردم چون به زبان فارسي اصلا قابل فهم نمي بود و بايد يكي پيدا مي شد تا ترجمه فارسي آن را دوباره ترجمه كند...

 

Emulators Platforms

In System Programmers

Starter Kits

ICE 40/50

AVRISP

STK500

JTAGICE

JTAGICE

STK501

 

 

STK502

 

 

 STK500/STK501/STK502

 STK500

Supports All AVR Devices

Interfaces with AVR Studio

Early Support for New

Devices Push Buttons, LEDs & RS232

STK501

STK500 Expansion Module for ATmega64/128

ZIF Socket & PCB Footprint

Onboard 32 kHz Oscillator

Additional RS232 Port

STK502

STK500 Expansion Module for ATmega169

ZIF Socket & PCB Footprint

Onboard 32 kHz Oscillator

Demo Application with Temperature Sensor

JTAGICE / JTAGICE mkII

Interfaced using AVR Studio

 Real-Time Emulation in Actual Silicon

Debug the Real Device at the Target Level

Communicates Directly to the Device through 4-Pin JTAG Interface

One-wire Debug Interface (JTAGICE mkII only)

Supports

Program Breakpoints

Data Breakpoints

Full I/O View and Watches

Full Execution Control

 ICE40/50 Emulator

ICE50

Emulates all Peripherals (Both Digital and Analog)

Supports all Instructions And Peripherals Real-Time

All Configurations Done from AVR Studio

Unlimited Number of Breakpoints

Source Level Debugging

Supports the Newest Members of AT mega

And AT tiny Product Families

 ICE40

Same Features as ICE50

End Low Cost ICE for ATtiny13, ATtiny26, ATmega8, ATmega8515,

ATmega8535

ICE50 Upgrade Available

روگرامرهايي كه AVR هاي خاصي را پشتيباني مي كنند:

 

ICE50

ICE40

ICE200

JTAGICE mkll

JTAGICE

STK502

STK501

STK500

AVRISP

Product

 

 

*

 

 

 

 

*

 

Tiny11

 

 

*

 

 

 

 

*

*

Tiny12

*

*

 

*

 

 

 

*

*

Tiny13

 

 

 

 

 

 

 

*

*

Tiny15

*

*

 

 

 

 

 

*

*

Tiny26

 

 

 

 

 

 

 

*

 

Tiny28

*

 

 

*

 

 

 

*

*

Tiny2313

 

 

*

 

 

 

 

*

 

90S1200

 

 

*

 

 

 

 

*

 

90S2313

 

 

*

 

 

 

 

*

 

90S2323

 

 

*

 

 

 

 

*

 

90S2343

*

*

 

 

 

 

 

*

*

Mega8

*

*

 

 

 

 

 

*

*

Mega8515

*

*

 

 

 

 

 

*

*

Mega8535

*

 

 

*

*

 

 

*

*

Mega16

*

 

 

*

*

 

 

 

*

Mega162

*

 

 

*

*

 

 

*

*

Mega32

*

 

 

*

*

 

*

*