پیام های آموزشی کانال تلگرام t.me/KnowledgePlus در سال 1395

(لطفا از کپی کردن مطالب بدون ذکر منبع خودداری کنید)


فروردین:

نکته آموزشی:
عمر و ساعت کار عملکرد برخی از انواع خازن های الکترولیت مطابق فرمول شیمیایی Arrhenius به ازای هر ده درجه کاهش در دمای محیط، دو برابر می شود. یعنی اگر مثلا در 105 درجه 2000 ساعت باشد، در 95 درجه 4000 ساعت خواهد بود.

-
نکته آموزشی:
گشتاور حاصل از درایو کردن استپر موتورها به روش Bipolar تقریبا 40 درصد بیشتر از گشتاور در روش Unipolar است.

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

-
نکاتی از زبان برنامه نویسی C:
عبارت های زیر معادل یکدیگر هستند

&a[0] و a
a[0] و *a
a[i] و *(a+i)
-
نکته ای در کار با درایورهای استپر موتور:
در درایورهایی که از جریان موتور فیدبک گرفته نمی شود و از این نظر بصورت حلقه باز عمل می کنند، تغذیه درایور باید مطابق با ولتاژ نامی استپر موتور اعمال شود. اما در درایورهایی که از جریان موتور فیدبک گرفته می شود و از این نظر بصورت حلقه بسته عمل می کنند، لازم نیست تغذیه درایور محدود به ولتاژ نامی استپر موتور باشد و اتفاقا هر چه این ولتاژ بیشتر باشد، دورهای بالاتری برای استپر موتور توسط درایور با حفظ گشتاور قابل تامین خواهد بود.

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

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

-
برای اتصال سطوح منطقی با ولتاژهایی فراتر از حد تحمل پین ورودی میکروکنترلر (مثلا 24v- و 24v+ ) یک روش ساده این است که مقاومتی را با مقدار مناسب با پین سری کنیم که در این حالت وجود دو دیود حفاظتی داخلی در ورودی پین باعث برش ولتاژ می شود. با توجه به محدودیت جریان این دیودها و در صورت نیاز می توانیم دو دیود سریع با افت ولتاژ کم و جریان کافی را بصورت خارجی در ورودی پین قرار دهیم، به صورتی که آند یکی به ورودی پین و کاتد آن به Vcc و کاتد دومی به ورودی پین و آند آن به زمبن متصل شود. البته این روش علیرغم سادگی به لحاظ امپدانس دیده شده توسط منبع سیگنال و همچنین سرعت تغییرات سیگنال ورودی می تواند محدودیت هایی را ایجاد کند.
-
تمرین برنامه نویسی c:
در عبارت زیر a معرف چیست؟

int (*(*a[10])(char))[4]

پاسخ: a آرایه ای است با ده عضو از اشاره گر به تابعی با ورودی char که مقدار بازگشتی این تابع اشاره گر به آرایه ای با 4 عضو از نوع int است.
-
نکته ای در برنامه نویسی:
در عملیات محاسباتی با متغیرهایی از نوع صحیح، ترتیب انجام عملیات می تواند در دقت محاسبات موثر باشد. به عنوان یک مثال، نتیجه محاسبه
(a-b)/c
با نتیجه
(a/c)-(b/c)
در صورت صحیح بودن نوع متغیرهای a و b و c می تواند متفاوت باشد. در یکسری از عملیات محاسباتی، توجه به این ترتیب در محاسبات برای بالا بردن دقت مهم است. مثال عددی با فرض حذف اعشار در محاسبات صحیح:
(12-1)/3=3
(12/3)-(1/3)=4
در این مثال، نتیجه محاسبه دوم یعنی 4 به نتیجه واقعی نزدیکتر است. بنابراین در صورت نیاز به استفاده از محاسبات صحیح و بسته به نوع رابطه و مثبت یا منفی بودن اجزاء محاسبه، می توانیم رابطه را به شکلی مرتب کنیم که نتیجه نهایی به نتیجه واقعی نزدیک تر باشد.

اردیبهشت:

برای چسباندن مستحکم صفحات تاچ به LCD می توان از چسب های دو طرفه باریک مانند نمونه موجود در شکل استفاده کرد. در تهران این نوع چسب ها در خیابان فردوسی قابل تهیه است.
-
نکته ای در کار با درایور میکرواستپ:
در استفاده از تقسیمات بالای درایورهای میکرواستپ (مثلا 50000 قسمت در یک دور)، توجه به حداکثر فرکانس پالس قابل پذیرش توسط درایور مورد انتخاب مهم است. چرا که در صورت پایین بودن محدوده پذیرش فرکانس پالس ورودی، امکان بالا بردن دور استپر موتور حتی در صورت تامین تغذیه کافی، میسر نخواهد بود.

-
در کدنویسی برای refresh کردن 7segment ها و LED ها به روش Multiplex، برای جلوگیری از ایجاد سایه ای از اطلاعات بخش مجاور باید ابتدا خط Select جاری غیر فعال شود و سپس اطلاعات جدید روی خطوط دیتا قرار بگیرد و در مرحله بعدی خط Select جدید فعال شود.

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

-
در روش spwm برای کنترل دور موتور سه فاز، ولتاژ اعمال شده به موتور محدود به تقریبا 0.8 ولتاژ نامی است. برای اثبات این مطلب با فرض فیلتر شدن مولفه های فرکانس بالا توسط موتور، اگر ولتاژ بازوهای پل سه فاز را بصورت سه سینوسی با اختلاف فاز 120 درجه در نظر بگیریم که بین 0 و Vmax تغییر می کنند:
V1=Vmax*(1+sin(x))/2
V2=Vmax*(1+sin(x+120))/2
V3=Vmax*(1+sin(x+240))/2
و تفاضل هر یک از این عبارت ها را نسبت به یکدیگر با استفاده از روابط مثلثاتی بسط دهیم، در نهایت حاصل توابعی سینوسی خواهند شد که دامنه آنها 0.866Vmax است و این همان ولتاژهایی است که به ورودی های موتور اعمال می شوند.
-
توصیه ای برای موفقیت در استخدام:
با توجه به بررسی رزومه ها و مصاحبه با افراد مختلف جویای کار، متاسفانه مشاهده می شود که اکثر قریب به اتفاق این افراد فاقد تسلط واقعی و کامل بر موارد اعلام شده به عنوان حوزه های تخصصی خود هستند و توانایی آنها بیشتر در حد آشنایی و راه اندازی و اجرای مثال های آماده برای نرم افزارها و سخت افزارهای مورد نظر است. مشاهده یک فهرست طولانی از نرم افزارها و سخت افزارهای اعلام شده از طرف فرد جویای کار به عنوان موارد ادعایی که بر آنها تسلط دارد، از طرف یک کارفرمای باتجربه و مسلط لزوما به عنوان نقطه قوت و مزیتی محسوب نمی شود و بلکه می تواند نشانه ای از عمق کم اطلاعات فرد مذکور باشد. بازار کار در حوزه های تخصصی برق و الکترونیک امروزه طالب افرادی است که با صرف وقت کافی و نه در حد آشنایی، در موضوعات مورد نیاز به صورت متمرکز فعالیت کرده باشند و در همان موارد محدود به حداکثر توانایی و تخصص رسیده باشند. بنابراین توصیه می شود در ارسال رزومه ها، نقاط قوت واقعی و قابل استناد (در صورت وجود) از موارد آشنایی عمومی و کلی، کاملا تفکیک و مشخص شود.

-
نکته آموزشی:
عدد ذکر شده به عنوان فرکانس مرکزی کریستال مربوط به دمای مشخصی است که این دمای مرجع بسته به ساختار کریستال می تواند اعداد متفاوتی باشد. با تغییر دما نسبت به دمای مرجع، فرکانس نوسان کریستال به میزان معینی منطبق با معادله مشخصه آن تغییر می کند که در برخی از کاربردهای بسیار دقیق، این تغییر فرکانس ناشی از تغییرات دما بسیار مهم است. برای جبران سازی تغییر فرکانس کریستال به دلیل تغییر دما از روش های مختلفی استفاده می شود که در اینجا به دو نوع از آنها اشاره می شود. در نوسان سازهای TCXO یا Temperature-compensated crystal oscillator از طریق اندازه گیری دما و مدارات جبران ساز آنالوگ، فرکانس خروجی نوسان ساز نسبت به تغییرات دما تثبیت می شود. در روش دیگر کریستال در یک محفظه حرارتی (Oven) قرار می گیرد و گرم می شود و دمای بدنه آن توسط گرم کننده و کنترلر دما در دمای ثابتی تثبیت می شود که به این نوع نوسان ساز  OCXO یا  Oven-controlled crystal oscillator گفته می شود.

-
در صورت ایجاد اتصالی با قلع بین پایه های آی سی های smd در هنگام لحیم کاری و در شرایطی که به دلیل نزدیکی پایه ها به هم، استفاده از قلع کش جواب نمی دهد، یک روش ساده و کم هزینه این است که سیم افشان با رشته های تا حد امکان نازک را با روغن مناسب مثل روغن لحیم یا فلکس آغشته کنیم و آن را روی محل اتصالی قرار دهیم. سپس باید هویه را روی مجموعه رشته های سیم افشان و قلع ایجاد کننده اتصالی فشار دهیم تا بصورت همزمان سیم داغ و قلع ذوب شود. در این حالت قلع ذوب شده از بین پایه های آی سی smd، جذب رشته های سیم افشان خواهد شد.
-
نکته ای در طراحی مدار چاپی:
اگر لازم باشد یک مدار چاپی پر تراکم حتما بصورت یک رو طراحی شود، استفاده از قطعات smd (علیرغم فضای کمتری که اشغال می کنند) لزوما بهترین گزینه نیست. زیرا بیشتر بودن فاصله پایه های قطعات، امکان عبور یک یا چند track را بسته به نوع قطعه از بین پایه های آنها فراهم می کند که این امکان می تواند برای طراحی مدارهای پر تراکم بصورت یک رو بسیار مفید باشد. البته این مورد کاملا بستگی به آرایش مدار و نوع قطعات و ... دارد و نمی توان آن را بصورت یک قاعده کلی بیان کرد. اما منظور از این مطلب این است که مدارهایی را می توان مثال زد که در صورت استفاده ازکلیه قطعات از نوع smd، امکان طراحی مدار چاپی در ابعاد مشخص بصورت یک رو برای آنها وجود نداشته باشد. اما همان مدار را می توان در همان ابعاد در صورت استفاده از بعضی قطعات غیر smd و با فواصل پایه بیشتر، بصورت یک رو طراحی کرد.


خرداد:

نقل یک تجربه عملی:
در یک محیط صنعتی پرنویز که برق کامپیوتر با برق درایورهای سرو موتور و اینورتر مشترک بود، در هنگام جریان کشی توام همه درایورها و اینورترها، ارتباط rs422 در pc به دلیل مخدوش شدن اطلاعات قطع میشد. اما با قرار دادن یک emi filter دست ساز در مسیر تغذیه pc، این مشکل برطرف گردید.
-
کلیه مطالب این کانال به جز مواردی که صریحا در متن آن ذکر شود، جنبه تالیفی دارد و از جایی کپی نشده و تجارب و دانسته هایی است که بدون هیچ انتظار و چشم داشتی در اختیار دوستان قرار داده می شود. بنابراین از دوستان گرامی درخواست می شود پست ها را تنها بصورت فوروارد در کانال های دیگر قرار دهند و از کپی کردن مطالب خودداری کنند.
-
سخنی با مخاطبین این کانال:
در سال های گذاشته بر مبنای انگیزه به اشتراک گذاشتن اطلاعات و کمک به ارتقاء سطح علمی رشته الکترونیک در کشور، علاوه بر قرار دادن فیلم های آموزشی بصورت رایگان در اینترنت، انواع پروژه ها و مطالب آموزشی از طریق سایت KnowledgePlus.ir و قبل از آن انجمن eca برای استفاده در اختیار علاقه مندان قرار داده شده است. سورس های مختلفی از جمله سورس اینورتر سه فاز، تولید ملودی ای ایران با زبان های سی و بیسیک، فارسی نویسی در بسکام، اکوی دیجیتال و انواع پروژه های متعدد دیگر و همچنین مقالاتی مانند روش های مقابله با نویز در avr که برای اولین بار بصورت پستی در سایت eca منتشر شد و مطالب آموزشی در مورد استپر موتور و درایورهای آن و سایر موتورهای مورد استفاده در دستگاه های CNC از جمله نمونه هایی است که تنها برای کمک به پیشرفت علم الکترونیک با صرف زمان زیاد در اختیار دوستان علاقه مند قرار داده شده است. اخیرا هم از طریق این کانال سعی شده که یکسری نکات آموزشی و طراحی و تجربیات عملی برای استفاده همه به اشتراک گذاشته شود.
اما متاسفانه مشاهده می شود که بسیاری از پروژه ها و مقالات و پست های آموزشی از طرف گروهی از افراد بی تعهد و فاقد اخلاق کپی شده و بدون ذکر مرجع، آنها را به نام خودشان منتشر کرده اند و حتی گاهی برای فروش گذاشته اند. این روال اخیرا با ایجاد گروه تلگرام همچنان ادامه داشته و کانال هایی را می توان مشاهده کرد که علیرغم درخواست نسبت به فوروارد پست ها، مطالب را کپی و به نام خودشان منتشر می کنند و ظاهرا مورد اعتراض مخاطبین خود هم قرار نمی گیرند.
بنابراین برای مقابله با این عملکرد غیر اخلاقی و با حفظ انگیزه برای به اشتراک گذاشتن مطالب، از این به بعد در شیوه ارائه اطلاعات و تجربیات از طریق این کانال تجدید نظر خواهد شد.

-
مقاله ای درباره نحوه دسترسی به حافظه eeprom در AVR-GCC:
www.tinkerist.com/gps/docs/EEPROM.pdf

-
نکته ای در استفاده از سنسورهای صنعتی:
توجه به مشخصه و زمان پاسخ یک سنسور صنعتی در برخی کاربردها می تواند بسیار مهم باشد. مثلا اگر بنا باشد یک سنسور حساس به فلزات برای محدود کردن طول حرکت یک سیستم سریع مکانیکی به عنوان Limit switch عمل کند و به کنترلر فرمان دهنده به موتور محرکه، حد نهایی انتهای مسیر را اعلام کند، در این کاربرد باید از سنسوری استفاده شود که زمان پاسخ آن به حد کافی سریع باشد تا سیستم مکانیکی از حد تعیین شده به عنوان انتهای مسیر فراتر نرود و آسیب احتمالی به سیستم مکانیکی به دلیل دیر عمل کردن سنسور وارد نشود.

-
در بررسی میدانی در بازار جمهوری در مورد انواع emi filter با قابلیت عبور جریان بالا، مشاهده شد که چند نوع فیلتر از انواع تقلبی تا نوع ژاپنی در بازار وجود دارد. اما برای کاربردهای تولیدی و تعداد بالا به دلیل موجود نبودن فیلترهای جریان بالای مناسب به تعداد کافی و گران بودن قیمت انواع موجود بهتر است فیلتر بصورت مجزا و با تهبه قطعات بسته شود.
-
نکته ای در کدنویسی:
نحوه برنامه نویسی برای سخت افزارهای مختلف بسته به نوع کاربرد می تواند به دو صورت باشد. در روش اول کدنویسی به گونه ای انجام می شود که با تغییر آرایش سخت افزاری، تنها با تغییر تعاریفی مانند پورت ها و شماره پین ها برنامه روی سخت افزارهای مختلف قابل اجرا باشد. اما در روش دوم به منظور افزایش هر چه بیشتر در سرعت اجرا، کدنویسی بصورت خاص و برمبنای سخت افزار مورد نظر انجام می شود.
به عنوان مثال در کدنویسی برای مقداردهی به بیت های دیتای یک LCD، اگر برای ایجاد قابلیت استفاده از کد برای سخت افزارهای مختلف فرض بر این باشد که ممکن است بیت های دیتا روی پورت های مختلف قرار بگیرند، در این صورت مقداردهی به هر بیت بصورت مجزا انجام میشود که این روش دارای دو خاصیت است. یکی این که در صورت نام گذاری و تعاریف مناسب می توان از همین کد برای آرایش های سخت افزاری مختلف استفاده کرد و تنها شماره پورت ها و پین ها را تغییر داد. خاصیت دوم، طولانی شدن زمان اجرای برنامه به دلیل تفکیک تک تک بیت ها است. در حالی که ممکن است تمام بیت های دیتا روی یک پورت قرار داشته باشند و مقداردهی به تمام آنها را بتوان در یک مرحله انجام داد. برای یک LCD کاراکتری که حجم ارسال دیتا پایین است، کدنویسی به شیوه اول می تواند روش مناسبی باشد. زیرا کندی ایجاد شده به دلیل تفکیک تک تک بیت ها برای کاربر محسوس نیست. اما مثلا برای یک LCD رنگی با رزولوشن بالا و تعداد نقاط زیاد، این روش به دلیل کندی زیاد ممکن است مناسب نباشد و در چنین شرایطی نوشتن کد بصورت بهینه برمبنای سخت افزار موجود می تواند باعث افزایش سرعت در عملکرد خروجی شود.
نتیجه اینکه کدنویسی به شکل عمومی و با قابلیت استفاده برای سخت افزارهای مختلف، همیشه هم روش مطلوبی نیست و در برخی شرایط لازم است کدنویسی بصورت خاص برای سخت افزار هدف انجام شود.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)

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

