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
بین این دو رویکرد، دنیایی از تفاوت هست:

1- اول مطالبی را یاد می گیریم و بعد می گردیم و برای آنچه که یاد گرفته ایم، کاربردهایی را پیدا می کنیم.

2- بر اساس نیاز برای پیاده سازی کاربردها، دنبال یادگیری مطالب می رویم.

@KnowledgePlus
استفاده از مقادیر از پیش محاسبه شده (Precalculated) برای صرفه جویی در زمان محاسبات:

یکی از تکنیک ها در برنامه نویسی میکروکنترلر که باعث صرفه جویی در زمان محاسبات پیچیده و افزایش سرعت اجرای برنامه می شود، استفاده از مقادیر از پیش محاسبه شده (Precalculated) بجای محاسبات Real time است. مثالی از این مقادیر از پیش محاسبه شده، نمونه های یک موج سینوسی است که در هنگام برنامه نویسی بصورت Lookup table ذخیره سازی می شود و در هنگام اجرای برنامه بر حسب نیاز از این جدول استفاده می شود. البته ذخیره سازی مقادیر از پیش محاسبه شده منحصر به روش فوق در هنگام برنامه نویسی نیست و در برخی کاربردها، محاسبه این مقادیر می تواند یک بار در زمان اجرای برنامه و قبل از استفاده از آنها هم انجام شود و در حافظه قرار داده شود و در هنگام نیاز، مکررا از این مقادیر استفاده شود. بکارگیری هوشمندانه مقادیر از پیش محاسبه شده می تواند اجرای کاربردهایی با میکروکنترلرهای با کلاک پایین و cpu ضعیف را ممکن کند که در صورت عدم استفاده از این روش اجرای آن کاربردها ممکن نباشد.

@KnowledgePlus
صورت مسئله زیر نمونه ای از کاربرد روابط پایه هندسه و مثلثات است که در یکی از پروژه های صنعتی مهم و با ارزش افزوده بالا به عنوان بخشی از مراحل اجرایی کار پیاده سازی شد:

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

@KnowledgePlus
اعداد باینری علامت دار و sign extension:

در یک عدد علامت دار n بیتی، 1 بودن بیت دارای بیشترین ارزش معادل با ضرب یک علامت منفی در ارزش معادل این بیت است. مثلا در عدد 8 بیتی علامت دار 11111111، بیت ها به ترتیب معادل با 1، 2، 4، 8، 16، 32، 64 و 128- هستند. برای افزایش تعداد بیت های یک عدد علامت دار باید msb آن در تمام بیت های اضافه شده گسترش داده شود که به این عملیات sign extension گفته می شود. به عنوان مثال اگر بخواهیم عدد 8 بیتی علامت دار 10000011 را که معادل 125- است به عددی 16 بیتی تبدیل کنیم، عدد باینری 16 بیتی معادل برابر 1111111110000011 خواهد بود. در این مثال چون msb در عدد 8 بیتی 1 است، در تمام 8 بیت اضافه شده هم باید 1 قرار داده شود. در عدد 16 بیتی حاصل از عملیات sign extension این بار msb معادل 32768- است و بقیه بیت ها معادل با اعداد مثبت هستند و عدد کلی باز هم برابر 125- است.

@KnowledgePlus
جهت یادآوری:

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

@KnowledgePlus
چه کسانی از فعالیت در رشته الکترونیک خسته و پشیمان نمی شوند؟

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

@KnowledgePlus
مثالی از کدنویسی برای timeout در avr:

تابعی برای دریافت یک کاراکتر از طریق usart:

unsigned char receive_data(unsigned char *received_data)
{
/* Return value:
0: Timeout
1: Success
*/
timeout=TIMEOUT_VALUE;
do
{
if(UCSRA&(1«RXC))
{
*received_data=UDR;
return 1;
}
}
while(timeout);
return 0;
}
در وقفه یکی از تایمرها هم که با زمان مناسب اتفاق می افتد، مقدار timeout در صورت غیر صفر بودن کاهش می یابد:

if(timeout) timeout--;

@KnowledgePlus
نقل خاطره ای از دهه 70 و کمبود امکانات و سختی کار در آن زمان:

