ربات سازان: طراح و تولیدکننده موتورهای الکتریکیربات سازان: طراح و تولیدکننده موتورهای الکتریکیربات سازان: طراح و تولیدکننده موتورهای الکتریکیربات سازان: طراح و تولیدکننده موتورهای الکتریکی
  • صفحه نخست
  • محصولات
    • درایورهای موتور DC
    • درایورهای موتور Stepper
    • کنتـــرلرها
    • عملگر خطی | سروو جک
    • الکتروموتور و دینام
    • ربـــات‌ها
  • مقالات آموزشی
    • مستندات آموزشی محصولات
      • مستندات آموزشی درایور PMD90
      • مستندات آموزشی درایور MD10/AMD10
      • مستندات آموزشی درایور PMD60A
      • مستندات آموزشی درایور MSD02
      • مستندات آموزشی مولد پالس
      • مستندات آموزشی درایور PMD30
      • مستندات آموزشی درایور MDC20
      • مستندات آموزشی سرو درایور MHD4830
      • مستندات آموزشی درایورهای استپر پنج فاز
      • مستندات آموزشی درایور MD5
      • مستندات آموزشی ربات روهان
    • موتورهای الکتریکی و کاربردهای آن
      • موتورهای الکتریکی DC
      • موتورهای الکتریکی AC
      • موتورهای الکتریکی Stepper
      • سایر موتورهای الکتریکی
    • مقالات آموزشی الکترونیک
    • آموزش میکروکنترلر
      • آموزش میکروکنترلرهای AVR
      • آموزش میکروکنترلرهای ARM سری LPC
      • آموزش میکروکنترلرهای ARM سری STM
    • آموزش کاربردی آردوینو
    • رباتیک و معرفی ربات‌های کاربردی
    • آموزش مفاهیم پایه در مکانیک
    • آموزش مفاهیم پایه در کنترل
    • آموزش برنامه‌نویسی
    • ایده‌های ربات سازان جهت جذب سرمایه گذار
    • سایر مقالات آموزشی
  • تماس با شرکت
✕

۱-۷ آشنایی با مقدمات واحد Timer-Counter

  • صفحه نخست
  • بلاگ ربات سازان
  • میکروکنترلر
  • ۱-۷ آشنایی با مقدمات واحد Timer-Counter
4-6 روش‌های بهینه‌سازی دقت در ADC هنگام استفاده از سنسورها با خروجی ولتاژ
۴-۶ روش‌های بهینه‌سازی دقت در ADC هنگام استفاده از سنسورها با خروجی ولتاژ
۲۷ بهمن ۱۳۹۷
2-7 نحوه‌ی راه اندازی واحد Timer-Counter و شمارش تعداد پالس‌های مربعی
۲-۷ نحوه‌ی راه اندازی واحد Timer-Counter و شمارش تعداد پالس‌های مربعی
۲۷ بهمن ۱۳۹۷

۱-۷ آشنایی با مقدمات واحد Timer-Counter

۲۷ بهمن ۱۳۹۷
blank
دسته‌بندی‌ها
  • میکروکنترلر
برچسب‌ها
  • آموزش میکروکنترلرهای AVR
1-7 آشنایی با مقدمات واحد Timer-Counter

1-7 آشنایی با مقدمات واحد Timer-Counter

در این فصل به معرفی واحد Timer-Counter در میکروکنترلر‌های AVR می­‌پردازیم همچنین به معرفی قابلیت­‌های این واحد پرداخته و نهایتا با انجام چند پروژه‌ی عملی پرونده‌ی این فصل را می‌بندیم.

واحد Timer-Counter و روش استفاده از این واحد یکی از مهم‌ترین و کاربردی‌ترین بخش­‌های کار با یک میکروکنترلر AVR است. در ابتدا کمی به معرفی کلمات کلیدی این فصل همانند Clock و Counter می‌پردازیم.

مفهوم سیگنال Clock :

سیگنال Clock یک سیگنال منحصر به فرد است که بین دو سطح بالا و پایین نوسان می­‌کند.

