توصیه ای برای علاقه مندان به برنامه نویسی:
هرچند مطالعه و تحلیل برنامه ها و مثال های آماده می تواند برای درک نحوه برنامه نویسی صحیح و اصولی مفید باشد. اما یک فرد مبتدی تنها با مطالعه و تحلیل برنامه های آماده یا copy/paste کردن کد های موجود نمی تواند به مهارت حرفه ای در برنامه نویسی برسد. به اینگونه افراد توصیه می شود که علاوه بر تحلیل کدهای آماده، به عنوان تمرین سعی کنند برخی کد های مورد نیاز برای انجام عملیات مختلف را حتی در صورت موجود بودن، شخصا بنویسند و حاصل کار خود را با کدهای موجود مقایسه کنند تا در مرور زمان بتوانند به تسلط و تجربه کافی دست یابند. به بیان دیگر، با خواندن و تحلیل کردن کد به تنهایی نمی توان برنامه نویس شد و برنامه نویس باید شخصا روی نوشتن کدها تمرین زیادی را انجام دهد.
@KnowledgePlus
هرچند مطالعه و تحلیل برنامه ها و مثال های آماده می تواند برای درک نحوه برنامه نویسی صحیح و اصولی مفید باشد. اما یک فرد مبتدی تنها با مطالعه و تحلیل برنامه های آماده یا copy/paste کردن کد های موجود نمی تواند به مهارت حرفه ای در برنامه نویسی برسد. به اینگونه افراد توصیه می شود که علاوه بر تحلیل کدهای آماده، به عنوان تمرین سعی کنند برخی کد های مورد نیاز برای انجام عملیات مختلف را حتی در صورت موجود بودن، شخصا بنویسند و حاصل کار خود را با کدهای موجود مقایسه کنند تا در مرور زمان بتوانند به تسلط و تجربه کافی دست یابند. به بیان دیگر، با خواندن و تحلیل کردن کد به تنهایی نمی توان برنامه نویس شد و برنامه نویس باید شخصا روی نوشتن کدها تمرین زیادی را انجام دهد.
@KnowledgePlus
نکته آموزشی:
یک تفاوت قابل توجه در نحوه ارتباط با LCD های کاراکتری مبتنی بر کنترلر HD44780 و شبیه آن و همچنین LCD های گرافیکی مبتنی بر کنترلر KS0108 نسبت به LCD های گرافیکی مبتنی بر کنترلر T6963C این است که در دو نوع LCD اول، امکان ارتباط بصورت یک طرفه و بدون نیاز به خواندن اطلاعات با قرار دادن تاخیر کافی بین نوشتن بایت های مختلف وجود دارد. اما در ارتباط با LCD های گرافیکی مبتنی بر کنترلر T6963C ضروری است که امکان ارتباط دو طرفه فراهم باشد و علاوه بر نوشتن اطلاعات به LCD، قابلیت خواندن اطلاعات از LCD هم وجود داشته باشد.
@KnowledgePlus
یک تفاوت قابل توجه در نحوه ارتباط با LCD های کاراکتری مبتنی بر کنترلر HD44780 و شبیه آن و همچنین LCD های گرافیکی مبتنی بر کنترلر KS0108 نسبت به LCD های گرافیکی مبتنی بر کنترلر T6963C این است که در دو نوع LCD اول، امکان ارتباط بصورت یک طرفه و بدون نیاز به خواندن اطلاعات با قرار دادن تاخیر کافی بین نوشتن بایت های مختلف وجود دارد. اما در ارتباط با LCD های گرافیکی مبتنی بر کنترلر T6963C ضروری است که امکان ارتباط دو طرفه فراهم باشد و علاوه بر نوشتن اطلاعات به LCD، قابلیت خواندن اطلاعات از LCD هم وجود داشته باشد.
@KnowledgePlus
برای برطرف کردن نوسانات قرائت شده در اتصال تاچ های مقاومتی بصورت مستقیم به ADC، روش میانگین گیری از مختصات خوانده شده با تعداد نمونه کافی می تواند نوسانات را تا حد زیادی برطرف کند.
@KnowledgePlus
@KnowledgePlus
نکته ای در برنامه نویسی:
در گرد کردن اعداد میانی بین دو عدد با استفاده از توابع هر زبان برنامه نویسی، باید به روش مورد استفاده برای گرد کردن توجه کنیم تا خطای ناخواسته ای در محاسبات ایجاد نشود. به عنوان توضیح بیشتر، عملیات گرد کردن یا Rounding برای نقاط میانی بر دو نوع است. در نوع اول که در اصطلاح
Rounding away from zero
گفته می شود، گرد کردن به سمت اعداد دورتر از صفر است. در این روش به عنوان مثال حاصل گرد کردن 1.5 برابر با 2 و حاصل گرد کردن 2.5 برابر 3 است. در روش دیگر که در اصطلاح
Banker's rounding
گفته می شود، گرد کردن به سمت عدد نزدیک تر است. نکته مهم در این روش این است که برای اعداد میانی، گرد کردن به سمت عدد زوج انجام می شود. بنابراین با این روش، حاصل گرد کردن 1.5 برابر 2 و حاصل گرد کردن 2.5 باز هم برابر 2 خواهد بود. به عنوان نمونه در visual basic 6.0 گرد کردن با تابع Round بر اساس روش banker's rounding عمل می کند و عدم توجه به روش مورد استفاده می تواند باعث ایجاد خطا در محاسبات شود.
@KnowledgePlus
در گرد کردن اعداد میانی بین دو عدد با استفاده از توابع هر زبان برنامه نویسی، باید به روش مورد استفاده برای گرد کردن توجه کنیم تا خطای ناخواسته ای در محاسبات ایجاد نشود. به عنوان توضیح بیشتر، عملیات گرد کردن یا Rounding برای نقاط میانی بر دو نوع است. در نوع اول که در اصطلاح
Rounding away from zero
گفته می شود، گرد کردن به سمت اعداد دورتر از صفر است. در این روش به عنوان مثال حاصل گرد کردن 1.5 برابر با 2 و حاصل گرد کردن 2.5 برابر 3 است. در روش دیگر که در اصطلاح
Banker's rounding
گفته می شود، گرد کردن به سمت عدد نزدیک تر است. نکته مهم در این روش این است که برای اعداد میانی، گرد کردن به سمت عدد زوج انجام می شود. بنابراین با این روش، حاصل گرد کردن 1.5 برابر 2 و حاصل گرد کردن 2.5 باز هم برابر 2 خواهد بود. به عنوان نمونه در visual basic 6.0 گرد کردن با تابع Round بر اساس روش banker's rounding عمل می کند و عدم توجه به روش مورد استفاده می تواند باعث ایجاد خطا در محاسبات شود.
@KnowledgePlus
در پاسخ به دوستانی که برای انتخاب مسیر خود در کار کردن با خانواده های مختلف میکروکنترلر و ابزارهای برنامه نویسی سردرگم هستند، معمولا این پاسخ ارائه می شود که برای رهایی از سردرگمی و فراهم شدن امکان قضاوت بهتر، یک "با" را از سوال ذهنی خود حذف کنید. اگر بجای این سوال که "باید با چه کار کنم؟" بیشتر روی این سوال متمرکز شویم که "باید چکار کنم؟" آنگاه با مشخص شدن هدف و کار مورد نظر برای انجام دادن، ابزارهای سخت افزاری و نرم افزاری به شکل مشخص تری قابل انتخاب خواهند بود. به عبارت دیگر، در صورتی که نیاز جاری را بشناسیم بهتر می توانیم ابزار مناسب را برای رفع این نیاز انتخاب کنیم.
@KnowledgePlus
@KnowledgePlus
نکاتی از زبان برنامه نویسی c:
متغیرهای نوع char همیشه یک بایتی هستند. اما سایز متغیرهای نوع int بسته به کامپایلر لزوما 16 بیت نیست (حداقل سایز این نوع متغیر 16 بیت است).
@KnowledgePlus
متغیرهای نوع char همیشه یک بایتی هستند. اما سایز متغیرهای نوع int بسته به کامپایلر لزوما 16 بیت نیست (حداقل سایز این نوع متغیر 16 بیت است).
@KnowledgePlus
نکته آموزشی:
عمر و ساعت کار عملکرد برخی از انواع خازن های الکترولیت مطابق فرمول شیمیایی Arrhenius به ازای هر ده درجه کاهش در دمای محیط، دو برابر می شود. یعنی اگر مثلا در 105 درجه 2000 ساعت باشد، در 95 درجه 4000 ساعت خواهد بود.
@KnowledgePlus
عمر و ساعت کار عملکرد برخی از انواع خازن های الکترولیت مطابق فرمول شیمیایی Arrhenius به ازای هر ده درجه کاهش در دمای محیط، دو برابر می شود. یعنی اگر مثلا در 105 درجه 2000 ساعت باشد، در 95 درجه 4000 ساعت خواهد بود.
@KnowledgePlus
نکته آموزشی:
گشتاور حاصل از درایو کردن استپر موتورها به روش Bipolar تقریبا 40 درصد بیشتر از گشتاور در روش Unipolar است.
@KnowledgePlus
گشتاور حاصل از درایو کردن استپر موتورها به روش Bipolar تقریبا 40 درصد بیشتر از گشتاور در روش Unipolar است.
@KnowledgePlus
نکته طراحی مدار:
در طراحی مدار کنترل دور موتور DC در دو جهت، اگرتغییر جهت موتور با تعداد دفعات کم در واحد زمان اتفاق بیافتد، بجای استفاده از 4 سوییچ نیمه هادی و بستن مدار پل می توانیم از یک سوییچ نیمه هادی و یک رله با دو کنتاکت باز و بسته استفاده کنیم. در روش اخیر سرهای موتور DC به سر های وسط دو کنتاکت رله متصل می شوند و سرهای کناری رله هم بصورت ضربدری به خروجی PWM و تغذیه متصل می شوند که با این آرایش در صورت تغییر وضعیت رله، جهت ولتاژ PWM اعمال شده به دو سر موتور معکوس می شود. در این روش دیود هرزگرد بجای قرار گرفتن به موازات موتور باید در جهت مناسب بین خروجی PWM و تغذیه متصل شود.
@KnowledgePlus
در طراحی مدار کنترل دور موتور DC در دو جهت، اگرتغییر جهت موتور با تعداد دفعات کم در واحد زمان اتفاق بیافتد، بجای استفاده از 4 سوییچ نیمه هادی و بستن مدار پل می توانیم از یک سوییچ نیمه هادی و یک رله با دو کنتاکت باز و بسته استفاده کنیم. در روش اخیر سرهای موتور DC به سر های وسط دو کنتاکت رله متصل می شوند و سرهای کناری رله هم بصورت ضربدری به خروجی PWM و تغذیه متصل می شوند که با این آرایش در صورت تغییر وضعیت رله، جهت ولتاژ PWM اعمال شده به دو سر موتور معکوس می شود. در این روش دیود هرزگرد بجای قرار گرفتن به موازات موتور باید در جهت مناسب بین خروجی PWM و تغذیه متصل شود.
@KnowledgePlus
نکاتی از زبان برنامه نویسی C:
عبارت های زیر معادل یکدیگر هستند
&a[0]
و
a
-------------------------------
a[0]
و
*a
-------------------------------
a[i]
و
*(a+i)
@KnowledgePlus
عبارت های زیر معادل یکدیگر هستند
&a[0]
و
a
-------------------------------
a[0]
و
*a
-------------------------------
a[i]
و
*(a+i)
@KnowledgePlus
نکته ای در کار با درایورهای استپر موتور:
در درایورهایی که از جریان موتور فیدبک گرفته نمی شود و از این نظر بصورت حلقه باز عمل می کنند، تغذیه درایور باید مطابق با ولتاژ نامی استپر موتور اعمال شود. اما در درایورهایی که از جریان موتور فیدبک گرفته می شود و از این نظر بصورت حلقه بسته عمل می کنند، لازم نیست تغذیه درایور محدود به ولتاژ نامی استپر موتور باشد و اتفاقا هر چه این ولتاژ بیشتر باشد، دورهای بالاتری برای استپر موتور توسط درایور با حفظ گشتاور قابل تامین خواهد بود.
@KnowledgePlus
در درایورهایی که از جریان موتور فیدبک گرفته نمی شود و از این نظر بصورت حلقه باز عمل می کنند، تغذیه درایور باید مطابق با ولتاژ نامی استپر موتور اعمال شود. اما در درایورهایی که از جریان موتور فیدبک گرفته می شود و از این نظر بصورت حلقه بسته عمل می کنند، لازم نیست تغذیه درایور محدود به ولتاژ نامی استپر موتور باشد و اتفاقا هر چه این ولتاژ بیشتر باشد، دورهای بالاتری برای استپر موتور توسط درایور با حفظ گشتاور قابل تامین خواهد بود.
@KnowledgePlus
نکته ای در تعمیرات بردهای الکترونیک:
بدنه بعضی از انواع رله بر اثر حرارت زیاد یا قرار گرفتن در معرض تابش مستقیم نور خورشید، ممکن است به مرور کمی حالت جمع شدگی پیدا کند به نحوی که به دلیل فشار پوسته رله، عملکرد کنتاکت های آن مختل شود و علیرغم سالم بودن بوبین، رله عمل نکند.
@KnowledgePlus
بدنه بعضی از انواع رله بر اثر حرارت زیاد یا قرار گرفتن در معرض تابش مستقیم نور خورشید، ممکن است به مرور کمی حالت جمع شدگی پیدا کند به نحوی که به دلیل فشار پوسته رله، عملکرد کنتاکت های آن مختل شود و علیرغم سالم بودن بوبین، رله عمل نکند.
@KnowledgePlus
نکته طراحی مدار:
در طراحی مدارات مبتنی بر ترایاک برای کنترل شدت نور لامپ ها و پروژکتورهای توان بالای التهابی و برای انتخاب ترایاک و سلف سری و ... باید به این مسئله توجه نمود که
مقاومت فیلامان لامپ ها و پروژکتورهای التهابی در هنگام سرد بودن به مراتب کمتر از زمانی است که لامپ گرم می شود و بنابراین طراحی باید بر اساس بدترین شرایط و منحنی مشخصه فیلامان لامپ انجام شود تا ترایاک آسیب نبیند.
@KnowledgePlus
در طراحی مدارات مبتنی بر ترایاک برای کنترل شدت نور لامپ ها و پروژکتورهای توان بالای التهابی و برای انتخاب ترایاک و سلف سری و ... باید به این مسئله توجه نمود که
مقاومت فیلامان لامپ ها و پروژکتورهای التهابی در هنگام سرد بودن به مراتب کمتر از زمانی است که لامپ گرم می شود و بنابراین طراحی باید بر اساس بدترین شرایط و منحنی مشخصه فیلامان لامپ انجام شود تا ترایاک آسیب نبیند.
@KnowledgePlus
برای اتصال سطوح منطقی با ولتاژهایی فراتر از حد تحمل پین ورودی میکروکنترلر (مثلا 24v- و 24v+ ) یک روش ساده این است که مقاومتی را با مقدار مناسب با پین سری کنیم که در این حالت وجود دو دیود حفاظتی داخلی در ورودی پین باعث برش ولتاژ می شود. با توجه به محدودیت جریان این دیودها و در صورت نیاز می توانیم دو دیود سریع با افت ولتاژ کم و جریان کافی را بصورت خارجی در ورودی پین قرار دهیم، به صورتی که آند یکی به ورودی پین و کاتد آن به Vcc و کاتد دومی به ورودی پین و آند آن به زمبن متصل شود. البته این روش علیرغم سادگی به لحاظ امپدانس دیده شده توسط منبع سیگنال و همچنین سرعت تغییرات سیگنال ورودی می تواند محدودیت هایی را ایجاد کند.
@KnowledgePlus
@KnowledgePlus
تمرین برنامه نویسی c:
در عبارت زیر a معرف چیست؟
int (*(*a[10])(char))[4]
پاسخ: a آرایه ای است با ده عضو از اشاره گر به تابعی با ورودی char که مقدار بازگشتی این تابع اشاره گر به آرایه ای با 4 عضو از نوع int است.
@KnowledgePlus
در عبارت زیر a معرف چیست؟
int (*(*a[10])(char))[4]
پاسخ: a آرایه ای است با ده عضو از اشاره گر به تابعی با ورودی char که مقدار بازگشتی این تابع اشاره گر به آرایه ای با 4 عضو از نوع int است.
@KnowledgePlus
نکته ای در برنامه نویسی:
در عملیات محاسباتی با متغیرهایی از نوع صحیح، ترتیب انجام عملیات می تواند در دقت محاسبات موثر باشد. به عنوان یک مثال، نتیجه محاسبه
(a-b)/c
با نتیجه
(a/c)-(b/c)
در صورت صحیح بودن نوع متغیرهای a و b و c می تواند متفاوت باشد. در یکسری از عملیات محاسباتی، توجه به این ترتیب در محاسبات برای بالا بردن دقت مهم است.
مثال عددی با فرض حذف اعشار در محاسبات صحیح:
(12-1)/3=3
(12/3)-(1/3)=4
در این مثال، نتیجه محاسبه دوم یعنی 4 به نتیجه واقعی نزدیکتر است. بنابراین در صورت نیاز به استفاده از محاسبات صحیح و بسته به نوع رابطه و مثبت یا منفی بودن اجزاء محاسبه، می توانیم رابطه را به شکلی مرتب کنیم که نتیجه نهایی به نتیجه واقعی نزدیک تر باشد.
@Knowledgeplus
در عملیات محاسباتی با متغیرهایی از نوع صحیح، ترتیب انجام عملیات می تواند در دقت محاسبات موثر باشد. به عنوان یک مثال، نتیجه محاسبه
(a-b)/c
با نتیجه
(a/c)-(b/c)
در صورت صحیح بودن نوع متغیرهای a و b و c می تواند متفاوت باشد. در یکسری از عملیات محاسباتی، توجه به این ترتیب در محاسبات برای بالا بردن دقت مهم است.
مثال عددی با فرض حذف اعشار در محاسبات صحیح:
(12-1)/3=3
(12/3)-(1/3)=4
در این مثال، نتیجه محاسبه دوم یعنی 4 به نتیجه واقعی نزدیکتر است. بنابراین در صورت نیاز به استفاده از محاسبات صحیح و بسته به نوع رابطه و مثبت یا منفی بودن اجزاء محاسبه، می توانیم رابطه را به شکلی مرتب کنیم که نتیجه نهایی به نتیجه واقعی نزدیک تر باشد.
@Knowledgeplus
برای چسباندن مستحکم صفحات تاچ به LCD می توان از چسب های دو طرفه باریک مانند نمونه موجود در شکل استفاده کرد. در تهران این نوع چسب ها در خیابان فردوسی قابل تهیه است.
@KnowledgePlus
@KnowledgePlus
نکته ای در کار با درایور میکرواستپ:
در استفاده از تقسیمات بالای درایورهای میکرواستپ (مثلا
@KnowledgePlus
در استفاده از تقسیمات بالای درایورهای میکرواستپ (مثلا
۵۰۰۰۰
قسمت در یک دور)، توجه به حداکثر فرکانس پالس قابل پذیرش توسط درایور مورد انتخاب مهم است. چرا که در صورت پایین بودن محدوده پذیرش فرکانس پالس ورودی، امکان بالا بردن دور استپر موتور حتی در صورت تامین تغذیه کافی، میسر نخواهد بود.@KnowledgePlus
در کدنویسی برای refresh کردن 7segment ها و LED ها به روش Multiplex، برای جلوگیری از ایجاد سایه ای از اطلاعات بخش مجاور باید ابتدا خط Select جاری غیر فعال شود و سپس اطلاعات جدید روی خطوط دیتا قرار بگیرد و در مرحله بعدی خط Select جدید فعال شود.
@KnowledgePlus
@KnowledgePlus