جستجو برای:
  • شیراز کدرز
    • Empire
    • سیاست حریم خصوصی
  • آموزش ها
    • آموزش آردوینو مقدماتی
      • آموزش آردوینو جلسه اول
      • آموزش آردوینو جلسه دوم
      • آموزش آردوینو جلسه سوم
      • آموزش آردوینو جلسه چهارم
      • آموزش آردوینو جلسه پنجم
      • آموزش آردوینو جلسه ششم
      • آموزش آردوینو جلسه هفتم
      • آموزش آردوینو جلسه هشتم
      • آموزش آردوینو جلسه نهم
      • آموزش آردوینو جلسه دهم
    • آموزش آردوینو مبتدی
      • آموزش آردوینو جلسه یازدهم
      • آموزش آردوینو جلسه دوازدهم
      • آموزش آردوینو جلسه سیزدهم
    • آموزش الکترونیک | بایگانی
      • آموزش الکترونیک مقدماتی درس 1
      • آموزش الکترونیک مقدماتی درس 2
      • آموزش الکترونیک مقدماتی درس 3
      • آموزش الکترونیک مقدماتی درس 4
  • حساب کاربری
    • حساب کاربری من
    • پنل کاربری پیشرفته
    • کیف پول
    • سفارش‌ها
    • خروج
  • فروشگاه
    • محصولات
شیراز کدرز
  • شیراز کدرز
    • Empire
    • سیاست حریم خصوصی
  • آموزش ها
    • آموزش آردوینو مقدماتی
      • آموزش آردوینو جلسه اول
      • آموزش آردوینو جلسه دوم
      • آموزش آردوینو جلسه سوم
      • آموزش آردوینو جلسه چهارم
      • آموزش آردوینو جلسه پنجم
      • آموزش آردوینو جلسه ششم
      • آموزش آردوینو جلسه هفتم
      • آموزش آردوینو جلسه هشتم
      • آموزش آردوینو جلسه نهم
      • آموزش آردوینو جلسه دهم
    • آموزش آردوینو مبتدی
      • آموزش آردوینو جلسه یازدهم
      • آموزش آردوینو جلسه دوازدهم
      • آموزش آردوینو جلسه سیزدهم
    • آموزش الکترونیک | بایگانی
      • آموزش الکترونیک مقدماتی درس 1
      • آموزش الکترونیک مقدماتی درس 2
      • آموزش الکترونیک مقدماتی درس 3
      • آموزش الکترونیک مقدماتی درس 4
  • حساب کاربری
    • حساب کاربری من
    • پنل کاربری پیشرفته
    • کیف پول
    • سفارش‌ها
    • خروج
  • فروشگاه
    • محصولات
0

ورود و ثبت نام

وبلاگ

آموزش آردوینو جلسه هشتم

20 تیر 1399
ارسال شده توسط admin_hb
آموزش آردوینو | مقدماتی ، همه دسته ها
501 بازدید

در جلسه گذشته یک چراغ LED RGB را به وسیله پین های دیجیتال آردوینو کنترل کردیم. در این جلسه به راه اندازی سروو موتور میپردازیم.

سروو موتور

سروو موتور ها نوعی از موتور های معمولی هستند که توسط یک کنترلر و یک پوتانسیومتر برای اندازه گیری بارخورد موقیت موتور (Position Feedback) کنترل میشوند؛ سروو موتور ها میتوانند توسط موج PWM کنترل شوند و در موقعیت خاصی قرار بگیرند!

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

سروو
سروو موتور دورانی sg90
سروو خطی
سروو موتور خطی

PWM چیست؟

مدولاسیون پهنای پالس یا Pulse Width Modulation روشی برای تنظیم توان خروجی دیجیتال است. به طوری که با تغییر دادن  مقدار زمان قطع و وصل شدن پالس های مربعی میتوان توان خروجی را تنظیم کرد برای مثال میتوان به وسیله آن نور ی چراغ led را کنترل کرد.

به تصویر زیر دقت کنید:

PWM

اگر به نمودار بالا توجه کنید، متوجه خواهید شد که دو پارامتر ولتاژ و زمان نقش اصلی در PWM دارد! مقدار ولتاژ در میکروکنترلر ها بین 3.3 ولت تا 5 ولت است؛

پس مقدار ولتاژ در نمودار حداقل 0 ولت و حداکثر بسته به نوع میکروکنترلر 3.3 یا 5 ولت است. به این مقدار دامنه یا Amplitude میگویند.

دیوتی سایکل Duty Cycle یا چرخه وظیفه مدت زمان مد نظر ماست؛

فرکانس: اگر با مفهوم فرکانس آشنایی ندارید، فرکانس به مقدار زمانی میگویند که یک سیگنال به اندازه وظیفه خود یا همان دیوتی سایکل خود طی میکند.

مثلا در برق شهری با فرکانس 50 هرتز، سیگنال سینوسی برق در هر ثانیه یک سیکل کامل را طی میکند.

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

آردوینو تنها دارای تعداد محدودی پین PWM است. با وجود اینکه میتوان با قطع و وصل کردن پین های دیجیتال دیگر این کار را انجام داد (با وجود نا مناسب بودن این روش) شما میتوانید از تعدادی از پین های آردوینو این کار را انجام دهید.

در بورد های آردوینو پین های PWM با علامت ~ مشخص شده است. در آردوینو مگا تمام پین های دیجیتال 2 تا 13 از PWM پشتیبانی میکنند.

در ادامه به پروژه عملی میپردازیم…

مواد لازم!

1.آردوینو (Uno یا Mega یا…)

آردوینو Uno
آردوینو Duemilanove
آردوینو Mega
آردوینو Nano