در الکترونیک به سطح بالا در اصطلاح High-state و به سطح پایین Low-state گفته می­‌شود. برای درک بهتر این مفهوم ابتدا به شکل زیر نگاه بیندازید:

شکل 1 : یک موج مربعی به همراه ویژگی هایش

شکل ۱: یک موج مربعی به همراه ویژگی‌هایش

 

شکل ۱ همان­‌طور که از فصل­‌های قبل به خاطر دارید شکل یک موج مربعی است. اما هر موج مربعی می‌تواند با ۴ ویژگی منحصر به فرد شناخته شود:

ویژگی اول (High-state) :

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

در این کتاب ما به صورت پیش­ فرض این سطح بالا را +5 ولت در نظر می­‌گیریم.

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

ویژگی دوم(Low-state) :

این ویژگی دقیقا مشابه ویژگی اول است با این تفاوت که این ویژگی بیانگر پایین­‌ترین سطح ولتاژ این سیگنال است. در انتخاب این سیگنال همانند ویژگی اول باید دقت کنیم که این سطح باید آنقدر کم باشد تا بتواند توسط میکروکنترلر به عنوان ۰ منطقی تشخیص داده شود. این­که چگونه بفهمیم کدام سطح برای یک میکروکنترلر به عنوان سطح منطقی ۱ در نظر گرفته می­شود و کدام سطح به عنوان سطح منطقی ۰ به نوع میکروکنترلر ما بستگی دارد و در data sheet مربوط به هر نوع میکروکنترلر این ویژگی بیان شده است. معمولا در میکروکنترلر‌های AVR، ولتاژ ۵ ولت به عنوان سطح منطقی ۱ و ۰ ولت به عنوان سطح منطقی ۰ در نظر گرفته می‌­شود.

ویژگی سوم(Rising edge):

کلمه‌ی Rising edge به معنای لبه­ بالا رونده است و همان­طور که در شکل ۱ می‌بینید این بخش به صورت یک خط کاملا عمودی رسم شده است. در واقع این بخش نمایانگر تغییر سطح منطقی ۰ به ۱ است ولی اگر بخواهیم کمی دقیقتر به این اتفاق نگاه کنیم باید یادآور شویم که این اتفاق مدت زمانی طول می­‌کشد و در واقع شکل A یک Rising edge ایده­‌آل است.

شکل 2 : تاخیر موج مربعی در تغییر سطح 0 به 1

شکل ۲: تاخیر موج مربعی در تغییر سطح ۰ به ۱

 

در شکل ۲ این تغییر سطح به صورت واقعی نشان داده شده است و همان‌طور که می‌بینید اگر محور افقی را محور زمان و محور عمودی را محور ولتاژ در نظر بگیریم، مدت زمانی طول می­‌کشد که ما از سطح منطقی ۰ به سطح منطقی ۱ برویم و این زمان تحت عنوان نام Rising delay شناخته می­‌شود.

ویژگی چهارم (Falling edge):

این ويژگی همانند ویژگی سوم می­‌باشد و به معنای لبه­‌ی پایین­‌رونده می­‌باشد. در واقع این ویژگی به معنای تغییر سطح منطقی ۱ به سطح منطقی ۰ است، در این ویژگی همانند ویژگی سوم این تغییر سطح به صورت آنی نبوده و کمی تاخیر دارد که به آن Falling delay یا تاخیر افت گویند. حال می­‌توان کمی بهتر در مورد مفهوم واژه­‌ی Clock بحث کرد. اگر تعدادی موج مربعی با نظم خاصی را کنار یکدیگر قرار دهیم می­‌توانیم بگوییم یک سیگنال Clock درست کرده ­ایم.

شکل 3 : چند نوع کلاک مربعی با فرکانس های متفاوت

شکل ۳: چند نوع کلاک مربعی با فرکانس های متفاوت

 

در شکل ۳ چند نوع موج مربعی را مشاهده می­‌کنید، همان‌طور که می‌­بینید همه‌ی این موج‌­های مربعی سطح ولتاژ بالا و پایین برابری دارند ولی فرکانس آنها با یکدیگر تفاوت دارد و این‌که فرکانس این سیگنال‌ها چقدر و چگونه باشد مساله­‌ای است که توسط ما تعیین می­‌شود.