در اوایل دهه 70 برای نوشتن اولین برنامه میکروکنترلر، یک 8751H تهیه شد که قیمت آن حدود 7 هزار تومان بود که با توجه به قیمت حدود 40 هزار تومانی سکه در آن زمان، قیمت این میکروکنترلر با ارزش پول امروز بیش از 200 هزار تومان بود. حافظه این میکروکنترلر از نوع eprom بود و برای برنامه ریزی آن باید ابتدا حدود 20 دقیقه در معرض تشعشع لامپ های مخصوص قرار می گرفت تا قابلیت برنامه ریزی مجدد پیدا کند. با توجه به امکانات در آن زمان برنامه ریزی میکروکنترلر مستلزم مراجعه به جمهوری و بردن برنامه روی فلاپی دیسک برای مغازه هایی بود که پروگرامر میکروکنترلر را داشتند و هر بار هم که برنامه نوشته شده جواب نمی داد، باز باید این روند رفتن و اصلاح کردن برنامه و مراجعه مجدد به جمهوری و پاک کردن میکروکنترلر و برنامه ریزی انجام می شد. در نهایت برای میکروکنترلر مذکور و برای پروژه ای که جنبه ابتکاری و شخصی داشت، بدون هیچ استاد و راهنما و مرجعی به جز دیتاشیت های Intel که به سختی تهیه شده بود، برنامه ای به زبان اسمبلی نوشته شد و برای اصلاح و به نتیجه رسیدن آن مجموعا 6 بار به جمهوری مراجعه شد تا برنامه به جواب رسید. همین برنامه بعدا توسط شرکتی به محصولی تجاری تبدیل شد و ده ها عدد از آن تولید گردید.

@KnowledgePlus
- فایل PCB نسخه های قدیم و جدید برد آموزشی AVR و XMEGA
- فایل PCB پروگرامر AVRISP-MKII
- فایل PCB درایور استپر موتور 3 آمپر
- فایلهای hex قابل برنامه ریزی روی ATtiny13 برای ایجاد صدای پنج نوع آژیر

https://knowledgeplus.ir/download.aspx

دانلود طرح های برگزیده مسابقات علمی سال های 1393 و 1395 سایت شامل:

- اتصال HMI به XMEGA با ارتباط modbus
- ارسال و نمایش اطلاعات ماژول شتاب سنج بصورت بیسیم با ماژول های CMPS10 و nrf24L01
- آموزش جامع Ethernet

https://knowledgeplus.ir/contest/download

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

@KnowledgePlus
مقاله ای درباره عملکرد درایور میکرواستپ:

https://knowledgeplus.ir/userfiles/Microstepping.pdf

@KnowledgePlus
یک مشاهده عملی از قطعات تقلبی موجود در بازار:

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

@KnowledgePlus
مثال برنامه نویسی C:

با فرض علامت دار بودن متغیر data، بعد از اجرای خط زیر مقدار قدر مطلق data در آن قرار می گیرد.

data=data>=0?data:-data;

@KnowledgePlus
تصویر مجله الکترونیک مربوط به سال 1360 با قیمت 80 ریال

@KnowledgePlus
درود بر افراد با فرهنگ و با اخلاقی که به حقوق مولف و اصل مالکیت معنوی احترام می گذارند و از کپی کردن مطالب دیگران بدون ذکر مرجع خودداری می کنند.

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

@KnowledgePlus
یک نکته تلگرامی:

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

@KnowledgePlus
درباره برنامه نویسی حرفه ای و شباهت عملکرد مغز به عضلات:

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

@KnowledgePlus
نکاتی از زبان برنامه نویسی C:

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

unsigned short x=1;
long z;
z=-x;

در رابطه اخیر بعد از اعمال علامت منفی، مقدار 65535 در z قرار خواهد گرفت که دلیل آن 16 بیتی بودن و بدون علامت بودن x است. حاصل اعمال علامت منفی به متغیر 16 بیتی بدون علامت x برابر 65535 است و برای قرار گرفتن در مقدار 32 بیتی، دو بایت با مقدار صفر هم به 16 بیت اضافه می شود تا در متغیر 32 بیتی قرار بگیرد. پس با این روش نتیجه مورد انتظار به دست نمی آید. برای تصحیح نتیجه باید رابطه به این شکل نوشته شود:

z=-(long)x;

که در اینصورت حاصل در متغیر 32 بیتی z برابر با منفی یک (معادل با 4294967295) خواهد شد که همان عدد مورد انتظار است. صحت این موارد در شبیه ساز C-spy کامپایلر IAR هم تست شده است. (اگر در فهم این اعداد دچار ابهام هستید به مبحث اعداد علامت دار در مبنای دو مراجعه کنید).

@KnowledgePlus