-
آموزش سریع ایجاد پروژه در کامپایلر IAR برای کار با XMEGA یا AVR:
توجه: نسخه قدیمی تر این آموزش در سال های گذشته توسط مهندس کی نژاد در یکی از انجمن های برق و الکترونیک قرار داده شده است.
ابتدا از طریق منوی
Project/Create new project
گزینه C یا ++C شاخه
AVR Studio 4 compatible output
را انتخاب کنید. سپس در پنجره ای که باز می شود محل ذخیره سازی فایل پروژه را مشخص کنید. در مرحله بعدی فایل main برنامه توسط کامپایلر ایجاد می شود. سپس در ناحیه workspace بجای گزینه Debug، نسخه Release را انتخاب کنید. سپس در مسیر
Project/Options/General Options/Target/Processor configuration
نوع میکروکنترلر مورد استفاده را انتخاب کنید. در  مسیر
Project/Options/General Options/System
تیک
Enable bit definitions in I/O include files
را بزنید.
بعد از نوشتن کد مورد نظر در محیط کامپایلر، با زدن F7 پنجره ای باز می شود و محل ذخیره فایل با پسوند eww را سوال می کند. با انتخاب نام مناسب و محل فولدر تشکیل شده برای این پروژه، برنامه کامپایل می شود. فایل های خروجی با پسوند Hex برای flash و eeprom در فولدر Release/Exe ذخیره می شوند. برای آگاهی از میزان مصرف حافظه در مسیر
Project/Options/Linker/List
تیک
Generate linker listing
و تیک های داخل آن را بزنید و بعد از کامپایل با مراجعه به محتوای فایل با پسوند map که در فایل های خروجی پروژه در ناحیه Workspace بخش Output قابل دسترس است، میزان مصرف CSTACK و RSTACK در هر مرحله را بررسی کنید. در صورت کافی نبودن میزان این بخش های حافظه، ظرفیت این بخش ها را در مسیر
Project/Options/General Options/System
در مقدار دلخواه تعیین کنید. برای استفاده از برخی از کتابخانه های موجود ممکن است لازم باشد در مسیر
Project/Options/General Options/Library Configuration
نوع کتابخانه ها را از وضعیت CLIB به گزینه های دیگر مانند Normal DLIB تغییر دهید.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)

-
با توجه به مشترک بودن اکثر دستورات اسمبلی در خانواده های AVR و XMEGA، علاقه مندان به فراگیری برنامه نویسی اسمبلی برای خانواده XMEGA می توانند به بخش های 76 تا 91 فیلم های آموزش AVR مراجعه کنند.
-
نمونه ای از یک مدار چاپی که رسم آن بصورت یک رو تنها به دلیل استفاده از قطعات غیر smd و امکان عبور track ها از بین پایه های قطعات ممکن شده است.
-
نقل یک تجربه عملی:
در یک برد صنعتی مبتنی بر میکروکنترلر، اتصال اتفاقی زمین مدار به بدنه فلزی یک موتور dc ولتاژ بالا باعث اعمال نویز شدید به میکروکنترلر و هنگ کردن مداوم آن میشد که با قطع اتصال زمین مدار از بدنه موتور، مشکل برطرف گردید.

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

-
نکته طراحی مدار:
برای محافظت کنتاکت های رله در مقابل جرقه های ناشی از سوییچ کردن بارهای سلفی تغذیه شده با ولتاژ متناوب می توان وریستوری با مشخصات مناسب را با کنتاکت رله موازی کرد.

-
به دوستان علاقه مند به مباحث مرتبط با میکروکنترلرها پیشنهاد می شود که برای عمیق تر کردن اطلاعات خود و تسلط هر چه بیشتر به امکانات میکروکنترلر مورد نظر، کاربردهای اجرایی و عملیاتی را برای مدهای مختلفی که در سخت افزار ها پیش بینی شده بیابند و بررسی کنند که چه کاربردی ممکن است برای هر مد و قابلیتی وجود داشته باشد که طراحان آن میکروکنترلر را مجاب کرده که آن قابلیت را در سخت افزار بگنجانند. به عنوان یک مثال در AVR که قابلیت Force output compare برای برخی تایمر ها وجود دارد، ممکن است هیچ گاه به این قابلیت توجه نکرده باشیم که چرا چنین امکانی در تایمر تعبیه شده است. یا مثلا در XMEGA یک قابلیت توزیع pwm روی پین های دلخواه وجود دارد که قرار دادن چنین امکانی از طرف کارخانه سازنده بی دلیل نبوده است و می توانیم کاربرد هایی برای این مد بیابیم. به همین ترتیب و با همین دید می توان کاربرد های عملیاتی ممکن برای هر قابلیت موجود در سایر واحدهای سخت افزاری را بررسی کرد.

تیر:

تمرین برنامه نویسی c:
اگر a از نوع char باشد، مقدار x بعد از اجرای عبارت زیر در هر یک از دو فرض چقدر است؟
الف- x از نوع char باشد.
ب- x از نوع int باشد.
x=(((((a=2)<1)?0:100)%11)«8);
پاسخ تشریحی: ابتدا a برابر 2 قرار داده می شود. سپس در عبارت:
(((a=2)<1)?0:100)
چون 2 کوچکتر از 1 نیست، کل عبارت برابر 100 خواهد بود. در مرحله بعد باقیمانده تقسیم 100 بر 11 محاسبه می شود که برابر با 1 است. در نهایت هم حاصل شیفت به چپ 1 به میزان 8 بیت محاسبه می شود که اگر x از نوع char باشد به دلیل 8 بیتی بودن، مقدار 0 در آن قرار خواهد گرفت و اگر x از نوع int باشد، مقدار 256 یا 0x100 در آن قرار خواهد گرفت.
-
مطابق تست های انجام شده، در IAR و AtmelStudio امکان تعریف متغیر در متن for که امکان مفیدی برای صرفه جویی در حافظه است، مانند مثال زیر قابل انجام است و خطایی از طرف کامپایلر ایجاد نمی شود:
for(unsigned char i=0;i<10;i++){...}
اما در Codevision (نسخه 2.05) این نوع تعریف از طرف کامپایلر پذیزفته نمی شود و خطا ایجاد می شود.
-
نقل یک تجربه عملی:
در آزمایش های انجام شده مشاهده شد که اکثر قریب به اتفاق IC های LM2576HVT-ADJ موجود در بازار تقلبی هستند و در ولتاژ و جریان های بالا دچار افت ولتاژ در خروجی می شوند که با واردات مستقیم این IC از مبدا خارجی معتبر، مشکل برطرف گردید.

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

-
در تولید بردها و دستگاه های صنعتی حتی در صورت اطمینان از عدم وجود Earth در محل نصب دستگاه ها، در هر صورت اتصال Earth به بدنه را رعایت کنید و برای اتصال به برق شهر از پریزهای Earth دار و مانند آن استفاده کنید تا در صورت وقوع برق گرفتگی، مسوولیتی متوجه شما به عنوان تولیدکننده دستگاه نباشد.
-
معرفی قطعه:
قطعه Reed switch که در بازار معمولا به عنوان رید رله از آن نام برده می شود، شامل یک کنتاکت مکانیکی است که نزدیک کردن آهنربا به آن باعث اتصال کنتاکت و برقراری جریان می شود.

-
نکته آموزشی:
در استپر موتور منحنی مشخصه Pull out torque، گشتاوری در هر دور معین از موتور را مشخص می کند که اگر گشتاور بیشتری از آن به موتور وارد شود، موتور متوقف می شود و یا از پالس های ورودی به درستی تبعیت نمی کند (یا به اصطلاح پالس ها را گم می کند).

-
نکته آموزشی:
علیرغم 8 بیتی بودن CPU در AVR و XMEGA، دستورات اسمبلی MOVW و ADIW و SBIW بصورت توام روی 16 بیت عمل می کنند.

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

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

-
بارها این سوال از طرف دوستان مختلف مطرح می شود که چگونه از طریق رشته الکترونیک کسب درآمد کنیم و چرا کاری برای ما وجود ندارد و مواردی از این قبیل. بصورت خلاصه بازار رشته الکترونیک امروزه از فارغ التحصیلان بی تجربه و با اطلاعات ضعیف و سطحی اشباع شده و یک مدرک لیسانس یا حتی فوق لیسانس، ویژگی و مزیت خاصی را به تنهایی برای یک فرد جویای کار ایجاد نمی کند و افرادی در این میان متمایز می شوند که با سنجش شرایط و جوانب، یک حوزه تخصصی را انتخاب کنند و تا جایی که ممکن است در آن بخش مطالعه و تحقیق و تمرین کنند چنانکه بتوانند در آن موضوع به عنوان یک فرد صاحب نظر و مسلط مطرح شوند. مشاهدات نشان می دهد در همین بازار راکد هم برای اینگونه افراد معمولا فرصت های شغلی و درآمد های خوبی به ویژه در بخش خصوصی فراهم است.
-
نکته ای در کدنویسی:
برای آن که بتوانیم از یک کد با کمترین تغییرات برای آرایش های سخت افزاری مختلف استفاده کنیم، ابتدا می توانیم تعاریفی را برای آرایش سخت افزاری انجام دهیم به گونه ای که در صورت تغییر پورت ها یا پین ها ، نیازی به تغییر در جزییات کد اصلی نباشد. بهتر است تعاریف مربوط به آزایش سخت افزاری را در فایل جداگانه ای در پروژه قرار دهیم.
مثلا فرض کنیم یک LED در AVR با واسطه یک مقاومت به PA3 متصل باشد و بخواهیم کد نویسی برای روشن و خاموش کردن این LED را به یک شکل عمومی بنویسیم. اگر ابتدا تعریف کنیم :
#define  LED_PORT  PORTA
#define  LED_DDR  DDRA
#define  LED_bp  3
#define  LED_bm  (1«LED_bp)
در اینصورت برای خروجی کردن پین متصل به LED می توان نوشت:
LED_DDR|=LED_bm;
یک کردن پین متصل به LED:
LED_PORT|=LED_bm;
صفر کردن پین متصل به LED:
LED_PORT&=~LED_bm;
مزیت این روش این است که اگر آرایش سخت افزاری تغییر کند و هر پورت و پین دیگری هم مورد استفاده قرار بگیرد، با تغییر آن تعاریف اولیه می توانیم از یک کد مشترک استفاده کنیم. البته همانطور که قبلا در یکی از پست های آموزشی اشاره شد(  https://telegram.me/KnowledgePlus/139 )، استفاده از این روش در مواردی می تواند منجر به کند شدن روند اجرای برنامه شود.
-
در میکروکنترلر XMEGA روی برخی پین های خاص می توان فرکانسی حداکثر تا 128MHz معادل با 4 برابر فرکانس کلاک CPU ایجاد کرد.
-
یک روش تجربی و ارزان برای تست میزان نویز پذیری بخش تغذیه مدارات میکروکنترلری که از برق شهر تغذیه می شوند، استفاده از چوک های مهتابی های قدیمی است. در این روش می توانیم به دو سر چوک مهتابی سیم متصل کنیم و چندین بار سیم یا دو شاخه متصل به چوک را بصورت متوالی و پشت سر هم به خط برق تغذیه کننده مدار میکروکنترلری وصل و از آن قطع کنیم که در صورت عدم وجود حفاظت کافی در مدار تغذیه میکروکنترلر، این کار می تواند منجر به ریست شدن یا هنگ کردن میکروکنترلر یا LCD یا سایر اجزای نویز پذیر شود. در انجام این آزمایش، مراقب برق گرفتگی باشید.
-
مقایسه عملکرد IAR و AVR-GCC
https://www.iar.com/iar-embedded-workbench/tools-for-avr/benchmark-results-for-avr

-
نقل یک تجربه عملی:
با رعایت شرایطی که در آموزش های مختلف به آنها اشاره شده (رجوع شود به مقاله مقابله با نویز در AVR که در سایت موجود است)، تاکنون حدود 5000 میکروکنترلر AVR در مدارها و کنترلرهای مختلف و در انواع محیطهای صنعتی پر نویز بکار گرفته شده که هیچ مشکلی به لحاظ نویزپذیری و هنگ کردن و موارد مشابه آن مشاهده نشده و برخی از این مدارها بیش از 12 سال است که بصورت مداوم مشغول به کار هستند.

-
نمونه ای از قابلیت های برنامه نویسی اسمبلی:
در AVR یا XMEGA در کاربرد های بسیار سریع و Time critical اگر لازم باشد قضاوت روی مقادیر مختلف یک متغیر، در یک زمان برابر انجام شود می توانیم از قابلیت دستور IJMP استفاده کنیم. لازم به توضیح است که دستورات switch-case در زبان C یا select-case در زبان BASIC یا if های متوالی، به دلیل پیاده سازی مقایسه بصورت مرحله به مرحله، زمان برابری را برای قضاوت روی مقادیر مختلف فراهم نمی کنند. به عنوان مثالی برای استفاده از قابلیت IJMP برای دسترسی با زمان برابر به نتیجه مقایسه، اگر فرض کنیم مقدار مورد قضاوت در رجیستر R16 باشد و مقایسه با 0 و 1 و 2 و 4 مورد نظر باشد می توانیم به ترتیب زیر عمل کنیم:

 
LDI ZL,LOW(JUMP_TABLE)
LDI ZH,HIGH(JUMP_TABLE)
ADD  ZL,R16
CLR  R16
ADC  ZH,R16
IJMP

JUMP_TABLE:

RJMP CASE_0
RJMP CASE_1
RJMP CASE_2
NOP
RJMP CASE_4
.
.
.
CASE_0:
....
CASE_1:
....
CASE_2:
....
CASE_4:
....
-
نکته آموزشی:
در کاربردهایی که میزان جریان کشی میکروکنترلر از تغذیه باید در حداقل مقدار ممکن باشد، قرار گرفتن پین های ورودی AVR در وضعیت float می تواند باعث جریان کشی اضافه توسط بافر ورودی پین در زمان فعال بودن بافر شود. مطابق توصیه Datasheet یک روش برای جلوگیری از این جریان کشی اضافه، فعال کردن مقاومت Pull up داخلی برای این گونه پینها است. با توجه به اینکه در زمان ریست شدن میکروکنترلر مقاومت های Pull up داخلی غیر فعال هستند، برای کنترل بیشتر جریان می توان مقاومت های Pull up یا Pull down را بصورت خارجی قرار داد تا حتی در محدوده زمانی ریست شدن میکروکنترلر هم مصرف جریان ناشی از پین های ورودی از تغذیه محدود شود.

-
معرفی سنسور UGN3113:
این IC سه پایه یک سنسور Hall effect حساس به تغییرات میدان مغناطیسی و دارای خروجی Open collector است که خروجی آن را می توان بصورت مستقیم به میکروکنترلر متصل کرد و در صورت نزدیک شدن به آهن ربا، وضعیت خروجی بصورت دیجیتال تغییر می کند. این سنسور معمولا در بازار موجود است.
-
نقل یک تجربه در بازاریابی برای محصولات و پروژه های صنعتی:
برای معرفی و به اصطلاح جا انداختن یک پروژه و محصول جدید که دارای کاربرد صنعتی باشد و تولید آن در صورت پذیرش از طرف بازار سودآور باشد، یک روش بسیار موثر این است که محصول خود را بدون دریافت هیچ وجهی در اختیار تعدادی از افراد شناخته شده و شاخص در آن صنعت قرار دهیم و از آنها بخواهیم که از آن استفاده کنند و اگر مورد رضایتشان بود، وجه آن را بعدا پرداخت کنند. با این روش می توانیم علاوه بر جلب رضایت مشتریان اولیه و مجاب کردن آنها برای استفاده از محصول جدید، برای بقیه مشتریان هم به استفاده از آن محصول توسط افراد شناخته شده در آن صنعت استناد کنیم و به این ترتیب اعتماد بازار را به مرور جلب کنیم.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)