بحث کلاک در طراحی پردازنده‌ها یکی از اساسی­‌ترین مقوله‌ها است و مهندسین سخت افزار و معماران کامپیوتر همواره در صدد مدیریت هرچه بهتر منابع کلاک برای کاهش توان مصرفی در پردازنده­‌ها هستند.

حال می‌­توانیم کمی در مورد کلاک میکروکنترلر تصویر ذهنی بهتری داشته باشیم اما بحث کلاک داخلی در میکروکنترلرهای AVR مبحثی پیچیده‌­تر از مباحث مطرح شده در این کتاب است و اصولا تعیین کلاک در میکروکنترلرهای AVR تعیین کننده‌ی خیلی چیزها مثل سرعت اجرای دستورات و همچنین فرکانس تولید موج مربعی داخلی و غیره می­‌باشد. در کارکردن با تمام واحد های میکروکنترلر بخصوص واحد Timer-Counter و یا واحد­های ارتباطی مثل Usart و یا I2C هماهنگی کلاک داخلی و کلاک برنامه‌ریزی (Programming) میکروکنترلر بسیار حیاتی و تعیین­ کننده است.

مفهوم Counter :

 در اصطلاح Counter به یک شمارنده اطلاق می­‌شود که می­‌تواند تعداد تغییرات یک بخش خاص را در خود ذخیره کند. این شمارنده در عمل بخشی از یک حافظه است، بنابراین میزانی که می­‌تواند در خود ذخیره کند محدود است. مثلا اگر فرض کنیم به Counter ما یک حافظه­‌ی ۱۰ بیتی اختصاص داده شده باشد که هر بیت تنها می‌تواند اعداد ۰ و ۱ را تنها در خود جای‌دهد، بنابراین در این حافظه­‌ی ۱۰ بیتی ما می‌­توانیم اعداد بین ۰ تا ۱۰۲۳ را ذخیره کنیم. نحوه‌ی محاسبه به این شرح است که اگر یک حافظه‌ی ۱۰ بیتی مثل زیر را در نظر بگیرید هر خانه از حافظه می­‌تواند تنها دو حالت داشته باشد، (یا ۰ باشد یا ۱ ) بنابراین اگر برای تمام خانه ­ها تمام حالات را در هم ضرب کنیم کل حالات می­‌شود برابر ۱۰۲۴ حالت که در واقع تعداد کل حالات است.

0 یا 1 0 یا 1 0 یا 1 0 یا 1 0 یا 1 0 یا 1 0 یا 1 0 یا 1 0 یا 1 0 یا 1

2

*2

*2

*2

*2

*2

*2

*2

*2

2

 

حالت اول حالتی است که تمام خانه­ ها ۰ باشند بنابراین عدد دسیمال این عدد باینری (000000000) برابر ۰ خواهد بود، همچنین اگر تمام خانه­‌ها عدد ۱ باشند عدد دسیمال این عدد باینری (1111111111) برابر ۲۵۵ می­‌شود که بزرگترین عددی است که این حافظه‌ی ۱۰ بیتی می­‌تواند در خود جای‌دهد. بنابراین در حالت کلی برای محاسبه بزرگترین و کوچکترین عددی که حافظه‌ی یک Counter می‌تواند در خود جای‌دهد باید از فرمول زیر استفاده کرد:

Max number = (2 N) - 1

Min number = 0

 

در فرمول بالا N بیانگر تعداد خانه‌های حافظه‌ی یک Counter است. مثلا برای یک Counter با حافظه­‌‌ی ۱۶ بیتی می­‌توان تمام اعداد بین ۰ تا ۶۵۶۳۵ را ذخیره کرد.

 

ارائه‌ی یک مثال کاربردی:

