2: 2021-05-18 (火) 10:10:30 yuji Deleted an attach file: eeprom.txt at 2021-05-18 (火) 10:13:48, Deleted an attach file: rm102.ino at 2021-05-18 (火) 10:22:15 at 2021-05-18 (火) 12:00:43 at 2021-05-18 (火) 14:24:35, Deleted an attach file: dt132a.ino at 2021-05-18 (火) 14:26:24 at 2021-05-18 (火) 14:55:16 at 2021-05-19 (水) 10:16:53 at 2021-05-19 (水) 10:17:02 at 2021-05-19 (水) 10:25:11 at 2021-05-19 (水) 10:47:05 |
現: 2021-05-20 (木) 08:48:46 yuji Deleted an attach file: dt132a.ino at 2021-05-25 (火) 15:53:32 at 2021-05-26 (水) 07:29:56 at 2021-05-26 (水) 07:31:30 at 2021-05-26 (水) 07:34:57, Deleted an attach file: eeprom.txt at 2021-05-26 (水) 08:23:44, Deleted an attach file: eeprom_0.txt at 2021-05-26 (水) 08:23:51 at 2021-05-26 (水) 08:24:10 |
||
---|---|---|---|
Line 2: | Line 2: | ||
AstoAI DT132Aの主なスペック。~ | AstoAI DT132Aの主なスペック。~ | ||
ACの実効値測定はTrue RMS。 | ACの実効値測定はTrue RMS。 | ||
- | |モデル|AstroAI DT132A| | + | |
- | |カウント数|4000カウント| | + | 4000countのテスターだが9999countに変更して使っている。 |
- | |変換レート|2回/秒| | + | |
- | |レンジ|自動切り替え| | + | ''一般仕様''~ |
- | |RMS|True RMS| | + | |モデル |AstroAI DT132A | |
- | |DC電圧|400mV/4V/40V/400V/600V| | + | |カウント数|4000カウント | |
- | |DC電圧分解能|0.1mV/1mV/10mV/100mV/1V| | + | |変換レート|2回/秒 | |
- | |AC電圧|400mV/4V/40V/400V/600V| | + | |レンジ |自動切り替え | |
- | |AC電圧分解能|0.1mV/1mV/10mV/100mV/1V| | + | |RMS |True RMS | |
- | |DC電流|400μA/4000μA/40mA/400mA/4A/10A| | + | |表示 |バックライト付LCD 55 x 31mm | |
- | |DC電流分解能|0.1μA/1μA/10μA/100μA/1mA/10mA| | + | |電源 |1.5V AAAバッテリー x3, 自動電源OFF | |
- | |AC電流|400μA/4000μA/40mA/400mA/4A/10A| | + | |サイズ |155 x 77 x 31mm(カバー) | |
- | |AC電流分解能|0.1μA/1μA/10μA/100μA/1mA/10mA| | + | |重量 |157g | |
- | |抵抗|400Ω/4kΩ/40kΩ/400kΩ/4MΩ/40MΩ| | + | |付属品 |テスターリード 1ペア&br;K熱電対ケーブル&br;AAAバッテリー x3&br;日本語マニュアル&br;保証案内| |
- | |抵抗分解能|0.1Ω/1Ω/10Ω/100Ω/1kΩ/10kΩ| | + | |
- | |静電容量|40nF/400nF/4μF/40μF/100μF-2mF| | + | ''測定仕様''~ |
- | |静電容量分解能|10pF/100pF/1nF/10nF/100nF| | + | |モード |レンジ |分解能 |確度 |h |
- | |周波数|5Hz/50Hz/500Hz/5KHz/50KHz/500KHz/5MHz| | + | |DCV |400.0mV |0.1mV |±0.8%+5 | |
- | |ダイオード|順方向電圧表示| | + | |~|4.000V |0.001V |±0.8%+3 | |
- | |導通|30Ω未満で内蔵ブザーON| | + | |~|40.00V |0.01V |±0.8%+3 | |
- | |温度|-40~1370℃/-4~2000F| | + | |~|400.0V |0.1V |±0.8%+3 | |
- | |温度分解能|1℃/1F| | + | |~|600V |1V |±1.0%+5 | |
- | |表示|バックライト付LCD 55 x 31mm| | + | |ACV |400.0mV |0.001V |±1.2%+5 | |
- | |電源|1.5V AAAバッテリー x3, 自動電源OFF| | + | |~|4.000V |0.001V |±1.0%+8 | |
- | |サイズ|155 x 77 x 31mm(カバー)| | + | |~|40.00V |0.01V |±1.0%+8 | |
- | |重量|157g| | + | |~|400.0V |0.1V |±1.0%+8 | |
- | |付属品|テストリード 1ペア&br;TP01K熱電対ケーブル&br;携帯ポーチ&br;英文マニュアル| | + | |~|600V |1V |±1.2%+5 | |
+ | |DCA |400.0uA |0.1uA |±1.2%+8 | | ||
+ | |~|4.000mA |0.001mA |±1.2%+8 | | ||
+ | |~|40.00mA |0.01mA |±1.2%+8 | | ||
+ | |~|400.0mA |0.1mA |±1.2%+8 | | ||
+ | |~|4A |0.001A |±1.2%+8 | | ||
+ | |~|10.00A |0.01A |±1.2%+8 | | ||
+ | |ACA |400.0uA |0.01uA |±1.5%+8 | | ||
+ | |~|4.000mA |0.001mA |±1.5%+8 | | ||
+ | |~|40.00mA |0.01mA |±1.5%+8 | | ||
+ | |~|400.0mA |0.1mA |±1.5%+8 | | ||
+ | |~|4A |0.001A |±2.0%+10| | ||
+ | |~|10.00A |0.01A |±2.0%+10| | ||
+ | |Ω |400.0Ω |0.1Ω |±1.5%+3 | | ||
+ | |~|4.000KΩ |0.001KΩ |±1.5%+3 | | ||
+ | |~|40.00KΩ |0.01KΩ |±1.5%+3 | | ||
+ | |~|400.0KΩ |0.1KΩ |±1.5%+3 | | ||
+ | |~|4.000MΩ |0.001MΩ |±1.5%+3 | | ||
+ | |~|40.00MΩ |0.01MΩ |±1.5%+3 | | ||
+ | |キャパシタンス |40.00nF |0.01nF |±8%+10 | | ||
+ | |~|400.0nF |0.1nF |±5%+5 | | ||
+ | |~|4.000uF |0.001uF |±5%+5 | | ||
+ | |~|40.00uF |0.01uF |±5%+5 | | ||
+ | |~|100uF-2mF |0.1uF |±5%+5 | | ||
+ | |導通チェック |30Ω以下でブザー|開放電圧|約0.5V | | ||
+ | |ダイオードチェック|Vf表示 |開放電圧|約1.5V | | ||
+ | |周波数 |5.000Hz |0.01Hz |±1.0%+3 | | ||
+ | |~|50.00Hz | |±1.0%+3 | | ||
+ | |~|500.0Hz | |±1.0%+3 | | ||
+ | |~|5.000KHz | |±1.0%+3 | | ||
+ | |~|50.00KHz | |±1.0%+3 | | ||
+ | |~|500.0KHz | |±1.0%+3 | | ||
+ | |~|5.000MHz | |±1.0%+3 | | ||
+ | |温度 |-40~1370℃ |1℃ |±2.5%+4 | | ||
+ | |~|-4~2000F |1F |±2.5%+4 | | ||
+ | |||
- [[ユーザーズ・マニュアル>./manual]] | - [[ユーザーズ・マニュアル>./manual]] | ||
* ハードウェア [#p1e2fb9b] | * ハードウェア [#p1e2fb9b] | ||
- | 使われているASICは,RICHMETERS RM102で使われているDream Tech International社のDTM0660Lのピン互換チップのDM1106ENと思われる。 | + | テスター棒を挿入するところは,円筒になっている端子がそのまま使われている。安価なのでしょうがないのかもしれないが・・・ テスター棒も金メッキされていない。 |
+ | |||
+ | Fuseは,500mA/600Vと10A/600Vの19x5mmサイズのセラミックFuseが使われている。 | ||
+ | |||
+ | 使われているASICは,RICHMETERS RM102で使われているDream Tech International社 DTM0660Lのピン互換チップのDM1106ENと思われる。 | ||
このチップの特徴は,構成可能な設定やキャリブレーションデータを外部のEEPROM(24C02A)に保存して利用している。~ | このチップの特徴は,構成可能な設定やキャリブレーションデータを外部のEEPROM(24C02A)に保存して利用している。~ | ||
これにより,ハードウェアを変更することなくEEPROMのデータを変更することで,特定の機能を有効にしたりすることが出来る。~ | これにより,ハードウェアを変更することなくEEPROMのデータを変更することで,特定の機能を有効にしたりすることが出来る。~ | ||
- | ASICも9999カウントまで対応してそうなので,6000カウントの設定にできるか試してみた。 | + | ASICが9999カウントまで対応してそうなので,9999カウントの設定にできるか試してみた。 |
** EEPROMの読み書き [#v19dace1] | ** EEPROMの読み書き [#v19dace1] | ||
Line 54: | Line 94: | ||
DT132Aでは,VCCは3.3Vになっている。 | DT132Aでは,VCCは3.3Vになっている。 | ||
- | ''DTA132Aの電源ON後,ASICの出力により24C02AのSCLがlowになったままになっている。このため24C02Aが基板に実装されたままだと,読み書きがうまく出来ない。''~ | + | ''DTA132Aの電源ON後,ASICの出力により常に24C02AのSCLがlowになったままになっている。'' このため24C02Aが基板に実装されたままだと,読み書きがうまく出来ない。~ |
- | ASICのRESETピン(55番)を''low''にする(C8をジャンパー)ことにより,ASICをRESET状態にすればうまくいく。 | + | ASICのRESETピン(55番)を''low''にする(C8をジャンパーする)ことにより,ASICをRESET状態にすればうまくいく。 |
今回は,基板から24C02Aを剥がしてチップ単体で読み書きした後,基板に再実装することにした。 | 今回は,基板から24C02Aを剥がしてチップ単体で読み書きした後,基板に再実装することにした。 | ||
Line 75: | Line 115: | ||
以下のプログラムで先頭から256byteを読み書きした。~ | 以下のプログラムで先頭から256byteを読み書きした。~ | ||
- | #ref(dt132a.ino) | + | #code(C,nonumber,dt132a.ino) |
- | #code(C,nonumber){{ | + | |
- | // AstroAI DT132A EEPROM dump | + | |
- | // by Yuji Ueno | + | |
- | // Arduino 2C02A | + | |
- | // SDA -- 24C02A 5pin | + | |
- | // SCL -- 24C02A 6pin | + | |
- | // 24C02A 7pin -- GND | + | |
- | // 24C02A 1,2,3pin -- GND | + | |
- | // GND -- 24C02A 4pin GND | + | |
- | #include <Wire.h> | + | |
- | const int I2CADDR = 0x50; | + | |
- | + | ||
- | void setup() { | + | |
- | Serial.begin(9600); | + | |
- | Wire.begin(); | + | |
- | + | ||
- | dumpEEPROM(); // EEPROMをdumpする | + | |
- | //set4000Count(); // 4000カウントに設定 | + | |
- | set6000Count(); // 6000カウントに設定 | + | |
- | //set8000Count(); // 8000カウントに設定 | + | |
- | setBacklight(); // バックライトを120sに設定 | + | |
- | setMiliACV(); // ACmVを使えるようにする | + | |
- | enableUART(); // UARTを使えるようにする | + | |
- | + | ||
- | dumpEEPROM(); // 再度EEPROMをdumpする | + | |
- | } | + | |
- | + | ||
- | void loop() {} | + | |
- | + | ||
- | // EEPROMから256byte読んで出力する | + | |
- | void dumpEEPROM() { | + | |
- | unsigned int addrPointer = 0; | + | |
- | unsigned int romLength = 0xff; // EEPROM 24C02A - 256 x 8bits | + | |
- | byte data; | + | |
- | + | ||
- | delay(500); | + | |
- | Serial.println("\nDT132A EEROM dump..."); | + | |
- | Serial.println("-- : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F"); // output header | + | |
- | while (addrPointer <= romLength) { | + | |
- | // output line header | + | |
- | if (!(addrPointer % 16)) { | + | |
- | Serial.print("\n"); | + | |
- | if (addrPointer < 16) { | + | |
- | Serial.print("0"); | + | |
- | } | + | |
- | Serial.print(addrPointer, HEX); | + | |
- | Serial.print(" : "); | + | |
- | } | + | |
- | + | ||
- | data = readByte(I2CADDR, addrPointer); // Read 1byte | + | |
- | addrPointer++; // address pointer++ | + | |
- | if (data < 0x10) { | + | |
- | Serial.print("0"); | + | |
- | } | + | |
- | Serial.print(data, HEX); // 出力 | + | |
- | Serial.print(" "); | + | |
- | } | + | |
- | Serial.println(" "); | + | |
- | } | + | |
- | + | ||
- | // EEPROMから読み込む | + | |
- | byte readByte(int i2cAddr, unsigned int addr) { | + | |
- | //delay(100); | + | |
- | byte data = 0x00; | + | |
- | Wire.beginTransmission(i2cAddr); | + | |
- | Wire.write(addr); | + | |
- | Wire.endTransmission(); | + | |
- | Wire.requestFrom(i2cAddr, 1); | + | |
- | while (!Wire.available()) ; | + | |
- | + | ||
- | if (Wire.available()){ | + | |
- | data = Wire.read(); | + | |
- | } else { | + | |
- | data = 0xff; | + | |
- | } | + | |
- | return data; | + | |
- | } | + | |
- | + | ||
- | // EEPROMに書き込む | + | |
- | void writeByte(int i2cAddr, unsigned int addr, byte data) { | + | |
- | delay(100); | + | |
- | Wire.beginTransmission(i2cAddr); | + | |
- | Wire.write(addr); | + | |
- | Wire.write(data); | + | |
- | Wire.endTransmission(); | + | |
- | } | + | |
- | + | ||
- | // UART通信を出来るように設定 | + | |
- | void enableUART() { | + | |
- | Serial.println("Enabling UART..."); | + | |
- | writeByte(I2CADDR, 0xFA, (byte) 0xFE); | + | |
- | Serial.println("Done"); | + | |
- | } | + | |
- | + | ||
- | // 4000カウントに設定する | + | |
- | void set4000Count() { | + | |
- | Serial.println("Set 4000Count..."); | + | |
- | // カウント数の変更(0x10,0x11: 0x0FA0) | + | |
- | writeByte(I2CADDR, 0x10, (byte) 0xA0); // set 0x0FA0 - 4000 | + | |
- | writeByte(I2CADDR, 0x11, (byte) 0x0F); // | + | |
- | + | ||
- | // レンジ変更上限の変更(0x12,0x13: 0x1068) | + | |
- | writeByte(I2CADDR, 0x12, (byte) 0x68); // set 0x1068 - 4200 | + | |
- | writeByte(I2CADDR, 0x13, (byte) 0x10); // | + | |
- | + | ||
- | // レンジ変更加減の変更(0x12,0x13: 0x017C) | + | |
- | writeByte(I2CADDR, 0x14, (byte) 0x7C); // set 0x017C - 380 | + | |
- | writeByte(I2CADDR, 0x15, (byte) 0x01); // | + | |
- | Serial.println("Done"); | + | |
- | } | + | |
- | + | ||
- | // 6000カウントに設定する | + | |
- | void set6000Count() { | + | |
- | Serial.println("Set 6000Count..."); | + | |
- | // カウント数の変更(0x10,0x11: 0x1770) | + | |
- | writeByte(I2CADDR, 0x10, (byte) 0x70); // set 0x1770 - 6000 | + | |
- | writeByte(I2CADDR, 0x11, (byte) 0x17); // | + | |
- | + | ||
- | // レンジ変更上限の変更(0x12,0x13: 0x1771) | + | |
- | writeByte(I2CADDR, 0x12, (byte) 0x38); // set 0x1771 - 6200 | + | |
- | writeByte(I2CADDR, 0x13, (byte) 0x18); // | + | |
- | + | ||
- | // レンジ変更加減の変更(0x12,0x13: 0x0244) | + | |
- | writeByte(I2CADDR, 0x14, (byte) 0x44); // set 0x0244 - 580 | + | |
- | writeByte(I2CADDR, 0x15, (byte) 0x02); // | + | |
- | Serial.println("Done"); | + | |
- | } | + | |
- | + | ||
- | // 8000カウントに設定する | + | |
- | void set8000Count() { | + | |
- | Serial.println("Set 8000Count..."); | + | |
- | // カウント数の変更(0x10,0x11: 0x1F40) | + | |
- | writeByte(I2CADDR, 0x10, (byte) 0x40); // set 0x1F40 - 8000 | + | |
- | writeByte(I2CADDR, 0x11, (byte) 0x1F); // | + | |
- | + | ||
- | // レンジ変更上限の変更(0x12,0x13: 0x2008) | + | |
- | writeByte(I2CADDR, 0x12, (byte) 0x08); // set 0x2008 - 8200 | + | |
- | writeByte(I2CADDR, 0x13, (byte) 0x20); // | + | |
- | + | ||
- | // レンジ変更加減の変更(0x12,0x13: 0x02EE) | + | |
- | writeByte(I2CADDR, 0x14, (byte) 0xEE); // set 0x02EE - 750 | + | |
- | writeByte(I2CADDR, 0x15, (byte) 0x02); // | + | |
- | Serial.println("Done"); | + | |
- | } | + | |
- | + | ||
- | // バックライト持続時間の設定 | + | |
- | void setBacklight() { | + | |
- | Serial.println("set Backlight Time..."); | + | |
- | // バックライト持続時間の変更(0xFC: 0x0F -> 0x78) | + | |
- | writeByte(I2CADDR, 0xFC, (byte) 0x78); // set 0x78 - 1200s | + | |
- | Serial.println("Done"); | + | |
- | } | + | |
- | + | ||
- | // mVACを使えるようにする設定 | + | |
- | void setMiliACV() { | + | |
- | Serial.println("set mVAC..."); | + | |
- | // ACVにmVから測定出来るようにする(0x8E: 0x04 -> 0x06) | + | |
- | writeByte(I2CADDR, 0x8E, (byte) 0x06); // set 0x06 - mVACV | + | |
- | Serial.println("Done"); | + | |
- | } | + | |
- | }} | + | |
*** DT132AのEEPROMのデータ [#u3d53b8f] | *** DT132AのEEPROMのデータ [#u3d53b8f] | ||
Line 243: | Line 122: | ||
変更箇所は, | 変更箇所は, | ||
- | - 6000カウントに書き換えた。 | + | - 9999カウントに書き換えた。 |
- バックライトの持続時間を,15秒から120秒に書き換えた。 | - バックライトの持続時間を,15秒から120秒に書き換えた。 | ||
- ACVをmVから測定できるように書き換えた。 | - ACVをmVから測定できるように書き換えた。 | ||
Line 249: | Line 128: | ||
書き換えたEEPROM 24C02AをDT132Aに実装し直して,バックライトが120秒になったことを確認した。~ | 書き換えたEEPROM 24C02AをDT132Aに実装し直して,バックライトが120秒になったことを確認した。~ | ||
- | Relativeボタンの長押しには,なにも反応しない。UART通信は,ASICのプログラムに実装されてない気がする。 | + | Relativeボタンの長押しには,なにも反応しない。''UART通信は,ASICのプログラムに実装されてない気がする。''😭 |
** EEPROMによるカスタマイズ [#vf18558d] | ** EEPROMによるカスタマイズ [#vf18558d] | ||
- | EEPROMによるカスタマイズ出来るいくつかの項目。(DTM0660Lを参考にしている。正しくない項目も多い・・・) | + | EEPROMによるカスタマイズ出来るいくつかの項目(表の設定は出荷設定値)。~ |
- | |アドレス|デフォルト|内容 |h | + | DTM0660Lを参考にしている。正しくない項目も多いかも・・・ |
+ | |アドレス|出荷設定値|内容 |h | ||
|0x0B,0x0C |0xE6,0x00 |環境温度(23.0℃)| | |0x0B,0x0C |0xE6,0x00 |環境温度(23.0℃)| | ||
|0x0D,0x0E,0x0F|0x58,0xC3,0x03|環境温度黙認 ADC値| | |0x0D,0x0E,0x0F|0x58,0xC3,0x03|環境温度黙認 ADC値| | ||
Line 314: | Line 194: | ||
|~|~|11: BL ON時PT2.2=pwm PT2.3=1, OFF時PT2.2=1 PT2.3=0 | | |~|~|11: BL ON時PT2.2=pwm PT2.3=1, OFF時PT2.2=1 PT2.3=0 | | ||
|~|bit2:1|1: HOLDキー長押しでバックライトON/OFF, 0: 機能無し | | |~|bit2:1|1: HOLDキー長押しでバックライトON/OFF, 0: 機能無し | | ||
- | |~|bit1:0|1: RELキー長押しでUART通信をON/OFF, 0: 機能無し | | + | |~|bit1:0|1: リザーブ | |
|~|bit0:0|1: クランプメーター, 0: 通常 | | |~|bit0:0|1: クランプメーター, 0: 通常 | | ||
|0xFB |0x0F |オート電源オフまでの時間 0: 自動電源オフ無効, 1-255: 分単位 | | |0xFB |0x0F |オート電源オフまでの時間 0: 自動電源オフ無効, 1-255: 分単位 | | ||
Line 325: | Line 205: | ||
バックライトは,15秒で自動的に消える設定になっている。 | バックライトは,15秒で自動的に消える設定になっている。 | ||
- | 0xFAを0xFEに書き換えて有効にできるUART通信は,''Relative''ボタンを2秒長押ししても反応しない。おそらくASICプログラムでUART通信が使えないようになったんだと思う。~ | + | 0xFAを0xFEに書き換えてUART機能が有効にできるのかと思って試したが,''Relative''ボタンを2秒長押ししてもなにも反応しない。おそらくASICのプログラムでUART通信が使えないようになったんだと思う。~ |
** 測定機能の選択 [#u960aa7f] | ** 測定機能の選択 [#u960aa7f] | ||
- | ロータリスイッチ(PT2.7~PT2.41)で16種の測定機能選択ができる。~ | + | ロータリスイッチ(PT2.7~PT2.4)で16種の測定機能選択ができる。~ |
各コード毎にEEPROMの設定でMax4種の機能を設定できる。選択はSelectボタンを使う。 | 各コード毎にEEPROMの設定でMax4種の機能を設定できる。選択はSelectボタンを使う。 | ||
|DT132A&br;位置|PT2.7|PT2.6|PT2.5|PT2.4|機能1 |機能2 |機能3 |機能4 |h | |DT132A&br;位置|PT2.7|PT2.6|PT2.5|PT2.4|機能1 |機能2 |機能3 |機能4 |h | ||
Line 348: | Line 228: | ||
|DCV |1 |1 |1 |1 |0x8F&br;(0x05)|0x9F&br;(0x00 )|0xAF&br;(0x00)|0xBF&br;(0x00)| | |DCV |1 |1 |1 |1 |0x8F&br;(0x05)|0x9F&br;(0x00 )|0xAF&br;(0x00)|0xBF&br;(0x00)| | ||
- | ACVをmVレンジからのレンジに変更。(DCmV/ACmVの機能を使いたいが,J1A/J1Bの切り替えがロータリースイッチで出来ないため諦める。) | + | ACVをmVレンジからのレンジに変更。~ |
+ | DCmV/ACmVの機能を使いたいが,J1A/J1Bの切り替えがロータリースイッチで出来ないため諦める。 | ||
*** 測定機能(0x80~0xBFに割り当てる) [#wb114b88] | *** 測定機能(0x80~0xBFに割り当てる) [#wb114b88] |