学習のゴール
GPIO、アナログ情報について学習しよう!
GPIO
端子からHigh/Low(1/0)のデータを出力したり、端子に入力されたHigh/Low(1/0)のデータを読む機能のことをポートと呼びます。
現在、ほとんどのマイコンのポートは入力と出力が兼用で、プログラムでどちらを使うか設定できるようになっています。
そのため、GPIO (General Purpose Input Output:汎用入出力ポート) と呼ばれます。
GPIOは外部との直接的な入出力ができるため、スイッチ入力やLEDの点灯以外にも、表示やキー入力などの外部機器とつなぐために使われています。
アナログ情報
私たちが暮らす世界は、明確な整数で表現できるデジタルな世界ではなく、温度や風向き速度や明るさなどの、連続的に変化するアナログな世界です。
マイコンはこれらのアナログ値(アナログ信号)を直接扱うことはできず、デジタル値(デジタル信号)だけを扱うことができます。
そのため、A/D変換器 (A/Dコンバータ)を使用して、入力されたアナログ値(電圧)をデジタル値に変換し、計算や制御に使用します。
また、D/A変換器 (D/Aコンバータ)を使用して、デジタル値をアナログ値に変換し、必要なアナログデータ(電圧)を外部に伝えます。
A/D変換
A/D変換器 (Analog Digital Converter:ADC)はアナログ信号(電圧)をデジタル信号に変換します。
この変換には2種類に動作が必要で、アナログ値をデジタル値に変換する量子化と、連続的に変化するアナログ値を一定間隔でサンプリングする標本化があります。
量子化
量子化とは、センサなどが出力するアナログ量 (電圧)をあるbit幅のデジタル量に変換することです。
このbit幅によってデジタルで表現できる精度が決まります。これを分解能といいます。
上の例では、取得した温度25℃を温度センサが電圧(2.5V)として出力し、この電圧をA/D変換器でデジタル値(2048)に変換しています。
今回のA/D変換器は分解能が12bitなので、0~4095(4096段階) の細かさでデジタル値に変換できます。
これを、16bitのA/D変換器に変えると、0~65535(65536段階) の細かさで変換できるようになり、精度が大幅に向上します。
標本化
標本化とは、連続的に変化するアナログ信号を一定時間の間隔で取得することで、連続的に変化する状態を離散化することです。
この変換の時間間隔をサンプリングレートと呼び、1秒間で何回サンプリングするかの回数(周波数:Hz)で表現します。
サンプリングレートと分解能が大きいほど元のアナログデータに近くなります。
A/D変換の方式
A/D変換の方式は、フラッシュ型、パイプライン型、逐次比較型、デルタシグマ型などいくつかあります。
マイコンで比較的使われているのは逐次比較型です。
D/A変換
D/A変換器 (Digital Analog Converter:DAC)はA/D変換とは反対にデジタル信号をアナログ信号に変換して出力する回路です。
D/A変換の精度は、分解能(ビット幅) と、変換後の信号が安定するまでの時間(セトリング時間) で決まります。
アナログ電圧でコントロールできる安定化電源に対し、D/A変換器を用いて制御する場合の例です。
最終的な出力電圧を24Vにしたい場合、D/A変換器が2.5Vを出力するようにすればいいので、2.5Vに対応するデジタル値(2048)をD/A変換器に送ります。
D/A変換では、離散値を連続状態に変換しますが、離散値の間の値は補間できないので、階段状の変化になります。
また、D/A変換する際にはセトリング時間が必要なため、実際に出力されるまでに遅れが生じます。
D/A変換の方式
D/A変換の方式にはいくつか種類があります。