تا این­جا با مفاهیم ساده ولی اساسی Timer-Counter آشنا شدید، حال می­‌خواهیم کمی عملی‌تر به این قضیه نگاه کنیم. برای این منظور یک کلاک مربعی مانند آنچه در شکل C نشان داده شد را در نظر بگیرید. سئوال اول اینکه اگر فرض کنیم که می­‌خواهیم ببینیم این کلاک مربعی دارای چه فرکانسی است یا اینکه این کلاک مربعی در یک واحد از زمان چند بار از سطح بالا به سطح پایین رفته است باید چه­ کار کنیم؟

سئوال دوم اینکه اصولا دانستن تعداد تغییرات یک موج مربعی می تواند چه کمکی به ما در درک بهتر مولد این موج یا کلاک بکند؟

در پاسخ به سئوال اول باید بگوییم خوشبختانه در واحد Timer-Counter در میکروکنترلرهای AVR چنین خاصیتی تعبیه شده است، در واقع با استفاده از این ویژگی شما می­‌توانید تعداد لبه­‌های بالارونده و یا تعداد کل لبه­‌‌های پایین رونده را بشمارید. در واقع اگر شما بتوانید تعداد کل لبه‌‌های بالا رونده‌ی یک کلاک مربعی را بشمارید می­‌توانید ادعا کنید که تعداد کل تغییرات از بالا به پایین یک کلاک مربعی را دارید، همچنین همین خاصیت در مورد شمارش تعداد لبه‌های پایین رونده نیز صادق است، چرا که در هر مولفه از یک موج مربعی تنها یک لبه­‌ی بالارونده و یک لبه‌ی پایین رونده موجود است.

اما در پاسخ به سئوال دوم ابتدا یک مثال کاربردی در دنیای رباتیک می­زنیم، این مثال در دنیای کنترل موتورها و در نهایت کنترل رباتهایی که با چرخ حرکت می­‌کنند بسیار کاربردی و مفید است، بنابراین توصیه می­‌شود این مثال را با دقت بیشتری مطالعه کنید.

 

بازخورد یک موتور DC مجهز به انکودر تولید کننده پالس مربعی (DC motor position/speed feed back with pulse encoder):
شکل 4 : یک موتور DC به همراه Encoder تولید کننده پالس مربعی

شکل ۴: یک موتور DC به همراه Encoder تولید کننده پالس مربعی

 

همان‌طور که در شکل ۴ می­‌بینید یک موتور به همراه یک انکودر مولد موج مربعی نشان داده شده است. اما برای اینکه از عملکرد اصلی این انکودر با خبر شوید بهتر است نگاهی به شکل E بیندازید.

شکل 5 : یک Encoder مولد موج مربعی و پالس تولید شده توسط آن

شکل ۵: یک Encoder مولد موج مربعی و پالس تولید شده توسط آن

 

در شکل ۵ همانطور که می‌بینید یک انکودر از دو بخش تشکیل شده است:

۱. صفحه­ ی سوراخ دار

۲. مولد موج مربعی لیزری

بر روی صفحه‌ی سوراخ دار تعداد بسیار زیادی سوراخ وجود دارد، مثلا این صفحه می‌تواند از ۳۶۰ سوراخ تشکیل شده باشد. همان‌طور که در شکل ۴ می‌بینید این سوراخ‌ها دور تا دور این صفحه قرار گرفته‌­اند و فاصله‌ی تمام این سوراخ‌­ها با هم برابر است.

مولد لیزری نیز با عبور هر سوراخ از مقابل خود یک پالس مربعی تولید می­‌کند، بنابراین چون صفحه‌ی سوراخ دار به شفت موتور وصل است و فرض کردیم از ۳۶۰ سوراخ با فاصله‌ی یکسان تشکیل شده است با عبور هر سوراخ از مقابل مولد در‌واقع گویی موتور ۱ درجه به جلو و یا عقب حرکت کرده است.

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

حال اگر فرض کنیم ربات ما دارای یک چرخ به شعاع r است، بنابراین در هر دور چرخش این چرخ، ربات ما به اندازه­‌ی 2πr که همان محیط چرخ است جابجا می­‌شود. حال برای یک جابجایی به اندازه‌­­ی ۳۶۰ درجه ما 2πr جابجا می­‌شویم و در واقع برای یک جابجایی ۱ درجه‌ایی 2πr/360 جابجا می‌­شویم. بنابراین اگر انکودر ما دارای N سوراخ باشد که در واقع نمایان گر تولید N پالس مربعی در هر دور چرخش است، مسافت پیموده شده توسط ربات در ازای هر پالس تولید شده توسط انکودر 2πr/N است.

