マイコン制御基礎の次

マイコン制御基礎の次(4)

モータノイズの傾向と対策とは?

みわよしこ(執筆協力:山本栄一、小椋秀一、宇野雄騎)  2009/9/25

自作のマイコン制御プログラムで実際にモノを動かしてみよう! 「マイコン制御基礎」第3シリーズでは、LEDの点滅とは一味違う、“ボクサーロボットの招き猫化”にチャレンジする。(編集部)

- PR -

 前回「スイッチを押したら何かが起こる!?」では、『スイッチが押された』をマイコンの入力に結び付けるにはどうすればよいかを取り扱った。次に、その入力を出力に結び付けてみよう。

 今回は出力としてモータを回したい。そのためには、まず、“モータノイズ”という生々しい存在を乗りこなす必要がある。

前回までのおさらい

 前回の公開から少し間が空いてしまったので、あらためて本連載の目的について確認しておこう。

 本連載の目標は、安価に入手できる小学生向けロボット工作キット「2チャンネル リモコン・ボクシングファイター(以下、ボクサーロボット)」をマイコン制御することで“招き猫”化(画像1)し、読者の皆さんが求めるだけの福を招くことである。

画像1 第3シリーズのゴール「招き猫」
※画像をクリックすると動画が再生されます(aviファイル)

関連リンク:
2チャンネル リモコン・ボクシングファイター
http://www.tamiya.com/japan/products/71110boxing/

 お分かりのとおり、このボクサーロボットは招き猫化するために作られたものではない。せわしなくパンチを繰り出しながら走り回るだけの単純なオモチャである(画像2)

画像2 説明書どおりに組み立てたボクサーロボットの様子
※画像をクリックすると動画が再生されます(aviファイル)

 本連載では、ボクサーロボットの動作を制御して「あらかじめ決まった回数だけアッパーカットを繰り返して停止する」を行うことで、招き猫化を行うのだが、そのためには、パンチング動作を制御可能な速度に抑えなくてはならない。このため、連載第2回「ロボットの招き猫化計画始動 −電源とギアの準備−」では、ギアを交換して制御可能な速度に抑え、さらに腕の上下動を感知できるようにマイクロスイッチを設置した。

 そして、連載第3回「スイッチを押したら何かが起こる!?」では、このマイクロスイッチが「押された」をマイコンの入力にするために周辺回路を設けた。

 これまでの作業により、

「マイクロスイッチが何回押されたかをカウントして、プログラムで決めた回数だけの腕の上下動を行う」

の準備ができたわけだ。次に必要なのは、腕の上下動を行うことそのものの制御である。

今回の目的

 ボクサーロボットの腕の上下動は、本体内のモータの回転によって行われている。モータの回転をカムによって上下の動きに変えることで、ロボットの腕が上下するという単純な仕組みである。腕の上下動の制御を行うため、連載第2回ではマイクロスイッチを設置し、腕が上がり切ったところでそれが押されるようにした(画像3)

画像3 マイクロスイッチの形状と大きさ(左側の白いものは、マイクロスイッチが押されるときの衝撃を緩和するために巻いたサージカルテープ)

 このマイクロスイッチの状態が、押された→押されていない→押されたと変化すると、ボクサーロボットの腕は上げられた状態から下がって上がり、「招き」動作を1回行うことになる。マイクロスイッチの状態の変化にモータの回転を対応させると、「招き」動作の1回は、

マイクロスイッチが押されるモータが回転しはじめるマイクロスイッチが再び押されるモータの回転が止まる

によって実現される。

 このために必要なのは、「マイクロスイッチが押されている(押される)」をマイコンに入力させ、「モータを回転させはじめる」「モータの回転を止める」という出力に結び付けることである。

モータを制御するとは?

 では、モータの回転はどのようにすれば制御できるのであろうか? マイコンの出力ピンをモータに直結できるのであれば、LEDフラッシャのLEDと同じように制御できるはずである。

 しかし、モータを回転させることとLEDを点灯させることの間には、大きな違いがある。モータを回転させるのに必要な電流値は、今回のボクサーロボットに用いる工作用の小さなモータでも200mA程度となり、高輝度タイプでもせいぜい数十mA程度のLEDとはけたが異なる。マイコンの出力ピンで直接扱うことのできる電流値は、大抵は20mA程度である。これでモータを駆動しようとしても成功しないであろう。

 このため、モータはマイコンとは別の電源で駆動し、ON/OFFだけをマイコンで制御するのが一般的である。本連載では、「モータには十分な電源が供給されていることにする」という安全の下に工作を行うため、モータには専用のモータ電源を用意することにした。電源キットについては連載第2回の「何はなくとも、まず『電源』」で解説している。

 そのモータ電源をマイコンで制御するために、マイコンの出力ピンにトランジスタを利用した回路を設ければ、ボクサーロボットの招き猫化は簡単に終了することになるのだが、そこには“ノイズ”という壁が立ちはだかる。

これがモータノイズだ!!

 ノイズ対策を行うには、実際のノイズがどのようであるかを見てみることが不可欠である。本連載では日本テクトロニクスのご好意で貸し出しを受けた、オシロスコープ「TDS2024B(画像4)により、実際のノイズ波形を観察しながら対処していった。

画像4 日本テクトロニクスのオシロスコープ「TDS2024B」

 まず、今回のモータを回転させたとき、モータの電圧がどのようになるのかを画像5に示す。

画像5 モータ回転時の電圧の様子

 一見して、いわゆる「美しい」波形ではないことは明白であろう。ノイズだらけである。波形の見た目がいかに汚かろうが、目的が果たされれば問題は何もない。本連載であれば、ボクサーロボットの招き猫化に成功し、金・仕事・モテ・そのほかもろもろの福を招くことができればよい。しかし、このモータノイズは「招き猫を完成させて福を招く」を阻害するに十分なパワーを持っている。

 表示されている波形は、横軸が時刻、縦軸が電圧である。横軸の1目盛りは2.50ms、縦軸の1目盛りは1Vである。確認してみると、おおむね1.0msの間に1〜2回程度、1Vを超えるスパイクが出現している。スパイクは大きいときには5Vほどにも達する。

 本連載では、「ATmega16」(Atmel社)を1kHzで動作させている。1.0msの間に1〜2回現れる大きなノイズを、「クロックと連続動作時間に対して、無視できるほど長い間隔である」と考えるわけにはいかない。

 また、ATmega16の動作電圧は5Vである。例えば、−5Vのモータノイズが電源に回り込んだらどうなるか? 電源電圧は0Vまで低下してしまう。そうなると、当然プログラムの動作は停止し、リセットが行われてしまう。連続動作を前提とするパソコンの場合はUPSを設置することで、突然の停電などによる電圧低下からパソコンを防護できるが、マイコン回路にもこれと同じような仕組みが必要となる。

関連リンク:
連載記事「読んで理解する ノイズ・EMCの超基礎」
http://monoist.atmarkit.co.jp/feledev/index/emc.html

>>次ページでは、モータノイズ対策について紹介する!

  • 連載バックナンバー
  • 全記事インデックス
  • 組み込み開発トップ
  • MONOistトップ

ホワイトペーパーTechTargetジャパン

メールマガジン

スキルアップ/キャリアアップ(JOB@IT)

スポンサーからのお知らせ

Windows Embeddedコーナー

Windows Embedded
Windows Embedded専門コーナー。Windows Embedded StandardやWindows Embedded CEをはじめとする「Windows Embedded」ファミリの最新動向や技術情報をお届けします!!

Androidコーナー

Android
Android専門コーナー。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報がここに集結!!

@IT MONOist 求人情報