連載
» 2018年12月14日 09時00分 公開

製造業のIoTスペシャリストを目指そうSeason2(4):IoT向け組み込みシステムで活躍するワンボードマイコンの構成とMCUの入出力 (1/2)

製造業でIoTを導入したプロジェクトを成功させるには、幅広い知識が必要です。今回は、IoTのエンドデバイスとしてよく用いられるワンボードマイコンをテーマに、その構成について取り上げると同時に、出題内容を通じてMCUの入出力に関する理解を深めます。

[IoT検定制度委員会,TechFactory]

組み込みシステムの構成

 IoT(Internet of Things)のエンドデバイスには、組み込みシステムが用いられます。特にセンサーやアクチュエータを動作させるために「Arduino」のようなワンボードマイコンが活躍します。ここではスイッチやLED、温度を測るサーミスターやモーター駆動回路を接続したワンボードマイコンの構成について見ていきます(図1)。

図1 ワンボードマイコンの構成例 図1 ワンボードマイコンの構成例

 ワンチップのLSIにCPUやROM、RAM、そしてインタフェース回路などを集積したMCU(Micro Controller Unit)を用いたワンボードマイコンは、GPIO(General Purpose I/O)と呼ばれるI/OポートにスイッチやLEDが接続され、デジタル信号によって動作します。

 それぞれのI/Oポートは内部メモリの1bit(ビット)に対応し、ポートごとに入力あるいは出力を設定します。ボリュームやサーミスターなどはアナログの電圧なのでアナログ入力用のI/Oポートを用い、AD変換器で電圧をデジタル値に変換します。ADCやA/Dなどとも呼びます。その他にRS-232CやUSB接続のためのシリアル通信用にUARTが用いられます。シリアルI/Oポートはデジタル信号です。

アナログ電圧の入出力

 Arduinoのアナログ入力では、10bit量子化や約10kHzサンプリング周波数などが用いられます。8bitならメモリの1つの番地に格納できるのですが、256段階の分解能では粗過ぎるため10bitの1024段階がよく用いられます。

 アナログの出力は、PWM(Pulse Width Modulation:パルス幅変調)に対応したデジタルのI/Oポートが用いられます。PWMは一定周期のパルスでLow幅、High幅の比を変更して出力波形を発生する方法のことです。PPG(Programmable Pulse Generator Timer)は、任意の周期およびパルス幅の波形を出力するパルス発生器のことです。PPGデバイスでPWMを行うことができます。デジタル出力であるGPIOの中で、PWMに対応したポートだけが疑似的なアナログ電圧を出力できます。

 PWM対応のI/Oポートは、パルスのONとOFFの比(デューティー比)を調節することで、平均電圧の可変を行います(図2)。パルスの電圧自体は5Vなどに固定されているのですが、デューティー比を変えることで、0Vから5Vまでの平均電圧を得ることができます。パルスが高速に繰り返すことで、LED接続した場合でもちらつきを感じることはありません。デューティー比を50%に固定し、周波数を変化させれば、ドレミなどの音階を生成することもできます。その場合は、圧電スピーカなどを接続します。

図2 デューティー比の例 図2 デューティー比の例

 以下の回路図(図3)は、Arduinoのアナログ入力端子にCdsセルを接続し、PWMに対応したI/OポートにLEDを接続しています。これで周囲が暗いほどLEDを明るく点灯させる制御が可能です。

図3 暗くなるとLEDを点灯させるArduinoの回路例(A0ピンはアナログ入力。11番ピンはPWM対応) 図3 暗くなるとLEDを点灯させるArduinoの回路例(A0ピンはアナログ入力。11番ピンはPWM対応)

LED駆動回路とモーター駆動回路

 MCUの中に含まれるPWM回路はあまり大きな電流を流せないので、I/Oポートにはトランジスタなどの増幅回路が用いられ、LED程度であれば駆動可能です。ただし、モーターを駆動できるほどの電流は流せないので、モーター駆動用のドライブICやトランジスタ回路を外付けします。

PWM回路とLED駆動回路モーター駆動回路Hブリッジ回路 図4(左) PWM回路とLED駆動回路/図5(中央) モーター駆動回路/図6(右) Hブリッジ回路

 手軽に扱える「Arduino UNO」の仕様を見ると、1つのポートの最大電流は20mAとなっています。LEDの順方向電流(点灯状態)は20mA程度なので、そのままでも駆動できますが、1kΩ程度の電流制限抵抗を取り付けて流れる電流を制限することで、安全性を確保します。

 これに対し、モーターは小さくても0.2A程度の駆動電流が必要なので、Arduino UNOで直接動かすことはできず、トランジスタやFETによるモーター駆動回路を設ける必要があります。モーターは逆起電力を発生するので、トランジスタなどの破壊を防ぐためにコイルと並行してダイオードを取り付けます。このダイオードはフライホイールダイオードや還流ダイオード、回生ダイオードと呼ばれます。モータードライブ用ICには、正転と逆転の切り替え機能のHブリッジ回路が付くものもあります。Q1とQ4のトランジスタをONにすると青色の向きに、Q2とQ3をONにすると赤色の向きに電流が流れるので、モーターの正転と逆転を切り替えられます。

今回の問題

 それでは、IoT関連の知識・スキルアップに役立つ問題をお届けします! 今回はIoT検定スキルマップの「デバイス−制御装置」に該当する設問です(※)。

問題:

Arduinoなどで用いられるI/Oポートに関する説明として最も“適切なもの”を、以下の選択肢から1つ選びなさい。

  1. アナログ用のI/Oポートは、1つのポートを切り替えて入力や出力を行う。

  2. GPIOと呼ばれるデジタルのI/Oポートには、入力専用と出力専用のポートがある。

  3. デジタルのI/Oポートで、ほとんどのモーターを接続して駆動できる。

  4. PWMに対応したデジタルのGPIOポートは、疑似的なアナログ電圧を出力できる。

※本連載の設問が実際のIoT検定にそのまま出題されるわけではありません。


       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

Loading