AD コンバーターの製作
FT232HL（USB シリアル変換モジュール）と ADS1262（AD コンバーター）を使用します。ADS1262 の出力は３２ビットで、３２倍の増幅器を内蔵していますので外部に増幅回路を設けることなく信号を直接 AD コンバーターにつなげて使用しても精度のよい実験ができます。
配線図とサンプルプログラムをご覧ください。サンプルプログラムはクロメル アルメ
ル 熱電対(0.07 φ)で空気の断熱圧縮、膨張に伴う温度変化を測定してみたものです。
http://www.cfs.chiba-u.jp/koudai-renkei/information/files/adc_64.xlsm
http://www.cfs.chiba-u.jp/koudai-renkei/information/files/adc.xlsm

-1-

-2-

-3-

入 力1

入 力2

ADS12625V

0.1μ0.1μ1μ1μ1 AIN8

AIN7 28

2 AIN9

AIN6 27

3 AINCOMAIN5 264 CAPP

AIN4 255 CAPN

AIN3 246 AVDD

AIN2 237 AVSS

AIN1 228 REFOUT

AIN0 21

9 START

3.3V

RESET/PWDN 2010 CS

DVDD 19

11 SCLKDGND 1812 DIN

BYPASS 17

13 DOUT/DRDY

XTAL2 16

14 DRDY

入 力30.1μ1μ1μ

XTAL1/CLKIN 15

FT232HL

JP43.3V

USB

SLD

JP35V

GND

VIO

5V03V3USB

PU2RST#PU1AC9GND

AC8AD0AC7AD1AC6AD2AC5AD3AC4AD4AC3AD5AC2AD6AC1AD7AC0-4-

