شِفر (کود) آردوینو و ویدیو برای کنترل‌کننده سروو PCA9685، 16 کاناله، 12 بیتی، V1

شِفر (کود) آردوینو و ویدیو برای کنترل‌کننده سروو PCA9685، 16 کاناله، 12 بیتی، V1

در این آموزش، نحوه استفاده از کنترل‌کننده سروو PCA9685 16 کاناله 12 بیتی از شرکت NXP Semiconductor را بررسی خواهیم کرد. این ماجیول به شما امکان می‌دهد تا حداکثر 16 سروو را کنترل کنید یا یک مجموعه از LEDها را با دقت با استفاده از مدولاسیون عرض پالس (PWM) کم‌نور کنید. تا پایان این آموزش، شما یک پیکربندی عملی خواهید داشت که می‌تواند چند سروو را به‌صورت جداگانه یا هم‌زمان کنترل کند.

PCA9685 module-0

برای روشن‌تر شدن محتوای این آموزش، شما را تشویق می‌کنم ویدیوی همراه (در ویدیو در 00:00) را برای مشاهدهٔ نمایش بصری نحوهٔ راه‌اندازی و فرآیند کدنویسی تماشا کنید.

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

ماجیول PCA9685 یک برد جمع‌وجور است که می‌تواند چندین سروو را از طریق ارتباط I2C کنترل کند. این ماجیول دارای 16 کانال است و به شما امکان می‌دهد تا حداکثر 16 سروو را متصل کنید، که هر کدام سیگنال کنترل جداگانه خود را دارند. این ماجیول با تغذیه 5V کار می‌کند و برای مدیریت سیگنال‌های PWM طراحی شده است، که برای کنترل دقیق موقعیت سرووها ضروری است.

برد شامل پایه‌های اختصاصی برای تغذیه (VCC)، زمین (GND) و ارتباط (SDA و SCL) است. پایه SDA برای انتقال داده استفاده می‌شود، در حالی که پایه SCL سیگنال ساعت است که هر دو به‌ترتیب به پایه‌های آنالوگ A4 و A5 آردوینو متصل می‌شوند. این پیکربندی ارتباط قابل‌اطمینان بین آردوینو و ماجیول PCA9685 را تضمین می‌کند.

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

تولیدکنندهNXP نیمه‌هادی
شماره قطعهPCA9685
ولتاژ منطق/ورودی/خروجی3.3 V تا 5.5 V
ولتاژ تغذیه2.3 V تا 5.5 V
جریان خروجی (برای هر کانال)حداکثر 25 mA
جریان پیک (به ازای هر کانال)حداکثر 100 mA
راهنمای فرکانس PWM24 هرتز تا 1.6 کیلوهرتز
آستانه‌های منطق ورودی0.3 V (پایین) / 0.7 V (بالا)
افت ولتاژ روی مقاومت RDS(روشن)/ اشباعحداکثر 0.5 ولت
محدودیت‌های حرارتی-40 °C تا 125 °C
بستهHTSSOP-28
یادداشت‌ها / نسخه‌هاکنترل‌کننده PWM 16 کاناله

  • اطمینان حاصل کنید که یک منبع تغذیه ۵ ولت با جریان کافی دارید (۱ آمپر توصیه می‌شود).
  • برای جلوگیری از آسیب، سرووها را مستقیماً از آردوینو تغذیه نکنید.
  • از پایه‌های صحیح I2C استفاده کنید: SDA به A4 و SCL به A5.
  • مقادیر عرض پالس را با توجه به سرووهای خاص خود تنظیم کنید.
  • سیم‌کشی را برای قطبیت صحیح بررسی کنید: GND، VCC و سیگنال.
  • برای کاربردهای جریان بالا، استفاده از هیت‌سینک را در نظر بگیرید.

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

Arduino wiring for PCA9685 to control 16 servo motors
Arduino wiring for PCA9685 to control 16 servo motors

