KnowledgePlus.ir
5.48K subscribers
47 photos
11 videos
16 files
176 links
کانال مهندس اوژن کی نژاد
کلیه مطالب این کانال به جز مواردی که صریحا در متن آن ذکر شده باشد جنبه تالیفی دارد و از جایی کپی نشده است.
کانال اشتغال:
@KnowledgePlusir
@StepMotor
@MC3Delta
@FindChips
instagram.com/knowledgeplus.ir
aparat.com/KnowledgePlus
Download Telegram
سخنی با مخاطبین این کانال

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

@KnowledgePlus
نمونه آمار بازدید روزانه از فیلم های آموزشی در سایت آپارات

@KnowledgePlus
مقاله ای درباره نحوه دسترسی به حافظه eeprom در AVR-GCC:

www.tinkerist.com/gps/docs/EEPROM.pdf

@KnowledgePlus
نکته ای در استفاده از سنسورهای صنعتی،:

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

@KnowledgePlus
در بررسی میدانی در بازار جمهوری در مورد انواع emi filter با قابلیت عبور جریان بالا، مشاهده شد که چند نوع فیلتر از انواع تقلبی تا نوع ژاپنی در بازار وجود دارد. اما برای کاربردهای تولیدی و تعداد بالا به دلیل موجود نبودن فیلترهای جریان بالای مناسب به تعداد کافی و گران بودن قیمت انواع موجود بهتر است فیلتر بصورت مجزا و با تهبه قطعات بسته شود.

@KnowledgePlus
نکته ای در کدنویسی:

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

(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)

@KnowledgePlus
نکته آموزشی:

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

@KnowledgePlus
آموزش سریع ایجاد پروژه در کامپایلر 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 تغییر دهید.

(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)

@KnowledgePlus
با توجه به مشترک بودن اکثر دستورات اسمبلی در خانواده های AVR و XMEGA، علاقه مندان به فراگیری برنامه نویسی اسمبلی برای خانواده XMEGA می توانند به بخش های 76 تا 91 فیلم های آموزش AVR مراجعه کنند.

@KnowledgePlus
نمونه ای از یک مدار چاپی که رسم آن بصورت یک رو تنها به دلیل استفاده از قطعات غیر smd و امکان عبور track ها از بین پایه های قطعات ممکن شده است.

@KnowledgePlus
نقل یک تجربه عملی:

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

@KnowledgePlus
نکته مهم برای انتخاب یک میکروکنترلر:

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

@KnowledgePlus
نکته طراحی مدار:

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

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

@KnowledgePlus
تمرین برنامه نویسی 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 در آن قرار خواهد گرفت.

@KnowledgePlus
مطابق تست های انجام شده، در IAR و AtmelStudio امکان تعریف متغیر در متن for که امکان مفیدی برای صرفه جویی در حافظه است، مانند مثال زیر قابل انجام است و خطایی از طرف کامپایلر ایجاد نمی شود:

for(unsigned char i=0;i<10;i++){...}

اما در Codevision (نسخه 2.05) این نوع تعریف از طرف کامپایلر پذیزفته نمی شود و خطا ایجاد می شود.

@KnowledgePlus
نقل یک تجربه عملی:

در آزمایش های انجام شده مشاهده شد که اکثر قریب به اتفاق IC های LM2576HVT-ADJ موجود در بازار تقلبی هستند و در ولتاژ و جریان های بالا دچار افت ولتاژ در خروجی می شوند که با واردات مستقیم این IC از مبدا خارجی معتبر، مشکل برطرف گردید.

@KnowledgePlus
توصیه ای به دوستانی که قصد دارند برنامه نویسی میکروکنترلر را بصورت حرفه ای و در بالاترین سطح دنبال کنند:

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

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

@KnowledgePlus
معرفی قطعه:

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

@KnowledgePlus
نکته آموزشی:

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

@KnowledgePlus