KnowledgePlus.ir
5.43K subscribers
45 photos
9 videos
15 files
176 links
کانال مهندس اوژن کی نژاد
کلیه مطالب این کانال به جز مواردی که صریحا در متن آن ذکر شده باشد جنبه تالیفی دارد و از جایی کپی نشده است.
کانال اشتغال:
@KnowledgePlusir
سایر کانال های وابسته:
@StepMotor
@MC3Delta
@FindChips
instagram.com/knowledgeplus.ir
Download Telegram
در صورتی که شغل شما به نحوی به الکترونیک مرتبط است، در حال حاضر وضعیت کاری و درآمد شما مشمول کدام یک از توصیفات زیر است؟
Anonymous Poll
8%
عالی
39%
متوسط
32%
ضعیف
21%
بسیار بد
اخیرا شرکتی در مورد مشکل ایجاد شده در تولید یک برد درخواست کمک کردند. مشکل از این قرار بود که بردی داشتند که نمونه قدیمی اش خوب کار میکرد ولی بردهای تولید جدید درست عمل نمیکردند و نمی توانستند علت مشکل را پیدا کنند. این برد فاقد اجزای برنامه پذیری مثل میکروکنترلر بود ولی آی سی های مختلفی روی برد وجود داشت. با توجه به ساختار برد به نظر میرسید که مشکل به علت فیک بودن یکی از قطعات در بردهای جدید است. در مورد قطعات اعلام کردند اکثرشان کاملا اصلی و اوریجینال هستند و فقط چند قطعه معدود از منابع نامطمئن تهیه شده اند. برای تشخیص قطعه فیک مسئله این بود که به علت پیچیدگی عملکرد مدار، امکان تشخیص از طریق تحلیل مدار یا مشاهده شکل موج میسر نبود.
به عنوان یک راه حل برای تشخیص قطعه غیراصلی به ایشان پیشنهاد شد که از برد سالم به عنوان شاهد کمک بگیرند. به این ترتیب که قطعات مشکوک را یک به یک از برد سالم و بدون مشکل به یکی از بردهای جدید منتقل کنند و در هر مرحله عملکرد را تست کنند و به محض آن که قطعه ای جابجا شد و بعد از آن مشکل برطرف شد نشان دهنده فیک بودن قطعه تعویض شده است.

@KnowledgePlus
در کاربردهای صنعتی گاهی این نیاز ایجاد میشود که جریان متناوبی به صورت ایزوله توسط ADC میکروکنترلر اندازه گیری شود. برای این کار روش های مختلفی وجود دارد که در این پست به یکی از آنها اشاره می شود.
شرکت Allegro MicroSystems طیف وسیعی از آی سی های سنسور جریان را تولید میکند که از طریق آنها میتوان جریان هایی تا محدوده ده ها آمپر را به صورت ایزوله اندازه گیری کرد. در بازار ایران آی سی هایی مثل سری ACS712 یا ACS758 کاملا شناخته شده و موجود هستند.
به عنوان مثال آی سی ACS712ELCTR-30A-T می تواند جریانی در محدوده 30A- تا 30A+ را به صورت ایزوله و خطی به ولتاژی در محدوده 0.5V تا 4.5V تبدیل کند. این ولتاژ بعد از تغییر مقیاس و به اصطلاح scale شدن می تواند به صورت مستقیم به ورودی ADC میکروکنترلر اعمال شود.
به عنوان یک نکته جانبی، تبدیل ولتاژ 0.5V تا 4.5V به مثلا 0V تا 3.3V یا سایر محدوده ها برای اعمال به ADC، نیاز به اطلاعاتی از طراحی مدارات آنالوگ دارد.

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

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

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

T.me/KnowledgePlus/1000

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

@KnowledgePlus
شخص محترمی تماس گرفتند و درخواست انجام پروژه ای با AVR را داشتند که به ایشان اعلام شد پروژه ای انجام نمی دهیم و باید به افرادی که کارشان انجام پروژه است مراجعه کنید. ایشان پاسخ قابل تاملی دادند مبنی بر این که افرادی هستند که انجام بدهند ولی درخواست چند میلیون تومان به عنوان دستمزد را دارند و مگر چه کاری جز برنامه نویسی انجام می دهند که چنین پولی را می خواهند بگیرند؟ در این رابطه این سوال پیش می آید که چرا انجام پروژه های الکترونیکی تا این حد از ارزش افتاده و خوار و خفیف شده که دستمزد چند میلیونی (کمتر از ۱۰ میلیون تومان) برای کاری که مستلزم گاهی سال ها زحمت و کسب تجربه است به نظر خیلی زیاد می آید؟ اما برای پرداخت دستمزد بعضی کارهای با سطح تخصص بسیار پایین تر و رقم های بسیار بالاتر، کسی اصلا احساس ناراحتی نمی کند؟ چرا نوبت الکترونیک و برنامه نویسی که می رسد اکثرا انتظار دستمزدهای پایین را دارند؟ پاسخ این است که مقصر اصلی خود متخصصان و فارغ التحصیلان این رشته هستند که در رقابت با یکدیگر، دائم قیمت کار سایر همکاران را شکسته اند و موجب از بین رفتن ارزش کارشان شده اند.

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

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

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

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