برای اتصال PCA9685 به آردوینو، ابتدا با وصل کردن تغذیه و زمین شروع کنید. پایه VCC روی PCA9685 را به خروجی 5V آردوینو وصل کنید. سپس پایه GND روی PCA9685 را به GND آردوینو متصل کنید. در ادامه پایه SDA روی PCA9685 را به پایه A4 آردوینو و پایه SCL را به پایه A5 وصل کنید.

برای سرووها، سیم سیگنال را به کانال مربوطه روی PCA9685 متصل کنید (مثلاً CH0 برای سرووی اول)، سیم تغذیه را به یک منبع تغذیه جداگانه وصل کنید (زیرا سرووها ممکن است جریان بیشتری نسبت به آنچه Arduino می‌تواند تأمین کند نیاز داشته باشند)، و سیم زمین را به زمین مشترک با PCA9685 وصل کنید. مطمئن شوید که سیم‌های سیگنال، تغذیه و زمین به‌درستی متصل شده‌اند تا از آسیب دیدن قطعات شما جلوگیری شود.

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

در بخش راه‌اندازی شِفر (کود)، ما ماجیول PCA9685 را مقداردهی اولیه می‌کنیمpwm.begin()و فرکانس PWM را باpwm.setPWMFreq(60);. این فرکانس ارتباطی سرووها را تنظیم می‌کند.

void setup() {
  Serial.begin(9600);
  Serial.println("16 channel Servo test!");
  pwm.begin();
  pwm.setPWMFreq(60);  // Analog servos run at ~60 Hz updates
}

درون حلقه، سرووها را با تنظیم مقادیر PWM متناظر با زاویه‌های موردنظر کنترل می‌کنیم. تابعangleToPulse(int ang)زاویه را به پهنای پالس مناسب تبدیل می‌کند، که برای موقعیت‌یابی دقیق سروو ضروری است.

void loop() {
  for( int angle =0; angle<181; angle +=20){
    delay(500);
    pwm.setPWM(0, 0, angleToPulse(angle) );
  }
}

در نهایت، تابعangleToPulse(int ang)زاویه را با استفاده از حداقل و حداکثر طول پالس تعریف‌شده به پهنای پالس تبدیل می‌کند. این به شما اجازه می‌دهد موقعیت سروو را به‌سادگی بر اساس زاویه‌ای که می‌خواهید به‌دست آورید کنترل کنید.

int angleToPulse(int ang){
   int pulse = map(ang,0, 180, SERVOMIN,SERVOMAX);
   Serial.print("Angle: ");Serial.print(ang);
   Serial.print(" pulse: ");Serial.println(pulse);
   return pulse;
}

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

پس از سیم‌کشی صحیح و آپلود شِفر (کود)، باید ببینید که سرو در زاویه‌های مشخص شده با گام‌های 20 درجه حرکت می‌کند. اگر سرو همان‌طور که انتظار می‌رود عمل نکرد، سیم‌کشی را برای اتصالات صحیح بررسی کنید و مطمئن شوید که منبع تغذیه کافی است (در ویدیو در 12:30).

برچسب‌های زمانی ویدیو

  • 00:00- معرفی PCA9685
  • 02:30- دستورالعمل‌های سیم‌کشی
  • 05:00- مرور شِفر (کود)
  • 10:15- نمایش کنترل سروو
  • 12:30عیب‌یابی مشکلات رایج

تصاویر

PCA9685 module-0
PCA9685 module-0
PCA9685 module-1
PCA9685 module-1
PCA9685 module-2
PCA9685 module-2
PCA9685 module-3
PCA9685 module-3
PCA9685 module
PCA9685 module
Arduino wiring for PCA9685 to control 16 servo motors
Arduino wiring for PCA9685 to control 16 servo motors
36-Resources for this sketch
زبان: C++
37-PCA6985 16-channel 12-bit servo controller, simple code
زبان: C++
کپی شد!

منابع و مراجع

هنوز هیچ منبعی موجود نیست.

فایل‌ها📁

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