کنترل یک سروو با پتانسیومتر و LCD1602 با استفاده از آردوینو

کنترل یک سروو با پتانسیومتر و LCD1602 با استفاده از آردوینو

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

قبل از اینکه به سیم‌کشی و شِفر (کود) بپردازیم، مفید است که با قطعاتی که استفاده خواهیم کرد آشنا شویم. پتانسیومتر به‌عنوان یک مقاومت متغیر عمل می‌کند که می‌تواند ولتاژ خروجی را بر اساس موقعیتش تنظیم کند؛ ما از آن برای تعیین زاویه سرو استفاده خواهیم کرد. LCD1602 مقدار فعلی پتانسیومتر و زاویه متناظر سرو را نمایش خواهد داد. می‌توانید برای راهنمایی تصویری کل فرایند به ویدیو مراجعه کنید (in video at 00:00).

توضیح سخت‌افزار

اجزای اصلی که در این پروژه استفاده خواهیم کرد عبارتند از:

  • برد آردوینو:این به‌عنوان کنترل‌کنندهٔ کل سیستم عمل خواهد کرد، ورودی‌های پتانسیومتر را پردازش می‌کند و موقعیت سروو را بر اساس آن‌ها کنترل می‌کند.
  • پتانسیومتر:یک پتانسیومتر 10 کیلو اهم برای تأمین یک ورودی آنالوگ به آردوینو استفاده می‌شود. این پتانسیومتر سه پایه دارد: یکی به 5V متصل است، یکی به زمین و پایه میانی به پایه آنالوگ (A0) روی آردوینو متصل می‌شود.
  • موتور سروو:این سروو با ارسال زاویه‌ای بر اساس موقعیت پتانسیومتر کنترل خواهد شد. سیم سیگنال به یک پایه دیجیتال در آردوینو (پایه 9) متصل می‌شود.
  • نمایشگر LCD1602:این نمایشگر مقدار پتانسیومتر و زاویه سروو را نشان می‌دهد. برای کنترل به چندین پایه دیجیتال روی آردوینو متصل می‌شود.

پتانسیومتر با تغییر مقاومت و بنابراین ولتاژ در پایهٔ وسطی آن کار می‌کند، که آردوینو آن را به‌عنوان یک ورودی آنالوگ می‌خواند. موتور سروو با ارسال یک سیگنال مشخص مدولاسیون پهنای پالس (PWM) که متناظر با زاویهٔ موردنظر است کنترل می‌شود. LCD1602 از یک کتابخانه استفاده می‌کند که به ما اجازه می‌دهد نمایشگر آن را به‌سادگی کنترل کرده و اطلاعات مربوط به پتانسیومتر و سروو را نمایش دهیم.

جزئیات مشخصات فنی

تولیدکنندهمختلف
شماره قطعهLM016L
ولتاژ منطق/ورودی-خروجی۵ ولت
ولتاژ تغذیه4.5 - 5.5 ولت
جریان خروجی (به ازای هر کانال)تا 2 mA
جریان پیک (برای هر کانال)20 میلی‌آمپر
راهنمای فرکانس PWM50 هرتز
آستانه‌های ورودی منطقی0.3 × Vسی‌سی(کم)، 0.7 x Vسانتی‌متر مکعب(بالا)
افت ولتاژ / RDS(on) / اشباعحداکثر 0.2 ولت
محدودیت‌های حرارتی85 °C
بسته16 پایه DIP
یادداشت‌ها / واریانت‌هانمایشگر کاراکتری 16x2

  • پایه میانی پتانسیومتر را به پایه آنالوگ A0 متصل کنید.
  • اطمینان حاصل کنید که سروو از یک منبع 5V تغذیه می‌شود و به پایه دیجیتال 9 متصل است.
  • از کتابخانه مناسب برای LCD استفاده کنید و مطمئن شوید که در Arduino IDE شما گنجانده شده است.
  • در سیم‌کشی مراقب باشید تا از اتصال کوتاه جلوگیری کنید، به‌ویژه در اتصالات سروو.
  • اطمینان حاصل کنید که LCD در شِفر (کود) به‌درستی مقداردهی اولیه شده است تا از بروز مشکلات نمایش جلوگیری شود.
Arduino wiring for LCD1602 12wires servo and pot
Arduino wiring for LCD1602 12wires servo and pot

