位相一致法

Committer:
k0050288
Date:
Mon Aug 20 02:28:15 2018 +0000
Revision:
0:05d61debb1fe
?????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
k0050288 0:05d61debb1fe 1 /*
k0050288 0:05d61debb1fe 2 ** 位相一致法の計算をする
k0050288 0:05d61debb1fe 3 ** 2018/07/04
k0050288 0:05d61debb1fe 4 */
k0050288 0:05d61debb1fe 5
k0050288 0:05d61debb1fe 6 #ifndef _PHASEMETHOD_H
k0050288 0:05d61debb1fe 7 #define _PHASEMETHOD_H
k0050288 0:05d61debb1fe 8
k0050288 0:05d61debb1fe 9 #include "mbed.h"
k0050288 0:05d61debb1fe 10 #include "Adc.h"
k0050288 0:05d61debb1fe 11 #include "Thermometer.h"
k0050288 0:05d61debb1fe 12
k0050288 0:05d61debb1fe 13 #define INT_WINDOW 1500 // 積分窓:1ms分のデータ(AD変換が1.5MHzのため)
k0050288 0:05d61debb1fe 14 #define REF_VALUE 2500.0 // 積分窓を開始する闘値
k0050288 0:05d61debb1fe 15 #define M_PI 3.141592653589793 // 円周率
k0050288 0:05d61debb1fe 16 #define SYNCHRO_DELAY 255.0 / 1000000.0 // Nucleo同士の同期遅れ 255µs (平均 (誤差最大5µs))
k0050288 0:05d61debb1fe 17 #define SAMPLING 1.0 / (1.5 * 1000000.0) // サンプリング 1.5MHz を秒に変換
k0050288 0:05d61debb1fe 18 #define PERIOD 2.0 / 1000.0 // syncPatternの周期
k0050288 0:05d61debb1fe 19 #define TX_SYNC 1.0 / 1000.0 // 送信側で生成したsyncPatternの中心の時間
k0050288 0:05d61debb1fe 20
k0050288 0:05d61debb1fe 21 class PhaseMethod{
k0050288 0:05d61debb1fe 22 private:
k0050288 0:05d61debb1fe 23 Adc* adc;
k0050288 0:05d61debb1fe 24 Thermometer* thermometer;
k0050288 0:05d61debb1fe 25
k0050288 0:05d61debb1fe 26 double sinc(double x); // 標本化関数
k0050288 0:05d61debb1fe 27
k0050288 0:05d61debb1fe 28 public:
k0050288 0:05d61debb1fe 29 void init(Adc* adc, Thermometer* thermometer);
k0050288 0:05d61debb1fe 30 void selectSync();
k0050288 0:05d61debb1fe 31 void calculation();
k0050288 0:05d61debb1fe 32
k0050288 0:05d61debb1fe 33 double epoch;
k0050288 0:05d61debb1fe 34 double TxTime; // 伝播時間
k0050288 0:05d61debb1fe 35 double arriveTime; // 到達時間
k0050288 0:05d61debb1fe 36 double distance; // 距離
k0050288 0:05d61debb1fe 37 double I1;
k0050288 0:05d61debb1fe 38 double I2;
k0050288 0:05d61debb1fe 39 double Q1;
k0050288 0:05d61debb1fe 40 double Q2;
k0050288 0:05d61debb1fe 41
k0050288 0:05d61debb1fe 42 int calAdcVal[INT_WINDOW]; // 位相一致で使う値を格納
k0050288 0:05d61debb1fe 43 };
k0050288 0:05d61debb1fe 44 #endif