مشاهده همه محصولات
محصولی پیدا نشد
دوست داشتن

ماژول درایور سرو موتور 16 کاناله 12 بیتی PWM با تراشه PCA9685

مرجع:
DKP - 42020
DKP - 42020
دسته بندی: سرو موتور - Servo
موجود شد خبرم کن
توضیحات

ماژول درایور سرو موتور 16 کاناله 12 بیتی PWM با تراشه PCA9685

PCA9685 یک ماژول کنترل کننده محبوب با 16 کانال PWM (عرض پالس) 12 بیتی و سروو می‌باشد. این ماژول به طور رایج در پروژه‌ها و رباتیک برای کنترل چندین سروو، LED و یا سایر دستگاه‌ها که به سیگنال‌های PWM نیاز دارند، استفاده می‌شود. این ماژول 16 کانال مستقل را فراهم می‌کند که به شما امکان کنترل تا 16 خروجی PWM مختلف را می‌دهد. رزولوشن خروجی PWM 12 بیتی است که کنترل نرم و دقیقی از چرخه وظیفه (Duty Cycle) را فراهم می‌کند و این موضوع در کنترل سرووها یا شدت روشنایی LED مفید است. ماژول PCA9685 از طریق پروتکل I2C (مدار متداخل‌شده داخلی) با میکروکنترلر یا سایر دستگاه‌ها ارتباط برقرار می‌کند. این امکان را به شما می‌دهد که به راحتی آن را با میکروکنترلرهای مختلف مانند آردوینو، رزبری پای و سایر پلتفرم‌ها یکپارچه کنید.این ماژول از فرکانس‌های قابل تنظیم PWM پشتیبانی می‌کند که در محدوده 24 هرتز تا 1526 هرتز قرار دارد. این انعطاف‌پذیری به شما اجازه می‌دهد تا فرکانس PWM را به میزان نیاز برنامه خاص خود تطبیق دهید.

 

مشخصات فنی ماژول درایور سرو موتور 16 کاناله 12 بیتی PWM با تراشه PCA9685

  • ولتاژ کاری:  ماژول با ولتاژ 3.3 ولت یا 5 ولت کار می‌کند. 
  • تعداد کانال‌ها: 16 کانال مستقل برای خروجی PWM.
  • رزولوشن PWM: رزولوشن 12 بیتی که 4096 مرحله‌ی مختلف PWM را فراهم می‌کند.
  • فرکانس PWM: فرکانس قابل تنظیم PWM که در محدوده 24 هرتز تا 1526 هرتز قرار دارد. محدوده دقیق ممکن است بین ماژول‌های مختلف متفاوت باشد.
  • رابط کنترل: پروتکل ارتباطی I2C (مدار متداخل‌شده داخلی) برای اتصال به میکروکنترلرها و سایر دستگاه‌ها.

 

بررسی پایه های ماژول درایور سرو موتور 16 کاناله 12 بیتی PWM با تراشه PCA9685

بررسی پایه های PCA9685 16ch 12bit PWM/Servo controller Module

  • VCC: این پین را به ولتاژ مثبت تامین برق (3.3 ولت یا 5 ولت) برای تغذیه ماژول متصل کنید.
  • GND: این پین را به مرجع زمین (0 ولت) متصل کنید.
  • SCL: این پین برای ارتباط سریال ساعت I2C با میکروکنترلر استفاده می‌شود.
  • SDA: این پین برای ارتباط سریال داده I2C با میکروکنترلر استفاده می‌شود.

 

به همراه ماژول درایور سرو موتور 16 کاناله 12 بیتی PWM با تراشه PCA9685 چه اقلامی باید خریداری شود؟

  • سرو موتور Servo motor
  • آردوینو Arduino
  • کابل فلت 
  • برد بورد

 

راه اندازی ماژول PCA9685 با آردوینو

برای راه اندازی ماژول PCA9685 از برد آردوینو استفاده می‌کنیم. 

کتابخانه Wire: این کتابخانه برای ارتباط I2C استفاده می‌شود.

کتابخانه Adafruit_PWMServoDriver: این کتابخانه برای کنترل ماژول PCA9685 و موتور سرووها استفاده می‌شود.

ثابت PCA9685_ADDR: آدرس I2C ماژول PCA9685 را تعیین می‌کند.

