طراح

طراح

زندگی یعنی پژوهش و فهمیدن چیز جدید ( پروفسور حسابی)
طراح

طراح

زندگی یعنی پژوهش و فهمیدن چیز جدید ( پروفسور حسابی)

پشتیبان i'm an ENGINEER!

------------------------------------------------------------------------------------------------------------------------

#نکته #آموزشی #Saber

دقت adc داخلی avr ها مثبت و منهای 2LSB هست، به این معنی که عملاً با رفرنس داخلی 2.56 ولت رزولیشن 8 بیتی داریم .
هر کانت شما در 8 بیت برابر است با:
 vref/2^n-1=2.56/255=0.01
یعنی 10 میلی ولت بر کانت بدون حساب مساله پایداری دمایی و رفرنس و کالیبراسیون.

Saber @khoshfekran

------------------------------------------------------------------------------------------------------------------------

#نکته #آموزشی #designer2100
با استفاده از دستور memcpy  از توابع استودیو میشود طول مشخصی از یک آرایه را درون یک آرایه دیگر کپی کرد. (این فرایند از کارکتر اول شروع میشه)
 دستورات استودیو در اکثر برنامه هایی که دارای آرایه هستند کاربرد فراوانی دارد که در پروژه های مشاهده شده در سطح نت و مخصوصا پروژه هایی که دارای ماژولهای gsm و... هستند معمولا برنامه نویسان الکترونیک از روشی غیر معمول و دستکاری تک تک آرایه ها استفاده کرده اند که باعث افزایش حجم کد برنامه شده است.
Designer2100 @khoshfekran

------------------------------------------------------------------------------------------------------------------------

#نکته #آموزشی #پروگرامر #Saber
خیلی خلاصه و مفید گام به گام یا به قول خارجی ها Step by Step Tutorial
وسایل مورد نیاز :
1- یک عدد پروگرامر J-Link نسخه 8.0 کلون خریداری شده از پروگرمر فروش های معتبر سراسر کشور
2- یک عدد کابل USB قشنگ
3- یک عدد کامپیوتر بینوا
4- برنامه SAM-BA نصب شده شرکت ATMEL
5- برنامه J-Flash v5.10h نصب شده شرکت SEGGER
6- یک نفر بیکار عشق آپدیت

مراحل انجام کار :
1- درب پروگرمر J-Link را باز می کنیم.
2- کابل USB پروگرمر را وصل می کنیم.
3- جامپر ERASE را به ولتاژ 3.3 ولت وصل کرده و 30 ثانیه صبر می کنیم.
4- کابل USB را جدا کرده و جامپر ERASE را هم بر می داریم.
5- کابل USB را وصل کرده و جامپر TST را به 3.3 ولت وصل کرده و 15 ثانیه صبر می کنیم.
6- مجدد کابل USB را جدا کرده و جامپر TST را هم بر می داریم.
7- کابل USB را مجدد وصل می کنیم اگر سیستم درایور را نشناخت آن را از Device Manger حذف می کنیم.
8- کابل USB را جدا کرده و دوباره وصل می کنیم اگر نصب نشد از پوشه drv در فولدر SAM-BA درایور را دستی نصب می کنیم.
9- برد پروگرمر باید به عنوان یک مبدل USB به Serial شناخته شود.
10- برنامه SAM-BA را اجرا کرده و اول شماره پورت USBserial شناخته شده را انتخاب می کنیم.
11- نام برد را هم at91sam7s64-ek انتخاب کرده و دکمه کانکت را می زنیم.
12- در قسمت Send File Name مسیر فایل FRIMWARE پروگرمر را می دهیم و دکمه Send File را می زنیم.
13- به پیغام باز کردن Lock میکروکنترلر جواب Yes می دهیم و بعد از اتمام پروگرم شدن به پیغام Lock کردن آن پاسخ No می دهیم.
14- کابل USB را جدا کرده و دوباره وصل می کنیم پروگرمر J-Link آماده است.
15- برنامه J-Flash نسخه 5.10h را دانلود و نصب و اجرا کرده و از منوی Target گزینه Connect را می زنیم.
16- پیغام آپدیت کردن FRIMWARE را تایید می کنیم تا پروگرمر به روز رسانی شود.
17- تا تاریخ نگارش این دستورالعمل یعنی 20160125 آخرین نسخه برنامه J-Flash یعنی 5.10h روی این نسخه از FRIMWARE کار می کند.
18- میکروکنترلر مورد تست STM32F100C8T6B از ST Cortex-M3 با اینترفیس SWD می باشد.
19- سریال FRIMWARE ارایه شده برای پروگرمر 1499664905 می باشد.
20- دعای خیر و طلب مغفرت برای بنده و طلب استغفار به جهت شرکت SEGGER
فایل FRIMWARE پیوست شده است.
Saber @khoshfekran

jlink_v8_v510h

Setup_JLink_V510h

------------------------------------------------------------------------------------------------------------------------

#نکته #آموزشی #ارتباط #سریال #Taksun
 برای ارتباط تعداد زیادی میکروکنترلر این قائده را در انتخاب نحوه ی ارتباط بر اساس حجم داده در نظر بگیریم:
