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が出力されました。
今回はサーボライブラリの記述で少し気になることがあり、実際に実測して確認してみました。ほぼ想定通りの結果でしたが、すっきりしました。
コメント