ثابت NUM_SERVOS: تعداد سرووهایی که می‌خواهید کنترل کنید را تعیین می‌کند.

 

تابع setup():

تنظیمات اولیه انجام می‌شود، شامل:

شروع ارتباط سریال با سرعت 9600 بیت بر ثانیه.

شروع ارتباط با ماژول PCA9685 و تنظیم فرکانس آن به 50 هرتز.

 

تابع loop():

 

حلقه‌ای است که موتور سروو را به موقعیت‌های مختلف حرکت می‌دهد.

ابتدا موتور سروو را به حداقل موقعیت (0 درجه) حرکت می‌دهد.

سپس به مدت 1 ثانیه صبر می‌کند.

سپس موتور سروو را به حداکثر موقعیت (180 درجه) حرکت می‌دهد.

دوباره به مدت 1 ثانیه صبر می‌کند.

 

تابع moveServo():

 

این تابع مسئول حرکت دادن موتور سروو به زاویه مشخص است.

زاویه (0 تا 180) از ورودی تابع گرفته می‌شود.

مقدار PWM مورد نیاز برای تنظیم زاویه محاسبه شده و با استفاده از تابع setPWM کتابخانه PCA9685 تنظیم می‌شود.

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

// آدرس I2C ماژول PCA9685 را تعیین کنید
#define PCA9685_ADDR 0x40

// تعداد سرووهایی که می‌خواهید کنترل کنید (تا 16 عدد)
#define NUM_SERVOS 1

// یک نمونه از کلاس Adafruit_PWMServoDriver ایجاد کنید
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(PCA9685_ADDR);

void setup() {
  Serial.begin(9600);
  // PCA9685 را با فرکانس پیش‌فرض (50 هرتز) مقداردهی اولیه کنید
  pwm.begin();
  pwm.setOscillatorFrequency(27000000);
  pwm.setPWMFreq(50);  // می‌توانید این مقدار را بر اساس مشخصات سروو خود تنظیم کنید
}

void loop() {
  // موتور سروو را به موقعیت‌های مختلف حرکت دهید
  moveServo(0, 0); // موتور سروو را به حداقل موقعیت (زاویه 0 درجه) حرکت دهید
  delay(1000); // 1 ثانیه صبر کنید

  moveServo(0, 180); // موتور سروو را به حداکثر موقعیت (زاویه 180 درجه) حرکت دهید
  delay(1000); // 1 ثانیه صبر کنید
}

// تابعی برای حرکت دادن موتور سروو به زاویه مشخص
void moveServo(uint8_t channel, int angle) {
  // زاویه (0-180) را به مقدار PWM (0-4095) تبدیل کنید
  uint16_t pwmValue = map(angle, 0, 180, 102, 512); // این مقادیر را بر اساس مشخصات سروو خود تنظیم کنید

  // مقدار PWM را برای کنترل موقعیت موتور سروو تنظیم کنید
  pwm.setPWM(channel, 0, pwmValue);
}

  

راه اندازی ماژول PCA9685 با میکروپایتون

کد میکروپایتون برای کنترل موتور سروو با استفاده از ماژول PCA9685 از زبان Python استفاده می‌کند و با کتابخانه‌ها و توابع موجود در میکروپایتون اجرا می‌شود. 

 

machine: کتابخانه‌ای برای کنترل و ارتباط با سخت‌افزارها در میکروپایتون.

time: کتابخانه‌ای برای انجام تاخیر و کنترل زمان در میکروپایتون.

 

آدرس I2C:مقدار ثابت PCA9685_ADDR تعیین کننده آدرس I2C ماژول PCA9685 است.

 

تعداد سرووها:مقدار ثابت NUM_SERVOS تعیین کننده تعداد سرووها که می‌خواهیم کنترل کنیم است.

 

ایجاد ارتباط I2C:از کتابخانه machine.I2C استفاده می‌کنیم تا ارتباط I2C را ایجاد کنیم.scl=machine.Pin(5) و sda=machine.Pin(4) پین‌های SCL و SDA را به‌ترتیب تعیین می‌کنند.freq=100000 مشخص می‌کند که ارتباط I2C با چه فرکانسی صورت بگیرد.

 

