پیام های آموزشی کانال تلگرام t.me/KnowledgePlus در سال ۱۳۹۶

(لطفا از کپی کردن مطالب بدون ذکر منبع خودداری کنید)


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

-
نکته ای در کدنویسی:
در نامگذاری متغیرها و توابع و غیره استفاده از نام های کوتاهی که فاقد معنی مشخصی هستند (مثل a یا s یا tt و مانند آن) خوانایی کد را پایین می آورد و درک نحوه عملکرد کد را مشکل تر می کند. بنابراین بهتر است برای نامگذاری از اسامی معنی دار و متناسب با عملکرد استفاده شود. رعایت این مسئله معمولا تاثیر قابل توجهی در فهم محتوای کد در مراجعات بعدی خواهد داشت.

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

-
مشترک بودن فرمان های Run و Stop در کنترلرهای صنعتی و تبعات احتمالی آن:
فرض کنیم در یک دستگاه صنعتی با شروع به کار دستگاه مثلا یک جک حرکت می کند یا موتوری شروع به چرخش می کند یا گیوتینی عمل می کند و موارد مشابهی که اگر اشتباهی در راه اندازی دستگاه بوجود بیاید می تواند منجر به وارد شدن خسارت یا آسیب به کاربران دستگاه شود. برای کنترل چنین دستگاه هایی استفاده از روش Toggle کردن یک کلید یا ناحیه ای در صفحه تاچ به این ترتیب که یک بار به عنوان فرمان Run (یا Start) و بار دوم به عنوان فرمان Stop عمل کند، به هیچ عنوان مناسب نیست. زیرا ممکن است به دلیل عواملی مانند سر و صدا یا دید نداشتن اپراتور نسبت به وضعیت عملکرد فعلی دستگاه یا خستگی و مانند آن، اپراتور با این تصور که دستگاه از قبل در حال کار است، کلید مشترک Run/Stop را فشار دهد تا دستگاه را متوقف کند. اما بصورت سهوی باعث راه اندازی ناخواسته دستگاه و ایجاد آسیب و خسارت شود. اما وقتی فرمان های Run و Stop مجزا از یکدیگر باشند، اپراتور برای شروع و توقف دستگاه دو محل مختلف را لمس خواهد کرد و چنین خطایی رخ نخواهد داد. بنابراین اکیدا توصیه می شود در طراحی چنین سیستم هایی برای عملکردهای Run و Stop دو کلید مجزا در نظر گرفته شود.

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

-
نکته ای در تعمیرات منابع تغذیه سوییچینگ:
در منابع تغذیه سوییچینگ صنعتی بارها مشاهده شده که به دلیل اتمام عمر و خرابی خازن های الکترولیتی که در معرض پالس های جریان هستند، ولتاژ خروجی دچار افت شده و با تعویض خازن های مذکور ولتاژ خروجی منبع به وضعیت عادی بازگشته است.

-
اتصال Quadrature encoder به XMEGA محدود به پین های خاصی نیست و می توانیم از پین های متوالی هر یک از پورت های A تا F برای این منظور استفاده کنیم. این میکروکنترلر از اتصال 3 عدد Quadrature encoder بصورت سخت افزاری پشتیبانی می کند.
-
نکاتی از زبان برنامه نویسی C:
برای نام گذاری متغیرها و توابع و ماکروها و ... یک سری قواعد نام گذاری شناخته شده وجود دارد که برنامه نویسان حرفه ای آنها را رعایت می کنند. برای آگاهی از جزییات این قواعد نام گذاری، در مورد Naming conventions در C مطالعه کنید.

-
مطلب زیر در سال 1391 در یکی از انجمن ها نوشته شد و به لحاظ اینکه ممکن است برای برخی مخاطبین مفید باشد در اینجا قرار داده می شود:
در یک سیستم مبتنی بر AVR و دارای ورودی های میکروسوئیچ و با حجم پردازش تا مرزهای توان CPU، گزارش شد که در مواقعی میکروسوییچ ها از کار می افتند و عمل نمی کنند. برای دست یافتن به منبع مشکل، مراحل زیر طی شد:
1- در ابتدا طبقه ورودی که میکرسوئیچ ها از طریق آن به میکروکنترلر متصل بودند، بررسی و مشخص شد که مدارات سالم هستند.
2- مسئله Hang کردن میکروکنترلر مورد بررسی قرار گرفت که معلوم شد در زمان بروز مشکل، میکروکنترلر سایر وظایف خود را به درستی انجام می دهد و بنابراین مسئله Hang کردن منتفی است.
3- با توجه به نویز القایی شدید ناشی از سروموتور ها و اینورتر و ... روی بدنه دستگاه، اصلاحاتی در نحوه اتصال ورودی ها برای حفاظت از اسپایک های احتمالی ایجاد شد که عملا نتیجه ای نداشت.
4- در مرحله بعد این احتمال بررسی شد که شاید به هر دلیلی پورت متصل به میکروسوییچ ها از کار می افتد. سوال مطرح شده این بود که چرا سایر پورت ها از کار نمی افتند. بنابراین ورودی ها به پورت دیگری منتقل شدند. اما روی پورت دیگر هم همین مشکل برقرار بود.
5- در مرحله بعد تغییری در برنامه اعمال شد، به این ترتیب که اطلاعات خوانده شده از ورودی ها را روی خروجی های دیگری ظاهر کند تا به این ترتیب بتوان اطلاع حاصل کرد که در زمان ایجاد این مشکل، آیا اطلاعات درست از پین های ورودی خوانده می شود یا خیر. با آزمایش های انجام شده مشخص شد که در زمان بوجود آمدن این مشکل، آنچه در خروجی منعکس می شود، نشان دهنده ورودی های واقعی نیست. به عبارت دیگر ورودی ها به صورت صحیح خوانده نمی شوند.
6- از مرحله قبل می توان اینگونه نتیجه گیری کرد که یا بافر ورودی پورت از کار می افتد که وضعیت نادرست روی خروجی منعکس می شود و یا محتوای پورت اصولا خوانده نمی شود. با توجه به مکان قرارگیری خواندن پورت در روتین وقفه تایمر و وجود وقفه دیگری با اولویت استاتیک بالاتر (آدرس کمتر در جدول بردار وقفه)، این احتمال قوی مطرح شد که به دلیل وقوع پی در پی وقفه دیگر با اولویت استاتیک بالاتر، برنامه هیچ گاه نمی تواند وارد وقفه تایمر شود و بنابراین روند خواندن پورت مختل می شود. برای بررسی این مسئله بجای استفاده از وقفه، از روش Polling برای چک کردن Flag وقفه تایمر و سپس خواندن پورت استفاده شد که در این حالت تقاضای پی در پی وقفه ها نمی تواند مانع اجرای برنامه در حلقه اصلی شود و بعد از هر وقفه حداقل یک دستور اجرا می شود. بعد از پیاده سازی این روش، خوشبختانه مشکل برطرف شد که نشان دهنده متوقف شدن روند اجرای وقفه تایمر به دلیل تقاضای وقفه های مکرر توسط یک وقفه با اولویت استاتیک بالاتر است.
7- نتیجه گیری از مراحل بالا: این مشکل به دلیل تقاضاهای مکرر وقفه و عدم توانایی CPU برای پاسخگویی به وقفه با اولویت پایین تر ایجاد شد و برای برطرف کردن آن، عملیات خواندن پورت در فواصل زمانی مشحص که از اولویت زمانی بسیار بالایی هم برخوردار نبود، از روتین وقفه به حلقه اصلی منتقل شد.

-
در الکترونیک و برنامه نویسی وقتی به یک موضوع بسیار پرکاربرد و دارای خواهان زیاد، ولی سخت و مبهم می رسیم که کمتر کسی توان و حوصله کار کردن روی آن را دارد، جا دارد که به این احتمال فکر کنیم که شاید این یکی از همان موضوعاتی است که صرف وقت زیاد روی آن و دست یافتن به زیر و بم آن می تواند یک جهش اقتصادی غیر معمول و فوق العاده را برای ما ایجاد کند.
-
مشاهدات نشان می دهد که در صنایع کشور و از جمله صنایع خصوصی، دریایی از کار و صورت مسئله های بر زمین مانده وجود دارد که بسیاری از آنها حتی با دانش و اطلاعات چند دهه قبل هم قابل حل هستند. حال اینکه چه مشکلی در این میان وجود دارد که یک گروه که در حال کار با آخرین تکنولوژی های روز هستند عملا بیکارند و نمی توانند لینک و ارتباط لازم را با این صنایع برای رفع نیازهای آنها برقرار کنند، مسئله ای است که جای تامل و بررسی دارد.
-
یک تمرین کاربردی در برنامه نویسی میکروکنترلر:
یک تمرین کاربردی در برنامه نویسی میکروکنترلرها، کدنویسی برای پیاده سازی منوها است. برای طرح یک مثال در این مورد فرض می کنیم که از یکی از انواع LCD و صفحه کلید (یا تاچ) با شش کلید Enter و Esc و Up و Down و Left و Right به عنوان سخت افزار پایه استفاده شده باشد. با این پیش فرض، پیاده سازی عملکرد زیر مورد نظر است:
1- روی صفحه نمایش یک منوی اصلی با چند سطر نمایش داده می شود. با کلید های Up یا Down می توان بین سطرهای مختلف این منو حرکت کرد. برای فعال نشان دادن هر سطر می توان از روش هایی مانند معکوس کردن پیکسل های آن سطر در LCD های گرافیکی یا نمایش کارکترهایی نظیر * یا > در کنار سطر فعال برای LCD های کاراکتری استفاده کرد.
2- با فشار دادن Enter روی هر سطر فعال، صفحه تنظیمات متناظر با آن سطر به همراه پارامترهایش نمایش داده می شود. مقدار اولیه پارامترها از حافظه eeprom تامین می شوند.
3- برای حرکت بین پارامترهای یک صفحه از کلیدهای Left و Right و برای تنظیم مقدار آنها در محدوده مجاز از کلیدهای Up و Down استفاه می شود.
4- بعد از تنظیم پارامترها در مقدار دلخواه، از کلید Esc برای خروج از صفحه و بازگشت به منوی اصلی استفاده می شود. در هنگام خروج از صفحه چنانچه پارامتری تغییر کرده باشد، مقدار آن در محل متناظر در حافظه eeprom دخیره می شود تا بعد از خاموش شدن سیستم همچنان محفوظ باقی بماند.
5- در هر صفحه ممکن است صفحات داخلی تری هم وجود داشته باشند که برای وارد شدن به هر مرحله می توان از کلید Enter و برای خروج به مرحله قبلی از کلید Esc استفاده کرد.
مثال اخیر تنها یک شکل ساده از برنامه نویسی منوها است و در کاربردهای عملی منطق برنامه می تواند بسیار پیچیده تر از موارد شرح داده شده باشد.
-

فرمولی برای موفقیت در الکترونیک در چند کلمه:
تمرکز روی کاربرد بجای تمرکز روی ابزار.

-

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

نتیجه عملیات مختلف انجام شده در یک تابع را می توان در مقدار بازگشتی تابع منعکس کرد به نحوی که از روی مقدار بازگشتی، نتیجه عملکرد تابع مشخص شود. به عنوان یک مثال، مقدار بازگشتی بسیاری از توابع در کتابخانه Fatfs از نوع FRESULT در نظر گرفته شده اند که از روی مقدار بازگشتی می توان به نتیجه عملیات انجام شده در توابع مذکور پی برد. مثلا:
FRESULT f_read ( ... )
جزییات FRESULT به این صورت تعریف شده است که هر مقدار بازگشتی مترادف با یکی از وضعیت های ممکن بعد از اجرای تابع است. برای توضیح بیشتر به فایل های ff.c و ff.h در کتابخانه مراجعه کنید:

