製品紹介 カスタマイズ パーツ販売 共同開発 技術サポート 技術情報 お問合せ 会社案内

AD変換

 ここでは、AD変換について説明します。AD変換は電圧(アナログ値)を 数値(デジタル値)に変換する機能です。なぜこの機能が必要か?といいますと、 センサーの多くは電圧で出力します。たとえば気圧計は、気圧の変化を 電圧の変化に変換したり、加速度計は加速度の大きさを電圧の変化に 変換したり。運動を制御したい場合、このセンサーの値をプログラムのなかで 使いたくなります。でも、電圧のままではプログラムのなかで使えません。 これをプログラムのなかで使えるようにするのが、AD変換です。 デジタルの電圧計だと思ってください。

 ここでは、センサーとしてAP-SENSを使用し、 CPUはsample1, sample2と同様に、AP-CORE-A を使います。そして下図のように、50HzでAD変換を行い、加速度計の値 (Ax、Ay、Az)をPCに送信し、ターミナルソフトに表示します。 シリアル通信と50Hz割込みを使用しますので、sample1, sample2をまだ実行されていない場合は、先に機能確認 されることをお勧めします。


ハードウェア接続

 今回のハードウェア接続は、sample1(2)で作成した基板に対して、 AD変換に機能を追加します。下図のように、AP-CORE-AのAD変換ポート(J4) とAP-SENSの出力ポート(J1)とを接続します。AP-SENSには加速度計 の他に、気圧計、微差圧計、角速度計が付いていますが、今回は 加速度計のみ接続します。


ソフトウェア

 上で述べたように、AD変換機能は、電圧を数値に変換する機能です。 もう少し詳しく説明すると、AP-CORE-A/Bに搭載されているH8S/2638 CPUには、 10ビットのAD変換機能が12チャンネル搭載されています。これは、 入力電圧が0Vのときには0、入力電圧が5Vのときには1023(10ビット) を出力します。

 ソフトウェアはここからダウンロード してください。開発環境はsample1,2と同様にHEWを使用しています。 他のコンパイラを使用されている方は、読み替えてご使用ください。 ここでは、プログラムの要点のみ説明します。

初期設定

 初期設定で最低限設定するレジスタは、A/Dコントロール/ステータス レジスタ(ADCSR)です。このレジスタはAD変換を停止した状態で設定します。

ADCSR

 A/Dコントロール/ステータスレジスタ(ADCSR)では、スキャンモード(SCAN) とA/D インタラプトイネーブル(ADIE)を設定します。AD変換には、 シングルモードとスキャンモードの2種類があります。シングルモードは、 1チャンネルずつAD変換を行うモードで、スキャンモードは4chずつ、 まとめてAD変換を行うモードです。ここでは、スキャンモードを使用します。 また、AD変換が終了したら割込みが発生するように設定します。

adc.c


割込み設定

 AD変換が終了すると、INT_ADIが割込み起動されます。今回はスキャンモード を使用しているので、4チャンネルずつAD変換を行います。その結果を グローバル変数に代入しています。その後、AD変換を行うチャンネルを切り替えて、 再びAD変換を行います。12チャンネルのAD変換が終わると、AD変換を終了し、 次のAD変換開始を待ちます。今回は加速度計出力(3チャンネル)のみを 使いますが、ここでは、全チャンネルのAD変換を行っています。

intprg.c


50Hz周期関数

 ここでは、AD変換を開始して、その結果をPCに送信します。 AD変換結果は最大で1023ですので、4桁の数字となります。 これを1桁ずつ送信するために、sendAdc関数を呼び出します。

sample3.c


 sendAdc関数では、引数に対応するAD変換結果を、1桁ずつ送信します。 sample2でも説明しましたが、 AD変換結果も整数ですので、これを文字列に変換する必要があります。 ここでは、各桁(0〜9)の値を0x30だけオフセットさせて送信しています。

sample3.c


メイン関数

 最後にメイン関数です。シリアル通信とタイマーの初期化、AD変換の 初期化を行い、今回も何も実行しない無限ループに入ります。 50Hzで自動的に割込みが入り、ここでAD変換を開始します。 AD変換が終了すると、こちらも自動的にAD変換結果をグローバル変数 に代入する仕組みです。

sample3.c



実行例

 実行例を紹介します。写真のようにAP-SENSを下にして配線しました。 電源とシリアル線がブラブラしていたので、スペーサーにタイラップで 固定しています。





次の動画は実行画面です。加速度センサ(Ax,Ay,Az)のAD変換結果が 50Hzでスクロールしています。ここに表示されている値は、0〜5Vの 電圧を0から1023の整数値に変換した値なので、実際に使用する際は、 物理量に変換して使用します。

     
製品紹介 カスタマイズ パーツ販売 共同開発 技術サポート 技術情報 お問合せ 会社案内
〒890-0061 鹿児島市天保山町14-3 TEL 099-213-0511  FAX 099-213-0585