تابع set_servo_pulse():این تابع مقدار PWM برای یک کانال سروو را تنظیم می‌کند.با توجه به مقدار زاویه و محدوده عملکرد سروو، مقدار PWM محاسبه شده و برای کانال مورد نظر به PCA9685 ارسال می‌شود.

 

تابع set_pwm_freq():این تابع فرکانس PWM را تنظیم می‌کند.با توجه به فرکانس مورد نظر و محاسبات ریاضی، مقدار مناسب برای فرکانس PWM به PCA9685 ارسال می‌شود.

 

مقداردهی اولیه به PCA9685:ابتدا با استفاده از تابع set_pwm_freq(50) فرکانس PWM به مقدار 50 هرتز تنظیم می‌شود.

 

تابع move_servo():این تابع موتور سروو را به زاویه مشخصی می‌برد.زاویه از 0 تا 180 درجه به عنوان ورودی دریافت می‌شود و محاسباتی انجام می‌شود تا مقدار PWM مناسب برای رسیدن به زاویه مورد نظر به PCA9685 ارسال شود.

 

حلقه اصلی:حلقه‌ای بی‌نهایت است که به‌صورت مداوم اجرا می‌شود.در این حلقه، موتور سروو به موقعیت‌های مختلف حرکت داده می‌شود.ابتدا موتور سروو به حداقل موقعیت (زاویه 0 درجه) حرکت می‌کند و سپس 1 ثانیه صبر می‌کند.سپس موتور سروو به حداکثر موقعیت (زاویه 180 درجه) حرکت می‌کند و دوباره 1 ثانیه صبر می‌کند.این عملکرد به‌صورت تکراری انجام می‌شود و موتور سروو به‌طور مداوم بین دو موقعیت حرکت می‌کند.

import machine
import time

# آدرس I2C ماژول PCA9685 را تعیین کنید
PCA9685_ADDR = 0x40

# تعداد سرووهایی که می‌خواهید کنترل کنید (تا 16 عدد)
NUM_SERVOS = 1

# مقداردهی اولیه به I2C برای ارتباط
i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4), freq=100000)

# تابعی برای تنظیم مقدار PWM برای یک کانال سروو
def set_servo_pulse(channel, pulse_value):
    data = bytearray([0x06 + 4 * channel, 0x00, 0x00, pulse_value & 0xFF, pulse_value >> 8])
    i2c.writeto(PCA9685_ADDR, data)

# تنظیم فرکانس PWM به 50 هرتز
def set_pwm_freq(freq_hz):
    prescale_val = 25000000.0 / (4096 * freq_hz) - 1
    prescale = int(prescale_val + 0.5)
    oldmode = i2c.readfrom_mem(PCA9685_ADDR, 0x00, 1)[0]
    newmode = (oldmode & 0x7F) | 0x10
    i2c.writeto_mem(PCA9685_ADDR, 0x00, bytes([newmode]))
    i2c.writeto_mem(PCA9685_ADDR, 0xFE, bytes([prescale]))
    i2c.writeto_mem(PCA9685_ADDR, 0x00, bytes([oldmode]))
    time.sleep_ms(5)
    i2c.writeto_mem(PCA9685_ADDR, 0x00, bytes([oldmode | 0xA1]))

# مقداردهی اولیه به PCA9685
set_pwm_freq(50)

# تابعی برای حرکت دادن موتور سروو به زاویه مشخص
def move_servo(channel, angle):
    pulse_value = int(102 + (409 - 102) / 180 * angle)  # این مقادیر را بر اساس مشخصات سروو خود تنظیم کنید
    set_servo_pulse(channel, pulse_value)

while True:
    # حرکت دادن موتور سروو به موقعیت‌های مختلف
    move_servo(0, 0)  # موتور سروو را به حداقل موقعیت (زاویه 0 درجه) حرکت دهید
    time.sleep(1)  # 1 ثانیه صبر کنید

    move_servo(0, 180)  # موتور سروو را به حداکثر موقعیت (زاویه 180 درجه) حرکت دهید
    time.sleep(1)  # 1 ثانیه صبر کنید

ادامه مطلبShow less
جزئیات محصول
DKP - 42020

مشخصات