typedef enum {
FR_OK = 0,
FR_DISK_ERR,
FR_INT_ERR,
FR_NOT_READY,
FR_NO_FILE,
FR_NO_PATH,
FR_INVALID_NAME,
FR_DENIED,
FR_EXIST,
FR_INVALID_OBJECT,
FR_WRITE_PROTECTED,
FR_INVALID_DRIVE,
FR_NOT_ENABLED,
FR_NO_FILESYSTEM,
FR_MKFS_ABORTED,
FR_TIMEOUT,
FR_LOCKED,
FR_NOT_ENOUGH_CORE,
FR_TOO_MANY_OPEN_FILES,
FR_INVALID_PARAMETER
} FRESULT;
-
نوشتن یک برنامه پیچیده و مفصل و چندین هزار خطی بدون تدوین چارچوب کلی عملکرد نرم افزار با استفاده از روش هایی مانند فلوچارت یا شبه کد (Pseudocode) معمولا به نتایج خوبی منجر نمی شود و بسیار مشاهده می شود که افراد کم تجربه ای که برای نوشتن چنین برنامه هایی بدون در نظر گرفتن یک نقشه راه کلی، از خط اول برنامه شروع به کدنویسی می کنند، در بین راه دچار مشکل می شوند و برنامه آنها یا به نتیجه نمی رسد و یا توام با باگ های مختلف است.
-
یکی از ذهنیت های غلط افراد فنی در تولید محصولات این است که تصور می کنند آنها هستند که کار اصلی را انجام می دهند که مثلا مداری را طراحی می کنند یا برنامه ای را می نویسند و برای کار کسانی که بخش های تجاری و فروش را به عهده دارند، وزن و اهمیت کافی قائل نیستند. در حالی که در یک فعالیت اقتصادی اگر بخش تجارت و فروش وظیفه خود را به درستی انجام ندهد، حاصل زحمات بخش های علمی و فنی به ثمر نخواهد نشست و در حد ایده پردازی و نمونه سازی باقی خواهد ماند. بر همین اساس برای تبدیل کردن یک ایده به یک محصول موفق باید یک بار این ذهنیت را اصلاح کنیم و بدانیم که اهمیت و وزن فعالیت بخش های بازاریابی و فروش و تبلیغات و مانند آن اگر از بخش های فنی بیشتر نباشد، در اکثر موارد کمتر هم نیست.
-
در توسعه پروژه ها گاهی به این نقطه می رسیم که به دلیل جوابگو نبودن و کمبود امکانات میکروکنترلری که به آن مسلط هستیم (کمبود پین، کمبود تایمر، کمبود حافظه، سرعت پردازش پایین و ...)، باید از خانواده جدیدی از میکروکنترلرها استفاده کنیم. اما فرصت و توجیه کافی را هم برای وقت گذاشتن روی خانواده جدید در اختیار نداریم. در این شرایط مناسب است که به امکان شبکه کردن دو یا چند عدد از همان میکروکنترلری که به آن مسلط هستیم به عنوان یک راه حل توجه کنیم به نحوی که انجام وظایف بین این میکروکنترلرها تقسیم شود.
-
انتخابات از نگاه یک برنامه نویس C:

typedef enum
{
TRUE,
FALSE,
NONE
}VOTE_TYPE; 

VOTE_TYPE vote;

...

if((vote==FALSE)||(vote==NONE)) while(1);
...
-
زمانی بود که برای جذب شدن در بازار کار رشته الکترونیک داشتن مدرک تحصیلی کافی بود. آن دوره گذشت و زمانی رسید که آشنایی با سخت افزار ها و نرم افزارها و راه اندازی آنها و گذراندن دوره های تخصصی در آموزشگاه ها و شرکت ها عامل مهمی برای جذب در بازار کار رشته الکترونیک بود. آن دوره هم می توان گفت که تقریبا سپری شده و در حال حاضر اکثر جویندگان کار دارای فهرستی از دوره های گذرانده شده و سخت افزارها و نرم افزارهای راه اندازی شده هستند. اکنون شرایط کار به گونه ای است که تنها برای کسی که واقعا کاربلد باشد و دارای دانش و تجربه کافی باشد تضمین کار وجود دارد. از آنجایی که کسب مهارت و تجربه تنها با صرف زمان زیاد میسر است و راه میانبری برای آن وجود ندارد، یکی از اساسی ترین سوال ها از یک فرد متقاضی به غیر از اینکه چه مدرکی دارد و چه دوره هایی را گذرانده این است که:
چقدر و چند ساعت برای تمرین و کسب مهارت و تجربه آموزی بصورت عملی تاکنون وقت گذاشته ای؟

-
نقل یک تجربه عملی:
در مداری که خروجی میکروکنترلر بصورت مستقیم و بدون رعایت ایزولاسیون به درایورهای Mosfet و igbt مانند IR2130 متصل شده است، چندین بار مشاهده شد که یک پین میکروکنترلر سوخته و به درستی عمل نمی کند. این مسئله به احتمال زیاد نشان دهنده یک ولتاژ بالای برگشتی از آی سی درایور به پین میکروکنترلر است که باعث سوختن آن می شود. در چنین شرایطی برای محافظت پین به غیر از بحث ایزولاسیون می توان از روش سری کردن مقاومت مناسب و قرار دادن دیودهای حفاظتی معکوس (علاوه بر دیودهای داخلی) در ورودی پین استفاده کرد.

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

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

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

تمرین برنامه نویسی میکروکنترلر:
یک کلید push button به عنوان ورودی و یک led با واسطه یک مقاومت به عنوان خروجی به میکروکنترلری متصل شده اند. هدف کم و زیاد کردن نور led به روش pwm از طریق همین یک کلید است. بعد از ریست، کلید بصورت پیش فرض وظیفه افزایش نور را به عهده دارد. روش کار به این ترتیب است که اگر کلید به مدت 800 میلی ثانیه نگه داشته شود، بعد از سپری شدن این زمان یک پله به نور led اضافه می شود و با فرض نگه داشتن کلید، این افزایش در هر 100 میلی ثانیه تا رسیدن به حداکثر نور led ادامه می یابد. اما برای تغییر وظیفه کلید از افزایش نور به کاهش آن و برعکس باید ضربه سریعی روی کلید زد و چنانچه زمان فشار دادن کلید از 500 میلی ثانیه کمتر باشد، وظیفه کلید تغییر می کند. بعد از تغییر وظیفه کلید از افزایشی به کاهشی و رها کردن آن، نگه داشتن مجدد کلید به همان روالی که توضیح داده شد، این بار باعث کاهش نور led می شود. پس به این ترتیب تنها با یک کلید می توان عملیات افزایش یا کاهش نور led را انجام داد. این تمرین نمونه ای از صورت مسئله ای است که سخت افزار آن بسیار ساده و ابتدایی است. اما پیاده سازی آن به لحاظ کدنویسی چندان هم ساده نیست.
-
در منابع مختلف ذکر شده که استنشاق دود حاصل از لحیم کاری و وان قلع و مانند آن، مضر و خطرناک است. با صرف هزینه کم و نصب فن روی لوله یا کانال هوای مناسب می توان این دود مضر را به فضای باز هدایت کرد. مراقب سلامتی خود باشیم.

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

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

اعداد باینری علامت دار و 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- است.

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

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

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

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

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

مثال برنامه نویسی C:
با فرض علامت دار بودن متغیر data، بعد از اجرای خط زیر مقدار قدر مطلق data در آن قرار می گیرد.
data=data>=0?data:-data;
-
درود بر افراد با فرهنگ و با اخلاقی که به حقوق مولف و اصل مالکیت معنوی احترام می گذارند و از کپی کردن مطالب دیگران بدون ذکر مرجع خودداری می کنند.
-
در یک کدنویسی اصولی، تمام شرایط ممکن و محتمل برای یک سیستم از جمله مواردی مانند فشار دادن اشتباه کلیدها توسط اپراتور، رفتن برق بین انجام عملیات، قطع ناگهانی ارتباط با ماژول ها و دستگاه های جانبی یا ایجاد شرایط خطا در آنها و کلیه موارد مشابه باید در تدوین فلوچارت برنامه و در هنگام پیاده سازی آن در نظر گرفته شود. یکی از اشکالات برنامه هایی که توسط افراد مبتدی نوشته می شود، در نظر نگرفتن همین "اگر" ها در منطق برنامه است که در شرایط خاص می تواند منجر به هنگ کردن یا عملکرد ناخواسته خروجی برنامه شود.
-
یک نکته تلگرامی:
هر چند این مطلب بصورت مستقیم مرتبط با الکترونیک نیست. اما در راستای راهنمایی به کسانی که قصد دارند برای تبلیغ محصول یا خدمات مرتبط با الکترونیک در یک کانال تلگرام به دلیل تعداد اعضای آن هزینه ای را صرف کنند، پیشنهاد می شود ابتدا به آمار بازدید پست هایی از آن کانال که چندین روز از انتشار آنها گذشته و در جای دیگری به اشتراک گذاشته نشده مراجعه کنند و نسبت آمار بازدید پست ها با تعداد اعضای کانال را مقایسه کنند و چنانچه تفاوت قابل توجهی بین این دو عدد وجود داشت نشان دهنده fake بودن اعضای کانال است. در این شرایط ممکن است صرف هزینه برای معرفی محصول یا خدمات در چنین کانالی به نتیجه مورد انتظار منجر نشود.
-

درباره برنامه نویسی حرفه ای و شباهت عملکرد مغز به عضلات:
شاید برای کسانی که در مقاطعی درگیر برنامه نویسی و نوشتن کدهای پیچیده و پرحجم شده اند، این تعبیر ملموس باشد که عملکرد مغز تا حدی شبیه به عملکرد عضلات بدن است. همانطور که آمادگی عضلات با تمرینات جسمی افزایش می یابد و سکون و بی حرکتی موجب ضعیف شدن آنها می شود، به طریق مشابه مغز نیز مانند یک عضله نیاز به تمرین دارد و این قابلیت که کسی بتواند مثلا 12 ساعت بصورت مداوم در یک روز کدهای پیچیده را بنویسد و تحلیل کند، نیاز به تمرین و ممارست زیاد برای تقویت قابلیت کار کشیدن از مغز در مدت طولانی دارد و تنها وابسته به خواست فرد یا حتی سواد و دانش او به تنهایی نیست. یک ورزشکار حرفه ای به دلیل آمادگی که به واسطه تمرین پیدا کرده قادر است ساعت ها در یک روز ورزش و فعالیت کند و خسته نشود. اما یک شخص کم تحرک در فعالیت های مشابه زود خسته می شود و عضلاتش قدرت و استقامت عضلات یک فرد ورزشکار را ندارند. به همین ترتیب کسی که در کدنویسی تمرین نداشته باشد، در هنگام کار بعد از مدت کوتاهی خسته می شود و نمی تواند متمرکز باقی بماند. عبارت معروف "حوصله ندارم" در بسیاری از موارد حاصل همین تنبل شدن ذهن و عادت نداشتن به تمرکز و انجام پردازش های ذهنی پیچیده است.
-
نکاتی از زبان برنامه نویسی 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 هم تست شده است. (اگر در فهم این اعداد دچار ابهام هستید به مبحث اعداد علامت دار در مبنای دو مراجعه کنید).
-
تقریبا اکثر پروژه های جدی و مهم در عرصه دیجیتال و برنامه نویسی به واسطه مواردی مثل نویز، تغذیه، خطوط فرکانس بالا، ورودی و خروجی های آنالوگ و سایر موارد مشابه به نحوی به طراحی آنالوگ مربوط است. در این شرایط یا باید همه سخت افزارها را بصورت آماده تهیه کنیم و فقط فاز برنامه نویسی را به عهده بگیریم و یا اگر قصد طراحی سخت افزار را داریم، باید اطلاعات کافی از مباحث آنالوگ داشته باشیم.
-
نقل قولی از آقای مهندس مهدی سلگی (رتبه اول مسابقه علمی سال 1393 سایت):
در مدار داخلی plc های زیمنس، بین زمین مدار و earth دستگاه چهار مقاومت سری شده 270 کیلو اهمی و یک خازن با مقدار احتمالا 100nF بصورت موازی با مجموع مقاومت ها قرار داده شده است.
-

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

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

مطلب توضیح داده شده در این پست:
https://t.me/KnowledgePlus/543
در کد ویژن هم تست شد و همان شرایط بر قرار بود و مقدار 65535 در صورت عدم type casting در z قرار می گرفت.

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

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

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

یکی از دوستان که در مقطع PHD در کشور سوئد تحصیل کرده اند، تعبیر جالبی را به نقل از یکی از اساتید خود مطرح کردند بدین مضمون که هرچند عموم دانشجویان سوئدی در رشته های فنی از نظر محاسبات تئوری چندان قوی نیستند. اما در عوض هکرهای بسیار خوبی هستند که در اینجا منظور از هکر معنای معمول آن نیست. بلکه منظور این است که این دانشجویان وقتی با یک سخت افزار یا نرم افزار کار می کنند، این قدر به جنبه های مختلف آن مشغول می شوند و با آن کار می کنند و روی آن متمرکز می شوند که تمام زیر و بم آن را در می آورند و به وجوه مختلف آن سخت افزار یا نرم افزار مسلط می شوند و به اصطلاح آن را هک می کنند. و این درست برخلاف روالی است که امروز در سطح اکثریت جامعه علمی دانشجویی ما وجود دارد که وقت نگذاشتن و سر هم بندی کردن و به دنبال لقمه آماده بودن و چیزی را از جایی دانلود کردن و بدون تسلط به جزییات آن یک جوابی از آن گرفتن، رویکرد غالب اکثر دانشجویان است.
-
پیرو پست های زیر:
https://t.me/KnowledgePlus/42
https://t.me/KnowledgePlus/211
https://t.me/KnowledgePlus/318
https://t.me/KnowledgePlus/422
در بردهای میکروکنترلری که در معرض گرد و غبار قرار دارند این مسئله مشاهده شد که علیرغم اتصال پین ریست از طریق یک مقاومت به Vcc، به دلیل وجود براده های فلزی بسیار ریز در گرد غباری که روی پین های میکروکنترلر جمع شده بود، مسیر جریانی بین پین ریست و زمین مدار از طریق براده ها ایجاد میشد که موجب ریست شدن میکروکنترلر حتی با وجود اتصال مقاومت به Vcc میگردید. اما با حذف مقاومت و اتصال مستقیم پین ریست به Vcc از طریق یک جامپر، این مشکل مرتفع گردید. زیرا در این شرایط اگر براده ها مسیری را برای هدایت جریان تا زمین ایجاد کنند، به دلیل عبور جریان بالا بین زمین و Vcc از طریق براده و ابعاد بسیار کوچک آنها، براده ها فورا ذوب می شوند و تاثیر خود را از دست می دهند. اما در صورت سری کردن مقاومت با پین ریست چنین شرایطی محقق نخواهد شد.
-
یک تجربه درباره مشکل اسیلاتورهای کریستالی:
بارها مشاهده شده که وقتی منبع کلاک میکروکنترلر از اسیلاتور داخلی متصل به کریستال خارجی تامین می شود، بعد از راه اندازی مدار در ابتدا اسیلاتور به خوبی عمل می کند. اما گاهی به دلایلی مانند خرابی خازن های متصل به کریستال یا روغن لحیم بجا مانده بین پایه ها و موارد مشابه بعد از سپری شدن مدت زمانی حدود چند دقیقه، نوسان اسیلاتور دچار اختلال می شود که باعث عملکرد ناخواسته میکروکنترلر می گردد. بر اساس همین تجربه هر بردی که از نظر تامین کلاک در وضعیت استفاده از اسیلاتور داخلی متصل به کریستال خارجی باشد حداقل بین نیم تا یک ساعت تست می شود تا اگر قرار است مشکلی در نوسان اسیلاتور کریستالی ایجاد شود خود را در این مدت زمان نشان دهد.