سری 23LC1024 یک آی سی ۸ پین SRAM با ظرفیت 128KByte است که ارتباط با آن از طریق پروتکل های SPI/SDI/SQI و فقط با چند پین محدود قابل انجام است و در پروژه هایی می تواند مورد استفاده قرار بگیرد که حافظه SRAM داخلی میکروکنترلر جوابگوی نیاز مورد نظر نباشد.

@KnowledgePlus
اطلاع رسانی:

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

@KnowledgePlus
کاربردهایی در الکترونیک وجود دارند که پیاده سازی آنها با میکروکنترلر نه به قابلیت پردازشی بالایی احتیاج دارد و نه سخت افزارهای جانبی چندان ویژه ای مورد نیاز است و حجم بخش اجرایی کد نوشته شده هم در حدی است که فلش میکروکنترلرهای ضعیف و ارزان هم برای ذخیره سازی جوابگو هستند. اما به علت وجود اطلاعات و دیتای از پیش محاسبه شده و Lookup Table های حجیم در آن کاربرد، سایزحافظه فلش مورد نیاز بسیار بزرگ است. بعضی طراحان در این شرایط فقط به واسطه دسترسی به حافظه فلش با ظرفیت بالا، از انواع گران قیمت خانواده stm32 استفاده می کنند. اما بجای این کار می توان از آی سی های فلش ارزان قیمت سریال مثل سری W25Qxx استفاده کرد که قابلیت اتصال به میکروکنترلر با ۴ پین از طریق ارتباط SPI را دارند و با قیمتی بسیار مناسب، ظرفیتی در حد مگا بایت را برای ذخیره سازی اطلاعات فراهم می کنند. در کارهای تولیدی و تعداد بالا که قیمت قطعات مهم است، چنین روشی می تواند صرفه جویی قابل توجهی در قیمت تمام شده ایجاد کند.

@KnowledgePlus
فرض کنید قرار باشد برای پروژه ای جدید با منطق عملکرد پیچیده، چندین هزار خط برنامه بنویسید. شما به کدام شیوه عمل می کنید؟
Final Results
74%
قبل از شروع برنامه نویسی، از فلوچارت یا شبه کد استفاده می کنم
26%
بدون استفاده از فلوچارت یا شبه کد نوشتن برنامه را شروع می کنم
KnowledgePlus.ir
فرض کنید قرار باشد برای پروژه ای جدید با منطق عملکرد پیچیده، چندین هزار خط برنامه بنویسید. شما به کدام شیوه عمل می کنید؟
نوشتن برنامه های بزرگ بدون استفاده از فلوچارت یا شبه کد علاوه بر طولانی شدن فرایند کد نویسی، احتمال ایجاد خطا در خروجی برنامه را هم بالا می برد و عموما روش درستی نیست.
در همین رابطه یک گام فراتر این است که در هنگام نوشتن برنامه، فهرست کلیه متغیرهای تعریف شده را پیش روی خود داشته باشیم و همیشه حواسمان باشد که هر متغیر یا فلگ در هر مرحله چه وضعیتی دارد؟ یکی از عوامل ایجاد باگ و عملکرد ناصحیح در خروجی برنامه ها این است که متغیرهایی برای رفع نیاز تعریف می شوند، اما بعدا تعیین تکلیف این متغیرها توسط برنامه نویس فراموش می شود و بعد از کلی وقت گذاشتن برای رفع اشکال تازه متوجه می شود که فلان متغیر یا فلگی که جایی تعریف کرده و بعدا به حال خود رها شده، موجب چنین مشکلی شده است. یک روش برای جلوگیری از چنین خطاهایی این است که کلیه متغیرهای تعریف شده را جایی کنار هم یادداشت کنیم و در هر مرحله از برنامه نویسی این سوال را مد نظر داشته باشیم که الان هر متغیر در این مرحله چه وضعیتی دارد و آیا مقدارش تاثیری در این بخش از کد دارد یا نه.

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

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

در یک کنترلر صنعتی مبتنی بر میکروکنترلر با تعداد زیادی ورودی و خروجی که از طریق RS232 فرمان می گرفت، در مقطعی این نیاز ایجاد شد که امکانات برد از نظر تعداد ورودی و خروجی ها دو برابر و قدرت پردازشی و ظرفیت حافظه بیشتر شود. برای رفع این نیاز یک گزینه ممکن این بود که از میکروکنترلر قوی تری استفاده شود و برد مجددا از نو طراحی شود که این روش مستلزم صرف زمان و هزینه زیادی بود. اما روی این برد ۲ پین آزاد وجود داشت و کاری که عملا انجام شد این بود که با کد نویسی مناسب، دو برد مشابه با یک پروتکل ارتباط سریال به صورت Master-Slave به هم متصل شدند و کنترلر اول از طریق ارتباط RS232 دستورات لازم را دریافت و بخشی را که مربوط به خودش بود اجرا می کرد و بخشی که به کنترلر دیگر مربوط می شد از طریق ارتباط سریال به آن کنترلر منتقل می شد تا توسط میکروکنترلر دوم اجرا شود. با این روش بدون هیچ گونه صرف هزینه ای برای طراحی سخت افزار و PCB جدید، اولا نیاز موجود برای ورودی و خروجی های بیشتر برطرف گردید و دوم این که به علت وجود دو CPU در مجموعه و تقسیم وظایف پردازشی بین آنها، نیاز به میکروکنترلری با قدرت پردازش و حافظه بیشتر منتفی شد.

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

T.me/KnowledgePlus/1141

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

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

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

@KnowledgePlus