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
یک نکته تلگرامی:

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

@KnowledgePlus
تجربه ای از خرابی یک شارژر لپ تاپ:

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

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

@KnowledgePlus
به اطلاع می رساند که برگزاری دوره های آموزشی بصورت کلاس های حضوری اعم از عمومی و خصوصی از سال ۱۳۹۴ تاکنون متوقف شده و تا اطلاع ثانوی هم تصمیمی برای برگزاری چنین دوره هایی وجود ندارد. چنانچه آموزشی هم ارائه شود تنها به شکل فیلم های آموزشی رایگان یا مقالات و نمونه کد و مانند آن خواهد بود.

@KnowledgePlus
پیرو پست های زیر:

https://t.iss.one/KnowledgePlus/42
https://t.iss.one/KnowledgePlus/211
https://t.iss.one/KnowledgePlus/318
https://t.iss.one/KnowledgePlus/422

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

@KnowledgePlus
یک تجربه درباره مشکل اسیلاتورهای کریستالی:

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

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

volatile unsigned long data32;
در حلقه اصلی برنامه:
...
cli();
data32++;
sei();
...
در روتین یک وقفه:
...
data32=0;
...

@KnowledgePlus