-

در نمونه کد زیر که برای avr نوشته شده به دلیل این موضوع فکر کنید که چرا وقفه قبل از تغییر در data32 غیر فعال و بعد فعال شده است:
volatile unsigned long data32;
در حلقه اصلی برنامه:
...
cli();
data32++;
sei();
...
در روتین یک وقفه:
...
data32=0;
...
-
شخصی که برای کارآموزی به شرکتی رفته بود نقل می کرد که بردی به ظاهر پیچیده و با انواع قطعات متنوع را برای مهندسی معکوس و در آوردن نقشه آن در اختیارم قرار دادند که بعد از زحمات بسیار برای استخراج نقشه اتصالات برد به این نتیجه رسیدیم که بسیاری از قطعات آن برد عملا نقشی در عملکرد آن ندارند و بعضی حتی به جایی وصل نیستند و آن قطعات تنها برای پیچیده و پیشرفته به نظر رسیدن مدار روی برد قرار داده شده اند.
-
اخیرا برای تولید یک برد الکترونیک و به منظور قرار ندادن پتانسیومتر، دو نوع از LCD های کاراکتری 2x8 موجود در بازار از این نظر تست شدند که با قرار دادن چه مقاومتی بین پین تنظیم کنتراست تا زمین، بهترین سطح کنتراست ایجاد می شود که در یک نوع از LCD ها مقاومت 2.2K و در دیگری مقاومت 4.7K بهترین شرایط نمایش را ایجاد می کرد.
-
برخی از دانشجویان به شدت عجله دارند که هر چه سریعتر فارغ التحصیل شوند تا بتوانند وارد بازار کار شوند و به همین دلیل درس ها را به صورت نصفه و نیمه می گذرانند و به هر شکلی پاس می کنند. اما بسیاری از این افراد وقتی که وارد بازار کار می شوند تازه متوجه می شوند که چه اشتباهی را مرتکب شده اند و آرزو می کنند که ای کاش از فرصت حضور در دانشگاه بهره بیشتری می بردند و بدون عمیق شدن در مباحث تئوری و استفاده کافی از آزمایشگاه ها و امکانات عملی دانشگاه با این عجله فارغ التحصیل نمی شدند.
-
محاسبه سرانگشتی خازن خروجی پل دیود:
برای محاسبه ظرفیت خازن خروجی پل دیود به ازای ولتاژ ریپل دلخواه می توان از فرمول زیر استفاده کرد که در آن i جریان متوسط و Vr ولتاژ ریپل است.

C=0.01.i/Vr
-
زرنگی در دو نسخه
نسخه یک:
-هر چه را که یاد گرفته ایم و هر تجربه ای را که داریم برای خودمان نگه می داریم و مراقبت می کنیم که اصلا به کسی چیزی را یاد ندهیم.
- اگر کتاب یا جزوه یا سایت یا کانال تلگرام یا سایر موارد مشابهی را دیدیم که مفید هستند به هیچ عنوان صدای آن را در نمی آوریم تا مبادا کسی از آنها استفاده نکند. 
- رشد و پیشرفت اطرافیان نه تنها برای ما مهم نیست بلکه پیشرفت خود را در عقب نگه داشتن و ناآگاهی دیگران جستجو می کنیم.
- هر چه بدبختی و گرفتاری و ناکامی داریم به اشتراک می گذاریم و در مورد موفقیت ها و پیشرفت های خود اصلا با کسی صحبت نمی کنیم.
- از انجام هر عمل غیر اخلاقی مثل کپی کردن نتیجه زحمات دیگران و انتشار آنها به نام خود، اسکن کردن کتاب ها و تکثیر غیرقانونی آنها، انجام پروژه دانشجویی و نوشتن پایان نامه برای افراد دیگر و خلاصه هرکار خلافی که سود و منفعتی در آن باشد خودداری نمی کنیم و رعایت اخلاق و حقوق دیگران برای ما مهم نیست.
نسخه دو:
- زرنگی و پیشرفت واقعی را در این می بینیم که همه با هم رشد کنیم. بنابراین از هیچ راهنمایی و کمکی به دیگران مضایقه نمی کنیم.
- بجای تزریق روحیه ناامیدی و ناکامی، تجربیات مفید و موفقیت های خود را با دیگران به اشتراک می گذاریم تا بقیه هم از آن استفاده کنند و روحیه بگیرند.
- اگر قوی شدیم، روزهای ضعیف بودن خود را از یاد نمی بریم و به کسانی که مانند گذشته ما ضعیف هستند کمک می کنیم تا آنها هم قوی شوند.
- تحت هر شرایطی اخلاق را رعایت می کنیم و به حقوق دیگران احترام می گذاریم و به خاطر منافع شخصی خود دست به انجام هرکاری نمی زنیم.
* انتخاب نسخه زرنگ بودن به عهده مخاطب.

-
گاهی با افرادی مواجه می شویم که یک محصول الکترونیکی را در حد نمونه سازی تولید کرده اند، اما سرمایه کافی برای تولید و بازاری را برای فروش آن محصول در اختیار ندارند. با این حال به دلایلی مانند ترس از کپی شدن طرحشان یا عدم اعتماد و تمایل برای مشارکت با افراد دیگر حاضر نیستند با کسانی که صاحب سرمایه و بازار فروش هستند در سود خود شریک شوند. در نهایت هم محصولشان هیچ وقت به مرحله تولید نمی رسد و در حد یک نمونه باقی می ماند. به نظر می رسد در چنین شرایطی پذیرفتن ریسک مشارکت با دیگران و قناعت به سود کمتر شاید بهتر از منتفی شدن اصل صورت مسئله و به اصطلاح خاک خوردن نتیجه ایده مورد نظر باشد.
-
در مورد فرمول محاسبه خازن خروجی پل دیود در پست های قبلی، ذکر این توضیح ضروری است که فرمول مذکور بصورت تقریبی و با فرض یکسوسازی ولتاژ سینوسی با فرکانس 50 هرتز توسط پل دیود نوشته شده است.
-
بیشتر افرادی که از وضع بد کار در رشته الکترونیک می نالند، کسانی هستند که از طریق انجام پروژه امرار معاش می کنند. برای چندمین بار تاکید می شود که انجام دادن پروژه به این معنا که فردای تحویل پروژه دوباره در نقطه صفر کاری قرار بگیریم و منتظر این باشیم که چه زمانی پروژه بعدی به ما محول شود، در درازمدت آخر و عاقبتی به لحاظ بازده مالی و امنیت شغلی نخواهد داشت. به انجام پروژه های تکی و موردی تنها باید به عنوان یک مرحله گذر نگاه کنیم.
-
مثالی از نحوه تعریف کردن یک بایت در union و دسترسی به آن بصورت بیتی و بایتی (کامپایلر IAR):

union
{
unsigned char flags_byte;
struct
{
  unsigned char bit0:1;
  unsigned char bit1:1;
  unsigned char bit2:1;
  unsigned char bit3:1;
  unsigned char bit4:1;
  unsigned char bit5:1;
  unsigned char bit6:1;
  unsigned char bit7:1;  
}flags;
};
...
flags_byte=0xf5;
flags.bit3=1;
flags.bit7=0;
...
-
دو نوع بازار یابی برای معرفی و جا انداختن یک محصول جدید در مواجهه با یک صنعتگر سنتی:
1-مهندس کم تجربه و تازه کار :
مهندس: ما یک محصول جدید طراحی کرده ایم که در صورتی که آن را برای شما بسازیم باعث ارتقاء دستگاه های قدیمی شما خواهد شد.
صنعتگر: تخصص شما چیست؟
مهندس: ما همه نوع پروژه صنعتی و دانشجویی را انجام می دهیم.
صنعتگر: شرایط مالی شما به چه صورت است؟
مهندس: اول شصت درصد پیش پرداخت می گیریم و دستگاه را می سازیم و بعد از به جواب رسیدن بقیه مبلغ را دریافت می کنیم.
صنعتگر: نه ممنون من حاضر نیستم برای افراد تازه کاری که تخصص و شغل مشخصی ندارند و برای دستگاهی که هنوز ساخته نشده و معلوم نیست که اصولا جواب بدهد، وقت و هزینه خود را تلف کنم.
2-مهندس با تجربه و با پشتوانه مالی قوی :
مهندس: ما یک محصول جدید طراحی کرده و نمونه هایی از آن را ساخته ایم که در حال کار است و در صورتی که آن را تهیه کنید باعث ارتقاء دستگاه های قدیمی شما خواهد شد.
صنعتگر: تخصص شما چیست؟
مهندس: ما بصورت تخصصی روی تولید و تعمیرات دستگاه های نوع X فعالیت می کنیم.
صنعتگر: شرایط مالی شما به چه صورت است؟
مهندس: اگر مایل باشید برای مدت مشخصی یک نمونه از دستگاه مذکور را در اختیار شما قرار می دهیم و رسید می گیریم تا شما با آن کار کنید و اگر رضایت داشتید بعدا وجه آن را پرداخت کنید. در غیر اینصورت دستگاه را به ما عودت دهید.
صنعتگر: بسیار خوب حال که شما بصورت تخصصی فعالیت می کنید و دستگاه شما جواب خود را نزد همکاران پس داده و قرار نیست هزینه ای را در ابتدا دریافت کنید، یک نمونه را برای من بیاورید که در صورت رضایت علاوه بر پرداخت وجه آن تعداد دیگری را به شما سفارش خواهم داد.

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

-
تجربه استفاده از تاچ های مقاومتی نصب شده روی LCD های 240x128 به تعداد زیاد نشان می دهد که بعد از چند سال استفاده مداوم از این تاچ ها در محیط صنعتی، میزان خرابی آنها بسیار کم بوده و هنوز مشغول کار هستند.
-
نکته ای در کد نویسی به زبان C:
در صورتی که تعداد متغیرهای Global در برنامه زیاد باشد، برای جلوگیری از شلوغ شدن کد می توانیم تمام این متغیرها را در یک فایل جداگانه قرار دهیم و این فایل را در ابتدای فایل اصلی include کنیم. نکته حائز اهمیت در این روش این است که فایل حاوی متغیرها نباید به پروژه add شود. در این شرایط لازم نیست که متغیرها در فایل اصلی بصورت extern تعریف شوند و تنها با include کردن فایلی که متغیرها در آن تعریف شده اند، این متغیرها در فایل اصلی قابل شناسایی هستند.

