عـــــلـــــمـــ تا عـــــمـــــلــ
یک شنبه 4 تير 1393برچسب:, :: 22:26 :: نويسنده : سید حسین آل طه مکی

http://hes-up.rozup.ir/Download?path=/Pictures/wallpaper_24994.jpeg 

سه شنبه 25 شهريور 1393برچسب:, :: 1:37 :: نويسنده : سید حسین آل طه مکی

آشنایی با تایمر/ کانتر میکروکنترلر AVR

(تمام مطالب این بخش از زبان آقای احسان نوری نوشته شده و منبع اصلی این مطالب وبلاگ ایشون با عنوان noise.blog.ir میباشد.)

 

بحث امروز ما راجع به واحدی در میکروکنترلر به نام Timer/Counter هست که اگه یادتون باشه چندین بار تو پستهای قبلی ازش یاد کردیم و حالا دیگه وقتشه که بهتر بشناسیمش.

پس معرفی میکنم : دوستان،،،،تایمر/کانتر  ---   تایمر/کانتر،،،،،دوستان  laughcool

 

تایمر/کانتر چیست ؟

تو زندگی روزمره همه کارهامون با زمان هماهنگ میشه.فلان ساعت فلان کارو میکنم و n دقیقه ورزش میکنیم و ...

وظیفه واحد تایمر/کانتر هم همینجور کارهاست.

کلیه کارهایی که داخل برنامه،مربوط به محاسبات زمانی میشه،زیر نظر واحدی تحت عنوان Timer/Counter انجام میگیره.

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

دقت کنید که درسته که این بخش جدا از پردازنده است ولی تحت رهبری پردازنده فعالیت میکنه !

 

به بلوک دیاگرام زیر هم بد نیست یه نگاهی بندازید :

 

میبینید که واحدها از هم مجزا هستند.

پس علت این مجزا بودن واحدها رو متوجه شدید که؟!

===>  دلیل اصلیش کاهش بار پردازشی CPU میکروکنترلرمونه !

همون تقسیم وظایف خودمونه که میایم به جای اینکه همه کارها رو خودمون انجام بدیم،چند نفر رو بکار میگیریم و تحت رهبری خودمون اون کارها رو برامون انجام میدند.

 

این واحد تایمر/کانتر کارش شمارش هم هست.

در واقع شاید درست ترش این باشه که بگیم کار اصلیش شمارشه !

 

دیگه کاملا هم واضحه که ساخت زمان و استفاده هایی که از اون میشه چقدر کاربردی و مهمه !

 

پس بریم ببینیم که اوضاعش توی میکروکنترلر AVR چجوریه ؟!

 

تایمر مثل یه رجیستر میمونه که مقادیر داخلش بصورت اتوماتیک کم و زیاد میشه !!! (اصلا وظیفه شناسه و وظیفه اش هم همینه !)

میکروکنترلرهای AVR دارای تایمر بسیار دقیقی هستند.

 

نحوه کار یک تایمر/کانتر اینجوریه که از صفر (نه همیشه!) شروع میکنه به شمارش،و به ترتیب میشماره تا به مقدار ماکزیممی که براش تعریف شده برسه !

بعد که به اون مقدار ماکزیمم رسید Overflow میشه و اعلام میکنه که شمارش مورد نظر انجام شد.

حالا این که اون مقدار ماکزیمم چقدره رو بحث روش داریم.

 

در میکروکنترلرهای AVR دو نوع تایمر/کانتر وجود داره :

 

1.تایمر/کانتر 8 بیتی

2.تایمر/کانتر 16 بیتی

 

مفهوم 8 و 16 بیتی رو هم تو پست قبلی یادمه گفتم،بازم میگم : تو 8 بیتی طول داده 8 بیته،تو 16 بیتی طول داده 16 بیت !

 

در تایمر 8 بیتی شمارش از 0 شروع میشه و تا 255 میتونه ادامه پیدا کنه.

در تایمر 16 بیتی شمارش از 0 شروع میشه و تا 65535 میتونه ادامه پیدا کنه.

 

 

احتمال میدم که هنوز نتونسته باشید ارتباط بین زمان و شمارش و تایمر و ... رو درک کنید !

اما اگه اجازه بدید با یه مثال و 2 تا فرمول بحث رو ادامه میدم :

 

مثال :

فرض کنید یه چراغ چشمک زن داریم که بصورت متناوب چشمک میزنه !