در ادامه به نحوه‌ی شمارش تعداد پالس­‌های مربعی تولید شده توسط یک منبع تولید کننده‌­ی پالس می­‌پردازیم.

 

 

محمود حسن پور دهنوی
محمود حسن پور دهنوی
من کارشناس ارشد مهندسی کنترل هستم و علاقمند به تولید و خلق ایده های ناب. امیدوارم بتونم مطالب خوب و مفیدی در اختیار شما بگذارم.

مطالب و مقالات مرتبط

4-9 راه‌اندازی ماژول SRF08 Range finder

4-9 راه‌اندازی ماژول SRF08 Range finder

۲۹ بهمن ۱۳۹۷

۴-۹ راه‌اندازی ماژول SRF08 Range finder


مشاهده مطلب ...
3-9 معرفی توابع I2C در CodeVision

3-9 معرفی توابع I2C در CodeVision

۲۹ بهمن ۱۳۹۷

۳-۹ معرفی توابع I2C در CodeVision


مشاهده مطلب ...
2-9 راه‌اندازی پروتکل I2C در CodeVision

2-9 راه‌اندازی پروتکل I2C در CodeVision

۲۹ بهمن ۱۳۹۷

۲-۹ راه‌اندازی پروتکل I2C در CodeVision


مشاهده مطلب ...

دیدگاهتان را بنویسید لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

جستجو در مطالب ربات سازان

✕

آخرین نوشته‌های ربات سازان

  • انتخاب بهینه‌ترین هیت‌سینک برای کاربردهای الکترونیک قدرت0
    انتخاب بهینه‌ترین هیت‌سینک برای کاربردهای الکترونیک قدرت
    ۳ آبان ۱۴۰۲
  • خواندن پلاک الکتروموتورهای سه فاز0
    خواندن پلاک الکتروموتورهای سه فاز
    ۱۳ تیر ۱۴۰۱
  • خواندن دیتاشیت موتور دی سی1
    خواندن دیتاشیت موتور دی سی
    ۱۳ خرداد ۱۴۰۱
  • محاسبه نسبت گیربکس2
    محاسبه نسبت گیربکس
    ۸ خرداد ۱۴۰۱
  • محاسبه سرعت استپ موتور بر حسب دور بر دقیقه0
    محاسبه سرعت استپ موتور بر حسب دور بر دقیقه
    ۲ خرداد ۱۴۰۱

لوگوی ربات سازان

درباره ربات سازان

شرکت ربات سازان فعالیت خود را از سال ۱۳۹۳ شروع کرده است. در ابتدا حوزه کاری شرکت طراحی و ساخت ربات‌های پلتفرم آزمایشگاهی بود که به مرور با بومی‌سازی درایور موتورهای استفاده شده در این ربات‌ها محصولی جدید به سبد محصولات شرکت اضافه شد. پس از آن شرکت به صورت تخصصی شروع به طراحی و ساخت انواع درایورهای موتورهای الکتریکی دی سی و استپر کرد و اکنون پس از گذشت ۸ سال از فعالیت شرکت توانسته‌ایم با پوشش دادن رنج وسیعی از درایورهای موتورهای الکتریکی در ولتاژ، جریان و توان‌های مختلف نیازهای صنعت کشور عزیزمان را در زمینه‌های مختلف برطرف نماییم.

blankblankblankblank

دسترسی سریع

  • صفحه اصلی
  • بلاگ ربات سازان
  • همه محصولات ربات سازان
  • ارتباط با ما
تمامی حقوق مادی و معنوی مطالب این وبسایت متعلق به ربات سازان می‌باشد.
      ✕

      ورود

      گذرواژه خود را فراموش کرده اید؟

      می خواهید یک حساب کاربری ایجاد کنید؟