-
نقل یک خاطره عبرت آموز:
در سال های دور در دهه 70 و در زمانی که هنوز استفاده از میکروکنترلرها مطرح نبود، پروژه ای انجام شد که قرار بود توسط یک منبع جریان، سه جریان با مقادیر 80 و 180 و 1180 میلی آمپر به باری تزریق شود و مقدار جریان هم روی تعدادی 7segment نمایش داده شود. این مدار با روش های آنالوگ طراحی و تست شد و برای نمایش جریان هم بعد از تبدیل آن از طریق مدارات مناسب به ولتاژ، از یک آی سی ولت متر به نام ICL7107 استفاده شد. بعد از تحویل این مدار مجموعه سفارش دهنده پروژه اعلام کردند که جریان نمایش داده شده قابل قبول نیست و دارای کمی تغییرات است. در حالی که یک گروه رقیب همین پروژه را انجام داده اند، اما تغییری در جریان خروجی روی صفحه نمایش وجود ندارد و جریان ها کاملا تثبیت شده هستند. بنابراین پروژه مجددا باز پس گرفته شد و این بار هر تکنیک مداری و به اصطلاح فوت و فن کوزه گری که برای تثبیت جریان به ذهن می رسید اعمال شد تا جریان در هر سه مرحله تا حد ممکن ثابت باشد و تغییری نکند. بعد از اعمال تمهیدات مورد نظر در مدارات آنالوگ، تغییرات جریان نمایش داده شده تقریبا به صفر رسید و فقط گاهی ممکن بود یک واحد تغییر کند که با توجه به شرایط مدار و تغییرات دما و مانند آن چنین تغییراتی قابل قبول بود. اما بعد از تحویل دوباره پروژه باز اعلام شد که هر چند تغییرات بسیار بسیار کم شده است. اما در پروژه تحویل داده شده توسط مجموعه رقیب، همین تغییرات بسیار کم در حد یک در هزار هم وجود ندارد و کاملا ثابت است و اگر می خواهید پروژه شما پذیرفته شود باید به عملکردی شبیه پروژه رقیب برسید. در این مرحله این سوال ایجاد شد که آخر چطور ممکن است هیچ تغییری در جریان وجود نداشته باشد و کاملا ثابت باشد و رقبا چه تکنیکی را از نظر طراحی مدار بکار برده اند که به چنین کیفیتی رسیده اند؟ ضمن اینکه در این پروژه نه چنین دقتی مهم بود و نه امکان سنجش آن با توجه به امکانات مجموعه سفارش دهنده پروژه برای آنها وجود داشت. سپس این امکان مطرح شد که نکند در پروژه رقبا بجای آنکه واقعا جریان اندازه گیری و نمایش داده شود، با دو 7segment عدد 80 را بصورت دائمی نشان می دهند و با تغییر سلکتور دستگاه، سگمنت های متناظر با دو عدد 1 را در دو 7segment دیگر برای نمایش 180 و 1180 روشن می کنند. با بررسی بیشتر تقریبا یقین حاصل شد که در مدار رقیب از همین روش استفاده شده و بحث اندازه گیری واقعی جریان مطرح نیست و ملاک مجموعه سفارش دهنده هم بجای توجه به عملکرد واقعی مدار، اعداد نمایش داده شده روی 7segment ها است. بنابراین به دلیل وجود اطمینان از صحت جریان های تولید شده مطابق تست های قبلی، بخش ولت متر و اندازه گیری جریان از مدار حذف شد و از همان روش روشن کردن سگمنت ها بجای نمایش جریان واقعی استفاده شد و پروژه مجددا تحویل داده شد. با شرایط جدید مجموعه سفارش دهنده پروژه اعلام کردند که این همان کیفیت عملکردی است که مد نظر آنها بوده و پروژه را تائید کردند. و در این جریانات تجربه و عبرت هایی نهفته بود.

-
یک تمرین کاربردی برنامه نویسی میکروکنترلر:
با اتصال یک صفحه کلید ps2 و یک LCD کاراکتری به میکروکنترلر، برنامه ای برای ذخیره کردن پسوردهای مورد استفاده خود جهت دسترسی به شبکه های اجتماعی و سایت ها و مانند آن را بنویسید. روال کار می تواند به این صورت باشد که در ابتدا از طریق صفحه کلید یک پسورد اصلی دریافت شود و در صورت صحیح بودن آن، قابلیت مشاهده و تصحیح و ذخیره سازی تعدادی پسورد به همراه نام سایت های مربوطه روی LCD وجود داشته باشد.
-

نکته ای در مورد مد CTC در تایمر کانترهای AVR:
با توجه به immediate و فوری بودن تغییر مقدار رجیستر مقایسه در مد CTC که نقش TOP را به عهده دارد، تغییر این رجیستر می تواند منجر به ایجاد خطای ناخواسته در یک سیکل تایمر شود. برای درک بهتر، فرض کنید تایمر شماره 1 در مد CTC قرار داشته باشد و مقدار فعلی تایمر برابر 101 و OCR1A برابر 200 باشد. در این وضعیت اگر مقدار 100 در OCR1A نوشته شود، به دلیل تاثیر فوری این تغییر مقدار و بزرگتر بودن مقدار تایمر کانتر از مقدار جدید رجیستر OCR1A، تایمر به شمارش خود از 101 تا 65535 ادامه می دهد و بعد مجددا صفر می شود تا در سیکل بعدی مقدار 100 به عنوان حداکثر مقدار تایمر کانتر اثر گذار باشد. با چنین فرضی تعداد کلاک لازم برای صفر شدن تایمر بسیار بیشتر از مقدار مورد انتظار خواهد بود که باعث ایجاد خطا می شود. برای بر طرف کردن این مسئله اگر در تایمری از میکروکنترلر مورد استفاده مد fast pwm با مقدار TOP قابل تنظیم وجود داشته باشد، برای اجتناب از مشکل فوق بجای مد CTC می توان از این نوع fast pwm استفاده کرد. زیرا در مد fast pwm مقدار دهی به TOP با مکانیزم double buffering انجام می شود و بصورت immediate نیست و در نتیجه تغییر مقدار TOP تا ابتدای سیکل بعد به تاخیر خواهد افتاد و مشکل مذکور بوجود نخواهد آمد. به عنوان مثال مدهای 14 و 15 در تایمر کانترهای 1 و 3 در mega64 دارای TOP متغیر هستند و می توانند به این منظور مورد استفاده قرار بگیرند.
-

مشاهداتی از نصب تعداد زیادی avr در تولیدات صنعتی برای مدت زمانی بیش از ده سال:
1- مواردی از سوختن میکروکنترلر دیده شده است.
2- با نمونه هایی برخورد شده که میکروکنترلر سالم بوده، اما پین های خاصی از آن آسیب دیده بودند.
3- حتی یک مورد پاک شدن eeprom داخلی مشاهده نشده است.
4- با رعایت ملاحظات طراحی و تغذیه، بحث هنگ کردن موضوعیتی نداشته است.
-

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

در صنف ساختمان روالی وجود دارد که اگر شما کاری را به یک نفر دادید (مثلا یک لوله کش) و به هر دلیلی با آن فرد به مشکل برخورد کردید و کار نیمه تمام ماند، سایر افراد آن صنف معمولا حاضر نمی شوند به کار نیمه تمام همکارشان دست بزنند و در واقع بدون آنکه همدیگر را بشناسند، با این عملکرد از همکارشان حمایت می کنند. ای کاش در رشته الکترونیک هم یک فرهنگ حمایت جمعی از افراد شاغل در این رشته شکل می گرفت و رفتارهای برخی افراد این صنف مانند مهندسی معکوس و کپی کردن طرح های همکاران و سعی برای در آوردن کار از دست آنان با قیمت های بسیار پایین کمتر مشاهده می شد.
-
یکی از کاربردهای کمتر شناخته شده در الکترونیک که به نتیجه رسیدن و فراگیر شدن آن به دلیل مشکل کمبود آب می تواند تاثیر مثبتی در مقیاس ملی داشته باشد پیاده سازی اتوماسیون آبیاری است.
-
نکته ای در مورد eeprom های سریال سری at24cxx:
با توجه به اینکه زمان ذخیره سازی اطلاعات بصورت داخلی در این حافظه ها در حدود چند میلی ثانیه است، برای بالا بردن سرعت نوشتن در حافظه و در صورتی که نیاز به نوشتن بیش از یک بایت وجود داشته باشد، بجای ذخیره سازی اطلاعات بصورت بایت به بایت می توانیم مجموعه ای از بایت ها را بصورت یک page ذخیره کنیم. سایز page در شماره های مختلف این خانواده متفاوت است و مثلا برای at24c01 برابر 8 بایت و برای at24c1024 برابر 256 بایت است.
-

پر کردن هارد کامپیوتر از نرم افزار و فیلم آموزشی و فایل pdf از کسی طراح و برنامه نویس نمی سازد. رسیدن به مرتبه طراحی و برنامه نویسی از آنجا شروع می شود که بسته به نیاز بالاخره از یک جا شروع کنیم و سعی کنیم تا انتهای آن برویم.
-
برای راه اندازی Buzzer های اسیلاتور دار موجود در بازار و اتصال آنها به میکروکنترلرها باید توجه کنیم که این قطعات دارای ولتاژهای راه اندازی مختلفی مانند 3v و 5v و 12v هستند که در هنگام خریداری باید به این ولتاژ دقت شود. مورد دیگر اینکه مطابق با آزمایش های عملی انجام شده برخی از انواع ولتاژ پایین Buzzer های موجود در بازار را به دلیل جریان کشی بالایی که دارند بصورت مستقیم نمی توان به پین میکروکنترلر متصل کرد و این اتصال باید با واسطه یک سوییچ ترانزیستوری و مانند آن انجام شود.
-
تابع زیر قبلا در پروژه ای برای گرد کردن اعداد مثبت و منفی به زبان BASIC نوشته شده بود و از آنجایی که ممکن است برای کسی قابل استفاده باشد در اینجا قرار داده می شود:

Public Function myround(n As Double)
Dim m As Double
If n >= 0 Then
  If (n - Int(n)) >= 0.5 Then
   myround = (1 + Int(n))
  Else
   myround = Int(n)
  End If
Else
m = -n
If (m - Int(m)) >= 0.5 Then
   myround = -(1 + Int(m))
  Else
   myround = -Int(m)
  End If
End If
End Function
-
تابع زیر توسط جناب آقای مهندس شهرام نوربخش راد برای گرد کردن اعداد در زبان BASIC پیشنهاد شده است:

Public Function myround(n As Double)
Dim m As Double
If n >= 0 Then
  m = n + 0.5
  myround = Int(m)
Else
  m = -(n - 0.5)
  myround = -Int(m)
End If
End Function
-
برای توجه به ضررهای ناشی از عدم وجود قانون کپی رایت در کشور و سلب فرصت های شغلی در سطح داخلی و بین المللی به پاسخ این سوال فکر کنید که با وجود این همه دانشجو و فارغ التحصیل در رشته های نرم افزار و سخت افزار و الکترونیک و مانند آن، چرا برای نوشتن و فروش و حتی صادرات نرم افزارهای تخصصی با عملکردی شبیه به codevision یا bascom یا iar یا keil یا proteus یا altium designer یا photoshop یا autocad یا coreldraw و ده ها نرم افزار مشابه هیچ تلاشی انجام نمی شود و چرا کسانی که با نرم افزارهای تخصصی کار می کنند اکثرا اطلاعاتی سطحی دارند و افراد متخصص و حرفه ای به معنای واقعی در اینگونه نرم افزارها تا این حد انگشت شمار هستند.
-
آیا ممکن است با یک میکروکنترلر 8 بیتی مانند avr کنسول بازی ساخت؟ بله ممکن است:

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

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

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

"برای تولید نت موسیقی، ابتدا باید بر این نکته اساسی واقف بود که نسبت فرکانس هر دو نت متوالی در دستگاه موسیقی بین المللی (فاصله نیم پرده) برابر است با عدد 1.059463 که این عدد در واقع ریشه دوازدهم عدد دو می باشد. در توضیح بیشتر این مسئله می توان به سازهایی مانند پیانو اشاره کرد که 12 نت با نام های مستقل روی آنها تعریف می شود و فاصله فرکانس بین هر دو نت متوالی با هم برابر است. با توجه به دو برابر شدن فرکانس در دو نت همنام (مثلا دو Mi متوالی) و وجود 12 نت در این فاصله، بنابراین فاصله فرکانسی هر دو نت مجاور برابر ریشه دوازدهم عدد 2 خواهد بود. حال اگر یک نت را به عنوان نقطه مبنا در نظر بگیریم، فرکانس نت بعدی 1.059463 برابر نت فعلی و فرکانس نت قبلی هم همین فرکانس تقسیم بر 1.059463 خواهد بود. با توجه به تدوین قراردادی مبنی بر قرار دادن یکی از نت های La برابر با 440 هرتز، می توانیم همین عدد 440 هرتز را به عنوان مبنا در نظر بگیریم و فرکانس نت های بعدی و قبلی را با ضرب یا تقسیم متوالی بر آن بدست بیاوریم. "
در مطلب بالا که برای اولین بار در سال 1388 در انجمن ECA نوشته شد و در سایت ها و وبلاگ هایی هم منتشر شده، فرکانس نت La (یا همان A) برابر 440 هرتز است که در متن اولیه Do نوشته شده بود.
-

چند نکته خلاصه شده از بخش های جدید فیلم های آموزش XMEGA با موضوع مقایسه کننده آنالوگ که قرار است بزودی آپلود شود:
1- در XMEGA حداکثر 4 مقایسه کننده آنالوگ مستقل وجود دارد (مقایسه شود با سخت افزارهای مشابه در سایر خانواده ها).
2- تاخیر مقایسه کننده ها در حد چند ده نانو ثانیه است.
3- در منحنی مشخصه مقایسه کننده، قابلیت اعمال هیسترزیس وجود دارد.
4- به غیر از اعمال سیگنال آنالوگ از طریق پین ها می توان از خروجی DAC و یک ولتاژ مرجع داخلی و کسری از Vcc برای عملیات مقایسه استفاده کرد.
5- دو مقایسه کننده می توانند در کنار هم یک window را به سیگنال ورودی اعمال کنند که وضعیت سیگنال نسبت به این پنجره قابل آشکارسازی است.
6- مقایسه کننده ها قابلیت ایجاد وقفه و Event را دارند.
7- در برخی خانواده ها پین های مشخصی قابلیت تبدیل به منبع جریان را دارند که از این خاصیت می توان برای شارژ خازن ها در کلید ها خازنی استفاده کرد.
-

