UNO R4でサーボモータがカクカクする問題とライブラリの更新
Arduino UNO R4 ユーザーの皆さん、サーボモータ用ライブラリ が 2024年6月23日 に更新されたのって、知ってました? 私はつい最近まで知りませんでした。
この記事 で「なんかカクカクするな?」とは思っていましたが、調べてみるとライブラリの UNO R4 用のコードに バグがあり、2024年1月9日 に 修正された ものの、2024年6月3日の IDE 2.3.2 リリース時に IDE 本体には取り込まれず、ライブラリ単独での更新となりました。
サーボモータ用ライブラリの更新
ということで、とっととライブラリマネージャから最新の 1.2.2 に更新しましょう!
修正前後の比較
サーボモータ用ライブラリのバージョンは、修正前が 1.2.1、修正後が 1.2.2 で、次の映像は修正前後の比較です。
明らかに修正前はカクカクしてますよね。参考までに比較に用いたコードを載せておきます。
サーボモータのテスト用コード
バグの概要
2023年9月に出された プルリク によると、RA4M1 マイコンのタイマの使い方がバグっていて、Servo.write()
または Servo.writeMicroseconds()
からの PWM 出力が 100μs ごとの階段状にしか変化せず、カクカクしていたのでした。
先に挙げた映像は、分かり易いよう PWM 出力の ON 時間を 5μs ごとに上げているのですが、修正前は20回に1回しか変化していないことになります。
ところで…
手持ちのサーボモータは SG90 というマイクロサーボですが、0°〜 180°に対応する1サイクル 20ms 当たりの ON 時間が 500μs 〜 2400μs というよくある仕様ではなく、500μs 〜 2500μs という謎仕様!のモノです。コピー品なのかもしれません。
まぁそれは良いとして、サンプルスケッチ の Servo.attach()
は 544μs 〜 2400μs がデフォルトのデューティ仕様となっているので、ちゃんと仕様に合った設定をしましょう。