PR

Arduino Servoライブラリの周波数、パルス幅を実測

記事内に広告が含まれています。

Arduino&サーボ

 Arduinoでサーボライブラリを使用したときに出力される信号の周波数、パルス幅を実測してみました。

 

 ライブラリの中身を確認するとデフォルトで周波数は20ms、パルス幅は544μs~2400μsのようです。パルス幅は

  .attach(pin番号最小パルス幅、最大パルス幅);

で任意で設定できるようになってます。

 

 パルス幅はデフォルトのまま、実際の周波数とパルス幅を実測してみました。3、5、9番 pin を使用して、各々出力幅を変えて確認してます。

  servo9.write(0); 
  servo3.write(90); 
  servo5.write(180);

 こんな感じでまずは「.write」を使って、それぞれ 0、90、180 の値で出力してます。

 

▼実測結果です▼
サーボパルス幅実測

  PICKit3 のロジアナツールを使用してます。周波数はきっちり20ms、パルス幅は最小「0」で540μs、中央「90」で1470μs、最大「180」で2400μsと、当たり前ですがほぼ想定通りの出力となりました。

 

 次に「.writeMicroseconds」を使ってパルス幅を直接記述したものを測定してみました。

  servo3.writeMicroseconds(750); 
  servo5.writeMicroseconds(2900); 
  servo9.writeMicroseconds(300);

 このような感じで、わざと設定されている範囲外の値を出力させてみました。(.attachでパルス幅の設定はしないでデフォルトのまま行ってます)

 

 結果、3番pinは指示通り750μsのパルス幅を出力。5番、9番pinからは記述の値が無視されて、それぞれ540μsと2400μsが出力されました。

 

 今回はサーボライブラリの記述で少し気になることがあり、実際に実測して確認してみました。ほぼ想定通りの結果でしたが、すっきりしました。

コメント

タイトルとURLをコピーしました