-
نکته ای در کد نویسی:
اگر یک میکروکنترلر به عنوان Master از طریق روش های مختلف ازتباطی مانند USART و I2C و غیره به یک یا چند میکروکنترلر به عنوان Slave متصل باشد و تغذیه همه میکروکنترلرها بصورت همزمان متصل شوند، در کد نویسی بخش Master باید یک تاخیر اولیه قبل از شروع ارسال هرگونه اطلاعات برای Slave ها پیش بینی شود تا Slave ها فرصت کافی داشته باشند که initialization اولیه را بصورت داخلی انجام دهند و قبل از آماده شدن slave ها، Master اطلاعاتی را ارسال نکند.
-
هشدار:
بسیاری از IC های موجود در بازار از نوع Renew هستند و علیرغم ظاهر نو آنها، در واقع قطعات دست دومی هستند که توسط دستگاه های مخصوص، پایه های آنها مرتب شده و روی آنها مجددا چاپ خورده است.
-
در درایورهای قدرت و اینورترهایی که برق شهر با دیود و خازن به DC تبدیل می شود و این ولتاژ از طریق سوییچ های قدرت به بار اعمال می گردد، وجود خازن های بزرگ روی باس DC در هنگام روشن شدن مدار که خازن ها در وضعیت تخلیه هستند می تواند باعث جریان کشی اولیه زیاد و  بروز اشکالات مختلف از جمله قطع فیوز شود. به همین دلیل برای مهار کردن جریان اولیه شارژ خازن باید تمهیداتی بکار گرفته شود که در اینجا به دو مورد اشاره می شود. در روش اول ابتدا یک مقاومت در مسیر شارژ خازن قرار می گیرد و بعد از رسیدن خازن به سطح مشخصی از شارژ، مقاومت توسط رله ای Bypass می شود. در روش دوم در مسیر شارژ خازن NTC مناسب قرار داده می شود که در ابتدای روشن شدن مدار به دلیل سرد بودن این قطعه و وجود مقاومت بالای آن جریان محدود می شود و بعد از عبور جریان و گرم شدن NTC، مقاومت آن کاهش پیدا می کند.
-
به دوستانی که برای اتصال میکروفن خازنی به ADC دچار مشکل هستند یادآوری می شود که در بخش یازدهم فیلم های آموزشی طراحی مدارات آنالوگ، روشی برای اتصال میکروفن خازنی به ورودی ADC میکروکنترلر AVR معرفی شده است.
http://www.aparat.com/v/Irj2G

-
نکاتی از زبان برنامه نویسی C:
در برنامه نویسی C از طریق اپراتور پیش پردازنده ## در ماکروها می توان عبارت ها را به یکدیگر چسباند یا به اصطلاح Concatenate کرد. مثلا مطابق تعریف ماکرو زیر:
#define P(a,b)  a##b
عبارت  P(1,2) معادل با 12 خواهد بود. یا عبارت P(abc,d) معادل با abcd خواهد بود.  به عنوان یک مثال پیشرفته تر، مطابق تعریف ماکرو زیر:
#define a(b) void f##b(unsigned char b)
عبارت a(x) معادل با عبارت زیر است:
void fx(unsigned char x)
-
نکته مهم در کدنویسی برای پاک کردن فلگ های AVR:

استفاده از عملیات Read-Modify-Write برای پاک کردن فلگ های مختلف در رجیسترهایی که بیش از یک فلگ در آنها وجود دارد، می تواند منجر به پاک کردن ناخواسته سایر فلگ ها شود. برای درک بهنر، فرض کنیم که در یکی از شماره های AVR مانند mega32 از تایمر 0 به این صورت استفاده شده باشد که فلگ سرریز تایمر 0 در رجیستر TIFR بررسی شود و بعد از یک شدن، با نوشتن یک در محل آن پاک شود. اگر برای پاک کردن فلگ سرریز تایمر 0 مانند کد C زیر عمل شود:
TIFR|=(1«TOV0);
این روش یعنی خواندن رجیستر و OR کردن آن با یک عدد و نوشتن مجدد حاصل OR در محل رجیستر، می تواند باعث پاک کردن ناخواسته سایر فلگ های موجود در رجیستر TIFR شود. زیرا اگر بصورت همزمان مثلا TOV1 هم برابر یک باشد، نوشتن مقدار حاصل از OR به دلیل وجود قبلی یک در محل این بیت باعث پاک شدن TOV1 خواهد شد. بنابراین استفاده از اپراتور =| در صورت استفاده همزمان از سایر فلگ های موجود در آن رجیستر یک عمل اشتباه است که می تواند منجر به نتایج ناخواسته شود.
روش صحیح برای پاک کردن هر فلگ بدون اینکه تغییری در بقیه فلگ ها ایجاد شود، استفاده از اپراتور = است که در این حالت هر فلگی که در محل آن یک نوشته شود، پاک می شود و بقیه فلگ ها در صورتی که یک باشند، با نوشته شدن صفر در محل آنها تغییری نمی کنند و همچنان یک باقی می مانند. روش درست مقداردهی برای این مثال به این صورت است:
TIFR=(1«TOV0);
در سایر زبان های برنامه نویسی هم برای چنین شرایطی باید از عملیات Read-modify-write خودداری شود و رجیستر بصورت مستقیم با عدد مناسب مقداردهی شود. این مطلب برای سایر میکروکنترلرهایی مانند XMEGA که برخی فلگ های آن با نوشتن یک پاک می شوند، برقرار است.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)

مرداد:


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

یکی از سوالاتی که گاهی توسط افراد مبتدی مطرح می شود این است که چرا در درایورهای قدرت به بارهایی مانند موتورها بجای اعمال شکل موج آنالوگ، پالس اعمال می شود و آیا نمی توان سیگنال های آنالوگ را تقویت کرد و به بار متصل کرد؟ مثلا در یک درایور موتور ac سه فاز آیا نمی توان دامنه و قابلیت جریان دهی برای سه سیگنال آنالوگ سینوسی با اختلاف فاز 120 درجه را تقویت کرد و آن را به موتور متصل کرد و چرا بجای این کار از روش هایی مثل spwm استفاده می شود که در آن به موتور پالس های pwm سینوسی اعمال می شود؟ یا مثلا آیا نمی توان یک ولتاژ dc را با تقویت قابلیت جریان دهی آن بصورت مستقیم به یک موتور dc اعمال کرد و چرا بجای این روش از تکنیک هایی مانند pwm استفاده می شود که در آن به موتور پالس اعمال می شود؟
پاسخ این سوال این است که در توان های بالا در صورت تقویت سیگنال های آنالوگ و اعمال آن به بار، تلفات بسیار بالایی در عناصر نیمه هادی تقویت کننده ایجاد می شود که این تلفات زیاد عملا باعث مردود و غیرعملی بودن استفاده از این روش در توان های بالا است. برای رفع این مشکل بجای استفاده از نیمه هادی ها در شرایط خطی، از آنها به عنوان یک سوییچ استفاده می کنیم که در این شرایط تلفات ایجاد شده برای نیمه هادی بسیار کمتر خواهد بود. اما چطور با اعمال یکسری پالس می توان به سیگنال مطلوب آنالوگ (مثلا سینوسی یا dc و ...) رسید؟ پاسخ بصورت خلاصه به این ترتیب است که پالس های ایجاد شده از مجموع مولفه های فرکانس پایین و فرکانس بالا تشکیل شده اند که مولفه های فرکانس بالا به دلیل خاصیت پایین گذر بارهایی مثل موتورها، عملا تاثیر چندانی روی آنها ندارند و تنها مولفه های فرکانس پایین که شامل بخش های سینوسی یا dc و غیره هستند، توسط بار دیده می شوند.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)

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

یک مشکل موجود برای خانواده STM32 این است که مانند AVR نسخه های کلون و تقلبی آن زیاد است و اکنون کار به جایی رسیده که شرکت GigaDevice Semiconductor که یک شرکت چینی است، میکروکنترلرهای GD32 را بصورت رسمی و با نشان خود، مشابه با STM32 و با ادعای سرعت بیشتر تولید کرده است:
http://www.gigadevice.com/product-category/1.html?locale=en_US

-
نکته طراحی مدار:
در برخی از پروژه های میکروکنترلری گاهی به یک ولتاژ منفی کوچک با جریان دهی کم برای بایاس کردن مدارات مختلف نیاز بوجود می آید. یک روش ساده و کم هزینه و بدون نیاز به استفاده از سلف و ترانس و رگولاتورهای سوییچینگ برای ساختن ولتاژ منفی از روی ولتاژ مثبت، اعمال یک پالس متناوب با فرکانس مناسب توسط یکی از خروجی های میکروکنترلر به مدار DC Canceler و Peak detector (با فرض مقادیر مناسب برای قطعات) است. مطابق شکل در این مدار اگر فرض کنیم ابتدا پالس متناوب در محدوده 0 تا 5 ولت تغییر کند، در طبقه اول با حذف DC تغیییرات آن به حدود 2.5- تا 2.5 ولت می رسد و پیک بخش منفی با لحاظ افت روی دیود در خروجی ظاهر می شود که از این ولتاژ منفی می توان در مواردی که نیاز به ولتاژ و جریان بالایی نباشد برای بایاس کردن تقویت کننده های عملیاتی و سنسورها و ... استفاده کرد.


-
برای استفاده از مدارات مبتنی بر میکروکنترلر و fpga و مانند آن در محیط های صنعتی و در سیستم هایی که از سروموتور و اینورتر و سایر منابع ایجادکننده نویز و اغتشاش در آن استفاده می شود، پیشنهاد می شود از دو نوع emi filter بصورت همزمان استفاده شود. فیلتر اول از نوع جریان بالا و برای ایزوله کردن نویز بارهایی مانند اینورتر و سروموتور از شبکه و فیلتر دوم برای ایزوله کردن تغذیه کنترلر از شبکه و نویز ناشی از هر منبع دیگری به غیر از بارهای تحت کنترل بکار می رود. در این روش ورودی دو فیلتر بصورت موازی به شبکه و خروجی های آنها به ترتیب به بارهای ایجاد کننده نویز و تغذیه کنترلر متصل می شوند. در لزوم استفاده از این دو سری فیلتر می توان این توضیح را داد که هرچند وجود فیلتر اول مانع نفوذ نویز بارهای موجود در خروجی فیلتر به شبکه می شود. اما تاثیری روی نویز ناشی از سایر منابع احتمالی تولید کننده نویز متصل به شبکه ندارد و بنابراین لازم است فیلتری هم بصورت مستقل برای جلوگیری از ورود ابن گونه نویزها به تغذیه کنترلر پیش بینی شود.
-

علیرغم موجود بودن انواع LCD ها به عنوان واسط گرافیکی، اما  7segment های مبتنی بر LED به دلیل مزایای گوناگون آنها مانند مقاوم بودن در برابر شرایط فیریکی سخت نظیر دمای بالا و ارتعاش و ضربه خوردن و قابلیت رویت آنها از فاصله دور و با زاویه دید بیشتر و در نور شدید، همچنان از جایگاه ویژه ای برای استفاده در یکسری از کاربردهای صنعتی برخوردار هستند.
-
نقل یک تجربه عملی:
در تعداد بسیار زیادی بردهای کنترل لوازم خانگی وارد شده از کشور چین، از میکروکنترلرهای AVR مشکل دار استفاده شده بود به نحوی که تغییر وضعیت یک پین میکروکنترلر، بصورت ناخواسته منجر به تغییر در پین دیگر و ایجاد مشکل در عملکرد برد می شد.

-
افراد حرفه ای معمولا بیشتر از آنکه به دنبال ابزارهایی باشند که کار کردن با آنها ساده است، به دنبال ابزارهای کاراتر و توانمندتر هستند.
-
معرفی یک رگولاتور ولتاژ بالا:
رگولاتور LM5010 یک رگولاتور ولتاژ بالای سوییچینگ از نوع Buck با خروجی قابل تنظیم و محدود ولتاژ ورودی 8 ولت تا 75 ولت است که حداقل تا 1 آمپر قابلیت جریان دهی دارد. بنابر اطلاع این قطعه در بازار موجود است.

-
بدینوسیله از آقایان مهندس شهرام نوربخش راد، مهندس هادی اسدی و مهندس حمید نجفی به دلیل زحمات آنها در به اشتراک گذاشتن دانش و تجربیاتشان تقدیر و تشکر می شود و برای این عزیزان و سایر دوستانی که با فعالیت های مفید خود به گسترش و ارتقاء سطح علم الکترونیک در کشور کمک می کنند آرزوی موفقیت و سربلندی داریم.
-
نکاتی از زبان برنامه نویسی C:
در برنامه نویسی C معمول است که ثابت های تعریف شده توسط ماکروها با حروف بزرگ نوشته شوند. مثال:
#define MINIMUM 0
#define MAXIMUM 100
#define BUFFER_SIZE 512
همچنین اعضای enum هم معمول است که با حروف بزرگ نوشته شوند. مثال:
enum color{RED,BLUE,GREEN,BLACK,WHITE};
-
نکته ای در طراحی مدار چاپی:
در هنگام طراحی مدار چاپی، محل قرار گرفتن خازن های الکترولیت تا حد امکان نباید پشت هیت سینک های ایستاده و سایر مکان های در معرض حرارت باشد. زیرا وجود حرارت باعث کاهش عمر خازن های الکترولیت می شود.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)

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

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

-
نقل یک تجربه عملی:
در بردهای صنعتی نصب شده در محیط های پر گرد و خاک به مدت طولانی که برد در معرض جریان هوا بوده، مشاهده شده که به مرور روی قطعات و به خصوص IC های smd با فاصله پین های کم، لایه ضخیمی از گرد و خاک تشکیل شده که منجر به اختلال در عملکرد مدار گردیده است.

-
چگونه می توانیم برای کامپایلرهای مختلف یک کد مشترک بنویسیم:
قابلیت Conditional Compilation این امکان را فراهم می کند که با کامپایل کردن مشروط بخش هایی از کد که وابسته به یک کامپایلر خاص هستند، برای کامپایلرهای مختلف بتوانیم یک سورس مشترک را بنویسیم. به عنوان یک مثال در کد زیر بسته به اینکه کامپایلر IAR یا Codevision یا AVR-GCC باشد که در AtmelStudio از آن استفاده می شود، include های مختلفی در هنگام کامپایل انجام می شود:

 
#if defined( __ICCAVR__ )
#include <ioavr.h>
#elif defined (__CODEVISIONAVR__)
#include <io.h>
#elif defined( __GNUC__ )
#include <avr/io.h>
#else
#error Compiler not supported
#endif
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
-
احترام به مالکیت معنوی و رعایت حقوق تولید کننده یک مطلب علمی ایجاب می کند که در هنگام نقل قول آن مطلب، مرجع آن هم ذکر شود. اما بر حسب اطلاع متاسفانه برخی از مدیران کانال ها و گروه ها بجای تاکید بر لزوم نقل مطالب با ذکر مرجع، افراد را به حذف نام منبع تولید کننده مطلب تشویق می کنند که نشان می دهد مسئله رعایت حقوق و احترام به مالکیت معنوی نیاز به فرهنگ سازی جدی در سطح جامعه علمی و دانشگاهی دارد.
-
تجربه و راهکاری برای کسب درآمدهای بالا در رشته الکترونیک:
یکی از شرایطی که برای یک محصول الکترونیکی می تواند ارزش افزوده بسیار بالایی را ایجاد کند، تولید محصولی است که عملکرد یک دستگاه یا وسیله بسیار گران قیمت به آن وابسته باشد. وابستگی یک دستگاه گران قیمت صنعتی یا پزشکی یا نیروگاهی و ... با قیمتی در حد چند ده یا حتی چند صد میلیون تومان به یک محصول الکترونیک، این امکان مانور را برای تولید کننده آن محصول فراهم می کند که قیمتی بسیار فراتر از هزینه های طراحی و قطعات را برای محصول خود تعیین کند و در واقع شان قیمتی کل دستگاه است که باعث ایجاد ارزش افزوده زیاد در اجزای آن و از جمله بخش الکترونیک می شود. به عنوان یک نمونه واقعی، بردهای خارجی بکار گرفته شده در یکی از صنایع را می توان مثال زد که بر حسب اطلاع قیمت آنها حدود 80 میلیون تومان است، اما قیمت واقعی قطعات آنها حداکثر چند میلیون تومان بیشتر نیست و در واقع انحصار تولید کننده و کاربردی که آن برد در آن بکار می رود که کنترل یک مجموعه بسیار گران قیمت است، چنین ارزش افزوده ای را برای آن ایجاد می کند. بنابراین یک روش برای رسیدن به درامدهای بالا در رشته الکترونیک، یافتن و نفوذ به چنین حوزه هایی است که البته کار چندان ساده ای هم نیست، اما ممکن است.

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

