نقل یک تجربه عملی:
در هنگام شستشوی مدار چاپی، ریختن حلال های استفاده شده برای شستشو روی سوییچ های Push button و نفوذ آن به محل تماس کنتاکت ها معمولا باعث خرابی سوییچ می شود.
@KnowledgePlus
در هنگام شستشوی مدار چاپی، ریختن حلال های استفاده شده برای شستشو روی سوییچ های Push button و نفوذ آن به محل تماس کنتاکت ها معمولا باعث خرابی سوییچ می شود.
@KnowledgePlus
(مطلب زیر چند سال پیش در پاسخ به سوالی در یکی از انجمن های برق و الکترونیک نوشته شد)
یکی از موارد پرکاربرد کنترل کننده های PID، سیستم هایی با رفتار یک تابع تبدیل مرتبه اول و یک تاخیر ذاتی در پاسخ سیستم است. به عنوان مثال، یک فرایند کنترل حرارت را در یک فضای بسته نظر می گیریم که از طریق یک مولد حرارتی، دمای پروسه کنترل می شود و محل مورد نظر برای کنترل دما و سنسور تشخیص دما هم با یک فاصله نسبت به مولد حرارتی قرار دارند. چنین سیستمی در عمل دارای یک تاخیر ذاتی است، به این معنی که اگر بصورت ناگهانی میزان تولید حرارت توسط عامل گرمایشی را در حداکثر خود هم که قرار دهیم، در یک لحظه تغییر و تفاوتی در نقطه سنجش دما بوجود نمی آید و مدتی طول می کشد تا تاثیر تغییرات ورودی به خروجی برسد. به همین ترتیب اگر حرارت مولد در یک لحظه قطع شود، تاثیر آن با یک تاخیر و فاصله زمانی به نقطه سنجش دما می رسد. همچنین طبیعت عملکرد سیستم دارای رفتار مرتبه اول است،به این معنی که مانند خازنی که از طریق یک منبع و مقاومت شارژ می شود،با شکل موج شبه نمایی از مقدار اولیه تغییر می کند و به حالت دائمی می رسد.
در کنترل PID :
عامل حاصلضرب یک ضریب در خطا در مورد خطاهای لحظه فعلی قضاوت می کند.
عامل انتگرال تاثیر خطاهای گذشته را اعمال می کند.
و بخش مشتق هم به عنوان یک عامل پیش بینی خطا در زمان های آینده عمل می کند.
برای سیستم های پر اینرسی و با تاخیر، عامل مشتق می تواند تاخیرهای ذاتی سیستم را جبران سازی کند و با تنظیم درست ضرایب PID، می تواند رفتار یک پروسه با طبیعت مذکور را به خوبی تحت کنترل بگیرد. اما برای سیستم های سریع و بدون تاخیر معمولا از کنترلر PI استفاده می شود. برای تنظیم درست ضرایب PID می توانید به جزئیات روش زیگلر نیکولز در تنظیم ضرایب مراجعه کنید.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
@KnowledgePlus
یکی از موارد پرکاربرد کنترل کننده های PID، سیستم هایی با رفتار یک تابع تبدیل مرتبه اول و یک تاخیر ذاتی در پاسخ سیستم است. به عنوان مثال، یک فرایند کنترل حرارت را در یک فضای بسته نظر می گیریم که از طریق یک مولد حرارتی، دمای پروسه کنترل می شود و محل مورد نظر برای کنترل دما و سنسور تشخیص دما هم با یک فاصله نسبت به مولد حرارتی قرار دارند. چنین سیستمی در عمل دارای یک تاخیر ذاتی است، به این معنی که اگر بصورت ناگهانی میزان تولید حرارت توسط عامل گرمایشی را در حداکثر خود هم که قرار دهیم، در یک لحظه تغییر و تفاوتی در نقطه سنجش دما بوجود نمی آید و مدتی طول می کشد تا تاثیر تغییرات ورودی به خروجی برسد. به همین ترتیب اگر حرارت مولد در یک لحظه قطع شود، تاثیر آن با یک تاخیر و فاصله زمانی به نقطه سنجش دما می رسد. همچنین طبیعت عملکرد سیستم دارای رفتار مرتبه اول است،به این معنی که مانند خازنی که از طریق یک منبع و مقاومت شارژ می شود،با شکل موج شبه نمایی از مقدار اولیه تغییر می کند و به حالت دائمی می رسد.
در کنترل PID :
عامل حاصلضرب یک ضریب در خطا در مورد خطاهای لحظه فعلی قضاوت می کند.
عامل انتگرال تاثیر خطاهای گذشته را اعمال می کند.
و بخش مشتق هم به عنوان یک عامل پیش بینی خطا در زمان های آینده عمل می کند.
برای سیستم های پر اینرسی و با تاخیر، عامل مشتق می تواند تاخیرهای ذاتی سیستم را جبران سازی کند و با تنظیم درست ضرایب PID، می تواند رفتار یک پروسه با طبیعت مذکور را به خوبی تحت کنترل بگیرد. اما برای سیستم های سریع و بدون تاخیر معمولا از کنترلر PI استفاده می شود. برای تنظیم درست ضرایب PID می توانید به جزئیات روش زیگلر نیکولز در تنظیم ضرایب مراجعه کنید.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
@KnowledgePlus
قلاویز زنی هیت سینک های آلومینیومی:
برای نصب قطعات قدرت مانند mosfet و igbt و scr و غیره روی هیت سینک های آلومینیومی که دارای ضخامت کافی باشند، به غیر از استفاده از پیچ و مهره می توانیم از روش قلاویز کردن آلومینیوم هم استفاده کنیم. برای کسانی که با این روش آشنا نیستند، شیوه کار بصورت فهرست وار ذکر می شود:
1- ابتدا محلی را که قرار است قلاویز زده شود با سنبه نشان و چکش علامت می زنیم.
2- بوسیله دریل نصب شده روی پایه دریل و مته ای با قطر کوچکتر از قطر پیچ، محل مورد نظر را سوراخ می کنیم. برای هر سایز قلاویز مطابق جداول موجود، یک سایز مته مشخص شده که با توجه به کاربردهای الکترونیکی که پیچ های با قطرهای 3 و 4 میلیمتر معمولا جوابگو هستند از مته های زیر استفاده می کنیم:
مته 2.5 میلیمتر برای پیچ 3 میلیمتر
مته 3.3 میلیمتر برای پیچ 4 میلیمتر
3- قلاویز با سایز مناسب و از نوع ماشینی را روی پیچ گوشتی های برقی یا دریل هایی که دارای دور کم و قابلیت چپ گرد و راست گرد هستند نصب می کنیم. سپس سر قلاویز را به روغن آغشته می کنیم و عملیات قلاویز زنی را در دو مرحله رفت و برگشت انجام می دهیم.
4- بعد از پلیسه گیری می توان از محل قلاویز شده مانند مهره استفاده کرد و قطعات الکترونیک را بوسیله پیچ در آن محل نصب کرد.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
@KnowledgePlus
برای نصب قطعات قدرت مانند mosfet و igbt و scr و غیره روی هیت سینک های آلومینیومی که دارای ضخامت کافی باشند، به غیر از استفاده از پیچ و مهره می توانیم از روش قلاویز کردن آلومینیوم هم استفاده کنیم. برای کسانی که با این روش آشنا نیستند، شیوه کار بصورت فهرست وار ذکر می شود:
1- ابتدا محلی را که قرار است قلاویز زده شود با سنبه نشان و چکش علامت می زنیم.
2- بوسیله دریل نصب شده روی پایه دریل و مته ای با قطر کوچکتر از قطر پیچ، محل مورد نظر را سوراخ می کنیم. برای هر سایز قلاویز مطابق جداول موجود، یک سایز مته مشخص شده که با توجه به کاربردهای الکترونیکی که پیچ های با قطرهای 3 و 4 میلیمتر معمولا جوابگو هستند از مته های زیر استفاده می کنیم:
مته 2.5 میلیمتر برای پیچ 3 میلیمتر
مته 3.3 میلیمتر برای پیچ 4 میلیمتر
3- قلاویز با سایز مناسب و از نوع ماشینی را روی پیچ گوشتی های برقی یا دریل هایی که دارای دور کم و قابلیت چپ گرد و راست گرد هستند نصب می کنیم. سپس سر قلاویز را به روغن آغشته می کنیم و عملیات قلاویز زنی را در دو مرحله رفت و برگشت انجام می دهیم.
4- بعد از پلیسه گیری می توان از محل قلاویز شده مانند مهره استفاده کرد و قطعات الکترونیک را بوسیله پیچ در آن محل نصب کرد.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
@KnowledgePlus
نگهداری اطلاعات در حافظه های flash و eeprom میکروکنترلرها دارای یک محدودیت زمانی است که معمولا حداقلی برای این زمان بر حسب محدوده دما از طرف کارخانه سازنده اعلام می گردد. به عنوان مثال شرکت Atmel زمان نگهداری اطلاعات برای برخی از شماره های AVR را حداقل 100 سال در دمای 25 درجه یا 20 سال در دمای 85 درجه ذکر کرده است. برای XMEGA هم حداقل 100 سال در دمای 25 درجه یا 25 سال در دمای 55 درجه ذکر شده است. یا به عنوان مثال دیگر در میکروکنترلرهای سری LPC1788 زمان نگهداری اطلاعات برای حافظه های flash و eeprom در محدوده دمای منفی 40 درجه تا 85 درجه در صورت اتصال میکروکنترلر به تغذیه حداقل 10 سال و در صورت عدم اتصال به تغذیه این زمان برای حافظه flash حداقل تا 20 سال ذکر شده است.
@KnowledgePlus
@KnowledgePlus
پاسخ به چند سوال متداول درباره وقفه ها در AVR:
سوال: آیا بین وقفه های AVR اولویتی وجود دارد؟
پاسخ: در AVR وقفه هایی که دارای آدرس بردار کوچکتری در حافظه flash هستند نسبت به وقفه های دارای آدرس بردار وقفه بزرگتر، در شرایط درخواست همزمان دارای اولویت هستند. بنابراین اگر دو وقفه بصورت همزمان درخواست شوند، وقفه ای پذیرفته می شود که بردار وقفه آن دارای آدرس کوچکتری در حافظه flash باشد. اما تعیین اولویت بصورتی که در برخی میکروکنترلرهای دیگر مانند XMEGA قابل تعریف است در AVR وجود ندارد.
سوال: آیا امکان پذیرش وقفه در وقفه وجود دارد؟
پاسخ: در AVR با پذیرش هر وقفه، بیت I در SREG که مجوز سراسری وقفه است بصورت خودکار صفر می شود و در پایان وقفه مجددا یک می شود که در این شرایط پذیرش هر وقفه جدید تا پایان وقفه جاری ممکن نیست. اما با اجرای دستورالعمل ها می توان بیت I را در روتین وقفه بصورت نرم افزاری یک کرد که در این صورت امکان پذیرش وقفه دیگری در هنگام اجرای وقفه جاری وجود دارد. نکته قابل ذکر این است که بعد از پذیرش وقفه جدید و اتمام روتین آن، اجرای روتین وقفه جاری ادامه پیدا خواهد کرد.
سوال: اگر در هنگام اجرای یک وقفه، تقاضای وقفه دیگری ایجاد شود آیا ممکن است این تقاضا توسط CPU دیده نشود و به اصطلاح وقفه از بین برود؟
پاسخ: وقفه ها در AVR بصورت کلی دو دسته هستند. دسته اول که اکثریت وقفه ها را تشکیل می دهند دارای یک پرچم (Flag) درخواست وقفه هستند. حتی در صورتی که وقفه ای در حال اجرا باشد، درخواست این نوع وقفه ها بعد از اتمام وقفه جاری به دلیل یک ماندن پرچم وقفه، از طرف CPU دیده می شود و تقاضای وقفه به اصطلاح از بین نمی رود. اما نوع دومی از درخواست وقفه هم مانند وقفه خارجی پورت ها در سطح Low وجود دارد که علیرغم وجود پرچم درخواست وقفه برای وقفه های خارجی، اما در صورت تنظیم منبع درخواست وقفه روی سطح Low تاثیری روی پرچم وقفه ایجاد نمی شود. بنابراین اگر در هنگام درخواست این نوع وقفه ها وقفه دیگری در حال اجرا باشد و تا قبل از پایان آن، درخواست وقفه از طرف منبع آن متوقف شود (مثلا برای سطح Low پین به وضعیت High بر گردد) در اینصورت چنین در خواستی از طرف CPU دیده نخواهد شد و به اصطلاح وقفه از بین می رود. این مورد البته جنبه استثنا دارد و فقط شامل وقفه هایی است که پرچم وقفه برای آنها عمل نمی کند.
سوال: آیا ممکن است به دلیل درخواست های مکرر چند منبع وقفه، برخی از آنها اصلا پذیرفته نشوند؟
پاسخ: در شرایطی پاسخ به این سوال می تواند مثبت باشد. اگر وقفه ای با آدرس بردار کوچکتر در حافظه flash به صورت مکرر درخواست شود و با برگشت از روتین وقفه پرچم وقفه یک باشد و بلافاصله وقفه دیگری اجرا شود، در این شرایط وقفه های با آدرس بردار بزرگتر امکان پذیرش از طرف CPU را نخواهند داشت.
سوال: آیا وقفه های پشت سر هم می تواند اجرای برنامه در حلقه اصلی را متوقف کند؟
پاسخ: بعد از بازگشت از هر وقفه، CPU حداقل یک دستورالعمل اسمبلی را اجرا می کند. بنابراین اجرای وقفه ها بصورت مکرر و پشت سرهم علیرغم اینکه می تواند باعث کند شدن اجرای حلقه اصلی شود اما نمی تواند اجرای آن را متوقف کند.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
@KnowledgePlus
سوال: آیا بین وقفه های AVR اولویتی وجود دارد؟
پاسخ: در AVR وقفه هایی که دارای آدرس بردار کوچکتری در حافظه flash هستند نسبت به وقفه های دارای آدرس بردار وقفه بزرگتر، در شرایط درخواست همزمان دارای اولویت هستند. بنابراین اگر دو وقفه بصورت همزمان درخواست شوند، وقفه ای پذیرفته می شود که بردار وقفه آن دارای آدرس کوچکتری در حافظه flash باشد. اما تعیین اولویت بصورتی که در برخی میکروکنترلرهای دیگر مانند XMEGA قابل تعریف است در AVR وجود ندارد.
سوال: آیا امکان پذیرش وقفه در وقفه وجود دارد؟
پاسخ: در AVR با پذیرش هر وقفه، بیت I در SREG که مجوز سراسری وقفه است بصورت خودکار صفر می شود و در پایان وقفه مجددا یک می شود که در این شرایط پذیرش هر وقفه جدید تا پایان وقفه جاری ممکن نیست. اما با اجرای دستورالعمل ها می توان بیت I را در روتین وقفه بصورت نرم افزاری یک کرد که در این صورت امکان پذیرش وقفه دیگری در هنگام اجرای وقفه جاری وجود دارد. نکته قابل ذکر این است که بعد از پذیرش وقفه جدید و اتمام روتین آن، اجرای روتین وقفه جاری ادامه پیدا خواهد کرد.
سوال: اگر در هنگام اجرای یک وقفه، تقاضای وقفه دیگری ایجاد شود آیا ممکن است این تقاضا توسط CPU دیده نشود و به اصطلاح وقفه از بین برود؟
پاسخ: وقفه ها در AVR بصورت کلی دو دسته هستند. دسته اول که اکثریت وقفه ها را تشکیل می دهند دارای یک پرچم (Flag) درخواست وقفه هستند. حتی در صورتی که وقفه ای در حال اجرا باشد، درخواست این نوع وقفه ها بعد از اتمام وقفه جاری به دلیل یک ماندن پرچم وقفه، از طرف CPU دیده می شود و تقاضای وقفه به اصطلاح از بین نمی رود. اما نوع دومی از درخواست وقفه هم مانند وقفه خارجی پورت ها در سطح Low وجود دارد که علیرغم وجود پرچم درخواست وقفه برای وقفه های خارجی، اما در صورت تنظیم منبع درخواست وقفه روی سطح Low تاثیری روی پرچم وقفه ایجاد نمی شود. بنابراین اگر در هنگام درخواست این نوع وقفه ها وقفه دیگری در حال اجرا باشد و تا قبل از پایان آن، درخواست وقفه از طرف منبع آن متوقف شود (مثلا برای سطح Low پین به وضعیت High بر گردد) در اینصورت چنین در خواستی از طرف CPU دیده نخواهد شد و به اصطلاح وقفه از بین می رود. این مورد البته جنبه استثنا دارد و فقط شامل وقفه هایی است که پرچم وقفه برای آنها عمل نمی کند.
سوال: آیا ممکن است به دلیل درخواست های مکرر چند منبع وقفه، برخی از آنها اصلا پذیرفته نشوند؟
پاسخ: در شرایطی پاسخ به این سوال می تواند مثبت باشد. اگر وقفه ای با آدرس بردار کوچکتر در حافظه flash به صورت مکرر درخواست شود و با برگشت از روتین وقفه پرچم وقفه یک باشد و بلافاصله وقفه دیگری اجرا شود، در این شرایط وقفه های با آدرس بردار بزرگتر امکان پذیرش از طرف CPU را نخواهند داشت.
سوال: آیا وقفه های پشت سر هم می تواند اجرای برنامه در حلقه اصلی را متوقف کند؟
پاسخ: بعد از بازگشت از هر وقفه، CPU حداقل یک دستورالعمل اسمبلی را اجرا می کند. بنابراین اجرای وقفه ها بصورت مکرر و پشت سرهم علیرغم اینکه می تواند باعث کند شدن اجرای حلقه اصلی شود اما نمی تواند اجرای آن را متوقف کند.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
@KnowledgePlus
بخشی از برنامه نوشته شده برای یک کنترلر صنعتی معتبر و در حال کار با بیش از 20000 خط برنامه نویسی به زبان اسمبلی.
@KnowledgePlus
@KnowledgePlus
مزیتی که صرف نظر از امکانات سحت افزاری برای برخی از میکروکنترلرهای در دسترس نسبت به برخی دیگر وجود دارد و در کاربردهای صنعتی و حساس باید مد نظر قرار بگیرد این است که برای یکسری از خانواده ها، گزارش ها و مشاهدات زیادی مبنی بر وجود میکروکنترلرهای تقلبی و Clone وجود دارد. در حالی که برای برخی خانواده ها تاکنون موردی مبنی بر وجود نسخه های تقلبی مطرح نشده است.
@KnowledgePlus
@KnowledgePlus
نمونه ای از قدرت برنامه نویسی اسمبلی:
پروژه نمایش متن دلخواه روی اسیلوسکوپ در مد Lissajous Pattern با استفاده از اعمال سیگنال های آنالوگ تولید شده توسط DAC به ورودی دو کانال اسیلوسکوپ:
https://knowledgeplus.ir/userimages/XYscope.jpg
این پروژه علاوه بر XMEGA با AVR هم انجام شده است. سورس پروژه در سایت موجود است.
@KnowledgePlus
پروژه نمایش متن دلخواه روی اسیلوسکوپ در مد Lissajous Pattern با استفاده از اعمال سیگنال های آنالوگ تولید شده توسط DAC به ورودی دو کانال اسیلوسکوپ:
https://knowledgeplus.ir/userimages/XYscope.jpg
این پروژه علاوه بر XMEGA با AVR هم انجام شده است. سورس پروژه در سایت موجود است.
@KnowledgePlus
نکته طراحی مدار:
قرار دادن یک خازن با ظرفیت کم (مثلا 1nF) روی پین های فعال وقفه خارجی می تواند باعث جلوگیری از وقفه های ناخواسته ناشی از نویز شود.
@KnowledgePlus
قرار دادن یک خازن با ظرفیت کم (مثلا 1nF) روی پین های فعال وقفه خارجی می تواند باعث جلوگیری از وقفه های ناخواسته ناشی از نویز شود.
@KnowledgePlus
نکاتی از زبان برنامه نویسی C:
فرض کنیم که در برنامه نویسی C لازم باشد که در متن یک تابع، تابع دیگری اجرا شود که این تابع دوم یک تابع ثابت و معین نباشد و بلکه بتوانیم در هنگام احضار تابع اصلی، تابعی را که باید درون آن اجرا شود برحسب شرایط تعیین کنیم. برای این کار می توانیم از اشاره گر به تابع استفاده کنیم و به عنوان یکی از ورودی های تابع اصلی، اشاره گری به تابع مورد نظر را به عنوان ورودی ارسال کنیم و در متن تابع اصلی هم از همین اشاره گر برای اجرای تابعی استفاده کنیم که توسط اشاره گر به آن اشاره می شود.
@KnowledgePlus
فرض کنیم که در برنامه نویسی C لازم باشد که در متن یک تابع، تابع دیگری اجرا شود که این تابع دوم یک تابع ثابت و معین نباشد و بلکه بتوانیم در هنگام احضار تابع اصلی، تابعی را که باید درون آن اجرا شود برحسب شرایط تعیین کنیم. برای این کار می توانیم از اشاره گر به تابع استفاده کنیم و به عنوان یکی از ورودی های تابع اصلی، اشاره گری به تابع مورد نظر را به عنوان ورودی ارسال کنیم و در متن تابع اصلی هم از همین اشاره گر برای اجرای تابعی استفاده کنیم که توسط اشاره گر به آن اشاره می شود.
@KnowledgePlus
برد emi filter طراحی شده برای اتصال اینورتر و سرو موتور و شیر برقی و ... بصورت همزمان با تغذیه کنترلر و کامپیوتر به برق شهر. توضیح بیشتر:
https://telegram.me/KnowledgePlus/194
@KnowledgePlus
https://telegram.me/KnowledgePlus/194
@KnowledgePlus
نمونه ای از مزیت های XMEGA نسبت به AVR:
در برخی از کاربردها لازم است که در تولید pwm علاوه بر بالا بودن فرکانس حامل (Carrier)، دقت (Resolution) در pwm هم تا حد امکان بالا باشد. اما بالا بردن دقت pwm، برای فرکانس حامل محدودیت ایجاد می کند. مثلا در AVR با فرض کلاک 16MHz و در مد Fast pwm، برای حداکثر دقت ممکن که 16 بیتی است، فرکانس حامل برابر 16000000/65536 یا 244.14 هرتز خواهد بود که ممکن است در یک سری از کاربردها کافی نباشد. اما در XMEGA با استفاده از مد High Resolution Plus و در کلاک 32MHz برای CPU امکان اعمال کلاک موثر تا 256MHz به تایمر وجود دارد که در تولید شکل موج pwm در مقایسه با AVR می تواند فرکانس حاملی تا 16 برابر یعنی 3906.25 هرتز در دقت 16 بیتی را ایجاد کند.
@KnowledgePlus
در برخی از کاربردها لازم است که در تولید pwm علاوه بر بالا بودن فرکانس حامل (Carrier)، دقت (Resolution) در pwm هم تا حد امکان بالا باشد. اما بالا بردن دقت pwm، برای فرکانس حامل محدودیت ایجاد می کند. مثلا در AVR با فرض کلاک 16MHz و در مد Fast pwm، برای حداکثر دقت ممکن که 16 بیتی است، فرکانس حامل برابر 16000000/65536 یا 244.14 هرتز خواهد بود که ممکن است در یک سری از کاربردها کافی نباشد. اما در XMEGA با استفاده از مد High Resolution Plus و در کلاک 32MHz برای CPU امکان اعمال کلاک موثر تا 256MHz به تایمر وجود دارد که در تولید شکل موج pwm در مقایسه با AVR می تواند فرکانس حاملی تا 16 برابر یعنی 3906.25 هرتز در دقت 16 بیتی را ایجاد کند.
@KnowledgePlus
یکی از نکاتی که در کار با ابزارهایی مانند میکروکنترلرها باید مورد توجه قرار بگیرد این است که رسیدن به مرحله راه اندازی اجزای سخت افزار ممکن است درصد بسیار کمی از طی مسیر برای انجام یک پروژه ارزشمند را به خود اختصاص دهد و تصور اینکه راه اندازی یک مجموعه از سخت افزارها لزوما به معنای قابلیت انجام پروژه های سنگین و پیچیده با آن امکانات است، در بسیاری موارد تصور درستی نیست. به عنوان مثال فرض کنیم که در یک مجموعه سخت افزاری شامل LCD گرافیکی و تاچ و تعدادی ورودی و خروجی آنالوگ و دیجیتال و ارتباطاتی نظیر RS485 و USB و غیره، کلیه بخش های این سخت افزار بصورت مجزا راه اندازی شده باشند. اما ای بسا صورت مسئله های گوناگونی با همین ترکیب سخت افزاری قابل تعریف باشد که فردی که تک تک بخش ها را راه اندازی کرده از عهده انجام آنها بصورت ترکیبی بر نیاید. بنابراین تمرین و ممارست در کار با ابزارهای سخت افزاری و نرم افزاری یک فاز مهم و طولانی بعد از مرحله آشنایی و راه اندازی است که نیازمند صرف انرژی بسیار برای رسیدن به مهارت و تجربه است و در عمل بخش بسیار کوچکی از افراد هستند که به این مرحله می رسند.
@KnowledgePlus
@KnowledgePlus
یک توضیح تکمیلی در مورد مقاله قرار داده شده برای جلوگیری از کپی غیر مجاز محتوای حافظه برنامه:
از آنجایی که اخیرا مشاهده می شود که افراد و شرکت هایی ادعا می کنند که قادر هستند با برداشتن پوشش روی میکروکنترلر، برنامه موجود در آن را حتی در صورت قفل بودن بخوانند و در قبال اخذ هزینه های گزاف در اختیار افراد غیر مجاز قرار دهند. روش پیشنهاد شده در مقاله برای مقابله با این نوع دسترسی به محتوای میکروکنترلر و عمل نکردن محتوای حافظه برنامه بدست آمده، روی میکروکنترلرهای دیگر است. اما همین برنامه وقتی توسط تولید کننده اصلی و با پروگرامر روی هر تعداد میکروکنترلر که برنامه ریزی شود، روی همه آنها عمل خواهد کرد. به بیان دیگر در این روش برنامه ای یک بار توسط تولیدکننده اولیه روی هر تعداد میکروکنترلر که لازم باشد، برنامه ریزی می شود و روی همه آنها عمل می کند. اما اگر محتوای همین برنامه بعد از یک بار اجرا به هر طریقی دوباره خوانده شود و روی چیپ جدیدی ریخته شود، مطابق توضیحات مقاله دیگر عمل نخواهد کرد. برای رفع ابهامات احتمالی در این مورد بزودی نسخه به روز شده این مقاله با توضیحات بیشتر در سایت قرار داده می شود.
@KnowledgePlus
از آنجایی که اخیرا مشاهده می شود که افراد و شرکت هایی ادعا می کنند که قادر هستند با برداشتن پوشش روی میکروکنترلر، برنامه موجود در آن را حتی در صورت قفل بودن بخوانند و در قبال اخذ هزینه های گزاف در اختیار افراد غیر مجاز قرار دهند. روش پیشنهاد شده در مقاله برای مقابله با این نوع دسترسی به محتوای میکروکنترلر و عمل نکردن محتوای حافظه برنامه بدست آمده، روی میکروکنترلرهای دیگر است. اما همین برنامه وقتی توسط تولید کننده اصلی و با پروگرامر روی هر تعداد میکروکنترلر که برنامه ریزی شود، روی همه آنها عمل خواهد کرد. به بیان دیگر در این روش برنامه ای یک بار توسط تولیدکننده اولیه روی هر تعداد میکروکنترلر که لازم باشد، برنامه ریزی می شود و روی همه آنها عمل می کند. اما اگر محتوای همین برنامه بعد از یک بار اجرا به هر طریقی دوباره خوانده شود و روی چیپ جدیدی ریخته شود، مطابق توضیحات مقاله دیگر عمل نخواهد کرد. برای رفع ابهامات احتمالی در این مورد بزودی نسخه به روز شده این مقاله با توضیحات بیشتر در سایت قرار داده می شود.
@KnowledgePlus
نکته ای در موضوع بازاریابی و جذب مشتری:
در بحث بازاریابی و جذب مشتری ذکر این تجربه خالی از فایده نیست که یک مشتری در یک شرایط زمانی و مکانی خاص و به دلیل مجموعه ای از علل و عوامل به این نتیجه می رسد که کالایی را خریداری کند (یا مثلا قراردادی را منعقد کند) و اگر در آن لحظه آن کالا برای عرضه به او آماده و در دسترس باشد، خرید مورد نظر انجام می شود. اما بسیار اتفاق می افتد که اگر در آن لحظه ای که خریدار تصمیم قطعی برای خرید دارد، به هر دلیلی این امکان میسر نشود و به زمان آینده موکول شود، مشتری تصمیم خود را تغییر می دهد و مسیر دیگری را انتخاب می کند. ضرب المثل عامیانه ای در این رابطه هست که برای تفهیم بهتر بیان می شود که مشتری را به کبوتری تشبیه می کند که وقتی که نشست باید آن را گرفت. اما اگر پرواز کرد دیگر امکان بازگشتش بسیار کم است. بصورت خلاصه، شکار لحظه در امر بازاریابی و جذب مشتری بسیار مهم است.
@KnowledgePlus
در بحث بازاریابی و جذب مشتری ذکر این تجربه خالی از فایده نیست که یک مشتری در یک شرایط زمانی و مکانی خاص و به دلیل مجموعه ای از علل و عوامل به این نتیجه می رسد که کالایی را خریداری کند (یا مثلا قراردادی را منعقد کند) و اگر در آن لحظه آن کالا برای عرضه به او آماده و در دسترس باشد، خرید مورد نظر انجام می شود. اما بسیار اتفاق می افتد که اگر در آن لحظه ای که خریدار تصمیم قطعی برای خرید دارد، به هر دلیلی این امکان میسر نشود و به زمان آینده موکول شود، مشتری تصمیم خود را تغییر می دهد و مسیر دیگری را انتخاب می کند. ضرب المثل عامیانه ای در این رابطه هست که برای تفهیم بهتر بیان می شود که مشتری را به کبوتری تشبیه می کند که وقتی که نشست باید آن را گرفت. اما اگر پرواز کرد دیگر امکان بازگشتش بسیار کم است. بصورت خلاصه، شکار لحظه در امر بازاریابی و جذب مشتری بسیار مهم است.
@KnowledgePlus
نکاتی از زبان برنامه نویسی C:
برای مقداردهی به اعضای یک struct یک روش سریع و خلاصه این است که در یک union، آرایه ای معادل با اعضای struct را تشکیل دهیم و مقداردهی را بجای struct به آرایه انجام دهیم. مثال در کامپایلر IAR:
union
{
unsigned char mystruct_array[10];
struct
{
unsigned long a;
unsigned char b;
unsigned char c;
unsigned long d;
}mystruct;
};
حال مثلا برای مقداردهی به اعضای mystruct به منظور مقداردهی اولیه از eeprom می توان در یک حلقه for به آرایه mystruct_array مقداردهی کرد که در صورت طولانی بودن struct این روش بسیار خلاصه تر از مقداردهی به تک تک اعضا است.
@KnowledgePlus
برای مقداردهی به اعضای یک struct یک روش سریع و خلاصه این است که در یک union، آرایه ای معادل با اعضای struct را تشکیل دهیم و مقداردهی را بجای struct به آرایه انجام دهیم. مثال در کامپایلر IAR:
union
{
unsigned char mystruct_array[10];
struct
{
unsigned long a;
unsigned char b;
unsigned char c;
unsigned long d;
}mystruct;
};
حال مثلا برای مقداردهی به اعضای mystruct به منظور مقداردهی اولیه از eeprom می توان در یک حلقه for به آرایه mystruct_array مقداردهی کرد که در صورت طولانی بودن struct این روش بسیار خلاصه تر از مقداردهی به تک تک اعضا است.
@KnowledgePlus
نقل یک تجربه:
یک باور عمومی در بین اکثر دانشجویان و فارغ التحصیلان برق و الکترونیک وجود دارد مبنی بر اینکه بسیاری از واحدهای ریاضی و پایه ای که در دانشگاه تدریس می شوند، در عمل هیچ کاربردی ندارند و گذراندن این واحدها نوعی وقت تلف کردن است. اما برخلاف این نظر در یک سری از پروژه های سنگین و جدی نیاز اساسی به همین مبانی پایه و روابط و معادلات ریاضی بوجود می آید که اینگونه صورت مسئله ها و پروژه ها معمولا از ارزش اقتصادی بالایی هم برخوردار هستند.
@KnowledgePlus
یک باور عمومی در بین اکثر دانشجویان و فارغ التحصیلان برق و الکترونیک وجود دارد مبنی بر اینکه بسیاری از واحدهای ریاضی و پایه ای که در دانشگاه تدریس می شوند، در عمل هیچ کاربردی ندارند و گذراندن این واحدها نوعی وقت تلف کردن است. اما برخلاف این نظر در یک سری از پروژه های سنگین و جدی نیاز اساسی به همین مبانی پایه و روابط و معادلات ریاضی بوجود می آید که اینگونه صورت مسئله ها و پروژه ها معمولا از ارزش اقتصادی بالایی هم برخوردار هستند.
@KnowledgePlus
نکته ای در مورد لحیم کاری:
در مدار چاپی هایی که دارای چاپ محافظ نیستند، بخش مسی یا پوششی که به عنوان آب قلع شناخته می شود در صورت قرار گرفتن در معرض جریان هوا بعد از مدتی معمولا اکسید می شود. بنابراین در صورت نیاز به لحیم کاری این گونه بردها که مدت زیادی از تولید آن ها گذشته باشد بهتر است ابتدا با سنباده ریز، یک لایه از روی برد برداشته شود تا این لایه اکسید شده مانع چسبیدن قلع نشود و لحیم کاری آن راحت تر انجام شود.
@KnowledgePlus
در مدار چاپی هایی که دارای چاپ محافظ نیستند، بخش مسی یا پوششی که به عنوان آب قلع شناخته می شود در صورت قرار گرفتن در معرض جریان هوا بعد از مدتی معمولا اکسید می شود. بنابراین در صورت نیاز به لحیم کاری این گونه بردها که مدت زیادی از تولید آن ها گذشته باشد بهتر است ابتدا با سنباده ریز، یک لایه از روی برد برداشته شود تا این لایه اکسید شده مانع چسبیدن قلع نشود و لحیم کاری آن راحت تر انجام شود.
@KnowledgePlus
طرح یک موضوع برای بررسی:
با توجه به قابلیت ویژه میکروکنترلر XMEGA برای ظاهر کردن clkper4 روی پین های خاص که فرکانس آن حداکثر 128MHz است و از طریق تنظیم pll هم می توان به فرکانس های مختلفی رسید، موضوعی که در این رابطه جای بررسی و کار دارد بهره بردن از این قابلیت برای استفاده از XMEGA به عنوان یک فرستنده RF است. مثلا به صورت نرم افزاری می توان خروجی پین را قطع و وصل کرد و یک مدولاسیون ASK را ایجاد کرد. یا برای پیاده سازی مدولاسیون FSK از طریق انتخاب منبع کلاک از اسیلاتور RC داخلی و تغییر بایت calibration یا اعمال کلاک خارجی و تغییر فرکانس آن اقدام کرد. در این رابطه آزمایشی در سال های گذشته انجام شد که صدای تقویت شده از میکروفن بصورت نه چندان واضح روی یک گیرنده FM دریافت شد. به هر حال بدینوسیله این موضوع مطرح شد تا دوستان در صورت علاقه روی کاربردهای این قابلیت کار کنند.
@KnowledgePlus
با توجه به قابلیت ویژه میکروکنترلر XMEGA برای ظاهر کردن clkper4 روی پین های خاص که فرکانس آن حداکثر 128MHz است و از طریق تنظیم pll هم می توان به فرکانس های مختلفی رسید، موضوعی که در این رابطه جای بررسی و کار دارد بهره بردن از این قابلیت برای استفاده از XMEGA به عنوان یک فرستنده RF است. مثلا به صورت نرم افزاری می توان خروجی پین را قطع و وصل کرد و یک مدولاسیون ASK را ایجاد کرد. یا برای پیاده سازی مدولاسیون FSK از طریق انتخاب منبع کلاک از اسیلاتور RC داخلی و تغییر بایت calibration یا اعمال کلاک خارجی و تغییر فرکانس آن اقدام کرد. در این رابطه آزمایشی در سال های گذشته انجام شد که صدای تقویت شده از میکروفن بصورت نه چندان واضح روی یک گیرنده FM دریافت شد. به هر حال بدینوسیله این موضوع مطرح شد تا دوستان در صورت علاقه روی کاربردهای این قابلیت کار کنند.
@KnowledgePlus