مطلب زیر از طرف جناب آقای زارعی مدیر فروشگاه کویر الکترونیک درباره قطعات اصلی و تقلبی برای ما ارسال شده است:
- ایسی اورجینال و حتما new باشد:
این مورد مهم هست متاسفانه توی بازار اصلا اشاره به سال ساخت نمیشه و بیش از ۷۰ درصد خریداران اصلا به تاریخ توجه ندارند یا اصلا نمیدانند. خیلی ساده هست روی ایسی براساس تعداد هفته ای که تولید میشه زده میشه مثلا 1320 منظور سال ۲۰۱۳ و هفته ۲۰ هست و معمولا ۲۰۱۲+ رو جدید میگیرند البته میکروها معمولا ۲۰۱۶ و ۲۰۱۷ بهتر هستند ولی گرون تر هست. میکروهای تولید قدیمی ارزان تر و بالک معروف هستند البته برای سایر قطعات نیز تاریخ ساخت صدق میکنه.
- مطلب مهم بعدی غیراورجینال هست:
متاسفانه خیلی ها فکر میکنند هر ایسی روش زده کره مالزی و... اصلی هستند ولی chn یا همون چین تقلبی هست. این مورد بسیار اشتباه هست. چرا که ایسی اورجینال معنیش اینه توسط شرکت اصلی یا تحت لایسنس اون شرکت ساخته شده چه بسا شما قطعه ای حتی از دیجی میخرید روش زده chn پس این دلیل بر غیراورجینال بودن نیست.
- نکته مهم بعدی در تشخیص هست:
به هیچ عنوان قابل تشخیص ظاهری نیستند بنده شخصا هر نمونه ای خواستید میارم چک کنید پس لطفا اصلا ۱ درصد به فکر این نباشید قطعه از روی ظاهر میشه تشخیص داد چی هست.
-

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

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

از راهنمای plc های FATEK:
The FBs-PLC’s design incorporates a “System on Chip” (SoC) developed in-house by Fatek Corporation. The BGA chip consists of over 120,000 gates ...
-
در جلسه ای از شخصی با تجربه و با سابقه طولانی فعالیت تخصصی در الکترونیک سوال شد که آیا شما از ورود این تعداد بالا از افراد مختلف به حوزه الکترونیک نگران نیستید که رقیب کاری شما شوند؟ آن شخص پاسخ داد که خیر نگران نیستیم. زیرا اکثر این افراد به جای اینکه بصورت متمرکز دنبال یک موضوع بروند، از ترس عقب نماندن از قافله و بدون عمیق شدن در یک بخش دائما دنبال موج های ایجاد شده از این سو به آن سو می دوند و بیشتر وقت و انرژی خود را تلف می کنند. بنابراین به تخصصی که ما سال ها برای آن بصورت متمرکز وقت گذاشته ایم حتی نزدیک هم نمی شوند. چه برسد به این که بخواهند با این اطلاعات سطحی و تجربه کم به عنوان رقیب کاری محسوب شوند.
-
نقل تجربه ای از اقدام برای خرید نسخه اصلی IAR:
چند سال پیش ایمیلی مبنی بر تمایل برای خرید نسخه لایسنس دار نرم افزار EWAVR به بخش فروش شرکت IAR ارسال شد که بعد از اطلاع از ایرانی بودن خریدار، پاسخ درستی ندادند و در نهایت موضوع به کلی منتفی شد.

-
نکاتی در مورد تسلط به زبان انگلیسی برای مطالعه متون تخصصی الکترونیک:
1- اگر از جمله کسانی هستید که به دلیل عدم تسلط به زبان انگلیسی همیشه مشکل دسترسی به منابع فارسی را برای مطالعه مباحث الکترونیک دارید، شما را می توان به شخصی تشبیه کرد که ریگی داخل کفش او رفته و ساعت ها با همان کفش راه می رود و از این وضعیت آزار می بیند. اما دقایقی توقف نمی کند تا ریگ را از کفش خود در بیاورد و خود را خلاص کند. گاهی با افرادی برخورد می شود که سال های سال است که از این عدم تسلط به زبان انگلیسی برای مطالعه متن های تخصصی می نالند و همیشه یکی از دغدغه های آنها دسترسی به منابع فارسی است. اما اگر فقط چند ماه وقت می گذاشتند می توانستند این مشکل را خیلی زودتر از اینها حل کنند و دریچه بزرگی را برای بهره بردن از منابع علمی به روی خود بگشایند.
2- هیچ دلیلی ندارد کسی که می تواند کتاب های الکترونیکی یا دیتاشیت ها را به راحتی مطالعه کند، حتی یک صفحه متن راجع به آشپزی یا فلسفه را هم به همان راحتی بخواند. زیرا کلمات بکار گرفته شده در متون تخصصی با هم متفاوت هستند. بنابراین برای پیشرفت سریع در مطالعه منابع الکترونیک، پروسه های طولانی مدتی مثل رفتن به کلاس زبان چندان راهگشا نیست و بهترین راه حمله کردن مستقیم به ترجمه متن است. با توجه به تکراری بودن بسیاری از کلمات در متون تخصصی، بعد از مدتی کار در این زمینه سرعت پیشرفت بسیار زیاد خواهد شد.
3- اگر شما در این مورد دچار مشکل هستید و از یک حداقل اطلاعات در زمینه زبان انگلیسی برخوردارید، توصیه می شود متنی درباره موضوع مورد علاقه خود (مثلا Manual یک میکروکنترلر) را انتخاب کنید و سعی کنید با کمک دیکشنری شروع به ترجمه آن کنید. بعد از مدتی ممارست و صرف وقت احتمالا پیشرفت خوبی برای شما در این زمینه حاصل خواهد شد و ای بسا رسیدن به تسلط در این مورد شاید بسیار آسان تر از آن چیزی باشد که قبلا فکر می کردید.
-

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

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

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

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

معرفی یک آی سی برای ساخت کلید های خازنی:

-
ضمن احترام به نظر کسانی که معتقدند به اشتراک گذاری تجربیات و کمک به دیگران برای کسی که از مراحل سربازی و فارغ التحصیلی و استخدام و تشکیل خانواده و ... عبور کرده کاری اشتباه و نوعی وقت تلف کردن است، خوشبختانه اکثریت قاطع شرکت کنندگان در نظرسنجی بر این عقیده بوده اند که چنین رویکردی وظیفه ای اخلاقی برای کمک به رشد جامعه است.
-
نکته ای در ارتباط I2C سخت افزاری:
در ارتباط I2C آدرس 7 بیتی که از طرف master به slave ارسال می شود در هنگام ارسال یک بیت به سمت چپ شیفت پیدا می کند. زیرا بیت شماره 0 نشان دهنده عملیات write و بیت های 1 تا 7 حاوی آدرس است. بنابراین بین آدرس ارسال شده و بایت ارسال شده تفاوت بوجود می آید که عدم توجه به این مسئله یکی از دلایل عدم موفقیت در برقراری این نوع ارتباط بین میکروکنترلر و ماژول ها و آی سی های مختلف است.
-

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

تجربه ای از تولید محصولات متعدد الکترونیکی:
فقط در همین حد اشاره می شود که علیرغم وجود همه مشکلات و موانع موجود، اگر تولید یک محصول کاملا سنجیده و بر اساس نیاز بازار و مبتنی بر دانش فنی بالا باشد در نهایت جواب می دهد.
-

منظور از عبارت "کیلوگرم" در مشخصه استپر موتور چیست؟
معمولا در بازار برای بیان گشتاور استپر موتورها از عبارت کیلوگرم استفاده می شود که منظور واحد kgf.cm (کیلوگرم نیرو سانتی متر) است. واحد دیگری که برای گشتاور ذکر می شود N.m (نیوتن متر) است که برای تبدیل به kgf.cm باید آن را بصورت تقریبی در 10 ضرب کرد. به عنوان مثال یک استپر موتور با گشتاور 2 نیوتن متر دارای گشتاوری معادل تقریبا 20 کیلوگرم نیرو سانتی متر است.
-

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

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

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

آیا می دانستید قدرت پردازشی کامپیوتر فضاپیمای آپولو (Apollo Guidance Computer یا AGC) در پروژه نشستن انسان بر کره ماه، از برخی میکروکنترلرهایی که امروزه حتی دانش آموزان با آن کار می کنند بسیار ضعیف تر بوده است؟
-
از جمله پارامترهای موثر در محاسبه هزینه استفاده از یک ابزار نرم افزاری یا سخت افزاری، نفر ساعت لازم برای تسلط بر آن ابزار است. وقت گذاشتن بیشتر به معنای صرف هزینه بیشتر است و این مسئله ای است که برخی از افراد در محاسباتشان لحاظ نمی کنند و فقط قیمت قطعات و مانند آن را مبنای گرانی و ارزانی در نظر می گیرند.
-
در سورس های نوشته شده تحت winavr یا AtmelStudio برای خواندن یک بایت از حافظه فلش از pgm_read_byte استفاده می شود که برای مطابقت دادن این سورس ها با CodeVision یا IAR می توانیم از ماکرو زیر استفاده کنیم:
#define pgm_read_byte(x)  (*((unsigned char __flash *)(x)))
-
تمرین برنامه نویسی نسبتا مشکل با یک تک LED:
در کاربردهایی که پیاده سازی آنها مستلزم تسلط به کدنویسی است حتما لازم نیست از سخت افزارهای پیچیده ای استفاده شده باشد و حتی ممکن است با یک تک LED بتوان صورت مسئله ای را تعریف کرد که انجام آن از عهده برنامه نویسان مبتدی خارج باشد.
یک LED به یکی از پین های میکروکنترلر متصل است و هدف نوشتن برنامه ای است که با اجرای آن نور LED به ترتیبی که توضیح داده می شود از وضعیت خاموش شروع به افزایش کند و بعد از رسیدن به یک مقدار حداکثر دوباره کاهش یابد و این روال همچنان ادامه یابد. برای تغییر ولتاژ LED باید از روش PWM استفاده شود. پارامترهای زیر در برنامه باید قابل تعیین باشند:
1- مدت زمان افزایش نور از حداقل به حداکثر.
2- منحنی ولتاژ اعمال شده به LED در یکی از دو وضعیت خطی یا سهمی در سیکل افزایش نور.
3- مدت زمان کاهش نور از حداکثر به حداقل (مستقل از گزینه 1).
4- منحنی ولتاژ اعمال شده به LED در یکی از دو وضعیت خطی یا سهمی در سیکل کاهش نور.
5- حداکثر ولتاژ اعمال شده به LED که محل تلاقی دو منحنی افزایش یا کاهش ولتاژ است.
به عنوان مثال می خواهیم ولتاژ متوسط یک LED در مدت زمان 1 ثانیه تحت منحنی خطی از صفر به نصف مقدار حداکثر خود برسد و سپس در مدت زمان 2.2 ثانیه تحت منحنی سهمی به صفر برسد و این روال بصورت پریودیک همچنان ادامه یابد.
پی نوشت: اگر شما مشغول یادگیری یکی از میکروکنترلرها هستید و نظیر این کاربرد را نمی توانید برای یک LED پیاده سازی کنید توصیه می شود بیشتر از آنکه به دنبال کار کردن با سخت افزارهای پیچیده تر باشید، روی توسعه مهارت های برنامه نویسی خود متمرکز شوید.
-

برخی افراد تازه وارد در رشته الکترونیک مانند شخصی که وارد رستوران می شود و منوی غذا را طلب می کند تا بهترینش را انتخاب کند، بدون توجه به مقدورات و توانایی هایشان و تبعات انتخاب موضوعات مختلف به لحاظ زمانی که باید صرف کنند در این مورد سوال می کنند که کدام قسمت از الکترونیک درآمدش بهتر است و طالب بیشتری دارد تا ما همان را انتخاب کنیم. این در حالی است که عدم توجه به لوازم و تبعات حرکت در هر مسیری می تواند باعث سرخوردگی و پشیمانی و زده شدن از این رشته شود که نمونه های چنین افرادی بسیار زیاد است.
-
در چند روز اخیر در یک کنترلر صنعتی شامل دو میکروکنترلر با کدهای سنگین و مفصلی که یکی با C و دیگری با اسمبلی نوشته شده بود، عملکرد غلطی مشاهده شد که پیدا کردن دلیل آن وقت بسیار زیادی را به خود اختصاص داد. در نهایت مشخص شد که این باگ به دلیل عملیات کپی از یک بخش کد و قرار دادن آن در بخش دیگر و عدم اصلاح لازم در محتوای paste شده بوجود آمده که خطایی در کامپایل ایجاد نمی شد اما عملکرد نهایی هم درست نبود. این تجربه برای بار چندم نشان داد که در مورد ایجاد باگ ناشی از عملیات copy/paste یک بخش کد و تغییر در آن باید بصورت مضاعف دقت و مراقبت شود.
-
دوستانی که قصد ساخت برد آموزشی AVR و XMEGA را دارند که فایل مدار چاپی آن در سایت قرار داده شده، برای انتخاب 7segment های برد به دو نکته توجه کنند:
1- متناسب با این برد در بازار دو نوع 7segment وجود دارد که شبیه به هم هستند. اما در یکی کاتد مشترک در پین وسط قرار دارد و در دیگری کاتد در پین کناری واقع است که برای این برد باید از نوع کاتد کنار استفاده شود.
2- برای بهبود نمایش کاراکترها از 7segment های نوع high brightness استفاده کنید.
-