اگه حجم تبادل داده کم است از پروتکل های استاندارد مثل مد باس روی بستر usart استفاده کنید
اگه حجم تبادل داده زیاد است spi بهترین گزینه ی ارتباطی است.

Taksun @khoshfekran

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

------------------------------------------------------------------------------------------------------------------------

#اندازه_گیری

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

دامنه ، فرکانس و فاز سه مولفه اصلی یک سیگنال متناوب می باشند. بحث ما بیشتر روی اندازه گیری دامنه سیگنال های فرکانس پایین یا ولتاژ و جریان 50 هرتز برق شهری می باشد.

پارامترهای رایج در بیان دامنه یک سیگنال یا ولتاژ متناوب معمولاً به قرار زیر هستند.

مقدار پیک تا پیک ولتاژ که معمولاً با عبارت Vpp بیان می شود و برابر است با مقدار حداکثر دامنه ولتاژ از پیک منفی تا پیک مثبت آن که در واقع همان شکلی است که توسط اوسیلوسکوپ نشان داده می شود.
مقدار پیک یا ماکزیمم ولتاژ که معمولا با Vp یا Vm بیان می شود و برابر است با حداکثر مقدار ولتاژ در نیم سیکل مثبت آن که در یک موج سینوسی پریودیک و بدون اعوجاج در واقع نصف مقدار Vpp یا یک نیم سیکل می شود.
مقدار متوسط ولتاژ که با Vavg بیان می شود و مقدار آن در یک موج سینوسی پریودیک و بدون اعوجاج 0.636 مقدار Vp می شود.
مقدار موثر ولتاژ که با Vrms نشان داده می شود و مقدار آن در یک موج سینوسی پریودیک و بدون اعوجاج 0.707 مقدار Vp است.

مقدار موثر یا RMS همان مقداری است که توسط ولت مترها نشان داده می شود و هدف از اندازه گیری یک ولتاژ هم معولاً بدست آوردن مقدار موثر ولتاژ می باشد.

بطور کلی دو روش اندازه گیری برای این منظور مرسوم است ، پیک دتکتور و True-RMS

روش اول پیک دتکتور یا اندازه گیری مقدار ماکزیمم یک ولتاژ در نیم سیکل مثبت یا همان Vm و ضرب آن در عدد ثابت 0.707 برای بدست آوردن مقدار موثر یا RMS ولتاژ است که رایج ترین روش مورد استفاده در اغلب ولت متر های ارزان قیمت تجاری می باشد.

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

چون طبق تعریف ریاضی یک سیگنال متناوب ، مقدار موثر یا RMS سیگنال برابر است با انتگرال سطح زیر منحنی در یک پریود کامل یعنی اگر ولتاژ یا جریان شما قدری اعوجاج داشته باشد یا برش خورده باشد و از حالت سینوسی کامل خارج شود خروجی اندازه گیری به روش پیک دتکتور معتبر نمی باشد چون حل رابطه انتگرالی بین ولتاژ پیک و ولتاژ موثر منجر به رسیدن به عدد ثابت 0.707 نمی شود. برای پیاده سازی نرم افزاری و عددی روش اندازه گیری True-RMS یک سیگنال بدون استفاده از چیپ های جانبی باید ضمن رعایت شرط نایکویست برای تعداد و نرخ نمونه برداری از یک سیگنال با توجه به فرکانس آن ، مقدار موثر واقعی یک سیگنال یا Treu-RMS آن را از رابطه مجذور مجموع توان دوم های نمونه های گرفته شده تقسیم بر تعداد نمونه ها بدست آورد.
Vrms=sqrt[(v1^2+v2^2+..+vn^2)/n]
موفق باشید
Saber Soltanpour @khoshfekran

------------------------------------------------------------------------------------------------------------------------

#نکته #آموزشی
در طراحی بوردهای کنترلری که قرار بر اطلاع از وضعیت قطع/وصل بودن برق شهر (بطور معمول برق ac) است ، اکیدا پیشنهاد میشود از اپتوکوپلر برای ایزولاسیون ورودی های میکروکنترلر استفاده شود.
در مواردی مشاهده شده است که با تقسیم مقاومتی برق شهر به پینهای میکروکنترلر متصل شده که این کار عملی غیر حرفه ای است و باعث ایجاد مشکلاتی در کارهای جدی می شود.
Progressive @khoshfekran

------------------------------------------------------------------------------------------------------------------------

#آموزشی #Pointer
(مثال دوم)
استفاده از پوینتر در بسیاری از موارد به کاهش تعداد خط های برنامه کمک یزرگی خواهد کرد. به مثال زیر توجه کنید:

#include<stdio.h>

int main()
{
int i;

char *arr[4] = {"C","C++","ELEC","Khoshfekran"};
char *(*ptr)[4] = &arr;

for(i=0;i<4;i++)
    printf("String %d : %s\n",i+1,(*ptr)[i]);

return 0;
}

در خروجی خواهیم داشت:
String 1 = C
String 2 = C++
String 3 = ELEC
String 4 = Khoshfekran


https://telegram.me/joinchat/A6LB4ju7Ne9Zl9QDylSwtQ

-----------------------------------------------------------------------------------------------------------------------