WAVESHAREで販売されている、High-Precision AD/DA Boardのアナログ電圧取得機能を利用しました。
www.waveshare.com
利用した上でのメモをまとめます。
動作の確認方法
Wikiが公開されています。High-Precision AD/DA Board - Waveshare Wiki
サンプルソースコードも用意されています。
アナログ電圧の取得のサンプルを動作させるには、bcm2835 libraryとADS1256用を含むソースコードをダウンロードして展開後、コンパイルが必要です。
File:Bcm2835-1.45.tar.gz - Waveshare Wiki
File:High-Precision-AD-DA-Board-Code.7z - Waveshare Wiki
ジャンパーピンの設定
マニュアルのPDFファイルには写真があるので、ジャンパーピンについてはこちらの方がわかりやすいです。File:High-Precision-AD-DA-User-Manual.pdf - Waveshare Wiki
PDFファイルの2ページ目にADC testing jumperと書かれているようにテスト用なので、外部入力するときは外します。
チャンネル毎にアナログ電圧を取得する際の注意点
ADS1256の動作を確認できるソースコードads1256_test.cのmain()関数にwhile((ADS1256_Scan() == 0));
とあります。
このループが終了したら全チャンネルの値が取得できるかと思いましたが、実際はいずれかのチャンネルの値が取得できたらループは終了します。
そのため、例えばチャンネル7は値が取得できても、チャンネル6は値が取得できていないということがあります。
特定のチャンネルのアナログ電圧を取得するには、
ADS1256_GetAdc(i);
が値を取得しているので、この処理の値が0かどうかで判断します。
チャンネル毎にアナログ電圧を取得して保存するプログラムを作成しましたが、チャンネル毎に値を取得できるタイミングが異なることに気がつくまで、苦労しました。