برای not کردن بیت های تعریف شده در یک struct می توان مطابق مثال زیر عمل کرد.
مرحله تعریف x و y به عنوان بیت در ساختار flags:
struct
{
unsigned char x:1;
unsigned char y:1;
}flags;
برای not کردن بیت x:
flags.x=flags.x?0:1;
-
این یک نظر و تجربه شخصی است. مطابق آمارهایی که در سایت های مختلف قابل دسترس است بین 70 تا 85 درصد (یا حتی بیشتر) اقتصاد ایران دولتی یا شبه دولتی است. اما تجربه نشان می دهد که به دلایل متعدد که شرح آن در این مجال نمی گنجد، موقعیت ها و فرصت ها برای طراحی و تولید پروژه ها و محصولات داخلی در رشته الکترونیک در آن بخش اقلیت که صنایع خصوصی را هم شامل می شود، بسیار بیشتر از فرصت ها در آن اکثریت دولتی و شبه دولتی است.
-

تمرین برنامه نویسی:
تابعی بنویسید که یک رشته را دریافت کند و تعیین کند که آیا محتوای رشته یک عدد معتبر در مبنای ده است یا نه. علامت منفی قبل از عدد و علامت ممیز در بین ارقام عدد هم کاراکترهای مجاز هستند. به عنوان مثال اگر رشته ای حاوی 123.456 به این تابع ارسال شود آن را به عنوان عدد معتبر تعیین می کند. اما 123.4.56 یا 12K3;4 باید به عنوان اعداد غیر معتبر با کاراکترهای غیرمجاز تعیین شوند.
پی نوشت: این صورت مسئله ای است که چندی پیش در جریان نوشتن برنامه یک کنترلر صنعتی به آن برخورد شد و تابعی برای آن نوشته شد.

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

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

اطلاع رسانی:
در تعدادی از LCD های 240x128 آبی TechStar که اخیرا در بازار عرضه می شوند نمایش تصویر دارای اشکالاتی است که برای برطرف کردن مشکل باید آی سی LM324 موجود روی برد LCD تعویض شود.

-
به این صورت مسئله واقعی و در حال انجام توجه کنید:
در یک پروژه صنعتی در حال انجام، بردی مبتنی بر یک میکروکنترلر به LCD و تاچ و یک بازر متصل شده و برد با سخت افزار دیگری از طریق RS485 ارتباط برقرار می کند. از کتابخانه LCD قبلا بصورت کامل جواب گرفته شده و کار با تاچ و RS485 هم قبلا بارها و بارها انجام شده و مشکلی در استفاده از هیچ یک از این سخت افزارها وجود ندارد. اگر عملکرد این پروژه مطابق خواست صورت مسئله به نتیجه برسد، ارزش افزوده بالایی را ایجاد می کند و احتمالا به تولید می رسد. با این اوصاف به نظر شما با راه اندازی این سخت افزارها چند درصد از کار برای رسیدن به مرحله جواب گرفتن نهایی تاکنون انجام شده است؟ در این صورت مسئله پاسخ شاید در حد 5 تا 10 درصد باشد و اگر تجربه کافی در کدنویسی وجود نداشته باشد، راه اندازی LCD و تاچ و RS485 به اصطلاح دردی را دوا نمی کند. حدود 90 درصد از این پروژه، کد سنگینی است که برای پیاده سازی منطق مورد نیاز باید نوشته شود که ممکن است در یک مرحله از آن مثلا 10 مرحله if و switch و while بصورت تو در تو وجود داشته باشند. هدف از نقل این مورد واقعی بیان این حقیقت است که فاز کسب مهارت در کدنویسی بسیار فراتر از مرحله راه اندازی اولیه تک تک سخت افزارها است. هیچ کتاب و جزوه و کلاس عمومی و خصوصی و فیلم آموزشی هم به تنهایی نمی تواند یک فرد کم تجربه را به مرحله مهارت در برنامه نویسی برساند. چاره فقط در صرف وقت زیاد است. اگر حوصله وقت گذاشتن زیاد را ندارید، عمر خود را ذخیره کنید و مسیر دیگری را برای پیشرفت انتخاب کنید.
-

یک نکته علمی درباره زلزله و واحد Richter:
ضمن ابراز تاسف از وقوع زمین لرزه ای که منجر به کشته و مجروح شدن تعدادی از مردم در غرب کشور شده، درباره واحد Richter (ریشتر) ذکر این نکته خالی از فایده نیست که به ازای هر یک واحد افزایش این عدد، انرژی زلزله 31.6 برابر می شود. بر همین اساس انرژی معادل زلزله ای با مقیاس 8 ریشتر حدود 31.6 برابر انرژی زلزله 7 ریشتر و 1000 برابر انرژی زلزله 6 ریشتر است. با توجه به اینکه در برخی منابع انرژی یک زلزله 6 ریشتر معادل با انرژِی بمب اتمی منفجر شده بر فراز هیروشیما ذکر شده بنابراین یک زلزله 8 ریشتر انرژی معادل 1000 برابر بمب اتمی هیروشیما را آزاد می کند.
-

نقل تجربه ای از ساخت ناموفق مقاومت شنت با مفتول فلزی:
چندین سال پیش در یک پروژه ساخت اینورتر برای اندازه گیری جریان پل قدرت به یک مقاومت شنت وات بالا در حد چند صدم اهم نیاز بود که به دلیل در دسترس نبودن چنین مقاومتی برای ساخت آن از یک مفتول فلزی استفاده شد. برای رسیدن به مقدار دقیق مقاومت و با معلوم بودن قطر مفتول و جنس آن، طولی از مفتول محاسبه شد که به ازای آن مقاومت مورد نیاز تامین شود (طول مورد نیاز حدود چندین سانتی متر بود). بعد از قرار دادن این مفتول در مسیر جریان مشاهده شد که در لحظات سوییچ جریان توسط عناصر نیمه هادی مدار که چند هزار بار در ثانیه اتفاق می افتاد، پیک های ولتاژ بزرگی در دو سر آن ایجاد می شود که ابتدا به نظر می رسید ناشی از جریان کشی بسیار بالا در لحظات کوتاه است. اما از آنجایی که عبور چنین جریانی از مدار حتی برای لحظات کوتاه سبب آسیب شدید به آن می شد، مشخص بود که ولتاژ ظاهر شده به دلیل عبور چنین جریانی نیست و مسئله چیز دیگری است. در نهایت با بررسی بیشتر مشخص شد که این پیک های ایجاد شده در دو سر مفتول ناشی از جمله دوم در رابطه Ri+Ldi/dt است که با توجه به سوییچ کردن یک جریان بزرگ در زمانی کوتاه و مقدار بالای di/dt و سلف معادل مفتول که برای این کاربرد دارای عدد بزرگی بود، چنین اسپایک های ولتاژِی در لحظه سوییچ جریان ایجاد می شد. به این ترتیب ساخت مقاومت شنت با مفتول فلزی به دلیل بزرگ بودن سلف معادل آن به نتیجه مطلوب نرسید. نتیجه اینکه مقاومت های شنتی که در مسیر جریان های بزرگ سوییچ شده در زمان های کوتاه قرار می گیرند باید تا حد امکان دارای سلف معادل کوچکی باشند و فقط مقدار مقاومت اهمی در این وضعیت ملاک نیست.
-

شاید شما هم با افرادی مواجه شده باشید که اعلام می کنند ما خیلی به الکترونیک عشق و علاقه داریم و در هر شرایطی می خواهیم در این رشته فعالیت کنیم. با توجه به زحمات زیادی که برای موفقیت در این رشته باید متحمل شد، به این گونه افراد معمولا این پیشنهاد ارائه می شود که اگر می خواهید بسنجید که آیا واقعا علاقه شما ریشه دار و اصیل است یا سطحی و کاذب، از خودتان یک آزمون ذهنی به عمل بیاورید و ببینید آیا علاقه شما را با پول می توان خرید یا نه. اگر به شما پیشنهاد شود که در قبال دریافت یک مبلغ بسیار زیاد (مثلا در حد میلیارد تومان) الکترونیک را کلا کنار بگذارید و برای بقیه عمر خود به کار و موضوعات دیگری بپردازید، آیا شما حاضر هستید که قبول کنید یا نه. اگر این عشق و علاقه مورد ادعای شما را با پول می توان خرید که یک هیجان سطحی و زودگذر است و با گذشت زمان فروکش می کند. اما اگر نه با امثال این مبلغ و نه با خیلی بیشتر از آن حاضر به دست برداشتن از الکترونیک نیستید، حساب شما جداست و یک علاقه مند واقعی به این رشته هستید که در صورت ممارست و پشتکار کافی می توانید به سطح بالایی از پیشرفت در آن برسید.
از همین الگو برای سنجش میزان واقعی بودن علاقه به سایر موضوعات در زندگی هم می توان استفاده کرد.
-
به اطلاع می رساند که برای چهارمین سال متوالی مسابقه علمی با جایزه نفیس نقدی برگزار خواهد شد. صورت مسئله مسابقه و جایزه آن بزودی اعلام می شود. لازم به یادآوری است که در مسابقه سال 93 مبلغ سه میلیون تومان و در مسابقه سال 95 مبلغ چهار و نیم میلیون تومان (با مشارکت شرکت فن آموز) به برندگان جایزه داده شد که اسامی برندگان و جزییات طرح های آنها شامل سورس و نقشه و ... برای دانلود در سایت موجود است. در سال 94 هم فرد یا گروهی موفق به انجام صورت مسئله مسابقه نشد.
در مورد انگیزه برگزاری مسابقه که برخی سوال می کنند که شما چرا از جیب خود به دیگران جایزه می دهید و چه سودی از این کار می برید ذکر این نکته شاید رفع ابهام کند که هر کس به سهم خود و بنا به وسع و نوع دیدگاهش ممکن است به شکلی به دیگران کمک کند. یک نفر ممکن است غذای رایگان بدهد یا کتاب اهدا کند یا مدرسه بسازد یا وقتش را در اختیار بگذارد و غیره. برگزاری این مسابقه و اهدای جایزه و قرار دادن نتیجه مسابقه در اختیار عموم و همچنین ضبط فیلم های آموزشی رایگان در شش سال گذشته هم نوعی از تلاش برای کمک به رشد علمی جامعه و بصورت خاص جامعه علمی برق و الکترونیک است.
-
چرا در کدنویسی به زبان C در ماکروها از do{...} while(0) استفاده می شود؟ در دو لینک زیر در این مورد توضیح داده شده است:
https://www.pixelstech.net/article/1390482950-do-%7B-%7D-while-%280%29-in-macros
http://www.bruceblinn.com/linuxinfo/DoWhile.html
-