-
مخاطب این مطلب، افراد تازه کار و کم تجربه ای هستند که در هیاهوی نام ها و ابزارها و قطعاتی که هر روز عناوین جدیدی برای آنها مطرح می شود سردرگم شده اند و نمی دانند چه مسیری را باید انتخاب کنند تا از دیگران عقب نیفتند.
در انتخاب مسیر، حتما با اساتید با تجربه و افراد صاحب صلاحیت و سرد و گرم چشیده ای که نسبت به جوانب مسائل دید جامعی دارند مشورت کنید و صرفا بر اساس برداشت های شخصی خود یا نظرات و آرای افرادی که در عمل تجربه ای ندارند و قضاوت هایشان از پختگی کافی برخوردار نیست، تصمیم نگیرید.
-
نکته مهم در بکارگیری IC های درایور Mosfet و IGBT که به روش Bootstrap عمل می کنند:
در IC های درایوری که برای تامین تغذیه بخش High side از تکنیک Bootstrap استفاده می کنند و خازنی از طریق یک دیود، تغذیه این بخش را تامین می کند، سیگنال های فرمان اعمال شده به ورودی IC نباید به گونه ای باشند که بخش High side بیشتر از زمان مشخصی روشن بماند. در غیر اینصورت خازن تامین کننده تغذیه این بخش تخلیه می شود و به دلیل کافی نبودن تغذیه، عملکرد آن با اختلال مواجه می شود. برای جلوگیری از این مسئله باید سوییچ بخش Low side بصورت پریودیک روشن شود تا خارن تغذیه بخش High side بتواند از طریق دیود شارژ شود.

-
نکاتی از زبان برنامه نویسی C:
(شبیه این مطلب در سال های گذشته در یکی از انجمن های برق و الکترونیک قرار داده شده است)
برای مقداردهی مستقیم به آدرس مشخص در حافظه با فرض اینکه برای آن آدرس قابلیت ذخیره سازی وجود داشته باشد، می توان مانند مثال های زیر عمل کرد.
عبارت های زیر معادل با هم هستند و در آدرس 0x200 مقدار 0x98 را ذخیره می کنند:
(*(unsigned char*) 0x200)=0x98;
((unsigned char*) 0x200)[0]=0x98;
عبارت های زیر معادل با هم هستند و با فرض ساختار بایتی برای حافظه از آدرس 0x10002000 به بعد 4 بایت با مقدار 0x0000fe55 را ذخیره می کنند:
(*(unsigned long*) 0x10002000)=0xfe55;
((unsigned long*) 0x10002000)[0]=0xfe55;
همچنین نسبت به یک آدرس پایه می توان offset اعمال کرد. مثلا عبارت زیر یک بایت با مقدار 0x54 را در آدرس 0x206 ذخیره می کند:
((unsigned char*) 0x200)[6]=0x54;
در این روش اگر اشاره گر به بیش از یک بایت اشاره کند، به ازای هر واحد افزایش offset نسبت به آدرس پایه، آدرس مقصد به اندازه تعداد بایت مورد اشاره افزایش پیدا می کند. مثلا عبارت زیر باعث ذخیره سازی 0x54 در آدرس 0x204 و 0x00 در سه بایت بعدی خواهد شد:
((unsigned long*) 0x200)[1]=0x54;
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
-
سرو موتورهای ترمز دار:
در استفاده از سرو موتورهای صنعتی در برخی از کاربردها نیاز است که در شرایط قطع برق یا ایجاد وضعیت fault یا غیر فعال شدن سرو موتور و سایر موارد مشابهی که موتور، گشتاوری را در خروجی ایجاد نمی کند، محور موتور قفل بماند که برای چنین کاربردهایی می توان از سرو موتورهای ترمز دار استفاده کرد. در این نوع موتورها برای خارج شدن موتور از حالت ترمز باید جریان مشخصی از سیم پیچ های ترمز آن عبور کند که با قطع برق، این جریان قطع می شود و ترمز بواسطه فنرهای آن عمل می کند. در برخی انواع درایورهای سرو موتور هم خروجی خاصی به عنوان ورودی فرمان برای مدار اعمال جریان به سیم پیچ ترمز در نظر گرفته شده که عملکرد آن به گونه ای است که در شرایط غیرفعال بودن موتور، سبب قطع جریان سبم پیچ ترمز و قفل شدن موتور می شود.
-
نکته آموزشی:
خروجی های Open collector یا Open drain در سنسورها یا IC های دیجیتال را می توان به هم متصل کرد و مجموعه خروجی ها با یک مقاومت Pull up به تغذیه مجاز وصل می شوند که در این حالت هر خروجی که فعال باشد، باعث Low شدن خروجی کلی خواهد شد. به این آرایش wired-AND هم گفته می شود. لازم به یادآوری است که یک سری از میکروکنترلرها هم برای پورت های خود از این نوع خروجی پشتیبانی می کنند.
-
توصیه ای برای موفقیت در استخدام:
یک روش پیشنهادی برای موفقیت در استخدام در مجموعه هایی که توانایی واقعی شما مورد نظر آنهاست این است که با صرف زمان کافی برای به ثمر رساندن نمونه هایی از پروژه های قابل توجه و پیشرفته وقت بگذارید و بعد از به نتیجه رساندن آنها، در مصاحبه های حضوری نمونه ساخته شده و در حال کار پروژه خود را ارائه کنید. این روش در مواردی می تواند تاثیر زیادی روی کارفرما به جهت احراز توانایی های واقعی شما داشته باشد. در ارسال رزومه ها هم ضمیمه کردن عکس و فیلم و سایر اطلاعات در مورد پروژه های انجام شده می تواند بسیار موثر باشد.

-
نکته ای در استفاده از IC هایی مانند ADM485 و نظایر آن برای ارتباط rs485:
در استفاده از این IC ها معمول است که برای کنترل جهت ارتباط تنها با یک پین میکروکنترلر، پین های 2 و 3 به هم متصل شوند که در هنگام ارسال، این دو پین از طرف میکروکنترلر 1 و در هنگام دریافت 0 می شوند. با توجه به اینکه در این روش پین RO که به rx میکروکنترلر متصل می شود در هنگام ارسال دیتا از طرف میکروکنترلر در وضعیت High Z قرار می گیرد، به منظور جلوگیری از دریافت اطلاعات اشتباه در این محدوده زمانی به واسطه نویز، از دو روش می توان استفاده کرد. مورد اول قرار دادن مقاومت Pull up بصورت داخلی یا خارجی روی خط rx است و بصورت نرم افزاری هم می توان در هنگام ارسال از طرف میکروکنترلر، گیرنده USART را کلا غیر فعال و در فاز دریافت مجددا فعال کرد.

-
نکته آموزشی:
اسیلاتورهای RC داخلی در شماره های مختلف AVR دارای ساختارهای مختلف به لحاظ طراحی هستند و عملکرد آنها نسبت به تغییرات دما یکسان نیست. بنابراین در برخی شماره ها فرکانس اسیلاتورهای داخلی با افزایش دما کاهش می یابد (مانند ATmega8 و ATmega16 و ATmega32 و ATmega64) و در برخی از شماره های دیگر فرکانس آنها با افزایش دما افزایش می یابد (مانند ATtiny13 و ATmega48 و ATmega2560).

-
در Application Note منتشر شده از طرف شرکت Atmel به نام AVR1000 در مورد برنامه نویسی به زبان C برای خانواده XMEGA، نکات مفید و سودمندی درباره نحوه برنامه نویسی C ذکر شده که مطالعه آن به کسانی که قصد برنامه نویسی به این زبان برای میکروکنترلرها را دارند، توصیه می شود:
http://www.atmel.com/Images/doc8075.pdf

-
نقل یک تجربه عملی:
در هنگام شستشوی مدار چاپی، ریختن حلال های استفاده شده برای شستشو روی سوییچ های Push button و نفوذ آن به محل تماس کنتاکت ها معمولا باعث خرابی سوییچ می شود.

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

-
قلاویز زنی هیت سینک های آلومینیومی:
برای نصب قطعات قدرت مانند mosfet و igbt و scr و غیره روی هیت سینک های آلومینیومی که دارای ضخامت کافی باشند، به غیر از استفاده از پیچ و مهره می توانیم از روش قلاویز کردن آلومینیوم هم استفاده کنیم. برای کسانی که با این روش آشنا نیستند، شیوه کار بصورت فهرست وار ذکر می شود:
1- ابتدا محلی را که قرار است قلاویز زده شود با سنبه نشان و چکش علامت می زنیم.
2- بوسیله دریل نصب شده روی پایه دریل و مته ای با قطر کوچکتر از قطر پیچ، محل مورد نظر را سوراخ می کنیم. برای هر سایز قلاویز مطابق جداول موجود، یک سایز مته مشخص شده که با توجه به کاربردهای الکترونیکی که پیچ های با قطرهای 3 و 4 میلیمتر معمولا جوابگو هستند از مته های زیر استفاده می کنیم:
مته 2.5 میلیمتر برای پیچ 3 میلیمتر
مته 3.3 میلیمتر برای پیچ 4 میلیمتر
3- قلاویز با سایز مناسب و از نوع ماشینی را روی پیچ گوشتی های برقی یا دریل هایی که دارای دور کم و قابلیت چپ گرد و راست گرد هستند نصب می کنیم. سپس سر قلاویز را به روغن آغشته می کنیم و عملیات قلاویز زنی را در دو مرحله رفت و برگشت انجام می دهیم.
4- بعد از پلیسه گیری می توان از محل قلاویز شده مانند مهره استفاده کرد و قطعات الکترونیک را بوسیله پیچ در آن محل نصب کرد.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)

-
نگهداری اطلاعات در حافظه های flash و eeprom میکروکنترلرها دارای یک محدودیت زمانی است که معمولا حداقلی برای این زمان بر حسب محدوده دما از طرف کارخانه سازنده اعلام می گردد. به عنوان مثال شرکت Atmel زمان نگهداری اطلاعات برای برخی از شماره های AVR را حداقل 100 سال در دمای 25 درجه یا 20 سال در دمای 85 درجه ذکر کرده است. برای XMEGA هم حداقل 100 سال در دمای 25 درجه یا 25 سال در دمای 55 درجه ذکر شده است. یا به عنوان مثال دیگر در میکروکنترلرهای سری LPC1788 زمان نگهداری اطلاعات برای حافظه های flash و eeprom در محدوده دمای منفی 40 درجه تا 85 درجه در صورت اتصال میکروکنترلر به تغذیه حداقل 10 سال و در صورت عدم اتصال به تغذیه این زمان برای حافظه flash حداقل تا 20 سال ذکر شده است.

شهریور

پاسخ به چند سوال متداول درباره وقفه ها در AVR:
سوال: آیا بین وقفه های AVR اولویتی وجود دارد؟
پاسخ: در AVR وقفه هایی که دارای آدرس بردار کوچکتری در حافظه flash هستند نسبت به وقفه های دارای آدرس بردار وقفه بزرگتر، در شرایط درخواست همزمان دارای اولویت هستند. بنابراین اگر دو وقفه بصورت همزمان درخواست شوند، وقفه ای پذیرفته می شود که بردار وقفه آن دارای آدرس کوچکتری در حافظه flash باشد. اما تعیین اولویت بصورتی که در برخی میکروکنترلرهای دیگر مانند XMEGA قابل تعریف است در AVR وجود ندارد.
سوال: آیا امکان پذیرش وقفه در وقفه وجود دارد؟
پاسخ: در AVR با پذیرش هر وقفه، بیت I در SREG که مجوز سراسری وقفه است بصورت خودکار صفر می شود و در پایان وقفه مجددا یک می شود که در این شرایط پذیرش هر وقفه جدید تا پایان وقفه جاری ممکن نیست. اما با اجرای دستورالعمل ها می توان بیت I را در روتین وقفه بصورت نرم افزاری یک کرد که در این صورت امکان پذیرش وقفه دیگری در هنگام اجرای وقفه جاری وجود دارد. نکته قابل ذکر این است که بعد از پذیرش وقفه جدید و اتمام روتین آن، اجرای روتین وقفه جاری ادامه پیدا خواهد کرد.
سوال: اگر در هنگام اجرای یک وقفه، تقاضای وقفه دیگری ایجاد شود آیا ممکن است این تقاضا توسط CPU دیده نشود و به اصطلاح وقفه از بین برود؟
پاسخ: وقفه ها در AVR بصورت کلی دو دسته هستند. دسته اول که اکثریت وقفه ها را تشکیل می دهند دارای یک پرچم (Flag) درخواست وقفه هستند. حتی در صورتی که وقفه ای در حال اجرا باشد، درخواست این نوع وقفه ها بعد از اتمام وقفه جاری به دلیل یک ماندن پرچم وقفه، از طرف CPU دیده می شود و تقاضای وقفه به اصطلاح از بین نمی رود. اما نوع دومی از درخواست وقفه هم مانند وقفه خارجی پورت ها در سطح Low وجود دارد که علیرغم وجود پرچم درخواست وقفه برای وقفه های خارجی، اما در صورت تنظیم منبع درخواست وقفه روی سطح Low تاثیری روی پرچم وقفه ایجاد نمی شود. بنابراین اگر در هنگام درخواست این نوع وقفه ها وقفه دیگری در حال اجرا باشد و تا قبل از پایان آن، درخواست وقفه از طرف منبع آن متوقف شود (مثلا برای سطح Low پین به وضعیت High بر گردد) در اینصورت چنین در خواستی از طرف CPU دیده نخواهد شد و به اصطلاح وقفه از بین می رود. این مورد البته جنبه استثنا دارد و فقط شامل وقفه هایی است که پرچم وقفه برای آنها عمل نمی کند.
سوال: آیا ممکن است به دلیل درخواست های مکرر چند منبع وقفه، برخی از آنها اصلا پذیرفته نشوند؟
پاسخ: در شرایطی پاسخ به این سوال می تواند مثبت باشد. اگر وقفه ای با آدرس بردار کوچکتر در حافظه flash به صورت مکرر درخواست شود و با برگشت از روتین وقفه پرچم وقفه یک باشد و بلافاصله وقفه دیگری اجرا شود، در این شرایط وقفه های با آدرس بردار بزرگتر امکان پذیرش از طرف CPU را نخواهند داشت.
سوال: آیا وقفه های پشت سر هم می تواند اجرای برنامه در حلقه اصلی را متوقف کند؟
پاسخ: بعد از بازگشت از هر وقفه، CPU حداقل یک دستورالعمل اسمبلی را اجرا می کند. بنابراین اجرای وقفه ها بصورت مکرر و پشت سرهم علیرغم اینکه می تواند باعث کند شدن اجرای حلقه اصلی شود اما نمی تواند اجرای آن را متوقف کند.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)

-
مزیتی که صرف نظر از امکانات سحت افزاری برای برخی از میکروکنترلرهای در دسترس نسبت به برخی دیگر وجود دارد و در کاربردهای صنعتی و حساس باید مد نظر قرار بگیرد این است که برای یکسری از خانواده ها، گزارش ها و مشاهدات زیادی مبنی بر وجود میکروکنترلرهای تقلبی و Clone وجود دارد. در حالی که برای برخی خانواده ها تاکنون موردی مبنی بر وجود نسخه های تقلبی مطرح نشده است.
-
نکته طراحی مدار:
قرار دادن یک خازن با ظرفیت کم (مثلا 1nF) روی پین های فعال وقفه خارجی می تواند باعث جلوگیری از وقفه های ناخواسته ناشی از نویز شود.

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

نمونه ای از مزیت های XMEGA نسبت به AVR:
در برخی از کاربردها لازم است که در تولید pwm علاوه بر بالا بودن فرکانس حامل (Carrier)، دقت (Resolution) در pwm هم تا حد امکان بالا باشد. اما بالا بردن دقت pwm، برای فرکانس حامل محدودیت ایجاد می کند. مثلا در AVR با فرض کلاک 16MHz و در مد Fast pwm، برای حداکثر دقت ممکن که 16 بیتی است، فرکانس حامل برابر 16000000/65536 یا 244.14 هرتز خواهد بود که ممکن است در یک سری از کاربردها کافی نباشد. اما در XMEGA  با استفاده از مد High Resolution Plus و در کلاک 32MHz برای CPU امکان اعمال کلاک موثر تا 256MHz به تایمر وجود دارد که در تولید شکل موج pwm در مقایسه با AVR می تواند فرکانس حاملی تا 16 برابر یعنی 3906.25 هرتز در دقت 16 بیتی را ایجاد کند.
-

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

