完全ガイド: PCA9685 コントローラーと Arduino など

  • PCA9685 は、I16C 経由で通信する 2 チャネル PWM コントローラーです。
  • LEDライトとサーボの両方を制御でき、周波数は最大1600Hzまで調整可能です。
  • 同じ I62C バス上に最大 2 個のモジュールを接続でき、992 個の制御可能な PWM 出力に達します。
  • Adafruit などのライブラリを使用すると、Arduino などのプラットフォームでのこのコンポーネントの操作が簡素化されます。

PCA9685

モジュール Arduino用PCA9685コントローラー および他のプラットフォームは、PWM 信号で動作する複数のデバイスを制御する必要がある場合に広く使用されているソリューションです。当初は LED を制御するために設計されましたが、その多用途性により、サーボを制御するためのオプションとしても頻繁に使用されています。このチップは、複数のデバイスを正確かつ簡単に制御できるため、ロボット工学やオートメーションのプロジェクトで非常に人気があります。

この記事では、PCA9685 を Arduino や他のマイクロコントローラーと組み合わせて使用​​する方法を説明するだけでなく、このコンポーネントを最大限に活用するために知っておく必要がある技術的側面のそれぞれについても詳しく説明します。モーターやサーボを簡単に制御できるよう、接続方法からコードライブラリの管理方法まで解説します。

PCA9685とは何ですか?何に使用されますか?

PCA9685のピン配置

El PCA9685 は、最大 16 個の出力を管理するように設計された PWM (パルス幅変調) コントローラーで、LED ライトやサーボ モーターの制御に最適です。 I2C バス経由で通信するため、Arduino や Raspberry Pi などのマイクロコントローラーに接続するのに必要なピンは 62 つだけです。特定のアドレスを使用すると、これらのモジュールを最大 2 個まで同じ I992C バスに接続し、約 XNUMX 個の PWM 出力を制御することもできます。これは、多くのデバイスを調整して管理する必要があるプロジェクトにとって、非常に強力なオプションになります。

最も広く使用されているのは、 PCA9685 PWM 信号が必要なプロジェクトで使用されます。わかりやすい例は、PWM 信号から制御されるサーボの制御です。さらに、コントローラーの精度は次のとおりです。 12ビット、最大 1600 Hz まで調整可能な周波数を持つ非常に微細な信号を生成できます。

PCA9685の特徴と利点

の主な利点のXNUMXつ PCA9685 それは、PWM 信号を常に生成するという点でマイクロコントローラーの負担が軽減されることです。これは、メインプロセッサが他のタスクに集中できるため、多くのデバイスの制御を伴うプロジェクトで特に役立ちます。

  • 16の独立したチャンネル:16チャンネルのそれぞれが独立したPWM信号を出力でき、サーボ、モーター、LEDライトなどのデバイスを制御できます。
  • I2C制御: PCA9685 は I2C インターフェースを使用してメインコントローラー (Arduino、Raspberry Pi など) と通信し、通信に必要なケーブルは XNUMX 本のみ (SDA および SCL) です。
  • 単一バス上の複数のモジュール: 最大 62 個の PCA9685 モジュールを同じ I2C バス上に接続でき、最大 992 個の PWM 出力を制御できます。
  • 調整可能な周波数: 一般的なサーボ制御には 1600 ~ 50 Hz の周波数が使用されますが、最大 60 Hz の周波数をサポートします。

ArduinoとPCA9685間の接続

Arduino PCA9685

間のつながり PCA9685モジュール Arduino はシンプルで、I2C ピン (SCL および SDA) と電源ピンを使用して実行されます。次の表は、さまざまな Arduino モデルの一般的な接続を示しています。

ピン PCA9685 Arduino Uno/兄 Arduinoメガ Arduinoのレオナルド
GND GND GND GND
5V 5V 5V 5V
SCL A5 21 3
SDA A4 20 2

この構成では、ピンは A4とA5 または対応するプラットフォーム上の同等のデバイスは、PCA9685 モジュールの SDA (データ) ピンと SCL (クロック) ピンに接続します。さらに、特に複数のサーボを接続している場合、Arduino はサーボ モーターを適切に駆動するのに十分な電流を供給できないため、サーボ モーターに適切な外部電源を用意することが重要です。

を使用することをお勧めします 5V電源 サーボに電力を供給し、電源ピンが正しく接続されていることを確認してください。 16 個を超えるサーボを使用する場合は、電源を安定させるためにボードに 1000uF のコンデンサをはんだ付けすることもお勧めします。

コードでの設定

の PWM 出力を管理するには、 PCA9685, Adafruit が開発したライブラリが使用されます。からダウンロードできます GitHubページ。ここでは、モジュールを構成してサーボを動かす基本的な例を示します。

#include <Wire.h> #include <Adafruit_PWMServoDriver.h> Adafruit_PWMServoDriver servos = Adafruit_PWMServoDriver(); void setup() { servos.begin(); servos.setPWMFreq(60); // Configura la frecuencia PWM a 60Hz } void loop() { servos.setPWM(0, 0, 172); // Mueve el servo del canal 0 a la posición 0 grados delay(1000); servos.setPWM(0, 0, 565); // Mueve el servo a la posición 180 grados delay(1000); }

この単純なコードは、チャンネル 0 に接続されたサーボでスイープ動作を実行し、0 度から 180 度までゆっくりと動作します。機能を使用できます setPWM() PCA9685 の各出力を独立して制御します。

複数のサーボを同時に動かす

の大きな利点のXNUMXつ PCA9685 複数のサーボを同時に制御できることです。同じコード サイクル内で複数のサーボモーターを異なる位置に移動する方法は次のとおりです。

void loop() { setServo(0, 30); setServo(2, 90); setServo(4, 180); delay(1000); } void setServo(uint8_t n_servo, int angulo) { int duty = map(angulo, 0, 180, 172, 565); servos.setPWM(n_servo, 0, duty); }

この場合、という関数を定義します。 セットサーボ サーボ番号とその角度をパラメータとして受け取り、適切なパルス幅を計算し、それを目的の位置に移動します。このようにして、複数のチャンネルを簡単に制御できます。

さまざまなサーボに制限を設定する方法

すべてのサーボが 0° から 180° までの角度の値の範囲が同じであるわけではありません。場合によっては、これらの値をカスタム調整する必要があります。さまざまなサーボに対してこれらの設定を行う方法は次のとおりです。

unsigned int pos0[16]= {172, 256, 246, 246, 246, 172, 246, 200}; unsigned int pos180[16]= {565, 492, 492, 492, 492, 565, 492, 550}; void setServo(uint8_t n_servo, int angulo) { int duty = map(angulo, 0, 180, pos0[n_servo], pos180[n_servo]); servos.setPWM(n_servo, 0, duty); }

このコードを使用すると、PCA9685 に接続されている各サーボの最小値と最大値を調整できます。これは、異なる信号範囲のサーボを使用する場合に非常に役立ちます。

これらすべてを念頭に置くと、PCA9685 を使用して最初のプロジェクトをセットアップ、接続、コーディングするために必要なものがすべて揃いました。複数の自由度を持つロボットで作業している場合でも、多くのデバイスを並行して制御する必要がある場合でも、このモジュールを使用すると、それを効率的かつ正確に行うことができます。

サーボ出力または PWM 出力のいずれを使用している場合でも、PCA9685 を使用すると、マイクロコントローラーの 16 つのピンを使用して最大 XNUMX チャンネルを非常に簡単に制御できます。少しの経験と優れたコードがあれば、メイン プロセッサに過負荷をかけることなく、非常に強力なアプリケーションを作成できます。


コメントを最初に

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。