مطابق درخواست های جاری اخیرا موردی در طراحی محصولات الکترونیکی که دارای واسط کاربری LCD و مانند آن هستند موضوعیت پیدا کرده و آن قابلیت انتخاب زبان است. قبلا منوهای کاربری همه به زبان فارسی طراحی می شدند و مشکلی هم وجود نداشت. اما به تازگی بحث استفاده کاربران انگلیسی زبان و عرب زبان و سایر زبان ها هم مطرح شده که قابلیت تغییر زبان را برای یک محصول الکترونیکی تولید داخل ایجاب می کند.
-
اطلاع دادند که ماوس در کامپیوتر کنترل کننده یک ماشین صنعتی که در آن از تعدادی سرو موتور و اینورتر و شیر برقی استفاده شده، بعد از مدتی از کار می افتد و ارتباط USB ماوس با کامپیوتر مختل می شود:
- سوال شد که آیا برق کامپیوتر و سرو موتورها را از EMI Filter های مجزا و مخصوص به خود گرفته اید که پاسخ مثبت بود.
- سوال شد که آیا سیم Earth کلی دستگاه متصل است که پاسخ مثبت بود.
- سوال شد که آیا Earth با مقاومت و خازن مناسب به زمین سیستم متصل شده که پاسخ مثبت بود.
- سوال شد که با توجه به پلاستیکی بودن پایه های کیس کامپیوتر و عدم اتصال به بدنه فلزی دستگاه، آیا Earth آن را هم متصل کرده اید که پاسخ این سوال منفی بود.
بعدا اطلاع دادند که با برقراری اتصال Earth کامپیوتر از طریق سیم، مشکل قطع ارتباط ماوس حل شده است.
-
چند نکته کاربردی در تعمیر بردهای الکترونیک:
1- در همان ابتدا قبل از هر تغییری از طریق روش هایی مثل عکس گرفتن، یادداشت کردن شماره و نوع قطعات، شماره گذاری سیم ها و موارد مشابه وضعیت اولیه برد و اتصالات آن را ثبت کنید.
2- به منظور پیدا کردن قطعات معیوب و یافتن هرگونه تغییر شکل و سیاه شدن و ترکیدگی و باد کردن قطعات، با دقت کافی به اجزای برد نگاه کنید و در صورت لزوم از ابزارهایی مانند ذره بین استفاده کنید.
3- برد را بو کنید. بوی سوختگی می تواند نشان دهنده خرابی قطعات باشد.
4- در دو سر خازن های با ظرفیت زیاد ممکن است علیرغم قطع تغذیه ولتاژهای بزرگی وجود داشته باشد. بنابراین در هنگام تعمیرات مراقب برق گرفتگی احتمالی یا آسیب دیدن ابزارهای اندازه گیری توسط این نوع خازن ها باشید و از مقاومت مناسب برای دشارژ چنین خازن هایی استفاده کنید.
5- اگر برد سالمی مشابه با برد معیوب در دسترس است از آن به عنوان شاهد استفاده کنید و با قرار دادن مولتی متر در وضعیت های دیود و مقاومت و اندازه گیری بین نقاط مشابه در دو برد و مشاهده تفاوت های احتمالی سعی کنید قطعات معیوب را پیدا کنید.
6- وجود اتصال کوتاه یا مقاومت پایین در قطعاتی که روی برد قرار دارند لزوما به معنای خرابی آنها نیست. چنانکه ممکن است دیود سالمی با یک سلف موازی باشد و به همین دلیل به ظاهر اتصال کوتاه باشد. اما در نقطه مقابل اگر مثلا در دو سر یک مقاومت که روی برد قرار دارد مقداری به مراتب بزرگتر توسط اهم متر قرانت شود یا اگر دیودی در جهت مستقیم هدایتی را نشان ندهد این می تواند نشان دهنده خرابی مقاومت یا دیود باشد.
7- گاهی لازم است برای تست صحت ولتاژهای یک برد تنها به مولتی متر اکتفا نشود و شکل موج با اسیلوسکوپ مشاهده شود. زیرا در مواردی نوسانی روی ولتاژ سوار می شود که برای آشکار سازی آن باید از اسیلوسکوپ استفاده شود و مولتی متر در این وضعیت جوابگو نیست.
8- اگر مدت زیادی از ساخت برد گذشته و احتمال پوک شدن قلع در آن وجود دارد، پین های قطعات مشکوک را دوباره لحیم کنید.

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

نمونه ای از کدنویسی عجیب در cmsis:

در تابع زیر که به عنوان نمونه از کتابخانه lpc177x_8x_gpio.c نوشته شده، در صورت ارسال یک عدد ناصحیح در ورودی تابع به عنوان شماره پورت، بجای استفاده از روش هایی مانند تعریف ورودی تابع از نوع enum که تنها مقادیر خاصی را بتواند بپذیرد و یا برگشت یک مقدار بازگشتی به عنوان وضعیت خطا در صورت وارد کردن آرگومان غلط، اجرای برنامه در یک حلقه بی نهایت while قرار می گیرد و هیچ گاه از آن خارج نمی شود. حاصل این می شود که اگر برنامه نویس عددی اشتباه به غیر از 0 یا 2 را موقع نوشتن برنامه به عنوان شماره پورت قرار دهد، این اشتباه بدون ایجاد خطا در کامپایل باعث معطل شدن در حلقه while و هنگ کردن عملکرد برنامه می شود. شبیه همین نوع کدنویسی در بسیاری از توابع دیگر cmsis هم قابل مشاهده است.

void GPIO_ClearInt(uint8_t portNum, uint32_t bitValue)
{
if(portNum == 0)
  LPC_GPIOINT->IO0IntClr = bitValue;
else if (portNum == 2)
  LPC_GPIOINT->IO2IntClr = bitValue;
else
//Invalid portNum
while(1);
}
-
اینجا ایران است:
در محاورات روزمره خود جمله بالا را معمولا به چه منظوری بکار می بریم؟ یا وقتی این جمله را از دیگران می شنویم معمولا اولین چیزی که به ذهن ما می رسد چیست؟ آیا ذهنیت اکثر ما این نیست که بعد از شنیدن این جمله قرار است در مورد یک کم کاری، تقلب، ترجیح منافع شخصی به منافع جمعی، قانون گریزی و نظایر آن صحبت شود و ادای این جمله به عنوان مقدمه ای برای توجیه و طبیعی بودن این گونه رفتارها است؟ چطور می توان این ذهنیت را تغییر داد به نحوی که با شنیدن عبارت "اینجا ایران است" بصورت ناخودآگاه بعد از آن منتظر شنیدن مصداق و نمونه ای از رعایت اخلاق و انسانیت و قانون مداری توسط یک ایرانی باشیم؟ آیا جز این است که تک تک ما باید از خود شروع کنیم و با رفتار صحیح در راستای اصلاح این برداشت بکوشیم؟ تصور کنیم شرایطی را که وقتی برای کسی این سوال پیش بیاید که "چرا اینقدر وظیفه شناس و با وجدان و مسوولیت پذیر هستی؟" یا "چرا بدون آنکه موظف باشی به دیگران کمک می کنی؟" یا "به چه دلیل تا این حد به اخلاق و قانون پایبندی؟ " این توجیه بسیار معمول باشد که: چون اینجا ایران است. برای بهتر بودن بکوشیم.
اینجا ایران است.
-

یکی از وارد کنندگان با سابقه در جمهوری در مورد دلیل ارزان تر بودن برخی قطعات که Fake هم نیستند و توسط کارخانه سازنده تولید شده اند، دو مورد را ذکر می کردند. یکی تهیه قطعه از Supplier هایی در چین که تعداد بسیار زیادی از آن قطعه را از شرکت مبدا خریده اند و به همین دلیل قیمت آن برایشان خیلی ارزان تر تمام شده و بنا به سیاست هایشان در هنگام فروش قطعه آن را ارزان می فروشند. مورد دوم هم Renew بودن قطعه است که هر چند توسط کارخانه اصلی تولید شده، اما به دلیل دست دوم بودن دارای قیمت پایینی در بازار چین است.
-
در یک سیستم مبتنی بر ارتباط RS485، مشاهده شد که اطلاعات بصورت ناقص رد و بدل می شود. یعنی هر چند تبادل دیتا برقرار است و سیستم کار خود را انجام می دهد اما بیت های خاصی درست منتقل نمی شوند. بعد از بررسی بسیار و تعویض سیم های ارتباطی و برد و حتی میکروکنترلر، در نهایت مشخص شد ایراد از آی سی ADM485 نصب شده در سمت مستر است که به عنوان جنس اصلی و اوریجینال به قیمت هر عدد چند هزار تومان خریداری شده و با تعویض آن با یک آی سی قدیمی و اصلی مشکل برطرف گردید.
-
آیا تا به حال دیده اید کسی در رشته الکترونیک با انجام دادن پروژه های تکی و موردی به عنوان شغل اصلی، بصورت اساسی به جایی رسیده باشد و به اصطلاح بار خود را بسته باشد؟ بر اساس مشاهدات و تجربیات برای بار چندم به افراد کم تجربه و کم سن و سال گوشزد می شود که با توجه به شرایط موجود، پروژه انجام دادن در الکترونیک در درازمدت و به عنوان یک شغل دائمی آخر و عاقبت چندانی ندارد.
-
درباره قیمت گذاری پروژه ها و محصولات الکترونیکی:
یکی از سوالاتی که بارها از طرف افراد مختلف مطرح می شود این است که با چه ملاک هایی باید روی یک پروژه و محصول الکترونیکی قیمت بگذاریم؟ در این رابطه به پارامترهای مختلفی مانند میزان بکر بودن طرح و کاربردی بودن آن، وجود یا عدم وجود رقبا، قیمت های رقبا، تعداد مورد نیاز، هزینه های صرف شده و قیمت قطعات، نفر ساعت لازم برای به نتیجه رساندن کار، پشتیبانی و خدمات پس از فروش، لحاظ کردن اخلاق و انصاف و عوامل دیگری می توان اشاره کرد که شرح مبسوطی را می طلبد. اما پاسخ خلاصه و چکیده ناشی از همه این موارد این است که این ارزش ذاتی یک کار است که قیمت آن را تعیین می کند نه قیمت قطعات و ساعت کار و موارد مشابه. ممکن است برای یک مدار الکترونیک صدهزار تومان هزینه و  N ساعت هم زمان صرف شده باشد. اما به دلیل پارامترهای مختلفی که به آن اشاره شد بتوان روی آن حداکثر دویست هزارتومان قیمت گذاشت و بیشتر از این کشش نداشته باشد. اما ممکن است در شرایط متفاوتی باز همان صدهزارتومان هزینه و N ساعت زمان برای مدار دیگری صرف شده باشد ولی به دلیل ارزش ذاتی بالایی که دارد (مثلا قیمت های بالای رقبا یا ابتکاری بودن طرح) روی آن چهار میلیون تومان قیمت گذاشته شود. حال ممکن است این سوال مطرح شود که آیا انصاف است که اگر جا داشته باشد مثلا یک مدار صدهزارتومانی را چهار میلیون تومان بفروشیم؟ این دیگر به عهده هر کس است که بسنجد با توجه به جمیع جهات آیا چنین قیمت گذاری توام با رعایت انصاف هست یا نه. خلاصه اینکه قیمت محصولات الکترونیکی را کشش بازار تعیین می کند و هزینه قطعات و نظایر آن موارد ثانویه هستند.

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

این مطلب اخیرا در تاپیکی مربوط به تجربیات شغلی در انجمن eca قرار داده شد:
یک متولد دهه چهل که بیش از سی سال است در الکترونیک فعالیت می کند اگر بخواهد تجربیات شغلی خود را بیان کند احتمالا به حجمی در حد یک کتاب خواهد رسید. البته سعی شده در این سال ها از طریق همین انجمن و کانال تلگرام شخصی برخی از تجربیات منتقل شود. اما مناسب با احوال این تاپیک اگر بگویند مهم ترین و اساسی ترین تجربه در بین همه موارد را بگو که عدم رعایت آن بیشترین تاثیر منفی را در طول این سال ها داشته خواهم گفت که استفاده از تجربه افراد صاحب تجربه و مشورت کردن با انسان های آگاه و خوش نیت و خودداری از عمل کردن به تشخیص های شخصی، عالی ترین تجربه ای بوده که در طی زمان و با تحمل خسارت های مادی و معنوی فراوان بدست آمده است. من در زمان های دور خیلی به تشخیص های خودم اعتماد می کردم و به اهمیت استفاده از تجربه افراد صاحب تجربه واقف نبودم. اما گذر ایام این را آموخت که استفاده از نظر کسی که در موضوعی دارای سابقه و تجربه بیشتری است تا چه حد اهمیت دارد و چقدر می تواند انسان را جلو بیاندازد. و در نقطه بر عکس عمل کردن به برخی تشخیص های شخصی در امری که اطلاعات و آگاهی کامل در آن وجود ندارد و اعتماد به نفس بی مبنا چقدر می تواند انسان را در زندگی عقب بیاندارد و با مشکلات مواجه کند. امروز هم در مواجهه با افراد کم تجربه ای که برای خودشان به اصطلاح صاحب فتوا هستند و جملاتی شبیه به این می گویند که مثلا: "من به این نتیجه رسیده ام که بیسیک از C بهتر است (یا برعکس)" یا "من به این نتیجه رسیده ام که AVR منسوخ شده است"یا " من به این نتیجه رسیده ام که تولید در این مملکت فایده ندارد" و از این دست " من به این نتیجه رسیده ام ها"، اولین سوالی که مطرح می شود این است که شما در چه مرتبه ای از اطلاعات و تجربه و دانش هستی که به چنین نتایجی رسیده ای و اگر تجربه ندارید و اطلاعاتتان کافی نیست چرا بجای عمل کردن به این تشخیص های شخصی به اصطلاح چراغ بر نمی دارید و برای خریدن زمان و عمر خود به دنبال کسانی نمی روید که خیلی مسیرها را قبلا طی کرده اند و به ابعاد مختلف مسائل خیلی بیشتر از شما آگاهی دارند؟
-