حالا این چراغ چشمک زن میتونه هر چیزی باشه؛مثلا چراغ راهنمای اتومبیل !!!

شیوه ی کارش چجوریه ؟

 

با فرض تاخیر : یک ثانیه

 

1.روشن میشه

2.یک ثانیه روشن میمونه

3.خاموش میشه

4.یک ثانیه خاموش میمونه

5. ... ==> به همین ترتیب

 

همین روند متناوبا تکرار میشه.

 

اما اگه همینو بخوایم بصورت الگوریتمی بنویسیم؛اینجوری میشه :

 

1.روشن شو

2.یک ثانیه صبر کن ==> تاخیر

3.خاموش شو

4.یک ثانیه صبر کن ==> تاخیر

5 . ...  ==> به همین ترتیب

 

در مثال بالا با نحوه کار یک چراغ چشمک زن آشنا شدید.

اما حالا برای اینکه بحث علمی تر پیش بره،ما اون میزان تاخیری رو که در مثال بالا 1 ثانیه فرض کرده بودیم رو به 10 میلی ثانیه کاهش میدیم !

 

خب؛یه فرمولی اینجا داریم که مطمئنم همتون اینو بلدید ولی بازم میگم و مینویسمش :

 

 

مفهوم : این رابطه میخواد بگه که دوره تناوب(حوزه زمان) با فرکانس(حوزه فرکانس) رابطه عکس داره.

این رابطه برعکسش هم قاعدتا وجود داره که بنده روبروش نوشتم !

 

گفتیم با فرض اینکه فلاشر ما دارای تاخیر 10 میلی ثانیه باشه،معنا و مفهومش اینه که دارای دوره تناوب 10 میلی ثانیه هم هست ! OK ؟

یعنی هر 10 میلی ثانیه یکبار داره یه عملی متناوبا تکرار میشه.

خب با استفاده از فرمول بالا داریم :

 

 

پس میگیم فرکانس فلاشر 100 هرتزه !

 

بیاین تصور کنیم که فرکانس کاری میکرو رو روی 4MHz تنظیم کردیم ! (منظورم فرکانس اصلی میکروکنترلره که قبلا راجع بهش بحث کردیم.)

 

 

به این معنا که هر پالس میکرو 0.00025 میلی ثانیه طول میکشه تا انجام بشه !!!  (خیلی این عدد کوچیکه ها ، تو کفش برید !)

 

حالا بیاین تصور کنید که مقدار شمارنده ما صفره و قراره بشماره و زیاد بشه و به اون مقدار ماکزیمم خودش برسه !

 

وقتی از مقدار 0 میره به مقدار 1 میگیم یه پالس اعمال شده (یا طول کشیده).

وقتی از مقدار 1 میره به مقدار 2 میگیم یه پالس دیگه اعمال شده (یا طول کشیده) !

و به همین ترتیب ...

 

حالا هر پالس ما هم تو حوزه زمان طبق فرض بالا 0.00025 میلی ثانیه طول میکشه و این میشه اصل ماجرای ما ...

 

یعنی ما اگه بخوایم زمان بسازیم باید مقدار متناظرش رو به تعداد پالس(که بشه همون شمارش) بدست بیاریم.

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

 

 

TimerCount : همون تعداد شمارشیه که باید تایمر/کانتر انجام بده.(مجهول)

Duration : مدت زمانیه که میخوایم تایمر/کانتر برامون بسازه.

Period : دوره تناوبی که بدست آوردیم.

1- : این 1- هم بخاطر اینه که شمارش همیشه از 0 شروع میشه نه 1 .

 

بیاین همون مثالی که گفتیم میخوایم 10 میلی ثانیه تاخیر بسازیم رو حل کنیم.

دقت کنید که 10 میلی ثانیه برای ما خیلی زمان ناچیزیه اما برای میکرو یه زمان بسیار بزرگه !!!

اینجوری اعداد رو در فرمول جایگذاری میکنیم :

 

 

میبینید که عدد 39999 در خروجی ظاهر میشه و معنای این عدد اینه که تایمر/کانتر باید از صفر تا 39999 رو به ترتیب بشماره،وقتی رسید به این عدد     10 میلی ثانیه طی شده ! چون هر شمارش 0.00025 میلی ثانیه طول میکشه.

 

اگر به عدد 39999 دقت کنید متوجه خواهید شد که تنها میتونیم از تایمر/کانتر 16 بیتی برای ساختنش استفاده کنیم.

