完成した。
ADR423はノイズが多いのでリファレンスには使えなかった。温度補償が必要な温度計向きかも知れない。
ADuM5401は有っても無くても測定値に影響は無かった。高ノイズ環境なら差が現れるかも知れない。
完成した。
ADR423はノイズが多いのでリファレンスには使えなかった。温度補償が必要な温度計向きかも知れない。
ADuM5401は有っても無くても測定値に影響は無かった。高ノイズ環境なら差が現れるかも知れない。
発生時刻 2014年3月19日 2時24分頃
震源地 千葉県北西部
震度1(計測震度0.5)。最初の上下動が強かったようだ。
デジタル・アイソレータはパソコンなどのノイズ源からセンサーやADコンバータを絶縁して駆動するためのインターフェースらしい。以下に具体例が載っている。
Circuit Note CN-0066(Analog Devices)
Application Report SLOA123(Texas Instruments)
A-Dコンバータ活用 成功のかぎ(CQ出版)
そこでADuM5401を使って絶縁地震計を作ってみる。
秋月で最近発売された3軸加速度センサモジュール KXSC7を試す。
KXR94に近いがKXSC7の方が安く、ノイズが少し多く、ピン配置は異なる。1gal以下を測定する必要が無ければKXSC7で十分かも知れない。
発生時刻 2014年3月16日 9時5分頃
震源地 千葉県東方沖
震度0(計測震度0.3)。
IntelGalileoでシリアルモニタを開かないでシリアル出力し続けるとフリーズする。
ソース:
int led = 13; void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { digitalWrite(led, HIGH); delay(100); digitalWrite(led, LOW); for(int i=0;i<100;i++){ Serial.println("test"); } }
結果:
IntelGalileo→約30秒間LED点滅してフリーズ
ArduinoUNO R3→フリーズしない
発生時刻 2014年3月14日 2時6分頃
震源地 伊予灘
東京都町田市で震度1(計測震度1.2)。
初期微動が約70秒。距離にして560kmだろうか。
発生時刻:2014年3月12日 5時4分頃
震源地:千葉県北西部
地震計の表示は震度2だった。気象庁発表で震度2なので合ってると思う。
Intel GalileoではI2C液晶モジュールACM1602NIはどうやっても動かなかった。前回の液晶を採用して16bitADコンバータADS1115を接続してみた。CPUの温度が50℃を超えた辺りから動作が怪しくなり遂に書き込みできなくなった。三端子レギュレータに使うヒートシンクとファンを設置すると安定した。温度計とヒートシンクは割り箸で固定した。
サンプリングレートはデフォルトのままで加速度センサーの測定値を液晶に表示した。ノイズは十分低いので計測震度の計算に利用できると思う。次はFFT処理をする。
スケッチ
// I2Cdev : https://github.com/jrowberg/i2cdevlib // LiquidCrystal_I2C : // http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/ #include <Wire.h> #include "ADS1115.h" #include <LiquidCrystal_I2C.h> ADS1115 adc0(ADS1115_DEFAULT_ADDRESS); //ADDR:GND LiquidCrystal_I2C lcd(0x20,8,2);//I2Cアドレス、8行x2 void setup() { Wire.begin(); // I2C開始 adc0.initialize(); // ADS1115 初期化 lcd.init(); // 液晶初期化 adc0.setMode(ADS1115_MODE_SINGLESHOT);//シングルショット・モード adc0.setGain(ADS1115_PGA_4P096);//フルスケール±4.096V } void loop() { adc0.setMultiplexer(ADS1115_MUX_P3_NG);//マルチプレクサ設定 lcd.setCursor(0,0); lcd.print("X:"); lcd.print(adc0.getConversion());//変換 adc0.setMultiplexer(ADS1115_MUX_P2_NG); lcd.print(" "); lcd.setCursor(8,0); lcd.print("Y:"); lcd.print(adc0.getConversion()); adc0.setMultiplexer(ADS1115_MUX_P1_NG); lcd.print(" "); lcd.setCursor(0,1); lcd.print("Z:"); lcd.print(adc0.getConversion()); lcd.print(" "); delay(10); //待ち }
//I2Cdev.cpp //min関数が無いと言われるので加える int min(int a,int b){ if(a<b){return a;}else{return b;} }