岩の製作記

作ったものを適当に記録します

マイコン無しでPIDライントレーサを作る

こんにちは。趣味で電子工作をしています岩です。マイコン不使用・アナログ縛りでPID制御ライントレーサを作ってみたので、詳細を以下に記します。

きっかけ

学校の講義でオペアンプによる加算・微分積分回路を学び、それが出来るならPID制御も出来るよね?となったのがきっかけ。

構成

センサ値を一つにまとめてPID制御器に入力し、出力を左右のモータの差動に変換して曲がり具合をコントロールします。モータの制御は単純なトランジスタ増幅を用いても良かったのですが、何となく試してみたかったので三角波比較PWMを実装しました。PWMしてるならデジタルじゃね?っていうツッコミは無しでお願いします。Duty比が連続量だからまあアナログと言っていいでしょう。

全回路図

解像度が足りるか分かりませんが、一応全回路図です。以下詳しく見ていきます。

入力部

フォトリフレクタの出力を内側2つずつ、外側2つずつでそれぞれ差動増幅し、外側に2倍の重みをつけて加算することで1本のライン位置出力を得ています。差動増幅部にオフセット調整用のボリューム、加算部に入力感度調整用のボリュームを設けています。

PID制御部

分かりやすさを優先し、P項、I項、D項を別々のオペアンプで制御するようにしました。別々に制御出力を得た後、加算回路でP, I, Dを合計します。

P項

ただの反転増幅回路です。

I項

積分回路のコンデンサに並列に抵抗を挿入し、積分値が減衰するようにしました(ローパスフィルタ)。積分係数とローパスフィルタのかかり具合をボリュームで調整できるようにしました。

D項

増幅率の制限と発振防止の目的でR14とC6を挿入しています。微分係数をボリュームで調節します。

モータパワー計算部

制御器の出力を左右のモータの差動に変換する部分です。制御出力を反転させたもの用意し、非反転・反転出力それぞれにモータパワーを決定する電圧を足します。これを左右のモータ出力を表す電圧とします。

三角波生成部

コンパレータと積分回路で三角波を生成します。発振周波数は約1kHzにしました。各定数は手持ちの抵抗の中から綺麗に発振するものを選びました。

PWM生成、モータードライブ部

コンパレータ(オペアンプで代用)に先程生成したモータパワー出力と三角波を入れ、比較してPWM出力を得ます。これを各モータに与えます。 オペアンプの出力ではFETを直接駆動できないので、プッシュプル回路を挟んでゲートドライバとしています。

中点電位生成部

制御で使用する中点電位(仮想GND)を生成する部分です。抵抗分圧をボルテージフォロワに入れて中点電位としています。LM324(4回路入オペアンプ)を使う関係でオペアンプが2個余っていたので、ボルテージフォロワを抵抗を介して2個並列接続としました。出力コンデンサの値は何も考えず手持ちが多かったものを使いました。

電源

電源は手軽なものを使いたかったので、制御電源は9V電池(006P)1本、動力電源は単4電池2本としました。

ハードウェア

ハードウェアは将来的な頒布等も想定してなるべくプリント基板と既製品を使って作りました。秋月B基板サイズのプリント基板にタミヤのダブルギヤボックスを載せ、タミヤトラックタイヤを取り付け駆動部としました。ここから六角スペーサで高さを調整してセンサ基板を接続し、基板両端にタミヤボールキャスターを取り付けて前輪としました。また六角スペーサで駆動部の上に基板を縦積みして制御回路と単四電池を載せました。制御基板とセンサ基板はピンヘッダで繋ぎ、圧着の手間をなくしました。最後に余ったスペースに006Pをねじ込んでハードウェア完成としました。製造コストを抑えるため全ての基板を100mm角以下とするのにかなり苦労しました(特に電池の置き場)。

動作

PID制御が効いてかなり滑らかな走行ができています。このコースではこの速度が安定して走行できる限界でした。 三角波比較PWMの動作です。綺麗な三角波が出せています。アナログな回路の検証にはやはりアナログなオシロスコープが良いですね。

あとがきと展望

いろいろ急ぎで作ったので、定数とかはかなり適当に決めています。もし何かの参考にしていただくことがあればご注意ください。 オペアンプがあればPIDができる、オペアンプトランジスタで作れる、ということで、次はIC禁止PIDライントレースでしょうか。作るのはいつになるやら...