چون تایمر/کانتر 8 بیتی تنها میتونست تا عدد 255 رو بشماره در حالیکه تایمر/کانتر 16 بیتی قابلیت شمارش تا عدد 65535 رو داره و عدد بدست آمده از مثال(39999) در بازه تایمر/کانتر 16 بیتی قرار دارد.

با یه محاسبه متوجه میشیم که حداکثر زمانی که میتونیم با یه تایمر/کانتر 16 بیتی بسازیم 16.384 میلی ثانیه است !

 

حالا اومدیم و دلمون خواست که یه تاخیر بزرگتر،مثلا 20 میلی ثانیه ای ایجاد کنیم،اونوقت اوضاع از چه قراره ؟

خب،اینجا به بعد دیگه بحث تکنیکیه !!!

 

اگه یادتون باشه اومدیم و فرکانس کاری میکرو رو 4 مگاهرتز در نظر گرفتیم.

اگه بیایم و این مقدار رو به 0.5 مگاهرتز کاهش بدیم،اون موقع T=0.002 ms میشه و TimerCount= 9999 میشه.

حالا نتایج رو باهم مقایسه کنید.

 

F_CPU=4 MHz ,T=0.00025 ms ,TimerCount=39999

F_CPU=0.5 MHz ,T=0.002 ms ,TimerCount=9999

 

نتایج رو هم لیست کردم که یه وقت خسته نشید برید بالاتر دنبالشون ! من خیلی هواتونو دارم cheeky

خیلی دقت کنید به اعداد و تفاوتهاشون !

قبل از اینکه بیاین و مطالب پایین تر رو بخونید،سعی کنید مطالب بالا رو بفهمید.

 

اگه دقت کنید تو فرکانس 0.5 مگاهرتز،دوره تناوب بیشتر شده (تقریبا 10 برابر) و مقدار TimerCount هم کمتر شده!

 

این کم شدن مقدار TimerCount چه مفهومی داره ؟

یعنی اینکه تو حالت 4 مگاهرتز برای رسیدن به مدت زمان 10 میلی ثانیه 39999 پالس نیاز بود.

اما در حالت 0.5 مگاهرتز تعداد پالس ها کم شده و به 9999 رسیده !

یعنی همین مدت زمان رو با تعداد پالس های کمتری ساختیم و نتیجه اش اینکه با تایمر/کانتر 16 بیتی (مثلا !) که حداکثر مقدارش  65535 پالس هست میتونیم با فرکانس کمتر،مدت زمان بیشتری بسازیم.چون تایمر/کانتر با پیمودن 9999/65535 تونست 10 میلی ثانیه بسازه پس باید با 65535/65535 زمان بزرگتری نسبت به فرکانس 4 مگاهرتز بسازه !

جالبه بدونید که حداکثر زمانی که میشه با فرکانس 0.5 مگاهرتز و تایمر/کانتر 16 بیتی ساخت 131.072 میلی ثانیه است !

 

خب؛پس به این نتیجه رسیدیم که برای اینکه مدت زمان بزرگتری بسازیم باید فرکانس رو کم کنیم تا دوره تناوب بزرگتر بشه.

 

حالا حتما میگید که میایم و فرکانس کاری میکروکنترلر رو هرچی هست کمش میکنیم !!!

نه دیگه ! نه عزیزم ... surprise

این کارو بکنی که دیگه همه چی بهم میریزه،سرعت پردازش میکرو هم کم میشه !

تازه واحد های دیگه هم داریم مثل : ADC,USART,... اونا هم هرکدوم تنظیم شده فرکانسهاشون !

نمیشه که !!!

دیگه از این حرفا نزنیا !؟ وگرنه به وبلاگمون دیگه رات نمیدم ! تازه بستنی هم برات نمیخرم ! ههههه laugh

 

پس چه کنیم ؟

یادتون باشه تو بخشی که ADC ها رو توضیح میدادم راجع به تقسیم فرکانسی صحبت کردم. یادتونه ؟!

الان هم میایم و دقیقا همین کارو میکنیم !

میایم یه مقدار تقسیم شده ای از فرکانس اصلی میکرو رو به واحد تایمر/کانتر میدیم ! (نگرفتی چی شد حتما برو بخش ADC رو بخون )