2.سروو موتور (مدل آن بسته به نیاز شما است. اما پیشنهاد ما سروو موتور sg90 است که علاوه بر قیمت مناسب جریان پایینی میکشد)

سروو
سروو خطی

3.پوتانسیومتر

پوتانسیومتر

سروو موتور

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

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

این موتور ها در قسمت شفت خروجی موتور ها یک عدد پوتانسومتر دارند که میتواند موقعیت موتور را اندازه گیری کند و در درجه مورد نظر قرار دهد.

در تصاویر زیر یک نوع موتور قدرتمند سروو را مشاهده میکنید:

سروو S3003

راه اندازی

#include <Servo.h>

Servo myservo;

void setup(){

     myservo.attach(9);

     myservo.write(80);

}

void loop(){} 

در خط اول کتابخانه را تعریف کردیم (کتابخانه به صورت پیشفرض نصب است) و در خط سوم شی مربوط به آن را ساخته ایم. در خط هفتم پین سیگنال سروو موتور است. بهتر است سروو موتور را به یکی از پین های PWM متصل کنید.

myservo.attach(9); // Arduino: D9 

در خط 8، موقعیت سروو موتور را به  آن اعملام میکنیم. مثلا برای قرار گیری سروو موتور در موقعیت 80 درجه از کد زیر استفاده میکنیم:

myservo.write(80); // 80 Degree  

پوتانسیومتر

#include <Servo.h>

Servo myservo;

int val = 0;

void setup(){

     myservo.attach(9);

     myservo.write(0);

}

void loop(){

     val = map(analogRead(A0), 0, 1023, 0, 180);

     myservo.write(val);

     delay(15); 

} 

این کد مانند کد قبل است که تفاوت ها را بررسی میکنیم. در خط اول متغیری به نام val تعریف کرده ایم که قرار است موقعیت سروو موتور درون آن ذخیره شود.

در خط  11 سروو موتور را در موقعیت 0 درجه قرار میدهیم:

myservo.write(0); 

در خط 17 مقدار پین آنالوگ A0 را خوانده و به عددی بین 0 تا 180 تبدیل میکنیم. عدد 0 و 180 به ترتیب حداقل و حداکثر مقدار زاویه سروو موتورمان است که در سروو موتور SG90 برابر با 180 درجه است. یعنی اگر سروو موتور ما 360 درجه باشد باید آن را بین 0 و 360 قرار دهیم.

تابع map به اینصورت کار میکند که مقداری را گرفته و نسبت به دو مقدار دیگر تنظیم میکند (مانند جدول تناسب):

val = map(analogRead(A0), 0, 1023, 0, 180); 

به عبارتی برای تعریف محدوده برای اعداد از تابع map استفاده میکنیم:

map(val, minA, maxA, minB, maxB);  

مقدار val همان عددی است که میخواهیم آن را در محدوده قرار دهیم. مقدار minA مقدار حداقل val است و maxA مقدار حداکثر val است. minB مقدار حداقل خواسته شده است و maxB حداکثر آن. مثلا برای تبدیل متغیر value که مقدار بین 0 تا 255 را دارد، به مقداری بین 0 تا 100 از کد زیر استفاده میکنیم:

number = map(value, 0, 255, 0, 100);  

و در نهایت در خط 19 مقدار val را به سروو موتور اعمال میکنیم.

myservo.write(val);  

و در آخر برای جلوگیری از بروز هر خطا بهتر است یک تاخیر 15 میلی ثانیه ای (مقدار ارائه شده در دیتاشیت) قرار دهید:

delay(15);  
لینک های دانلود دانلود فایل های این جلسه به طور کامل (حجم 405 کیلوبایت)
بعدی
قبلی
اشتراک گذاری:
دانلود فایل کامل پروژه
دانلود فایل
فایل کامل (جلسه هشتم)

پسورد فایل : ندارد گزارش خرابی لینک

برچسب ها: arduinoPotentiometerservo motorآموزش آردوینوآموزش سروو موتورراه اندازی سروو موتورراه اندازی سروو موتور با پتانسومترپوتانسومتر
درباره admin_hb

حسین بذرافکن هستم، برنامه نویس، فریلنسر و عاشق الکترونیک...

نوشته های بیشتر از admin_hb
در تلگرام
کانال ما را دنبال کنید!
در اینستاگرام
ما را دنبال کنید!
مطالب زیر را حتما بخوانید
  • آموزش آردوینو جلسه سیزدهم

    221 بازدید

  • آموزش آردوینو جلسه دوازدهم

    244 بازدید

  • آموزش الکترونیک مقدماتی درس 3

    348 بازدید

  • آموزش الکترونیک مقدماتی درس 2

    305 بازدید

  • آموزش الکترونیک مقدماتی درس 1

    253 بازدید

  • آموزش آردوینو جلسه یازدهم

    455 بازدید

قدیمی تر آموزش آردوینو جلسه هفتم
جدیدتر آموزش آردوینو جلسه نهم

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

جستجو برای:

امروز، پنجشنبه ۱۴ اسفند ۹۹ ساعت ۰۰:۳۰

نوشته های تازه

آموزش آردوینو جلسه سیزدهم

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

بیشتر »
14 آذر 1399

آموزش آردوینو جلسه دوازدهم

در جلسه قبل با توابع کشیدن اشکال در نمایشگر Nokia 5110 آشنا شدیم. در این

بیشتر »
11 آذر 1399

آموزش الکترونیک مقدماتی درس 3

آموزش الکترونیک مقدماتی درس 3 در جلسات گذشته با مباحث بسیاری آشنا شدیم؛ در این

بیشتر »
3 مهر 1399

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت