発行済み 2026-02-13
こんな状況に遭遇したことはありませんか?サーボとても喜んで、それを動かしたいと思ったのですが、その結果、大量のコードを書くことになり、サーボ動かなかったか、それともけいれんのように震えましたか?心配しないでください。これはおそらく私が PWM (パルス幅変調) を理解していないからです。簡単に言うと、PWM はステアリング ギアに送信される特定の「信号」のようなものです。パルスの幅を変えることで、「この角度に向けて」または「この角度に向けて」と指示します。今回はこの「秘密の信号」を徹底的に理解して、ステアリングを素直に操れるようにしていきます。
サーボを指定した角度に回転させたい場合、コアは 20 ミリ秒 (ms) の周期で PWM 信号をサーボに送信し、パルス幅である High レベルの期間を調整します。一般に、1ms のパルスは -90°に対応し、1.5ms は 0°に対応し、2ms は +90°に対応します。
コードでは、この数十マイクロ秒を手動でカウントする必要はありません。ほとんどの開発ボード (など) には、既製のライブラリ関数が備わっています。たとえば、サーボ.hライブラリ、必要なのは次のことだけです.write(90), すると、対応するパルス幅が自動的に計算され、信号が出力され続け、サーボは着実に90°まで回転します。
初心者にとってジッターは間違いなく最も迷惑なものです。最も考えられる原因は、サーボへの電流供給が十分でないことです。サーボは回転時に比較的大きな電流を必要とします。開発ボードの 5V ピンを直接使用して電源を供給すると、電圧が不安定になりやすく、信号が混乱してサーボが動き始めます。この時、サーボ用の外部電源(バッテリー数個など)を別途用意し、その電源のアース線を開発ボードのアース線に接続すれば、基本的に問題は解決します。
もう 1 つの一般的な原因は、信号ライン上の干渉です。接続ラインが非常に長い場合、またはモーターや変圧器などの強力な電気機器が近くにある場合、干渉信号が混入します。解決策は、デュポン製のできるだけ短いラインを使用するか、サーボ信号ラインを干渉源から遠ざけることです。
サーボの性能に最も関連する PWM パラメータは、周波数、デューティ サイクル、分解能の 3 つです。サーボが必要とするPWM周波数は20ms周期の50Hzに固定されており、ランダムに変更することはできません。
デューティ サイクルは、サイクル全体に対するハイレベル時間の割合です。たとえば、2ms の高レベルでは、デューティ サイクルは 10% になります。この比率を変えることでサーボの角度を調整します。解像度は、コントロール パネルが 1 つのサイクルをいくつの部分に分割できるかを示します。たとえば、8 ビットの解像度は 256 の部分に分割されます。解像度が高いほど、フレームからフレームへ飛び移る感覚がなく、サーボの回転がよりスムーズかつ正確になります。
初めてコードを書き始めるときに最もよくある間違いは、初期化を忘れることです。ただ書いただけです.(9)、書き忘れていましたが、設定()機能が間違っているか、ピン番号の書き込みが間違っていて、当然サーボは応答しません。コードを必ずチェックして、サーボ オブジェクトが実際に接続したピンに正しく接続されていることを確認してください。
もう 1 つの落とし穴は、time 関数に関するものです。 「最初に90°回転し、2秒待ってから0°回転」を実現したい場合は、あまり使用しないでください。遅れ()でのためにループを実行して低速回転を実現します。そうしないと、プログラム全体が停止してしまいます。正しいアプローチは、()タイミングのための関数、または使用。書く()角度値を徐々に増加させるノンブロッキング方式を採用しているため、サーボはスムーズに移行しながら他のタスクを処理できます。
ロボットのアームを作り、同時に複数のサーボを制御する必要がある場合、ピンを1つずつ接続するだけでも良いのですが、ピンのリソースを大量に消費し、コードを記述するのが非常に複雑になります。より良いオプションは、このようなサーボ ドライバー ボードを使用することです。
2本の信号線(I2Cプロトコル)を通じて最大16個のサーボを制御でき、各チャンネルのパルスを独立して調整できます。コードでは、次のような対応するライブラリ関数を呼び出すだけで済みます。PWM.(0、0、300)、チャネル 0 のサーボを制御します。これにより、メイン制御ボードが解放され、コード構造がより明確になり、数十のサーボを簡単に制御できるようになります。
コードが書かれた後、それが正しいかどうかをどのようにしてすぐに知ることができるでしょうか?最も単純なことは、「スイープ レッグ」プログラムを作成することです。サーボを 0° から 180° までゆっくりと回転させ、再び元に戻すと、サイクルが継続します。回転中に遅延やジッターがなく、角度範囲が正確であれば、基本的なハードウェア接続とコード ロジックが基本的に正常であることを意味します。
️ 具体的な手順は非常に簡単です:
1. で設定()、指定されたピンにサーボを接続します。
2. でループ()、最初に使用しますのためにループして角度を 0 から 180 まで増加させ、毎回 1 度ずつ増加し、小さな遅延を追加します。
3. 別のものを使用するのためにループを使用して角度を 180 から 0 に戻し、遅延も追加します。
サーボがスムーズに前後に振れる様子を目で見ると、直接斜めに固定するよりも達成感があり、PWM制御の本質を理解するのにも役立ちます。
これを見れば、PWM を使用してサーボを制御する方法がよくわかるはずです。急いで試してみてください。あなたのプロジェクトでサーボが使用されている場合、最大の悩みは電源の問題ですか、それともマルチチャンネル制御のコーディングだと思いますか?コメント エリアであなたの意見を共有することを歓迎します。また、「いいね」を押して、この有益な情報を必要とするより多くの友人と共有することを忘れないでください。
更新時間:2026-02-13