banner
ニュース センター
優れたサービス

見逃したもの: 16 個のサーボ用に再利用された LED ドライバー

Dec 04, 2023

私は小さなペトイ犬ロボットの後ろにある電子機器を見ていました ()、今まで気づかなかったチップ、NXPのPCA9685に気づきました。

さらに詳しく調べてみると、Adafruit はホビー サーボに位置を指示する古典的な 1.0 ~ 2.0ms パルスの作成にも Adafruit を使用していることに気付きました。

I2C 入力があり、最大 16 個の pwm チャネルを作成できる、なんと便利なデバイスでしょう。

NXP は、ディスプレイ用の 4 色のバックライトの赤、緑、青、琥珀色の LED を制御するためにこれを作成しました。

NXP の PCA9685、16 個の PWM プットプット チャネルの 1 つを表示

各 PWM は 12 ビットなので、4,096 ステップ (0% および 100% も可能) で、すべてのチャネルは 24Hz ~ 1.5kHz のプログラム可能なベース周波数を共有します (内部発​​振器は約 25MHz で、最大 50MHz を外部から適用可能)。

余談ですが、出力はオープンドレイン(最大5.5V)またはトーテムポールに設定できます。 能力はソース10mA、シンク25mAです。

2.3 ~ 5.5V の電源が必要で、入力は 5.5V 耐性です。

これをサーボ (おそらく Adafruit?) の信号源にしようと最初に決めたのが誰の賢い人なのかはわかりませんが、16 個のサーボを 1 つの I2C バスで制御し、1MHz で動作させるという素晴らしいアイデアです。

各出力には、名目上オンタイムとオフタイムという名前の 2 つの 12 ビット レジスタがありますが、実際には、その名前が示すよりも複雑な方法で、固定の 4,096 カウントのタイム フレームと対話し、すべてのチャネル間の相対位相も制御します。オンとオフの時間として - PCA9685 データシートの第 7.3.3 章から始めて、しばらく頭を混乱させてください。

個別のビットで各チャネルを完全にオフまたは完全にオンに設定します。また、グローバル コマンドを使用してすべてのチャネルをオンまたはオフに設定する方法もあります。 各出力には独自の出力反転ビットもあります。

出力周波数は 8 ビット プリスケーラーによって設定され、25MHz/4096/プリスケーラーの周波数を生成します。ただし、知りたい理由により、4 分周以下に設定できないため、設定は ÷1、÷2 になります。または ÷3 は自動的に ÷4 に置き換えられます。 ÷5以上はすべて可能です。 デフォルトでは ~200Hz を生成します。

私たちにとって幸運なことに、AdaFruit はチップをマルチチャンネル サーボ ドライバーとして制御するための Arduino ライブラリを作成しました。非常に多くの優れた Arduino ライブラリを提供してくれた Limor Fried 氏に感謝します。また、CircuitPython と Python にも同様のものがあります。

ところで、ロボット犬 Peroi Bittle に興味がある場合は、ここで見つけてください。 基本的には、適切な周辺機器を備えたカスタム Arduino-esk ボードである Arduino 電子機器を備えています。

NXP の PCA9685、16 個の PWM プットプット チャネルの 1 つを表示スティーブ・ブッシュ