موردی را اخیرا از یک محیط صنعتی اطلاع دادند که در یک سیستم کنترلر مبتنی بر PC بعد از مدتی عملکرد ارتباط RS232 مختل می شود و دیتا بصورت اشتباه رد و بدل می شود. بعد از بررسی بسیار زیاد و اطمینان از صحت همه مواردی که باید رعایت شود در نهایت مشخص شد که این اشکال ناشی از ویروسی شدن سیستم بوده است. حال این چه ویروسی بوده که روی صحت ارتباط سریال اثر می گذاشته مورد قابل تاملی است که جای بررسی دارد.
-
مشاهدات مکرر از نیازهای مجموعه های صنعتی و به ویژه در بخش خصوصی حاکی از وجود ظرفیت های بالا برای انجام کارها و پروژه های سنگین و پیچیده است. اما تعداد افرادی که قادر به انجام صورت مسئله های مورد نیاز باشند در عمل بسیار انگشت شمار است. یک دلیل این کمبود شدید در نیروی انسانی متخصص این است که افرادی که داوطلب کار هستند در فاز تجربه آموزی بجای تمرکز روی پیاده سازی کاربردهای خاص و کسب تخصص در یک زمینه معین وقتشان را بیشتر صرف از این شاخه به آن شاخه پریدن و رفتن به دنبال موج های مختلف می کنند و وقتی از فاز آموزش و تجربه آموزی وارد فاز اجرایی و عملیاتی می شوند عملا در هیچ موضوعی بصورت حرفه ای حرفی برای گفتن ندارند.
نمونه رزومه گروه اکثریت:
- کار کردن با نرم افزار X و سخت افزار Y.
نمونه رزومه گروه اقلیت:
- پیاده سازی کاربرد X. تخصص در موضوع Y.

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

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

-
حداکثر فرکانس قابل تولید بصورت نرم افزاری روی پین های غیر pwm در AVR:
حداکثر سرعت تغییرات روی پین ها بصورت نرم افزاری به زمان اجرای دستورالعمل های اسمبلی مرتبط در میکروکنترلر مورد نظر بستگی دارد. در AVR برای تغییر وضعیت پین های برخی از پورت ها بصورت بیتی می توان از دستورات اسمبلی sbi و cbi استفاده کرد. زمان اجرای این دستورالعمل ها در اکثر شماره های AVR معادل دو سیکل کلاک cpu و در سری Reduced Core tinyAVR تنها یک سیکل کلاک cpu است. بنابراین قابلیت تغییر بیتی پین ها در یک کلاک cpu معین در شماره ای مثل Attiny10 دو برابر سریعتر از مثلا ATmega2560 است. اگر از طریق این دستورالعمل ها وضعیت یک پین بصورت متوالی set و reset شود، فرکانس لحظه ای شکل موج ایجاد شده بسته به خانواده مورد استفاده Fcpu/4 یا Fcpu/2 خواهد بود. مثال برای ایجاد سه سیکل متوالی روی پین 0 از PORTB:
sbi portb,0
cbi portb,0
sbi portb,0
cbi portb,0
sbi portb,0
cbi portb,0
علاوه بر sbi و cbi وضعیت تمام بیت های یک پورت را می توان بصورت همزمان توسط دستور اسمبلی out تغییر داد که البته این دستورالعمل در برخی شماره ها روی همه پورت ها عمل نمی کند. از آنجایی که زمان اجرای دستورالعمل out برای همه خانواده ها تنها یک سیکل کلاک cpu است، پس با استفاده هوشمندانه از آن می توان سیکل های متناوبی با فرکانس لحظه ای Fcpu/2 را ایجاد کرد. مثال برای سه سیکل متوالی روی پین 0 از PORTB در شرایطی که بقیه پین ها 0 باشند:
clr r16
ldi r17,1
...
out portb,r16
out portb,r17
out portb,r16
out portb,r17
out portb,r16
out portb,r17
اما در صورت نیاز به ایجاد یک حلقه مسئله متفاوت است و پرشی که لازم است در انتهای حلقه قرار داده شود، زمان بندی را تغییر می دهد. حداقل زمان اجرای پرش، دو سیکل است که با لحاظ حداقل دو سیکل برای set و reset شدن پین می توان به شکل موجی با فرکانس Fcpu/4 رسید که بخش های Low و High آن متقارن نیستند:
loop:
sbi portb,0
cbi portb,0
rjmp loop
در مثال بالا اگر از خانواده ای استفاده شود که زمان اجرای دستورالعمل های sbi و cbi در آن دو سیکل باشد، فرکانس شکل موج نهایی Fcpu/6 خواهد بود. برای ایجاد تقارن باید تاخیری را بعد از set کردن پین اضافه کرد که باعث کاهش فرکانس می شود. نتیجه کلی اینکه با استفاده صحیح از دستورالعمل های cpu امکان تولید سیکل هایی با فرکانس تا حداکثر Fcpu/2 روی پین ها وجود دارد که در صورت استفاده از حلقه این فرکانس کاهش می یابد.
حال وقتی با زبان های سطح بالا مثل C و BASIC  برنامه می نویسیم، بسته به اینکه کد را چطور بنویسیم و از چه کامپایلری استفاده کنیم و کامپایلر را در چه سطحی از Optimization قرار دهیم، کامپایلر دستورالعمل هایی را جایگزین خطوط برنامه سطح بالا می کند که می تواند منجر به زمان بندی متفاوتی شود. مثلا اگر در زبان C برای تولید یک شکل موج بصورت نرم افزاری نوشته شود:
while(1) PORTB^=0x01;
کامپایلر کد بالا را با معادل اسمبلی شبیه کد زیر جایگزین می کند:
loop:
ldi r16,1
in r17,portb
eor r17,r16
out portb,r17
rjmp loop
که خروجی این کد شکل موجی با فرکانس Fcpu/12 را روی PORTB0 ایجاد خواهد کرد.
از توضیحات بالا می توان نتیجه گرفت که رسیدن به حداکثر قابلیت های یک سخت افزار وابستگی کاملی به روش و ابزارهای کدنویسی دارد و در یک سخت افزار ثابت، استفاده از روش های نرم افزاری مختلف می تواند منجر به نتایج متفاوتی شود.

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

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

معرفی Ring proximity sensor:

سنسورهایی شبیه تصویر زیر در دستگاه های بافت زنجیر بکار می روند و زنجیر در حال بافت از مرکز سنسور عبور می کند. اگر به هر دلیلی زنجیر هنگام بافته شدن قطع شود یا قطر آن به دلیل اشکال در بافت کاهش یابد، سنسور عمل می کند و دستگاه متوقف می شود. در کاربردهای مشابه هم می توان از این نوع سنسور استفاده کرد.
http://img.directindustry.com/images_di/photo-g/7315-12021958.jpg

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

سورس برنامه سفینه ماه نشین آپولو 11 که حدود 50 سال پیش نوشته شده است:
https://github.com/chrislgarry/Apollo-11
-

آینه:
اگر برای کار با ابزارهای نرم افزاری یا سخت افزاری مانند Arduino یا Code Wizard یا CubeMX یا FlowCode یا انتخاب نوع میکروکنترلر یا سیستم عامل یا استفاده از انواع سخت افزار های آماده و ... مردد هستید، دو موضوع را برای خود روشن کنید. اول اینکه ابتدا با کمک گرفتن از مراجع معتبر بصورت دقیق بسنجید که از طریق وقت گذاشتن برای تسلط به آن ابزار، چه چیزهایی را به دست می آورید و چه چیزهایی را از دست می دهید. گام مهم تر بعدی این است که با توجه به هدفی که دارید، توانایی ها و انگیزه های خود را شناسایی کنید که آیا با محاسن و معایب موجود انتخاب آن ابزار برای شما مناسب هست یا نه. در بخش اول به عنوان مثال ممکن است کار با یک ابزار خاص ساده تر و یادگیری و راه اندازی آن سریع تر و مستلزم صرف وقت کمتر باشد. اما به قیمت این سرعت و سهولت، ابزاری را انتخاب کرده باشیم که رسیدن به حداکثر قابلیت های ممکن از طریق آن مقدور نباشد. پس در این مورد خاص صرفه جویی در زمان و سهولت را بدست آورده ایم و امکان رسیدن به حداکثر قابلیت را از دست داده ایم. یا به عنوان مثال دیگر تهیه یک سخت افزار آماده ممکن است بسیار ساده تر از طراحی و ساخت آن از نقطه صفر باشد و موجب صرفه جویی در زمان شود. اما در عوض وقتی یک سخت افزار را خودمان طراحی کردیم علاوه بر کسب تسلط و تجربه دیگر لازم نیست معطل هیچ ماژول آماده ای باشیم که در صورت موجود نبودن آن کارمان به مشکل بر بخورد. اما شناسایی مزایا و معایب ابزار همه قضیه نیست و موضوع مهم تر از آن خود ما و اهداف و انگیزه ها و قابلیت هایمان در مواجهه با آن ابزار است. شاید اصلا امکان رسیدن به حداکثر قابلیت برای ما مهم نباشد. شاید حوصله و کشش کار با یک ابزار را نداشته باشیم. مگر برای انجام هر کاری لازم است حتما به حداکثر بهره وری از سخت افزار یا نرم افزار برسیم؟ یا مگر قرار است در یک موضوع همه به مقام استادی و تسلط کامل برسند؟ و در نقطه مقابل شاید تصمیم بگیریم که ابزاری را انتخاب کنیم که علیرغم سخت تر بودن، از نظر قابلیت بی رقیب باشد و بدون توجه به میزان سختی کار بخواهیم کاراترین روش را انتخاب کنیم و از توانایی و انگیزه کافی هم برای طی این مسیر برخوردار باشیم. خلاصه اینکه برای همه نمی توان یک نسخه واحد را تجویز کرد و استفاده از یک ابزار مشخص ممکن است برای یک نفر بهترین روش و برای دیگری در حکم وقت تلف کردن باشد.
برای همین است که وقتی کسی سوال می کند که آیا برای کار با فلان ابزار وقت بگذارم، معمولا این پاسخ به او داده می شود که با فرض شناسایی صحیح قابلیت های آن ابزار ابتدا در آینه نگاه کن و اول ببین چه کسی هستی و چه توانایی و حوصله و انگیزه ای داری و قرار است به کجا برسی و آنگاه تصمیم بگیر.
-

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

-
از جمله موارد اشتباهی که به دلیل تکرار زیاد برای برخی تبدیل به یک اصل مسلم شده این است که با محصولات چینی نمی توان رقابت کرد. به غیر از اینکه این گزاره به دلایل مختلفی مثل وجود پشتیبانی و خدمات پس از فروش و بالاتر بودن کیفیت محصول داخلی و سفارشی سازی محصول مطابق نیاز مشتری می تواند درست نباشد، اما فراتر از آن پتانسیل های زیادی در تولید محصولات الکترونیک به خصوص در بخش صنعت وجود دارد که اصلا معادل چینی برای آنها وجود ندارد.
-
استفاده از آی سی های سوزانده شده و خنثی برای جلوگیری از مهندسی معکوس و کپی کردن مدارات توسط افراد غیرمجاز:
یک روش پیشنهادی برای محافظت مدارات در برابر مهندسی معکوس و کپی شدن، استفاده از یک یا چند آی سی خنثی و بدون تاثیر در مسیر سیگنال های مختلف است. برای تهیه آی سی های بدون اثر و خنثی می توانیم از روش سوزاندن آی سی های کم قیمت استفاده کنیم. برای این کار می توانیم آی سی های مختلفی از جمله شماره هایی از خانواده های TTL یا CMOS را انتخاب کنیم و بین زمین و کلیه پایه های آن ها یک ولتاژ بالا را به مدت کافی قرار دهیم که در این شرایط به دلیل جریان کشی پین ها، آی سی به کلی آسیب می بیند و حتی ممکن است کلیه پین ها بصورت داخلی قطع شوند. البته عکس العمل آی سی های مختلف در این شرایط متفاوت است و ممکن است در بعضی آی سی ها حالت ترکیدن ایجاد شود که این مورد به شماره آی سی و نوع اعمال ولتاژ به آن بستگی دارد. اما با فرض انجام موفق سوزاندن آی سی های مورد نظر (که حتی می توان یک مدار مستقل را برای این کار طراحی کرد)، وقتی در مدار از آنها استفاده کنیم و شماره روی آنها هم پاک شود، مهندسی معکوس مدار حتی از طریق تحلیل آن کار بسیار مشکلی خواهد بود. زیرا حدس زدن وظیفه یک یا چند آی سی که در واقع هیچ کار خاصی را انجام نمی دهند و بود و نبود آنها تفاوتی را در عملکرد مدار ایجاد نمی کند کار بسیار سختی است. یک روش دیگر هم این است که شماره آی سی را پاک نکنیم که در این صورت هم وقتی شخص کپی کار مدار را مجددا با آی سی های سالم می بندد، به نتایج غیر منتظره ای نسبت به عملکرد مدار اصلی خواهد رسید. استفاده از چنین آی سی هایی به خصوص در مدارهایی که در آنها از قطعات قابل قفل (Lock) کردن مانند میکروکنترلرها استفاده نشده باشد می تواند در جلوگیری از مهندسی معکوس و کپی کردن مدار بسیار موثر باشد.
-

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

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

-