کاربری
مناسب برای استفاده شخصی
نوع ماژول
درایور
سطح تجربه مورد نیاز
پیشرفته
ولتاژ مورد نياز
2.3 تا 5.5 ولت DC
دمای کاری
- 40 تا + 85 درجه سانتی گراد
ترتیب پایه ها
مطابق چاپ روی برد
فرکانس
فرکانس pwm 1.6kHz
نوع کانکتور
پین هدر
پروتکل ارتباطی
I2C
پردازنده
pca9685
سایر توضیحات
درایور سرو موتور
کیفیت LCD
12 بیتی
نظرات
بدون نظر
سوالات متداول
    چگونه می‌توان یک موتور DC را با استفاده از آردوینو کنترل کرد؟

    آیان امکان راه اندازی چند سنسور DHT با ESP8266 با میکروپایتون وجود دارد؟

    امکان راه اندازی چند سنسور DHT با ESP8266 با استفاده از MicroPython وجود دارد. سنسورهای DHT با پروتکل دیجیتال و از طریق پایه‌های GPIO قابل اتصال به میکروکنترلرها هستند.


    چه جوری از میکروکنترلر ESP32 برای ساخت یک سیستم کنترل دما استفاده کنیم؟ برنامه نویسی پیچیده است؟

    برای ساخت یک سیستم کنترل دما با برد میکروکنترلر ESP32، به موارد زیر نیاز دارید:

    یک برد میکروکنترلر ESP32

    یک سنسور دما مثل DHT DS18B20

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

    با استفاده از کتابخانه DHT.h، می‌توانید از سنسور دما برای خواندن دمای محیط استفاده کنید. سپس، می‌توانید از این دما برای کنترل المان گرمایشی یا سرمایشی استفاده کنید.

    در خصوص برنامه نویسی از کتابخانه DHT و در صورت نیاز کتابخانه وای فای برای ارسال داده‌ها به پلتفرم IoT باید استفاده کنید. 


خریداران این محصول، این کالاها را نیز خریده اند:
محصولات مرتبط

ویژگی‌های فیزیکی

نوع کانکتور
پین هدر

ارتباطات

فرکانس
فرکانس pwm 1.6kHz
نوع کانکتور
پین هدر
پروتکل ارتباطی
I2C

پردازنده

پردازنده
pca9685

صفحه نمایش

کیفیت LCD
12 بیتی

تغذیه

ولتاژ مورد نياز
2.3 تا 5.5 ولت DC

ویژگی های فنی

دمای کاری
- 40 تا + 85 درجه سانتی گراد
ترتیب پایه ها
مطابق چاپ روی برد

سایر ویژگی‌ها

کاربری
مناسب برای استفاده شخصی
نوع ماژول
درایور
سطح تجربه مورد نیاز
پیشرفته
سایر توضیحات
درایور سرو موتور
2,350,000 تومان
در این کیت 5 مدار آموزشی کنترل سطح مخزن آب ،آبیاری خودکار گل و باغچه ،دزدگیر منزل ،تهویه خودکار ،لامپ هوشمند بصورت کاردستی الکترونیک برای دانش آموزان و بدون نیاز به لحیم کاری و تجهیزات خاص به همراه DVD آموزش ویدئویی...
6,950,000 تومان
ماکت یک کیت مونتاژ شده مجموعه کامل و آماده جهت آموزش و یادگیری هوشمندسازی منازل و ساختمانهاست، با استفاده از اپلیکیشن بلوتوث موبایل سنسورهای ماکت را فعال میکنید و عملکرد هر ماژول بصورت آلارم هشدار بازر یا نمایش بر روی...

فهرست

تماس با دانشجو کیت

ساعت تماس همه روزه از 9 صبح تا 5 عصر (بجز روزهای تعطیل) البته فروشگاه ما به صورت آنلاین است و می‌توانید خریدتان را انجام دهید. اما اگر سوالی داشتید که به تماس تلفنی نیاز داشت، فقط در ساعت‌های اعلام شده در خدمتیم.

021-88857245

021-88856524

031-32211313

 

شماره روبیکا و ایتا، فقط پیام، پاسخ به سوالات قبل از خرید و دریافت تصاویر کالاها

09375076606

 

ارسال سریع تهران (تحویل همان روز)

تمامی شهرهای ایران با پست

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

جستجو

مشاهده همه محصولات
محصولی پیدا نشد

یک حساب کاربری رایگان برای ذخیره آیتم‌های محبوب ایجاد کنید.

ورود به سیستم