دستورالعمل‌های سیم‌کشی

برای سیم‌کشی قطعات به هم، با اتصال پتانسیومتر شروع کنید. یکی از پایه‌های خارجی پتانسیومتر را به پایهٔ 5V روی آردوینو وصل کنید و پایهٔ خارجی دیگر را به زمین. پایهٔ وسط به پایهٔ آنالوگ می‌رودA0.

سپس، برای موتور سروو، سیم قهوه‌ای یا سیاه را به زمین، سیم قرمز را به پایه 5V و سیم زرد یا نارنجی را به پایه دیجیتال متصل کنید.9روی آردوینو. برای LCD1602، آن را وصل کنیدVDDپایه به 5V،RWبه زمین، وV0به پایه میانی پتانسیومتر برای تنظیم کنتراست وصل کنید.RSسنجاق کردن12،ENسنجاق کردن11،D4سنجاق کردن5,D5سنجاق کردن4،D6سنجاق زدن3، وD7سنجاق کردن2.

همچنین توصیه می‌شود در صورت استفاده از LED، یک مقاومت 220 اهم را به صورت سری با آن قرار داده و آن را به تغذیه 5V متصل کنید. علاوه بر این، می‌توان یک خازن 470 µF را بین تغذیه و زمین سروو متصل کرد تا هرگونه اغتشاش (نویز) در حین عملکرد فیلتر شود.

مثال‌های شِفر (کود) و راهنمای گام‌به‌گام

شِفر (کود) با وارد کردن کتابخانه‌های لازم و مقداردهی اولیه پایه‌ها برای LCD و سروو آغاز می‌شود. بخش زیر تنظیمات LCD و سروو را نشان می‌دهد:

void setup() {
  lcd.begin(16, 2);
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Robojax Servo Knob");
  delay(2000);
}

این قطعه شِفر (کود) LCD را برای 16 ستون و 2 ردیف مقداردهی اولیه می‌کند، سروو را به پایه 9 متصل می‌کند و یک پیام خوش‌آمدگویی را روی LCD نمایش می‌دهد.lcd.clear()این تابع تضمین می‌کند که هر پیام قبلی حذف شود.

سپس، حلقه به‌طور پیوسته مقدار پتانسیومتر را می‌خواند و موقعیت سروو و نمایشگر LCD را به‌روزرسانی می‌کند:

void loop() {
  val = analogRead(potpin);            // reads the value of the potentiometer
  angle = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo
  myservo.write(angle);                  // sets the servo position according to the scaled value
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Pot. Value:");
  lcd.setCursor(11, 0);
  lcd.print(val);
  lcd.setCursor(0, 1);
  lcd.print("Angle     :");
  lcd.setCursor(11, 1);
  lcd.print(angle);
  delay(500);
}

این حلقه مقدار پتانسیومتر را می‌خواند، آن را به زاویه متناظر برای سروو نگاشت می‌کند و نمایشگر LCD را با هر دو مقدار پتانسیومتر و زاویه سروو به‌روزرسانی می‌کند. اینdelay(500)قرار گرفتن در انتهای حلقه از به‌روزرسانی بیش از حد سریع نمایش جلوگیری می‌کند.

نمایش / چه انتظاری داشته باشید

هنگامی که سیستم را روشن می‌کنید، LCD به مدت 2 ثانیه عبارت Robojax Servo Knob را نمایش می‌دهد، سپس مقدار پتانسیومتر و زاویه سروو را نشان می‌دهد. با چرخاندن پتانسیومتر، زاویه سروو متناسب تغییر می‌کند و مقدار جدید پتانسیومتر روی LCD منعکس می‌شود. اگر با هر رفتار غیرمنتظره‌ای مواجه شدید، مانند حرکت سروو در جهت اشتباه، سیم‌کشی و اتصالات پتانسیومتر و سروو را بررسی کنید (در ویدیو در 10:00).

تصاویر

SG90_servo_motor-1
SG90_servo_motor-1
SG90_servo_motor-0
SG90_servo_motor-0
Arduino wiring for LCD1602 12wires servo and pot
Arduino wiring for LCD1602 12wires servo and pot
97-This is the Arduino code for controlling a servo with a potentiometer and an LCD1602.
زبان: C++
کپی شد!

فایل‌ها📁

هیچ فایلی موجود نیست.