-
نکاتی از زبان برنامه نویسی C:
برای مقداردهی به اعضای یک struct یک روش سریع و خلاصه این است که در یک union، آرایه ای معادل با اعضای struct را تشکیل دهیم و مقداردهی را بجای struct به آرایه انجام دهیم. مثال در کامپایلر IAR:
union
{
unsigned char mystruct_array[10];
struct
{
  unsigned long a;
  unsigned char b;
  unsigned char c;
  unsigned long d;
}mystruct;
};
حال مثلا برای مقداردهی به اعضای mystruct به منظور مقداردهی اولیه از eeprom می توان در یک حلقه for به آرایه mystruct_array مقداردهی کرد که در صورت طولانی بودن struct این روش بسیار خلاصه تر از مقداردهی به تک تک اعضا است.
-
نقل یک تجربه:
یک باور عمومی در بین اکثر دانشجویان و فارغ التحصیلان برق و الکترونیک وجود دارد مبنی بر اینکه بسیاری از واحدهای ریاضی و پایه ای که در دانشگاه تدریس می شوند، در عمل هیچ کاربردی ندارند و گذراندن این واحدها نوعی وقت تلف کردن است. اما برخلاف این نظر در یک سری از پروژه های سنگین و جدی نیاز اساسی به همین مبانی پایه و روابط و معادلات ریاضی بوجود می آید که اینگونه صورت مسئله ها و پروژه ها معمولا از ارزش اقتصادی بالایی هم برخوردار هستند.
-

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

طرح یک موضوع برای بررسی:
با توجه به قابلیت ویژه میکروکنترلر XMEGA برای ظاهر کردن clkper4 روی پین های خاص که فرکانس آن حداکثر 128MHz است و از طریق تنظیم pll هم می توان به فرکانس های مختلفی رسید، موضوعی که در این رابطه جای بررسی و کار دارد بهره بردن از این قابلیت برای استفاده از XMEGA به عنوان یک فرستنده RF است. مثلا به صورت نرم افزاری می توان خروجی پین را قطع و وصل کرد و یک مدولاسیون ASK را ایجاد کرد. یا برای پیاده سازی مدولاسیون FSK از طریق انتخاب منبع کلاک از اسیلاتور RC داخلی و تغییر بایت calibration یا اعمال کلاک خارجی و تغییر فرکانس آن اقدام کرد. در این رابطه آزمایشی در سال های گذشته انجام شد که صدای تقویت شده از میکروفن بصورت نه چندان واضح روی یک گیرنده FM دریافت شد. به هر حال بدینوسیله این موضوع مطرح شد تا دوستان در صورت علاقه روی کاربردهای این قابلیت کار کنند.
-

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

همانطور که در بخش 65 فیلم آموزش XMEGA توضیح داده می شود، با توجه به حداکثر دمای مجاز 85 درجه برای XMEGA و علیرغم دقت کم سنسور دمای داخلی، برای فعال کردن شرایط حفاظت و آلارم و مانند آن در صورت افزایش دمای غیر مجاز و فراتر از ظرفیت میکروکنترلر می توان از اندازه گیری که در هنگام تولید میکروکنترلر توسط سنسور داخلی در دمای 85 درجه انجام شده و در حافظه ذخیره شده استفاده کرد.
-

یک صورت مسئله ساده برای به چالش کشیدن ابزارهای برنامه نویسی:
برای به چالش کشیدن ابزار های مختلف برنامه نویسی و سنجش آنها، صورت مسئله ساده ای مطرح می شود که در آینده پاسخ آن قرار داده خواهد شد.
در یکی از شماره های میکروکنترلر AVR به دلخواه و با فرض کلاک 16MHz محتوای یک پورت ورودی باید بصورت مداوم خوانده شود و بیت های شماره 0 و 2 و 4 و 6 و 7 خوانده شده از پورت ورودی بعد از Not شدن به ترتیب در بیت های شماره 5 و 0 و 1 و 3 و 4 پورت خروجی دیگری قرار بگیرد. در این صورت مسئله به دلیل نیازی که وجود دارد لازم است میکروکنترلر این عملیات را یک میلیون بار در ثانیه انجام دهد و سرعت کمتر از این تعداد نمونه قابل قبول نیست. به عبارت دیگر برای هر سیکل خواندن پورت ورودی و انتقال Not شده بیت ها به پورت خروجی با ترتیبی که توضیح داده شد، cpu در مجموع تنها 16 سیکل کلاک فرصت در اختیار دارد و باید یک میلیون بار در ثانیه این عملیات را انجام دهد. حال برای محک زدن ابزارهای برنامه نویسی و سنجش این مسئله که آیا با هر کامپایلری می توان از حداکثر ظزفیت یک میکروکنترلر استفاده کرد، سعی کنید این صورت مسئله را با هر ابزاری که به آن مسلط هستید (مانند بسکام و کدویژن و ...) انجام دهید و نتیجه را از طریق شبیه سازی یا بصورت عملی تست کنید و ببینید آیا قابلیت رسیدن به چنین سرعتی از طریق ابزار مورد استفاده وجود دارد یا نه. لازم به توضیح است که میکروکنترلر AVR با فرض کلاک 16MHz از توانایی لازم برای انجام چنین عملیاتی به تعداد یک میلیون بار در ثانیه برخوردار است و عدم توانایی در رسیدن به چنین سرعتی تنها می تواند ناشی از ابزار و کامپایلر مورد استفاده برای کد نویسی و نه قابلیت AVR باشد.
-

چگونه می توان از طریق PC با usart میکروکنترلر با فرمت 9 بیتی ارتباط برقرار کرد:
برای برقراری ارتباط PC از طریق پورت com با usart میکروکنترلر با طول دیتای 9 بیتی باید به این نکته توجه کنیم که در سمت PC در تنظیمات بیت Parity علاوه بر وضعیت های Odd و Even و None، دو وضعیت Mark و Space هم قابل انتخاب هستند که در صورت انتخاب گزینه Mark، بیت نهم از طرف PC در وضعیت 1 و در صورت انتخاب Space بیت نهم در وضعیت 0 ارسال می شود و با این روش می توان بیت نهم ارسال شده از طرف PC را تعیین کرد.
-
مثالی از vb6 برای نحوه تنظیم Parity در ارتباط 9 بیتی:
پیرو مطلب قبلی (https://telegram.me/KnowledgePlus/273) در مورد ارتباط 9 بیتی، با فرض Baud Rate=9600 bps و Data=8 و Stop bit=1 برای ارسال بیت نهم برابر با 1 می توان این تنظیم را قبل از ارسال از طرف PC انجام داد:
MSComm1.Settings = "9600,m,8,1"
و برای ارسال بیت نهم برابر با 0 می توان این تنظیم را قبل از ارسال از طرف PC انجام داد:
MSComm1.Settings = "9600,s,8,1"
و در طول برنامه بر حسب نیاز با تغییر بین این دو وضعیت بیت نهم را 0 یا 1 ارسال کرد.
-

استفاده از ترکیب مقایسه کننده آنالوگ و DAC بجای ADC های سریع:
در برخی از کاربردها که سنجش سریع وضعیت یک سیگنال آنالوگ نسبت به یک سطح ولتاژ متغیر مورد نظر باشد، بجای استفاده از ADC های سریع می توان از ترکیب مقایسه کننده آنالوگ با DAC استفاده کرد. در این حالت DAC سطح ولتاژ مورد نیاز به عنوان مبنای مقایسه را تعیین می کند که خروجی آن هم می تواند بسته به نیاز تغییر کند. مقایسه کننده آنالوگ هم که نسبت به ADC های سریع دارای قیمت بسیار کمتری است، ولتاژ ورودی را با خروجی DAC مقایسه می کند که با این روش می توان با هزینه کم و سرعت بالا وضعیت یک سیگنال نسبت به یک ولتاژ مبنا را از نظر کوچکتر یا بزرگتر بودن تعیین کرد. از این تکنیک در بسیاری از IC های درایور موتور (مثلا A4988) برای فیدبک گرفتن از جریان و کنترل آن استفاده می شود.
-

حداکثر سرعت تغییرات پورت در AVR چقدر است؟

در خانواده AVR با استفاده از دستور اسمبلی OUT می توان تنها در یک سیکل کلاک cpu، وضعیت یک پورت را تغییر داد. مثلا در کد زیر در یک مرحله از برنامه در فاصله 6 سیکل کلاک، 6 بار وضعیت کلیه بیت های PORTA تغییر می کنند و 0 و 1 می شوند :
CLR    R16
SER    R17
...
OUT    PORTA,R16
OUT    PORTA,R17
OUT    PORTA,R16
OUT    PORTA,R17
OUT    PORTA,R16
OUT    PORTA,R17
....
با استفاده از دستورات SBI و CBI هم در برخی از شماره ها در دو سیکل و در برخی شماره های دیگر تنها در یک سیکل کلاک cpu می توان وضعیت یک پین را set یا clear کرد. برای اطلاع از زمان اجرای این دستورالعمل ها باید به بخش Instruction Set Summary در datasheet شماره مورد نظر مراجعه شود. مثال:
SBI    PORTA,0
CBI    PORTC,7
-
نقل یک تجربه:
در رشته الکترونیک آن گروهی که بدون کسب مهارت و تجربه در آموخته های قبلی، فقط به دنبال عناوین و موضوعات جدید هستند و از عمق کافی در دانسته هایشان برخوردار نیستند و به اصطلاح از این شاخه به آن شاخه می پرند، معمولا افراد چندان موفقی نیستند و بعد از مدتی هم خسته می شوند و به نتیجه مشخصی هم نمی رسند. در نقطه مقابل کسانی هستند که سعی می کنند ابتدا همان هایی را که یاد گرفته اند به مرحله کاربرد و اجرا برسانند و بعد اگر لازم باشد به موضوعات جدید می پردازند. اینگونه افراد روی هر موضوعی بر اساس نیازهای واقعی و کاربردی وقت می گذارند و صرف انرژی آنها برای هر سرفصل و عنوانی بصورت حساب شده و با برنامه و هدف مشخص است. این گروه که در اقلیت هم هستند معمولا از نظر کاری و اقتصادی به موفقیت های قابل توجهی نسبت به گروه اول دست پیدا می کنند.
-
معرفی یک نرم افزار مفید برای تبدیل فایل های محتوی data به آرایه معادل در C:
نرم افزار xxd.exe می تواند برای تبدیل اطلاعات موجود در فایل های حاوی data به آرایه معادل در زبان C مورد استفاده قرار بگیرد که این امکان برای پیاده سازی برخی از کاربردها مانند پخش صدا از روی flash میکروکنترلر و مواردی نظیر آن بسیار مفید است. اگر فرض کنیم فایل مبدا که اطلاعات آن قرار است به آرایه تبدیل شود دارای نام data.bin و فایل مقصد که آرایه معادل بصورت متنی در آن ذخیره می شود دارای نام data.c باشد، برای تبدیل باید در خط فرمان دستور زیر را اجرا کنیم:
xxd -i data.bin data.c
بعد از ایجاد فایل data.c می توان آرایه موجود در آن را کپی کرد و به شکل مناسب در سورس برنامه اصلی قرار داد.
لینک دانلود فایل بصورت zip شده:
http://knowledgeplus.ir/userfiles/xxd.zip
توضیح بیشتر:
http://www.avrfreaks.net/comment/642033#comment-642033

-
ایجاد dead time بصورت نرم افزاری در میکروکنترلرهایی که فاقد امکان اضافه کردن آن به شکل موج هستند:
برای اعمال فرمان به سوییچ های نیمه هادی در مداراتی مانند پل های قدرت باید به سیگنال های متقارن، dead time اعمال شود تا به سوییچ های موجود در هر بازو آسیبی وارد نشود. اما در برخی از میکروکنترلرها مانند AVR، تایمرها دارای قابلیت اضافه کردن dead time در تولید شکل موج نیستند. با استفاده از روش نرم افزاری که در ادامه توضیح داده می شود در این نوع میکروکنترلرها هم می توان این اثر را در شکل موج ها ایجاد کرد. برای این کار باید ابتدا دو واحد تولید شکل موج در یک تایمر را به گونه ای تنظیم کنیم که منطق سیگنال های خروجی آنها مخالف یکدیگر باشند و مثلا اگر یک خروجی در هنگام افزایش مقدار تایمر در شرایط compare match از high به low تغییر وضعیت می دهد، خروجی دوم در شرایط compare match از low به high تغییر وضعیت بدهد. روش نرم افزاری برای ایجاد dead time در این وضعیت به این ترتیب است که مقادیر قرار گرفته در رجیسترهای compare نباید با یکدیگر برابر باشند. بلکه بسته به کلاک تایمر و میزان dead time مورد نیاز باید با هم اختلاف داشته باشند. مثلا اگر کلاک تایمر برابر 2MHz باشد، برای رسیدن به dead time=1us باید 2 واحد اختلاف در مقدار دو compare register وجود داشته باشد. به عنوان مثال عددی اگر compare register در یک کانال با 100 مقداردهی شده باشد و خروجی این کانال در هنگام افزایش تایمر در عبور از مقدار 100 از high به low تغییر وضعیت بدهد، برای کانال دوم باید مقدار 102 در compare register قرار بگیرد تا به میزان دو کلاک معادل با 1us هر دو خروجی low باشند و بعد با گذر مقدار تایمر از 102، خروجی دوم high شود. در این مثال در هنگام کاهش تایمر و گدر از 102 به 101 ابتدا خروجی دوم low می شود و باز به میزان 1us هر دو خروجی low می مانند و در ادامه خروجی اول در گذر از 100 به 99 مجددا high می شود. برای سایر مقادیر dead time هم می توان از همین روش با ایجاد اختلاف مناسب در مقادیر compare register استفاده کرد.
-

معرفی چند میکروکنترلر 6 پین:
ATtiny4-ATtiny5-ATtiny9-ATtiny10-PIC10F200-PIC10F202-PIC10F204-PIC10F206-PIC10F220-PIC10F222-PIC10F320-PIC10F322

مهر


نقل یک تجربه عملی:
در هنگام استفاده از اسیلاتور داخلی میکروکنترلرهای smd که کریستال و دو خازن به آن متصل می شوند، نفوذ روغن لحیم یا روغن فلکس و مانند آن بین پایه ها و زیر میکروکنترلر و عدم شستشوی کامل این ناحیه باعث اختلال در نوسان اسیلاتور و ایجاد مشکل در عملکرد میکروکنترلر می شود.
-

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

پاسخ سوال مطرح شده در پست  https://telegram.me/KnowledgePlus/271
اجرای دستورات زیر مجموعا در هر 16 سیکل کلاک cpu محتوای پورت A را می خواند و بیت های شماره 0 و 2 و 4 و 6 و 7 خوانده شده را بعد از Not کردن به ترتیب در بیت های شماره 5 و 0 و 1 و 3 و 4 پورت B قرار می دهد.
loop:   
IN  R16,PINA
COM  R16
IN  R17,PORTB
BST  R16,0
BLD  R17,5
BST  R16,2
BLD  R17,0
BST  R16,4
BLD  R17,1
BST  R16,6
BLD  R17,3
BST  R16,7
BLD  R17,4
OUT  PORTB,R17
RJMP  loop
هدف ار مطرح کردن این صورت مسئله، نمایش تفاوت زبان های برنامه نویسی در پیاده سازی حداکثر قابلیت یک میکروکنترلر است. در این مثال می توان مشاهده کرد که AVR توانایی انجام صورت مسئله مطرح شده را بر مبنای مجموعه دستورالعمل هایش دارد و اگر با برنامه نویسی به زبان های C و BASIC  و ... نمی توان به چنین قابلیتی رسید، اشکال در روش و ابزار برنامه نویسی و نه در قابلیت AVR است. پس این گونه نیست که زبان های برنامه نویسی مختلف لزوما دارای عملکرد یکسان و هم رده ای نسبت به یکدیگر باشند.
-

در درایورهای استپر موتور صنعتی معمولا حفاظتی وجود دارد که چنانچه برای مدت معینی - مثلا 0.5 تا 1 ثانیه - پالسی به درایور وارد نشود و موتور ثابت باشد، جریان موتور توسط درایور به میزان مشخصی (معمولا نصف جریان تنظیم شده) کاهش می یابد تا موتور بیش از حد داغ نشود.
-

نکته ای در مورد طول پایه های برخی از قطعات قدرت:
در بعضی از قطعات قدرت مانند انواعی از دیودهای جریان بالا که امکان نصب روی Heat sink را ندارند، پایه های خارج شده از قطعه به نوعی نقش Heat sink را به عنوان مسیری برای دفع دما ایفا می کنند. به عنوان مثال در مشخصات دیود BYV28 سه منحنی دما بر حسب جریان و به ازای طول های مختلف پایه های دیود رسم شده که در جریان 3.5A به ازای طول پایه های 20mm، دما حدود 50C و به ازای طول پایه های 10mm دما بیش از 90C ذکر شده است که نشان دهنده تاثیر طول پایه ها در افزایش دمای دیود می باشد. به همین دلیل طول پایه ها در برخی شرایط نباید بیشتر از یک حد کوتاه شوند تا قطعه بیش از حد داغ نشود.

-
روشی برای ذخیره سازی اطلاعات در هنگام قطع تغذیه:
در برخی از کاربردهای مبتنی بر میکروکنترلرها ممکن است لازم باشد که در هنگام قطع ناگهانی تغذیه اصلی، بخشی از اطلاعات ناشی از وضعیت فعلی سیستم در حافظه های غیر فرار مانند eeprom یا flash ذخیره سازی شوند تا در راه اندازی بعدی بتوانند مورد استفاده قرار بگیرند. در این روش طراحی تغذیه باید بگونه ای باشد که با قطع تغذیه اصلی (مثلا برق شهر) زمان کافی در اختیار میکروکنترلر باشد تا بتواند عملیات ذخیره سازی اطلاعات حساس را انجام دهد.
یکی از راه های تحقق این مسئله این است که خازن های بعد از پل دیود و قبل از رگولاتورها به حد کافی بزرگ در نظر گرفته شوند تا بتوانند قبل از تخلیه شدن شان زمان کافی برای نوشتن اطلاعات توسط میکروکنترلر را تامین کنند. در این شرایط میکروکنترلر می تواند از طریق مدارات مناسب از تغذیه اصلی یا ولتاژ این خازن ها فیدبک بگیرد و به محض تشخیص قطع تغذیه و در فاصله زمانی که خازن های ورودی هنوز ولتاژ کافی را تامین می کنند، روتین مناسب برای ذخیره سازی اطلاعات مورد نظر را اجرا کند. از همین روش می توان در کاربردهایی که لازم است اطلاعاتی به تعداد دفعات زیاد در eeprom ذخیره شوند و تعداد این نوشتن ها فراتر از عمر eeprom است به این صورت استفاده کرد که اطلاعات بجای eeprom در ram ذخیره شوند و تنها در زمان قطع تغذیه به eeprom منتقل شوند که در این صورت مشکل محدودیت در تعداد دفعات نوشتن در eeprom هم بر طرف می شود.

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

برای طراحی و نصب پنل در پروژه ها و دستگاه هایی که به تعداد کم و بصورت نمونه ساخته می شوند، یک روش ساده و نسبتا ارزان به شرح زیر است:
1- ابتدا بوسیله ابزارهای مناسب روی سطح پنل دستگاه، جای کلید و کانکتور و ولوم و سایر موارد لازم را در می آوریم.
2- طرح مورد نظر خود را در یک نرم افزار طراحی مانند Coreldraw بصورت یک به یک و در ابعاد دقیق و با اشکال و رنگ های دلخواه طراحی می کنیم.
3- از طرح فوق بسته به نیاز بصورت رنگی یا سیاه و سفید پرینت می گیریم.
4- روی سطح بیرونی طرح، سلفون شفاف چسب دار و پشت آن را چسب دو طرفه می چسبانیم. در مواردی که LCD و 7segment و نظایر آن وجود داشته باشد باید ابتدا دور آنها را در طرح پرینت گرفته شده برش دهیم و علاوه بر چسباندن سلفون روی طرح، در وجه پشت آن هم سلفون بچسبانیم و در مرحله بعد روی سلفون وجه پشت، در نواحی غیر از داخل کادر LCD و 7segment چسب دو طرفه بچسبانیم.
5- دور طرح را با تیغ برش می دهیم. در محل نصب قطعات روی پنل هم باید برش مناسب انجام داده شود.
6- پوشش چسب دو طرفه در پشت طرح را بر می داریم و طرح را در محل خود روی جعبه دستگاه می چسبانیم.
7- قطعاتی مانند کلید ها و کانکتور ها و غیره را در محل خود نصب می کنیم.
(تاکید به جهت فرهنگ سازی: لطفا بصورت فوروارد و با ذکر منبع منتشر شود)

-
چند سال پیش مجموعه مطالبی در مورد کار و اشتغال در برق و الکترونیک در انجمن ECA نوشته شد که مطالعه آن برای دوستانی که هنوز در ابتدای مسیر کاری خود هستند ممکن است مفید باشد:
http://www.eca.ir/forums/thread22602.html

-
معرفی یک کتاب مفید برای مباحث طراحی آنالوگ:
نام کتاب: A Practical Introduction to Electronic Circuits
مولف: Martin Hartley Jones
این کتاب توسط بهزاد رضوی و همایون نیکوکار با نام "روشهای الکترونیک از تئوری تا عملی" ترجمه شده است. اما ترجمه آن احتمالا منطبق با آخرین ویرایش کتاب نیست.
-

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

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


مطابق بررسی های مفهومی و آزمایش های عملی انجام شده، این جدول در فصل DMAC در Manual های XMEGA باید تصحیح شود که این مطلب در انجمن AVRFreaks و به بخش پشتیبانی Atmel اعلام شد.
-
برای پیاده سازی الگوریتم های فارسی نویسی و امکان تایپ مستقیم در محیط نرم افزار، اطلاع از این امر می تواند مفید باشد که نرم افزار Keil از UNICODE پشتیبانی نمی کند:
http://www.keil.com/support/docs/2769.htm
-
روشی برای تشخیص IC های Renew:
برای تشخیص IC های Renew که در واقع قطعات دست دومی هستند که در ظاهر نو به نظر می رسند، یک روش که بعضی مواقع جواب می دهد، توجه به چاپ زیر IC ها (در صورت وجود) و مقایسه IC های موجود در یک رول یا پکیج است که وجود تفاوت می تواند نشان دهنده Renew بودن قطعات باشد.

آبان


تاثیر پذیری متفاوت پکیج های مختلف میکروکنترلرها از گرد و خاک:
در صورت استفاده از میکروکنترلرهایی با پکیج هایی مانند LQFP در مداراتی که نسبت به گرد و خاک ایزوله نیستند و در محیط های پر گرد و خاک و حاوی براده های فلز معلق در فضای محیط های صنعتی نصب می شوند، امکان ایجاد مشکل و اختلال بر اثر نشستن گرد و خاک و براده های فلزات در بین پین ها برای شماره هایی که دارای پین های به هم نزدیک تر و فشرده تری هستند نسبت به شماره های با فاصله پین های بیشتر، افزایش می یابد (مثلا ATMEGA2560 نسبت به ATMEGA128 در خانواده AVR).
-
روشی برای مقایسه محتوای فایل ها:
بعضی مواقع این نیاز بوجود می آید که دو فایل سورس یا Hex را که دارای سایزهای مشابه هستند به لحاظ محتوا با هم مقایسه کنیم و بررسی کنیم که آیا تفاوتی در آنها وجود دارد یا نه. برای این کار در خط فرمان کامپیوتر (Command Line یا Command Prompt) می توانیم از دستور fc استفاده کنیم. به عنوان مثال اگر مقایسه دو فایل test1.hex و test2.hex مورد نظر باشد، با فرض موجود بودن این دو فایل در فولدری که فرمان در آن اجرا می شود می توان نوشت:
fc test1.hex test2.hex
که برابری محتوای دو فایل و یا وجود تفاوت در آنها با اجرای این دستور اعلام می شود. در صورت وجود فایل ها در مسیرهای متفاوت می توان آدرس آنها را در متن دستور ذکر کرد.
-
نکته ای در تعمیرات بردهای الکترونیک:
بسیار مشاهده شده که در کنتاکت های رله هایی که در هنگام قطع و وصل جرقه می زنند، به دلیل ایجاد یک لایه با مقاومت بالا روی سطح کنتاکت، مقاومت اهمی کنتاکت در هنگام اتصال به حدی افزایش پیدا کرده که علیرغم سالم بودن ظاهری رله در عملکرد مدار اختلال ایجاد شده است. بنابراین قطع و وصل کنتاکت های یک رله لزوما دلیلی برای سالم بودن آن نیست و ممکن است به دلیل ایجاد مقاومت بالا در محل کنتاکت ها، رله نیاز به تعویض یا لایه برداری از سطح کنتاکت ها را داشته باشد.

-
انواع قطعات غیر original موجود در بازار و عملکرد آنها:
آی سی ها و سایر قطعات غیراصلی موجود در بازار را می توان به چند گروه مختلف تقسیم کرد:
1- دسته اول قطعاتی هستند که توسط کارخانه سازنده اصلی تولید نشده اند و به اصطلاح تقلبی هستند که هر چند ممکن است در شرایطی این نوع از قطعات پاسخگوی نیاز مورد نظر باشند. اما تضمینی برای عملکرد صحیح آنها وجود ندارد.
2- دسته دوم قطعاتی هستند که توسط کارخانه سازنده اصلی تولید شده اند، اما به دلیل وجود مشکل در پروسه تولید به اصطلاح reject شده اند و باید معدوم می شده اند. اما به هر دلیلی به بازار راه پیدا کرده اند که این قطعات معمولا در عملکرد خود دچار مشکلاتی هستند. چاپ روی این قطعات ممکن است تغییر داده شده باشد.
3- دسته سوم قطعاتی هستند که هر چند توسط کارخانه اصلی تولید شده اند، اما از نوع دست دوم و used هستند که بسته به نوع قطعه ممکن است renew هم باشند و پایه های آنها مرتب شده باشد و مجددا روی آنها چاپ خورده باشد. این قطعات ممکن است به خوبی عمل کنند و مسئله خاصی نداشته باشند. اما به دلیل دست دوم بودن احتمال وجود مشکل در عملکرد آنها وجود دارد.
4- دسته چهارم قطعاتی هستند که توسط کارخانه سازنده اصلی تولید شده اند و کاملا هم سالم هستند. اما نوشته های روی آنها تغییر داده شده و شماره مدلی با پکیج مشابه و مشخصات بالاتر روی آنها چاپ شده است. مثلا ممکن است روی یک ATmega640 سالم و اصلی عبارت ATmega2560 که دارای پکیج و تعداد پین های مشابه و قیمت بالاتر است چاپ شده باشد. در این مثال در هنگام استفاده از امکانات اضافی میکروکنترلر که در واقع وجود ندارد (مثلا آدرس های بالای Flash)، عملکرد آن دچار مشکل می شود. یا مثلا ممکن است چاپ روی یک IGBT تغییر داده شده باشد و شماره قطعه ای با پکیج مشابه و حداکثر جریان یا ولتاژ بیشتری روی آن نوشته شده باشد.
با توجه به این توضیحات زمانی که بحث غیر original بودن یک قطعه مطرح می شود باید به این نکته توجه کنیم که قطعه مورد نظر در کدام طبقه بندی قرار می گیرد و منظور کدام یک از موارد مطرح شده است.
(تاکید به جهت فرهنگ سازی: لطفا بصورت فوروارد و با ذکر منبع منتشر شود)

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

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

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

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

-
تلفظ صحیح کلمه ripple:
کلمه ripple که در الکترونیک در ترکیباتی مثل ripple voltage یا ripple counter و مانند آن استفاده می شود، دارای تلفظ صحیح بصورت "ریپل" است. اما مشاهده می شود که به شکل گسترده و حتی در سطح معدودی از اساتید دانشگاه این کلمه به اشتباه "رایپل" نوشته یا تلفظ می شود که صحیح نیست.

-
معرفی چند اپتوکوپلر آنالوگ:HCNR200 - HCNR201 - IL300 - TIL300
-
یکی از دلایلی که اکثر اظهار نظرها در مباحث مطرح شده درباره بازده اقتصادی فعالیت در رشته الکترونیک، حاکی از نارضایتی و نالیدن از وضع بد کار در این رشته است این است که آن کسانی که درآمدهای سرشار و قابل توجهی از این رشته کسب می کنند، در این مباحث ساکت یا غایب هستند.
-
نکاتی از زبان برنامه نویسی C:
به دوستانی که پیگیر یرنامه نویسی به زبان C در سطح حرفه ای برای میکروکنترلرها هستند، توصیه می شود در مورد مبحث آرایه ای از ساختارها (array of structures)  و کاربرد عملی و اجرایی آن در برنامه نویسی میکروکنترلرها مطالعه و بررسی کنند.

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

آذر

قابل توجه کسانی که هنوز محصولاتی را با خانواده 8051 تولید می کنند:
میکروکنترلر ATmega8515 که یکی از شماره های قدیمی AVR است و هنوز هم در بازارهای جهانی عرضه می شود، از نظر محل Vcc و GND و پین های اتصال به کریستال و پین های پورت ها مشابه با شماره هایی مانند 89C51 است و تنها تفاوت اساسی در منطق پین Reset است که آن هم به سادگی قابل تغییر است. بنابراین در بردهای مبتنی بر 8051 های 40 پین و DIP با تغییراتی می توان از این شماره AVR به عنوان جایگزین 8051 استفاده کرد. از جمله نکات قابل ذکر در مورد این میکروکنترلر این است که علیرغم ضعیف تر بودن یکسری از سخت افزارهای داخلی نسبت به شماره هایی مثل ATmega16 و ATmega32، قابلیت اتصال به Ram خارجی را تا ظرفیت 64KB را دارد و تعداد پین های IO آن هم سه پین بیشتر از شماره هایی مثل Atmega32 است.

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

-
نکته طراحی مدار:
در اتصال مستقیم حافظه های SDC/MMC به میکروکنترلرهای با تغذیه 3.3v به روش spi، روی هر یک از پین های DI و DO یک مقاومت Pullup با مقدار 56KOhm تا Vcc قرار دهید.

-
تعداد سیم های استپر موتورها:
استپر موتور دو فاز و چهار فاز: 4 یا 5 یا 6 یا 8 سیم
استپر موتور سه فاز: 3 یا 4 یا 6 سیم
استپر موتور پنج فاز: 5 یا 6 یا 10 سیم

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

-
یکی از اشتباهات رایج در برقراری ارتباط آسنکرون با usart در AVR، استفاده از اسیلاتور RC داخلی به عنوان منبع کلاک است که در بسیاری از موارد به دلیل عدم دقت این اسیلاتور ارتباط قطع می شود و یا اطلاعات به صورت اشتباه ارسال و دریافت می شود.
-
نقل یک تجربه عملی:
در استفاده از برخی LCD های گرافیکی غیر اصلی و متفرقه با کنترل کننده ks0108 مشاهده شده که پیکسل های آنها بعد از مدتی کم رنگ می شوند تا حدی که رویت تصویر LCD به سختی ممکن است و تنظیم contrast هم تاثیری در برطرف شدن این وضعیت ندارد.

-
نکات آموزشی CNC:
در برنامه نویسی با G-code برای CNC، یک تفاوت بین کدهای G00 و G01  این است که در اجرای G00، حرکت خروجی لزوما روی یک خط مستقیم نیست و هر یک از محورها ممکن است بصورت مستقل و با حداکثر سرعت ممکن حرکت خود را انجام دهند. اما در اجرای G01 محورها بر اساس درونیابی (Interpolation) و با Feed rate مشخص شده به گونه ای حرکت می کنند که خروجی محورها روی یک خط مستقیم حرکت کند.

-
نکته طراحی مدار:
در هنگام سوییچ کردن جریان های بسیار بزرگ در یک بازه زمانی کوچک و با توجه به فرمول V=Ldi/dt، حتی در صورت کوچک بودن اندوکتانس معادل مسیر عبور جریان و به دلیل بزرگ بودن di/dt، این حاصلضرب مقدار قابل توجهی خواهد شد و می تواند پیک های ولتاژ لحظه ای را در دو سر مسیر عبور جریان بوجود آورد که در برخی کاربردها این پیک های ولتاژ لحظه ای می تواند مشکلاتی را در مدار ایجاد کند.
-

تصحیح دو اشتباه رایج درباره اسیلاتورهای داخلی AVR:
1- اصطلاح "کریستال داخلی" که گاهی برای اسیلاتور RC داخلی AVR بکار برده می شود صحیح نیست و در داخل میکروکنترلر، کریستالی وجود ندارد.
2- اسیلاتوری که با اتصال کریستال به میکروکنترلر فعال می شود در واقع در داخل میکروکنترلر قرار دارد و کریستال متصل شده به پین های میکروکنترلر تنها بخشی از مدار این اسیلاتور داخلی است. به عبارت دیگر کریستال معادل با اسیلاتور نیست و فقط موجب نوسان دقیق اسیلاتور داخلی می شود.
-

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

-
سوال برنامه نویسی:
در برنامه نویسی میکروکنترلرها برای عملیاتی مانند تنظیم پارامترها در کنترلرهای صنعتی و مانند آن در مواقعی لازم است که یکی از ارقام یک عدد در مبنای ده را استخراج کنیم. مثلا در عدد 1234567 بتوانیم هر یک از رقم های دلخواه ( مثلا رقم ششم که معادل 2 است) را بصورت مجزا بر حسب ارزش مکانی رقم بدست آوریم . مخاطبین به عنوان تمرین می توانند روی این مسئله فکر کنند که با چه روش هایی در برنامه نویسی می توان این عملیات را انجام داد.
پاسخ:برای بدست آوردن رقم مورد نظر می توان از چندین روش استفاده کرد که یکی از آنها محاسبه خارج قسمت تقسیم عدد مذکور به ده به توان مرتبه رقم و در مرحله بعد محاسبه باقیمانده تقسیم این عدد به ده است. مثلا اگر عدد 1234567 را بر 10 به توان 5 یا 100000 تقسیم کنیم، خارج قسمت 12 خواهد شد و باقیمانده تقسیم 12 به 10 برابر با 2 خواهد بود. برای محاسبه ده به توان مکان رقم در عدد با سرعت بالا می توانیم از یک آرایه استفاده کنیم. اگر فرض کنیم یک عدد حداکثر با 8 زقم غیر صفر در متغیر data قرار داشته باشد و مرتبه رقم در عدد (با شروع از 0) در متغیر digit_position باشد، با فرض کدنویسی در IAR برای AVR، تابع get_digit رقم دلخواه را بر می گرداند:
unsigned long __flash digit_mask[]={1,10,100,1000,10000,100000UL,1000000UL,10000000UL};
unsigned char get_digit(unsigned long data,unsigned char digit_position)
{ return((data/digit_mask[digit_position])%10);}
-
نقل یک تجربه عملی:
مشاهده شده که خازن های الکترولیتی که مدت زمان زیادی از تولید آنها گذشته و در محیط با دمای بالا نگهداری شده اند، بدون اینکه مورد استفاده قرار گرفته باشند در تعداد بالا باد کرده و از درون فاسد شده اند. بنابراین به تاریخ تولید خازن ها توجه کنید.

-
تاثیر متفاوت ولتاژهای dc و ac روی کنتاکت های رله ها و سوییچ ها:
از آنجایی که میزان آسیب وارد شده به سطح کنتاکت ها بر اثر ایجاد جرقه در هنگام سوییچ کردن ولتاژهای dc بیشتر از آسیب ناشی از سوییچ کردن ولتازهای ac در همان مقدار ولتاژ است، بنابراین ولتاژ dc مجاز ذکر شده در مشخصات رله به ازای یک جریان معین معمولا بسیار کمتر از ولتاژ ac مجاز برای همان رله است (مثلا 10Aبه ازای ولتاژهای 240Vac یا 30Vdc).
-

یک روش سریع و زود بازده برای استفاده از قابلیت های سیستم عامل در کنار امکانات سخت افزاری میکروکنترلر که علیرغم قدیمی بودن، برای بسیاری از کاربردهای صنعتی به خوبی جواب می دهد و پیاده سازی آن هم بسیار ساده تر و سریع تر از خیلی از گزینه های دیگر است، استفاده از پورت RS232 در PC و اتصال آن به میکروکنترلر مورد نظر است. در این روش با نرم افزارهای سطح بالایی مانند VB می توان واسط کاربری لازم را ایجاد کرد و علاوه بر استفاده از امکانات متنوع سیستم عامل، بصورت همزمان می توان ازامکانات سخت افزاری میکروکنترلر مانند pwm و adc و spi و ... هم استفاده کرد.
-
اهمیت فاکتور زمان در انتخاب ابزارهای سخت افزاری و نرم افزاری برای انجام پروژه های الکترونیک:
یکی از موارد مهمی که باید در انتخاب ابزارهای مختلف سخت افزاری و نرم افزاری برای انجام یک پروژه و محاسبه هزینه تمام شده مد نظر قرار داده شود، زمان لازم برای به نتیجه رساندن آن پروژه است. برای افراد و مجموعه هایی که وقتشان ارزش دارد، صرف زمان بیشتر به معنای هزینه بالاتر است. اما بسیار مشاهده می شود که برخی افراد کم تجربه، به آن میزان که به هزینه و قیمت قطعات و ابزارها توجه می کنند، زمان لازم برای جواب گرفتن از آن قطعات و ابزارها را در محاسبات خود لحاظ نمی کنند. در همین رابطه ممکن است برای به نتیجه رساندن یک پروژه در مواردی استفاده از قطعات گران تر به دلیل نیاز به صرف زمان کمتر در عمل به صرفه تر باشد. بنابراین در انجام یک پروژه یا تولید در محاسبات هزینه ها باید فاکتور زمان مورد نیاز برای جواب گرفتن از هر ابزار سخت افزاری و نرم افزاری و میزان توجیه پذیر بودن آن را در کنار سایر هزینه ها در نظر بگیریم.
-

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


دی

تمرین برنامه نویسی میکروکنترلر:
در سخت افزاری مبتنی بر هر میکروکنترلر دلخواه و با سه عدد کلید که آنها را set و up و down نامگذاری می کنیم و 5 عدد 7segment که با روش Multiplex به پورت های میکروکنترلر متصل هستند، برنامه ای بنویسید که اعدادی در محدوده مشخص (مثلا 178 تا 98432 با مقدار اولیه 178) روی رقم ها با این سه کلید به این صورت قابل تنظیم باشند که در هر لحظه یکی از رقم ها چشمک بزند و با کلید های up و down بتوان آن رقم را تنظیم کرد. فشار دادن کلید set باعث تغییر مکان رقم قابل تنظیم و در حال چشمک زدن از راست به چپ می شود و در انتها مکان نما دوباره به سمت راست منتقل می شود. حد مجاز هر رقم باید به گونه ای باشد که عدد کلی از محدوده حداکثر و حداقل مجاز فراتر نرود. مثلا در محدوده ذکر شده در این صورت مسئله اگر عدد جاری 88431 باشد و رقم سمت راست در حال تنظیم باشد، محدوده مجاز این رقم بین 0 تا 9 خواهد بود (معادل با 88430 تا 88439). اما اگر عدد کلی 98431 باشد، در این حالت محدوده مجاز برای رقم سمت راست فقط 0 تا 2 خواهد بود (معادل با 98430 تا 98432). یا به عنوان مثال دیگر اگر عدد جاری 190 باشد و رقم دوم از سمت راست در حال تنظیم باشد، فقط اعداد 8 و 9 برای این رقم مجاز هستند و در غیر این صورت مجموعه کل رقم ها از مقدار حداقل در این مثال کوچک تر خواهد شد. صفرهای سمت چپ عدد در این مسئله باید نمایش داده شوند و مثلا 178 بصورت 00178 نمایش داده می شود.

-
توانایی در راه اندازی سخت افزارهای یک میکروکنترلر تنها جزء کوچکی از مهارت های لازم برای انجام پروژه های سنگین صنعتی و با ارزش افزوده بالا است و در این گونه پروژه ها معمولا پیاده سازی الگوریتم ها و فلوچارت های پیچیده است که بخش اصلی کار را تشکیل می دهد.
-
نکته ای در کدنویسی:
فرض کنیم که در یک سیستم مبتنی بر AVR با کلاک 16MHz به دلیل نیاز صورت مسئله لازم باشد توسط CPU به یکی از وقفه ها به تعداد 160.000 بار در ثانیه پاسخ داده شود و روتین آن وقفه اجرا شود. حال با توجه به اینکه CPU برای پاسخ دادن به وقفه مورد نظر تنها به میزان 100 سیکل کلاک فرصت دارد، بنابراین برای انجام عملیات متناوبی که از اولویت زمانی بالایی برخوردار نیستند و کمی تاخیر در حد چند کلاک مشکلی را ایجاد نمی کند (مانند اسکن کردن کلید ها یا Refresh کردن 7segment ها و مانند آن) بجای استفاده از وقفه یک تایمر برای انجام این نوع عملیات باید به روش Polling عمل شود و با بررسی فلگ وقفه مقایسه یا سرریز تایمر در حلقه اصلی، در فواصل زمانی مشخص روتین های لازم بصورت پریودیک اجرا شود. به بیان دیگر زمانی که لازم است اکثر وقت CPU برای انجام وقفه های Time critical و با تعداد دفعات وقوع بسیار بالا سپری شود، باید از فعال کردن وقفه برای عملیاتی که Time critical نیستند و توسط Polling هم قابل انجام هستند خودداری شود تا CPU توان پاسخگویی به انجام همه عملیات را داشته باشد.
-

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

دقت موتورهای Encoder دار:

با توجه به اینکه تغییرات دو فاز خروجی Encoder در هر سیکل جمعا دارای 4 تغییر وضعیت و لبه است، دقت در موتورهای Encoder دار در صورت استفاده از تمام لبه های سیگنال ها 4 برابر Resolution ذکر شده برای Encoder بر حسب پالس است. به همین دلیل در سرو موتورهای صنعتی در مد Position با فرض 1 بودن ضریب گیربکس الکترونیکی، تعداد پالسهای لازم برای چرخش موتور به میزان یک دور برابر با 4 برابر دقت نامی Encoder متصل به موتور است. به عنوان مثال در سرو موتوری با Encoder از نوع 2500 پالس و اگر ضریب گیربکس الکترونیکی 1 باشد، باید 10000 پالس اعمال شود تا موتور یک دور بچرخد. در مورد گیربکس الکترونیک قبلا در پست زیر توضیح داده شده است:
https://telegram.me/KnowledgePlus/72
-
محاسبه تعداد پالس برای طی مسافت دلخواه در مکانیزم پیچ و مهره:
فرض کنیم یک استپر موتور به یک مکانیزم پیچ و مهره بصورت مستقیم کوپل شده باشد، به نحوی که هر دور چرخش موتور باعث پیشروی خروجی مکانیزم به اندازه گام پیچ شود. برای محاسبه تعداد پالس مورد نیاز به منظور حرکت خروجی به میزان دلخواه می توانیم حاصلضرب تقسیمات درایور در مسافت را بر گام پیچ تقسیم کنیم. مثلا اگر یک پیچ و مهزه بال اسکرو با گام 4 میلیمتر به استپر موتور دو فازی در مد Half step کوپل شده باشد که به معنای تقسیمات 400 قسمت در یک دور است، تعداد پالس لازم برای طی مسافت N میلیمتر برابر با 400N/4=100N خواهد بود.

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

برای بالا بردن ضریب اطمینان در مدارات مبتنی بر میکروکنترلرها که انجام وظایف حساس و حیاتی را به عهده دارند و عملکرد ناصحیح آنها می تواند خسارت های بزرگی را ایجاد کند، از ولتاژ تغذیه توسط ADC می توان فیدبک گرفت و چنانچه نوسانات یا افزایش و کاهش غیر عادی در ولتاژ تغذیه مشاهده شود، قبل از آنکه این تغییرات به مراحل حدی مانند فعال شدن Brown out detection  یا  Power on reset برسد، روتین های حفاظتی مناسب مانند ایجاد آلارم و استفاده از تغذیه پشتیبان و غیره را می توان اجرا کرد. در برخی از میکروکنترلرها در همین راستا امکان اتصال ضریبی از ولتاژ تغذیه میکروکنترلر به ورودی ADC بصورت داخلی وجود دارد.
-
مثال برنامه نویسی C:
در کد زیر در پایان اجرای حلقه for و با فرض تعریف قبلی متغیرهای x و y و i از نوع char، ترتیب بیت های x معکوس می شود و در y قرار می گیرد. مثلا بیت 0 در x به بیت 7 در y منتقل می شود و بیت 1 در x به بیت 6 در y منتقل می شود و به همین ترتیب. به عنوان مثال عددی اگر x برابر 0xc2 باشد، y برابر با 0x43 خواهد بود.
for(i=0,y=0;i<8;i++) y|=((x&(1«i))?(1«(7-i)):0);
-
تجربه ای در تولید محصولات الکترونیک:
شبیه به حاصلضرب گین در پهنای باند که ملاکی برای ارزیابی مشخصات یک مدار الکترونیکی است، در تولید محصولات الکترونیک هم با فرض لحاظ کردن ارزش زمان صرف شده در محاسبه هزینه ها، حاصلضرب تعداد محصول در سود واحد، ملاکی برای توجیه پذیر بودن تولید آن محصول به لحاظ اقتصادی است. در شرایط فعلی و با توجه به وجود رقبای چینی، تولید محصولات ارزان قیمت ولی پر تیراژ معمولا به دلیل وجود معادل ارزان چینی چندان به صرفه نیست. اما با فرض وجود دانش فنی و سرمایه کافی محصولاتی هم با سود واحد چند ده تا چند صد هزارتومان و با نیاز به تعداد کافی در عرصه های صنعتی و پزشکی و ... وجود دارند که می توانند گزینه های مناسب تری برای تولید باشند. برگ برنده تولید کننده ایرانی در رقابت با تولیدکنندگان خارجی، انعطاف در طراحی و customize کردن محصول بر اساس نیاز مشتری و ارائه پشتیبانی و خدمات پس از فروش مناسب و امکان حضور فیزیکی نسبت به رقبای خارجی می باشد.
-

چگونه CPU می تواند از صحت کلاک واقعی خود اطلاع پیدا کند؟
فرض کنیم که در یک مدار حساس با کاربردهای صنعتی یا پزشکی و غیره، کلاک CPU از یک اسیلاتور خارجی یا اسیلاتور داخلی مبتنی بر کریستال خارجی تامین شود . حال اگر به دلایلی مانند خرابی یا اشتباه در انتخاب قطعات، تفاوت قابل توجهی بین فرکانس واقعی کلاک با مقدار ایده آل وجود داشته باشد، CPU از چه طریقی می تواند از وجود این خطا در فرکانس کلاک اطلاع حاصل کند تا بتواند روتین های حفاظتی مناسب را اجرا کند؟ در این رابطه چند راهکار پیشنهاد می شود:
1- اولین روش کلی برای سنجش صحت فرکانس کلاک، استفاده از یک منبع مستقل تولید فرکانس به عنوان مرجع است. این مرجع فرکانسی می تواند از اسیلاتورهای داخلی یا خارجی یا سایر سخت افزارهای خارجی که دارای کلاک مربوط به خود هستند (مانند میکروکنترلرهای دیگر یا کامپیوتر) یا هر مبنای زمانی مستقل مانند فرکانس برق شهر تامین شود. در این روش باید به نحوی امکان مقایسه بین فرکانس کلاک CPU با فرکانس مرجع فراهم شود. مثلا اگر تایمری با کلاک مستقل در سیستم وجود داشته باشد (مانند RTC)، تایمر دیگری را می توان با کلاک CPU یا تقسیمات آن راه اندازی کرد و از مقایسه تغییرات دو تایمر، صحت کلاک مورد سنجش را بررسی کرد.
از مبناهای زمانی در دسترس مانند فرکانس برق شهر هم با تمهیدات مناسب می توان برای این ارزیابی استفاده کرد. به عنوان یک مثال اگر کلاک تایمری با Prescaler=8 از کلاک CPU تامین شود و منبع کلاک اسیلاتوری با کریستال 16MHz باشد، فاصله زمانی نیم سیکل از برق شهر که دو بار گذر از صفر در آن اتفاق می افتد برابر 10ms است و انتظار می رود که مقدار شمارنده در این مدت زمان 20000 واحد تغییر کند. حال اگر بجای کریستال 16MHz به اشتباه یک کریستال 8MHz قرار داده شده باشد، در فاصله دو گذر از صفر مقدار شمارنده بجای 20000 واحد فقط 10000 واحد تغییر می کند که از مقایسه این مقدار با مقدار ایده آل می توان به وجود خطا در فرکانس کلاک پی برد و به این نتیجه رسید که فرکانس واقعی اسیلاتور نصف مقدار مطلوب است.
2- روش کلی دیگر، استفاده از تکنیک های آنالوگ است. با استفاده از روش های آنالوگ به طرق مختلفی می توان فرکانس را به یک کمیت آنالوگ مرتبط کرد و آن را اندازه گرفت. مثلا می توان موجی با فرکانس مشخص را توسط میکروکنترلر تولید کرد و بعد از اعمال آن به مدار مبدل فرکانس به ولتاژ، این ولتاژ را توسط ADC اندازه گیری کرد که مقدار اندازه گیری شده ملاکی برای سنجش فرکانس خواهد بود. یا به عنوان مثال دیگر در روشی که جنبه تقریبی دارد، یک پله ولتاژ به مدار RC با مقادیر معلوم اعمال می شود و ولتاژ دو سر خازن تا رسیدن به حد معینی توسط ADC اندازه گیری می شود و تایمری بصورت همزمان با کلاک CPU یا تقسیمات آن راه اندازی می شود. با توجه به معلوم بودن مقدار خازن و مقاومت و فرکانس تایمر، میزان تغییرات تایمر بصورت تقریبی تا شارژ خازن مشخص است (ولتاژ دو سر خازن در زمان RC به 0.63 حداکثر مقدار خود می رسد). بنابراین بعد از رسیدن ولتاژ خازن به حد مشخصی با مقایسه مقدار واقعی تایمر با مقدار مورد انتظار می توان صحت فرکانس کلاک CPU را احراز کرد.

-
نکته ای در طراحی مدار چاپی:
از آنجایی که وجود سخت افزار ارتباطی RS485 روی یک برد، امکانی را برای شبکه کردن چند برد و اتصال برد به HMI و با مبدل مناسب به کامپیوتر و تغییر firmware داخلی از طریق Bootloader و موارد مشابه را فراهم می کند. بنابراین در صورت احتمال برای نیاز به این نوع ارتباط در توسعه های بعدی و موجود بودن فضای کافی روی برد و در دسترس بودن پین های ارسال و دریافت USART و یک پین دیگر برای جهت ارتباط، خالی از فایده نیست که در هنگام طراحی مدار چاپی بخشی برای این نوع ارتباط روی برد در نظر گرفته شود (حتی اگر برای کاربرد جاری نیازی به این سخت افزار نباشد و قطعات آن لحیم نشود).
-

روش هایی برای شناسایی سیم ها و کابل های شیلد با مغزی غیر مسی به نقل از یکی از فروشندگان بازار:
مدتی است که سیم ها و کابل های شیلد داری با ظاهر قلع اندود اما با مغزی هایی غیر مسی (مانند آلومینیوم) در بازار توزیع می شوند که قلع را به خود جذب نمی کنند و برای قلع اندود کردن و لحیم کردن آنها مشکلات اساسی وجود دارد. حتی ممکن است یک لایه روی سطح بیرونی رشته سیم ها بصورت آبکاری نشانده شده باشد که یک بار قابلیت لحیم کاری و قلع اندود شدن داشته باشد. اما با یک بار لحیم کاری یا قلع اندود کردن، این لایه از بین می رود و اگر به هر دلیلی لازم باشد بیش از یک بار اتصال سیم باز و بسته شود، بعد از آن قلع به رشته سیم ها نمی چسبد. یکی از فروشندگان معتبر بازار دو روش را برای شناسایی این نوع سیم ها معرفی کردند که در اینجا ذکر می شود. در روش اول با سطح تیزی مانند تیغ موکت بری از روی مغزی سیم لایه برداری می شود که برای سیم های با مغزی مسی، زردی مس نمایان می شود. اما برای سیم های نامرغوب هر چه هم که این لایه برداری ادامه پیدا کند، مس ظاهر نمی شود. روش دوم که نیاز به مشاهده عملی دارد و توضیح آن ممکن است قدری نامفهوم به نظر برسد، قرار دادن سیم در معرض حرارت مستقیم شعله است. در این وضعیت سیم ها مسی با قرار گرفتن در معرض شعله عکس العمل متفاوتی نسبت به سیم های آلومینیومی از خود نشان می دهند ( در عمل مشاهده شد که با گرفتن شعله زیر رشته سیم هایی که بصورت افقی قرار گرفته اند، سیم های مسی تقریبا وضعیت ثابت خود را حفظ می کنند و کمی حالت جمع شدگی پیدا می کنند، اما سیم های آلومینیومی ایستایی خود را از دست می دهند و رو به پایین خم می شوند).
-
استفاده از بردها و سخت افزارهای آماده و مسئله خدمات پس از فروش:
برای استفاده از بردها و سخت افرارهایی مانند Cubieboard، Beaglebone، Raspberry و ... در محصولات صنعتی که نیاز به پشتیبانی و خدمات پس از فروش چند ساله دارند، علاوه بر مواردی مانند قیمت و کارایی باید به این نکته توجه داشته باشیم که اگر مثلا 5 سال دیگر این برد به هر دلیلی خراب شد و نیاز به تعویض داشت، آیا همچنان در دسترس هست که بتوانیم آن را جایگزین کنیم؟

بهمن


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

-
دو نکته در اتصال Quadrature Encoder به میکروکنترلر:
1- در شرایط وجود لرزش های مکانیکی، استفاده از روش وقفه خارجی برای اتصال Quadrature Encoder های با تعداد پالس بالا به میکروکنترلر می تواند توام با خطا باشد. روش اصولی برای قرائت بدون خطا، استفاده از واحدهای سخت افزاری مانند QDEC در XMEGA یا QEI در سری LPC یا مد Encoder interface در STM32 می باشد.
2- در صورت نیاز به اتصال کابل با طول زیاد به Encoder و همچنین در محیط های پر نویز بهتر است از Encoder های با خروجی های تفاضلی بصورت Line driver استفاده شود. این نوع خروجی برای اتصال به میکروکنترلر نیاز به مبدل سیگنال مناسب دارد.

-
نکته ای در انتخاب Baud Rate برای ارتباط بین میکروکنترلرها:
برای ارتباط دو یا چند میکروکنترلر از طریق USART به هیچ وجه لازم نیست اعدادی مانند 300، 1200، 2400، 4800، 9600، 19200 و ... را برای Baud Rate انتخاب کنیم و می توانیم سایر اعدادی را که خطایی با توجه به کریستال ایجاد نمی کنند بکار ببریم (مثلا 10000bps). این اعداد تنها در صورتی مهم هستند که ارتباط با کامپیوتر یا برخی سخت افزارها و ماژول ها که فقط با Baud Rate های خاصی عمل می کنند، مورد نظر باشد.

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

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

-
یک روش برای خوب پول در آوردن از الکترونیک این است که ابتدا بررسی شود که در کدام حوزه های این رشته پول های قابل توجهی در حال رد و بدل شدن است و بعد برای وارد شدن به این حوزه ها تخصص کافی کسب شود و ساز و کار لازم فراهم شود.
-
تمرین برنامه نویسی میکروکنترلر:
یکی از تمرین هایی که در راستای افرایش مهارت برنامه نویسی می تواند مفید واقع شود، تایپ کاراکترها با تعداد محدودی کلید روی LCD به شیوه گوشی های موبایل غیر لمسی است. در این صورت مسئله می توان با یک صفحه کلید با کلیدهای کم تعداد و یک LCD متصل به میکروکنترلر، همان شیوه ای را که برای تایپ کردن متن در گوشی های غیز لمسی انجام می شود پیاده سازی کرد. روش کار به این صورت است که با فشار دادن هر کلید، فهرستی از کاراکترهای مرتبط با آن کلید نمایش داده می شوند که یکی از کاراکترها از طریق مکان نما یا معکوس شدن پیکسل ها (یسته به کاراکتری یا گرافیکی بودن LCD) در وضعیت انتخاب شده است و فشار دادن سریع همان کلید یا نگه داشتن آن موجب حرکت بین کاراکترهای آن فهرست می شود. در صورتی که آن کلید برای مدت مشخصی فشار داده نشود، کاراکتر انتخاب شده تایپ می شود و به همین ترتیب می توان متن مورد نظر را تایپ کرد. برای تصحیح متن هم می توان کلیدهایی را برای جابجایی مکان نما یا به عنوان Back space یا Delete در نظر گرفت.
-

یک روش سرانگشتی برای محاسبه مقاومت ها و سلف های موازی و خازن های سری:
اگر دو مقاومت با هم موازی باشند که یکی N برابر دیگری باشد (N>1)، مقاومت معادل برابر است با مقاومت بزرگتر تقسیم بر N+1. به عنوان مثال اگر مقاومت هایی با وزن 1 و 10 با هم موازی شوند، مقاومت معادل برابر 10/11 خواهد بود. یا مقاومت معادل با مقاومت های موازی 2 و 25 برابر 25/13.5 خواهد بود. برای محاسبه سلف های موازی و خازن های سری هم می توان از شبیه همین روش استفاده کرد.

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

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

-
آموزش نحوه ایجاد پروژه و کامپایل و پروگرم کردن آن در AtmelStudio در بخش چهارم فیلم های آموزش XMEGA توضیح داده شده که روش این آموزش برای AVR هم قابل استفاده است:
http://www.aparat.com/v/z8TSO

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

-
برای ساخت emi filter در مدارات میکروکنترلری و سایر مدارات مشابه می توانید از وریستور 20D431K یا 20N431K و خازن های 100nF/275Vac و Line filter های مناسب موجود در بازار استفاده کنید.
-
نقل یک تجربه شخصی در طراحی مدار چاپی:
در هنگام طراحی مدار چاپی و با فرض نصب برد بصورت افقی و وجود گرد و خاک و براده های فلزات در هوای محیط های صنعتی و ایزوله نبودن برد نسبت به هوای محیط، میکروکنترلر و آی سی های smd با پایه های نزدیک به هم ترجیحا در وجه زیرین برد (Bottom Layer) قرار داده می شوند.

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


اسفند:

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

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

-
استفاده از 4 پین برای اتصال 12 کلید به میکروکنترلر. منبع:
http://www.mosaic-industries.com/embedded-systems/microcontroller-projects/electronic-circuits/matrix-keypad-scan-decode
-

درباره فیلم های آموزشی XMEGA:
تاکنون با صرف بیش از صدها ساعت وقت، بخش های زیر از مجموعه فیلم های آموزشی XMEGA ضبط و بصورت رایگان آپلود شده اند:
Ports - PMIC - External interrupts - Clock - Event system - TC0 - TC1 - Awex - Hires - DAC - ADC - DMA
بخش های زیر هم باقی مانده اند:
QDEC - AC - USART - SPI - TWI - USB - NVM controller - EBI - ُSleep modes - Reset system - WDT - TC2 - RTC - RTC32 - AES - DES - IRCOM - CRC - Battery backup , ...
با توجه به اینکه بسیاری از بخش های اصلی این میکروکنترلر تاکنون توضیح داده شده اند و از آنجایی که تهیه فیلم های آموزشی برای بخش های باقیمانده نیازمند صرف حداقل چند صد ساعت زمان دیگر است، به دلیل کمبود وقت بعید است فرصتی برای توضیح همه این بخش ها وجود داشته باشد. بنابراین سعی خواهد شد بسته به اولویت برای برخی قسمت های مهم باز هم فیلم هایی ضبط و آپلود شود و سایر بخش ها هم از طریق مطالعه Manual قابل راه اندازی خواهند بود.

-
نکته ای در طراحی بردهای صنعتی:
در طراحی مدارات و بردهای صنعتی برای بالا بردن امکان عیب یابی برد و آگاهی از صحت عملکرد بخش های مختلف مدار (به خصوص در شرایطی که لازم باشد برد در نقاط دور دست نصب شود و عیب یابی آن توسط افراد دیگری انجام شود)، بکار بردن LED در سطوح گوناگون می تواند عمل عیب یابی را بسیار تسهیل کند. مثلا از LED ها با مدار مناسب می توان برای آگاهی از صحت ولتاژ تغذیه هایی که در مدار وجود دارد استفاده کرد به نحوی که LED تنها در صورتی روشن شود که تغذیه در حداقل مقدار مجاز خود باشد. یا در صورت وجود میکروکنترلر در مدار با روشن و خاموش کردن یک LED بصورت چشمک زن در فواصل زمانی مشخص و مشاهده رفتار LED می توان اجرای برنامه توسط CPU را احراز کرد و به مواردی مانند از کار افتادن CPU و عدم اجرای برنامه یا حتی اشکال در کریستال یا اسیلاتور خارجی و مثلا تغییر شدید فرکانس کلاک CPU پی برد. برای ورودی ها و خروجی ها و برخی سیگنال های ارتباطی هم در صورت لزوم می توان LED های متناظری را در نظر گرفت تا وضعیت آنها قابل مشاهده باشد.

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

برای وارد نشدن فشار و استرس مکانیکی به پایه های قطعات متصل به هیت سینک که در مرور زمان ممکن است منجر به قطع شدن پایه ها شود، می توان هیت سینک را با پیچ مناسب به برد متصل کرد.
-
برخی نکات در مورد فیلم های آموزشی AVR:
1- این فیلم ها در 97 قسمت تهیه شده اند که به جز برخی موارد اکثر قریب به اتفاق سرفصل های AVR را منطبق بر datasheet بصورت پایه ای و با بررسی رجیسترها پوشش می دهند.
2- کیفیت فیلم ها در بخش های ابتدایی پایین است اما این کیفیت در بخش های بعدی بهبود یافته است.
3- در بررسی محتوای فیلم ها به تاریخ آپلود آنها توجه کنید. برخی توضیحات فیلم ها با توجه به وضعیت قطعات موجود در بازار در آن تاریخ انجام شده و ممکن است قطعه ای در آن زمان در بازار موجود نبوده و اکنون بعد از گذشت چند سال این وضعیت تغییر کرده باشد. لازم به ذکر است که فیلم های آموزش AVR از آذرماه سال 1390 به بعد ضبط و آپلود شده اند.
4- در بخش اول فیلم های آموزش AVR به تدریس در دانشگاه آزاد واحد شهرری اشاره شده که مربوط به تدریس در سال های 1378 تا 1388 است و بعد از این تاریخ ارتباط و همکاری با این واحد دانشگاهی وجود نداشته است.

-
پیرو سوال برخی دوستان در مورد باز نشدن فایل های pcb که در سایت قرار داده شده یادآوری می شود که اکثر این فایل ها با فرمت نسخه های پایین protel ذخیره شده اند و در نسخه های بالاتر هم قابل باز شدن هستند و چنانچه اطلاعات فایل نمایش داده نمی شود، مشکل از نرم افزار Altium Designer مورد استفاده است. برای آگاهی از نوع و شماره قطعات مورد استفاده هم باید مشخصات آنها در فایل pcb مشاهده شود.
-
پنل درایور سرو موتور Delta که با چند 7segment و کلید امکان تنظیم کلیه پارامترها وجود دارد. این نمونه ای از یک سخت افزار ارزان است که کدنویسی قوی قابلیت بالایی را برای آن ایجاد می کند.
-

در ارزیابی ابزارهای اندازه گیری و سخت افزارهایی مانند ADC، به تفاوت دو مفهوم Resolution و Accuracy توجه کنید.
-
گاهی مشاهده می شود برخی دوستان کم تجربه در اطلاعیه هایی فهرست متنوعی از موضوعات را به عنوان قابلیت های کاری خود اعلام می کنند (مثلا انجام پروژه های AVR-PIC-ARM-XMEGA-Labview-Matlab و ...). در حالی که از نظر یک کارفرمای با تجربه چنین اعلام آمادگی برای انجام طیف وسیع و گوناگونی از کارها و پروژه ها بیشتر از آنکه نشان دهنده توانایی و قابلیت یک فرد باشد، نشانی از نداشتن حوزه فعالیت تخصصی مشخص و به نوعی بیکاری آن فرد یا مجموعه است.
-
افت کیفیت LCD ها در مرور زمان:
در استفاده از انواع LCD ها و به خصوص انواع گرافیکی آن مشاهده شده که در برخی مدل های متفرقه و نامرغوب کیفیت پیکسل ها به مرور زمان افت می کنند و صفحه LCD کم رنگ می شود. بنابراین توصیه می شود در کاربردهایی که LCD به مدت طولانی قرار است مورد استفاده قرار بگیرد، علیرغم گران تر بودن از LCD های معتبر و با کیفیت استفاده شود.
-

در استفاده از کتابخانه های آماده باید به مسئله تفاوت های احتمالی ایجاد شده در سرعت انجام عملیات به دلیل نوع کدنویسی توجه کنیم. به عنوان یک مثال ساده، فرکانس شکل موج متناوب تولید شده ناشی از اجرای کد زیر روی یکی از پین های stm32f103 (در این مثال PB10):
while(1) GPIOB->ODR^=GPIO_PIN_10;
تقریبا دو برابر فرکانس تولید شده روی همان پین ناشی از اجرای کد زیر در شرایط مشابه است:
while(1) HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);
-