みなさん,こんにちは
おかしょです.
地磁気センサーのキャリブレーションを自動で行うために,サーボの角度をフィードバックすることができるサーボ「Parallax Feedback 360°High-Speed Servo」を購入しました.
こちらはArduinoのサンプルプログラムが見つからなかったので,データシートを読んで動かしてみることにしました.この記事ではデータシートに書かれている情報を解説していきますので,参考にしてみて下さい.
この記事を読むと以下のようなことがわかる・できるようになります.
- データシートの読み方
- フィードバックサーボの使い方
- フィードバックサーボを動かすプログラム
この記事を読む前に
この記事で解説する角度フィードバックサーボではなく,普通のサーボをArduinoで制御する方法を知りたい方は以下の記事で解説しているので,そちらを参照してください.
データシートの読み方
データシートはこちらから入手できます.
データシートは電子工作をする人にとって避けては通ることのできないとても大きな壁です.この壁を乗り越えることができずに,電子工作を止めてしまう人がたくさんいます.
私が所属する研究室でも,多くの学生がデータシートに苦戦をして研究に遅れが生じているのを見てきました.
そこで,データシートの読み方を解説したいと思います.
結論,『頭から読んでいくしかありません.』
これに尽きます…
データシートを読もうと決意した人はおそらく,データシートを読む前に先人の知恵がネット上に落ちていないか探し回った方だと思います.そして,先人の知恵が見つからずデータシートの壁に立ち往生をしているのだと思います.
そのような方々には申し訳ないのですが,データシートを読むコツなんてものはありません.強いて言えば,英語の勉強をするぐらいですかね
データシートのほとんどは英語で書かれていて,これがまず第一の壁として立ちふさがっています.
そして,さらに専門用語が盛りだくさんなので初心者には大変,高くて分厚い壁に感じると思います.
ただ,一つでもデータシートを読み切ることができて,自分でプログラムを書くことができれば次のデータシートの壁が薄くなります.壁の高さはあまり変わりませんが少し薄くなります.
そのため,壁が急に崩れたりして短時間でデータシートが読破できることがあります.
なので,データシートで苦戦している方は「次のデータシート―は少し楽にすることができる」というのをモチベーションにして頑張って読んでください.
そして,専門用語は検索すれば出てきます.専門用語の解説にもわからない専門用語があれば,またその専門用語を調べてください.それでもわからなければ,一日置いてみましょう.明日になれば,頭が整理されて急に理解できるようになります.
私はこれまでに何度もそのような体験をしてきました.今回解説するサーボのデータシートも1日では理解できなかったのですが,次の日になったら急に理解できるようになり,こうしてブログで解説をしています.
なので,データシートの壁で立ち往生している皆さん,頑張ってデータシートを頭からしっぽまで読み込みましょう.
基本情報
それでは今回使用するParallax Feedback 360° High-Speed Servoの基本情報から説明していきます.
このサーボはエンコーダと呼ばれる角度を測定するセンサーが内蔵されています.
また,360°連続で回転させることが可能なので,車型のロボットの車輪部分としても使用することができます.サーボの角度がわかるので,その情報から走行距離の算出もできそうです.
サーボから伸びている線は黒・赤・白・黄の4本です.
黒はGROUND,赤は電源,白は制御用信号,黄は角度情報を出力します.
電源は5Vから8.4Vが必要で,6Vが推奨されています.
制御について
次に,このサーボを制御するために必要な情報を説明します.
先程も述べましたが,このサーボを制御するには白い線に制御用の信号を流す必要があります.この制御用の信号は20ms周期で流す必要があります.
サーボの制御は制御用信号としてHIGHにしている時間が20msの間にどれくらいあるかによって行います.
このHIGHになっている時間はデータシートではtControlと表されています.
このHIGHにしている時間と回転数の関係は以下のようになっています.
\begin{eqnarray}
&&tControl&<&1280 &\omega&=-140\\
1280&\geq& tControl&<&1480 &\omega&=0.7\cdot tControl-1036\\
1480&\geq& tControl&\geq& 1520 &\omega&=0\\
1520&<& tControl&\geq&1720 &\omega&=0.7\cdot toControl-1064\\
1720&<&tControl&& &\omega&=140\\
\end{eqnarray}
\(\omega\)はサーボの角速度を表していて,単位はrpm(1分当たりの回転数)です.
この通りに制御用信号を送ることで,サーボの制御ができます.
制御用信号は20ms周期で送るので,私はTimerを使って送るようにしようと思います.
角度のフィードバックについて
このサーボの特徴は何といっても角度がフィードバックできることです.そのため,これ一つで正確な角度に制御することが可能です.
データシートを見ると,正確な角度を取得するのにも,少し計算が必要なようです.
サーボから伸びている黄色い線を介して,角度の情報が送られてきます.このとき送られてくる情報が角度を表しているのであれば簡単なのですが,そうもいきません.
先程の制御信号の時と同様で,1周期あたりのHIGHになっている時間によって角度情報に変換する必要があります.つまり,黄色い線から送られてくるのはHIGHかLOWの2種類しかないみたいです.
そして,この周期はデータシートを見ると1/910Hzとなっています.おかしいです.
1/910Hzは時間にすると910秒ということになります.60で割ると約15分ということになります.周期が15分とは使い物になりませんね.
しかし,データシートの続きを見ると約1.1msの周期であると書かれています.つまり,1/910Hzではなくて910Hzということになります.
私はこれまでにいくつかデータシートを読んだことがあったのですが,データシートに間違いがあるなんてことはありませんでした.これではこのデータシートを信頼しにくくなってしまいますね.まあ,すぐに間違いに気づけたので良しとしましょう.
さて問題のHIGHになる時間と角度の関係ですが,どうやらデューティ比から計算するようです.
デューティ比というのは1周期においてその現象が占める割合のことを言います.つまり,HIGHになっている時間と1周期の時間(約1.1ms)の比を使います.先程の制御ではHIGHになっている時間から直接計算できましたが,角度に変換するにはひと手間必要なようです.
このデューティ比は以下の式によって求められます.
$$ デューティ比=\frac{HIGHになっている時間}{1周期にかかる時間} $$
このデューティ比はサーボが1回転する間に2.9%から97.1%の値をとります.
サーボの角度が0°でもデューティ比は0%にならないで2.9%になり,360°でも100%にはならないということです.
これを使って角度は次のような計算をすることで求められます.
$$ angle=\frac{デューティ比\times 100-2.9}{97.1-2.9+1} $$
この式おかしいです.この式もデータシートから持ってきたのですが,おかしいです.
なんで分母に+1している??
数式の意味を考えると分母の+1は確実に不要です.+1があると,角度の情報がおかしくなってしまいます.
先程,周期のところでも間違っていたことから,またもやデータシートが間違っているのだと思われます.
私が思う正しい角度への変換式は以下になります.
$$ angle=\frac{デューティ比\times 100-2.9}{97.1-2.9} $$
まあ,分母の+1がなくなっただけなんですけどね.この式に\(2\pi\)を掛ければラジアンで,360を掛ければdegreeで求めることができます.
まとめ
この記事では角度のフィードバックができるサーボのデータシートを解説してきました.
このデータシートは他のセンサーなどのデータシートに比べると,短いため読みやすいと思います.データシートを読むのに苦戦している方は,この記事とサーボのデータシートを照らし合わせて読んでみると勉強になると思います.
また,このデータシートでは間違いが2つ見つかりましたが,データシートにはこのような間違いはめったにありません.何かおかしいなと思っても,すぐにデータシートのせいにするのではなく,まずは自分を疑うようにしましょう.
続けて読む
この記事ではデータシートの解説を行いました.
以下の記事ではこのフィードバックサーボから角度を取得する方法を解説しています.
プログラムも公開しているので,参考にしてください.
Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.
それでは最後まで読んでいただきありがとうございました.
コメント
[…] 以前,Parallax Feedback 360°High-Speed Servoのデータシートの解説を行いました. […]
[…] 以前,タイトルにもある角度をフィードバックすることのできるサーボのデータシートを解説しました. […]
[…] Parallax Feedback 360°High-Speed Servoという角度フィードバックするサーボのデータシートを解説します […]