به این تکنیک که شرکت Atmel برای واحد تایمر/کانتر و دیگر واحد ها در نظر گرفته اصطلاحا prescaling میگند.

 

میکروکنترلر مورد نظر ما که فعلا ATmega 32 هست دارای تایمر/کانتر هایی به قرار زیر است :

 

1.تایمر/کانتر 0 ==> بیتی

2.تایمر/کانتر 1 ==> 16 بیتی

3.تایمر/کانتر 2 ==> 8 بیتی


 منبع : www.noise.blog.ir

دو شنبه 24 شهريور 1393برچسب:, :: 23:38 :: نويسنده : سید حسین آل طه مکی

این سایتی که لینک کردم  کارش درسته 

>>>>>>>>>>>>98nod.irآرام

سه شنبه 24 تير 1393برچسب:, :: 15:7 :: نويسنده : سید حسین آل طه مکی

در این مدار به سه روش میشود موتور پله ای موسوم به استپر موتور را راه اندازی کرد.

با روشن کردن مدار بر روی LCD دور روش راه اندازی ارائه میشود

با زدن کلید 1 موتور به طور اتومات به سمت راست یا چپ حرکت میکند

با زدن کلید 2 میتوان تعداد پالس داده شده به موتور را مشخص و سپس استارت نمود 

با زدن کلید های جهتی به گزینه های سه و چهار راه پیدا میکنید که

 با زدن کلید 3 و سپس نگه داشتن کلید های جهتی موتور به همان مقدار به سمت راست و یا چپ حرکت میکند

با زد کلید 4 مشخصات سازنده دستگاه مشخص می شود که سازنده اقای حسین زاده باشند که البته شما میتوانید به دست بردن در برنامه مدار اسم را به دلخواه خود تغییر دهید.

( مشکلات دستگاه : در برنامه این مدار فعلا گزینه 1 کار نمیکند )

در صورد مواجه شدن با هر نوع مشکل در ساخت با شماره بنده که در پروفایل وبلاگ قرار دارد تماس گیرید

 

 

دانلود فایل >>>>>>>>>>>>>>>حجم(249KB)چشمک

اینم از عکسایی که قول داده بودم بکشم و برای مصطفی بفرستم اغ مصطفی عکسارو دانلود کن سیماشو وصل کن ببین هر کجام اشکال داشتی زنگ بزن راستی نظر یادت نره

 

دانلود فایل >>>>>>>>آرام

توضیحات در ویرایشهای بعدی

 

دانلود سورس برنامه>>>>>>>>>>

 

دو شنبه 15 ارديبهشت 1393برچسب:, :: 13:35 :: نويسنده : سید حسین آل طه مکی

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

توضیحات بیشتر و عکس در ویراشهای بعدی همراه است.

دانلود فایل >>>>>>>>>>>>>حجم فایل(295.64KB)

اين نرم افزار يك نرم افزار ريكاوري نيست فقط پوشه هايي كه به واسطه ويروسي شدن ، وجود دارن ولي ديده نمي شوند را نشان ميدهد.

  نرم افزارxy plorer>>>> دانلود (حجم:3MB)  

دو شنبه 8 خرداد 1391برچسب:, :: 1:56 :: نويسنده : سید حسین آل طه مکی

در این مدار که از چند ترایاک در آن استفاده شده است و به صورت سری به هم وصل شده اند میتوان یک قفل رمز ساده ساخت. برای دریافت فایل آموزشی آن بر روی لینک زیر را کلیک کنید.

فایل pdf & word>>>>>>>>>>>>دانلود(حجم962KB)

پنج شنبه 21 ارديبهشت 1391برچسب:, :: 1:21 :: نويسنده : سید حسین آل طه مکی

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

  امتیاز این مدار مربوط به آقای بهنام زکی زاده می باشد در سایت AVR64.com
 

 فایل zip.......................دانلود(حجم268KB)

 

 

 

 

صفحه قبل 1 2 3 صفحه بعد
پيوندها


ورود اعضا:


نام :
وب :
پیام :
2+2=:
(Refresh)

خبرنامه وب سایت:

برای ثبت نام در خبرنامه ایمیل خود را وارد نمایید




آمار وب سایت:
 

بازدید امروز : 6
بازدید دیروز : 55
بازدید هفته : 61
بازدید ماه : 921
بازدید کل : 19333
تعداد مطالب : 26
تعداد نظرات : 32
تعداد آنلاین : 1



Alternative content