JP3 と JP4 は シ ョ ー ト に す る以下、箇条書きで参考となる情報を書いてみました。
・FT232HL 及び ADS1262 は検索して情報収集してください
・ADS1262 はサンハヤトの SSP-61 というピッチ変換基板を使用して足幅を広げて使用します。
http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=55LW-64KY)
・基板にピンをはんだ付（J1,J2,J3(Short),J4(Short)）、電源接続：通常 USB ５ V、IC3.3V
使用
FT232HL で I2C/SPI 通信使用の手順
・FT232HL のドライバーは FTDI 社（秋月電子の商品説明に記載）から入手できます。
(http://akizukidenshi.com/catalog/g/gK-06503/)
・デバイスドライバーをインストール：http://www.ftdichip.com/Drivers/D2XX.htm
ここで、ンストールガイドを使用：
http://www.ftdichip.com/Support/Documents/InstallGuides.htm
・FTDI 社が提供している FTD2XX ライブラリの関数(Software Application Development
D2XX Programmer's Guide) (AN255 参照)を使用。
From the PC side, the device can communicate in two ways:
・ Virtual COM Port(VCP)接続、I2C 動作モードを使用可能（今回使用しない）
・ D2XX Interface 参照(今回選択) D2XX (DLL) 関数を使用する・USB 接続すると：ユニバーサルシリアルバスコントローラーに「USB Serial Converter」とポート(COM/LPT)に「USB Serial Port(COM25)」が表示される。
・D2XX_Module.bas に FTD2XX.DLL 中にある関数を使用宣言する：
Public Declare Function FT_Open Lib "FTD2XX.DLL" (ByVal intDeviceNumber As Integer,ByRef lngHandle As Long) As Long などをそのまま貼り付ける。使用する命令：
FT_OpenEx("FTXQIKRW", 1, ftHandle)
FT_ResetDevice(ftHandle)
FT_SetBaudRate(ftHandle, 115200)
FT_SetTimeouts(ftHandle, 1000, 1000)
FT_SetBitMode(ftHandle, &H0, &H0)
FT_Write(ftHandle, mData(3), 3, dwNumBytesSent)
FT_GetBitMode(ftHandle, BytesReceived)
FT_Close(ftHandle)
・FT232HL とのパスを開く：FT_OpenEx 命令を使用（デバイス毎の個別認識可能）する
OpenEx(Serial Number, FT_OPEN_BY_SERIAL_NUMBER, &ftHandle)
即ち
ftstatus = OpenEx("FTXQAVR7", 1, ftHandle)
で開き、同時にハンドル番号 ftHandle を取得できる。[対応する終了は：ftstatus = FT_Close(ftHandle)]-5-・ここで、SerialNumber は支援ソフト”FT_Prog”（下図参照）

で EEPROM を開き、USB String

Description/SerialNumber

Enabled/で右クリックして、Program Device を押すと作成され、表示される(ex.,”FTXQAVR7”)。FT_Prog の設定を Auto
SerialNumber Enable にしておくと、Program Device を押す毎に SerialNumber が更新される
ので、固定する場合は Auto のチェックを外す。
SerialNumber 設定後は PC 本体の、PC/コントロールパネル/デバイスマネージャー/ユニバーサルシリアルバスコントローラ
ー/USB Serial Converter[USB Serial Port(COMxx)も表示される]/詳細/デバイスインスタン
スパス/の値：USB¥VID_0403&PID_6014¥FTXQAVR7 の 下¥以下の 8 ケタで表示される（FTDIBUS¥VID_0403+PID_6014+FTY3RNT4A¥0000）。
・SerialNumber を用いると命令は：FT_OpenEx("FTY3RNT4", 1, ftHandle) となる。
If FT_OpenEx("FTY3RNT4", 1, ftHandle) <> FT_OK Then …、
又はftStatus=FT_ OpenEx("FTY3RNT4", 1, ftHandle)を実行すると ftHandle 値を取得できる。
・D2XX 命令で、デバイスリセット、ボーレート設定、通信待ち期限時間を設定する。
・I2C の通信には MPSSE(JTAG, SPI,I2C)を用いる方法と Bit-Bang を用いる方法とがある。現在 MPSSE(I2C)に特に簡単な命令があるわけではないので、ここでは通常の I/O にも使用できる Bit-Bang を使用する。
・AD(0-7)のうち AD0(SCL)、AD1(SDA) を使用する。
AD ポートの入出力設定と非同期 Bit Bang モードの設定は：ftstatus = FT_SetBitMode(ftHandle, &H3, &H1) 'Set:AD0&1_Out, Other_In, Asynchronous Bit
Bang Mode（D2XX 参照）
ftstatus = FT_SetBitMode(ftHandle, &H1, &H1) 'Set:AD0_Out, Other_In, Asynchronous Bit
Bang Mode-6-

・AD 出力ポートへの出力：
出力データを mData(0)に書込む：mData(0)=&H0 (or 1, 2, 3)
ftstatus = FT_Write(ftHandle, mData(0), 1, dwNumBytesSent)
mData(0)に書込まれた 1 バイトのデータが出力される。
・AD 入力ポートからの読取：
ftstatus = FT_GetBitMode(ftHandle, BytesReceived)
BytesReceived に １ バ イ ト の 数 値 が 入 る ： SDA( AD1) は 下 か ら 2 番 目 の bit で あ り
BytesReceived&$H2 によって。１ bit の SDA データがえられる。
・FT232HL とのパスを開くには FT_OpenEx 命令を使用（デバイス毎の個別認識可能）する

OpenEx(Serial Number, FT_OPEN_BY_SERIAL_NUMBER, &ftHandle)

命令、即ちftstatus = OpenEx("FTXQAVR7", 1, ftHandle)

で開き、同時にハンドル番号 ftHandle を取得できる。[対応する終了は：ftstatus = FT_Close(ftHandle)] プログラム終了時にFT_Close 命令が必須です。

オープンしたままだと次のオープン命令でエラーとなり実行されません。
・以上の設定が正常であれば、ftstatus = FT_SetBitMode(ftHandle, &HFD, &H1)
'Set:SCL(AD0/2/3)OUT,SDA(AD1)IN, 00001101
実行後に
ftstatus = FT_WriteByte(ftHandle, &HD, 1, dwNumBytesSent)'AD3,H; AD2,H; AD1,L;

AD0,H(1101)だけを実行させ、FT232HL 基板上のピンが AD3,H; AD2,H; AD0,H になっている事を確かめて下さい。同様に
ftstatus = FT_WriteByte(ftHandle, &H0, 1, dwNumBytesSent)を実行させて、AD3,L; AD2,L; AD0,L になっている事を確かめて下さい。
・ftstatus = FT_WriteByte(ftHandle, &H88, 1, dwNumBytesSent) 等としています。ここでは&H88(10001000)が AD7 ～ 0 に出力されます。入力/出力は予め設定されていて、入力設定のピンに H/L を出力しようとしても無視されます。
以下の部分：
ftstatus = FT_WriteByte(ftHandle, &H88, 1, dwNumBytesSent)'SPI_Close

ftstatus = FT_WriteByte(ftHandle, &H80, 1, dwNumBytesSent)'1000 SPI_Start

Wdata = &H46: Call ADS_SPIWriteData
Wdata = &H0: Call ADS_SPIWriteData
Wdata = &H78: Call ADS_SPIWriteData
ftstatus = FT_WriteByte(ftHandle, &H88, 1, dwNumBytesSent)'SPI_Close

では入力（＋）を In7、（－）を In8 に設定しています。
また、
ftstatus = FT_WriteByte(ftHandle, &H88, 1, dwNumBytesSent)'SPI_Close

ftstatus = FT_WriteByte(ftHandle, &H80, 1, dwNumBytesSent)'1000 SPI_Start

Wdata = &H45: Call ADS_SPIWriteData-7-

Wdata = &H0: Call ADS_SPIWriteData
Wdata = &H50: Call ADS_SPIWriteData '&H50(2.5sps)/&H52(10sps)
ftstatus = FT_WriteByte(ftHandle, &H88, 1, dwNumBytesSent)'SPI_Close

部分で、モード 2 設定で PGA(× 32)、2.5sps を設定しています。
これは入力を 2.5V を中心にして 32 倍しているので約 2.495 ～ 2.505V の範囲に入っていない場合は振り切れてしまいます。&H50 を&H80 に置き換えるとプログラムゲインアン
プ不使用で 1 倍になります。
ADS1262 駆動プログラム①リセット Command：・Write(06h)②測定条件設定 WREG：対象 Register は；02h(42h), 03h(43h), 05h(45h), 06h(46h).
・Write(42h, 00h, 00h)：インターフェース設定
・Write(43h, 00h, 40h)：モード 0 設定、1 回測定
・Write(44h, 00h, 80h)：モード 1 設定、Digital Filter:Sinc1(00)/2(20)/3(40)/4(60)/FIR(80)・[Write(45h, 00h, 50h)：モード 2 設定、TM 用;PGA(× 32)、2.5sps][Write(45h, 00h, 51h)：モード 2 設定、TM 用;PGA(× 32)、5sps][Write(45h, 00h, 52h)：モード 2 設定、TM 用;PGA(× 32)、10sps][Write(45h, 00h, 80h)：モード 2 設定、TS 用;PGA Bypassed、2.5sps][Write(45h, 00h, 81h)：モード 2 設定、TS 用;PGA Bypassed、5sps]
・[Write(46h, 00h, 78h)：TM 用入力設定、In7_P、In8_N 使用][・Write(46h, 00h, 9Ch)：TS 用入力設定、In9_P、Analog GND_N 使用][Write(46h, 00h, 9Ah)：TS 用入力設定、In9_P、InCOM_N 使用]③ 1 回測定開始 Command：
・Write(08h)④データ読取 Command + Read：(測定開始後、変換に要する時間経過後に読み取る)
・Write(12h)+Read(4 bytes;32bit)⑤

測定は③、④の繰り返し⑥クロック(SCLK)のタイミング
・Write: SCLK ↑時に Dout(PC 側から見て; AD から Din)に Data を設定/SCLK ↓時に書込
・Read: SCLK ↑時に Din(PC 側から見て;AD から Dout)へ Data 設定要求/SCLK ↓時に Dinの Data 読取・上記命令を CS ↓（SPI スタート）と CS ↑（SPI 終了）で囲む：1 命令送信・受信-8-Write:

Read:-9-

Read Data by Command

OPCODE- 10 -- 11 -

入力設定- 12 -

'RREG:レジスタ内容（測定データではない）の読取方法；状態確認に使用する
ftstatus = FT_WriteByte(ftHandle, &H88, 1, dwNumBytesSent)'1000 SPI_Start

ftstatus = FT_WriteByte(ftHandle, &H80, 1, dwNumBytesSent)'1000 SPI_Start

Wdata = &H23
Call ADS_SPIWriteData
Wdata = &H0
Call ADS_SPIWriteData
ftstatus = FT_WriteByte(ftHandle, &H80, 1, dwNumBytesSent)'1000 SPI_Start

BytesReceived = 0
For n = 1 To 8
ftstatus = FT_WriteByte(ftHandle, &H81, 1, dwNumBytesSent)'0000

ftstatus = FT_WriteByte(ftHandle, &H80, 1, dwNumBytesSent)'0001'

ftstatus = FT_GetBitMode(ftHandle, mData(n))'1bit Data

BytesReceived = BytesReceived * 2 + (mData(n) And &H2) / 2 '受信データを作る
Next nftstatus = FT_WriteByte(ftHandle, &H88, 1, dwNumBytesSent)
BytesReceived1 = BytesReceived ‘レジスタ中の 8bit データ- 13 -'SPI_Close