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
مقاله ای درباره عملکرد درایور میکرواستپ:

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
تقریبا اکثر پروژه های جدی و مهم در عرصه دیجیتال و برنامه نویسی به واسطه مواردی مثل نویز، تغذیه، خطوط فرکانس بالا، ورودی و خروجی های آنالوگ و سایر موارد مشابه به نحوی به طراحی آنالوگ مربوط است. در این شرایط یا باید همه سخت افزارها را بصورت آماده تهیه کنیم و فقط فاز برنامه نویسی را به عهده بگیریم و یا اگر قصد طراحی سخت افزار را داریم، باید اطلاعات کافی از مباحث آنالوگ داشته باشیم.

@KnowledgePlus
نقل قولی از آقای مهندس مهدی سلگی (رتبه اول مسابقه علمی سال 1393 سایت):

در مدار داخلی plc های زیمنس، بین زمین مدار و earth دستگاه چهار مقاومت سری شده 270 کیلو اهمی و یک خازن با مقدار احتمالا 100nF بصورت موازی با مجموع مقاومت ها قرار داده شده است.

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

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

@KnowledgePlus
چگونه می توانیم برای کامپایلرهای مختلف یک کد مشترک بنویسیم:

قابلیت Conditional Compilation این امکان را فراهم می کند که با کامپایل کردن مشروط بخش هایی از کد که وابسته به یک کامپایلر خاص هستند، برای کامپایلرهای مختلف بتوانیم یک سورس مشترک را بنویسیم. به عنوان یک مثال در کد زیر بسته به اینکه کامپایلر IAR یا Codevision یا AVR-GCC باشد، 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

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

@KnowledgePlus
مطلب توضیح داده شده در این پست:

https://t.iss.one/KnowledgePlus/543

در کد ویژن هم تست شد و همان شرایط بر قرار بود و مقدار 65535 در صورت عدم type casting در z قرار می گرفت.

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

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

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

در هنگام آزمایش یک سیستم کنترلر PC based در یک محیط بسیار پر نویز صنعتی با انواع سرو موتورها و اینورترها و شیر برقی های در حال کار، ارتباط سریال با سیستم تحت کنترل توسط یک لپ تاپ Dell مجهز به پورت RS232 به خوبی و بدون مشکل بر قرار می شد. اما همین ارتباط از طریق یک کامپیوتر Desktop معمولی و غیر صنعتی دچار مشکل بود و بایت ها بصورت اشتباه رد و بدل می شدند و ارتباط بصورت مداوم قطع می شد.

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

@KnowledgePlus
قیمت بالای بردهای الکترونیک استفاده شده در نیروگاه ها:

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

@KnowledgePlus
شاید تاسف بار تر از در گذشت مریم میرزاخانی این باشد که قدر امثال او را تا زنده هستند نمی دانیم. یادش گرامی باد.

@KnowledgePlus