位相一致法
Diff: PhaseMethod.h
- Revision:
- 0:05d61debb1fe
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PhaseMethod.h Mon Aug 20 02:28:15 2018 +0000 @@ -0,0 +1,44 @@ +/* +** 位相一致法の計算をする +** 2018/07/04 +*/ + +#ifndef _PHASEMETHOD_H +#define _PHASEMETHOD_H + +#include "mbed.h" +#include "Adc.h" +#include "Thermometer.h" + +#define INT_WINDOW 1500 // 積分窓:1ms分のデータ(AD変換が1.5MHzのため) +#define REF_VALUE 2500.0 // 積分窓を開始する闘値 +#define M_PI 3.141592653589793 // 円周率 +#define SYNCHRO_DELAY 255.0 / 1000000.0 // Nucleo同士の同期遅れ 255µs (平均 (誤差最大5µs)) +#define SAMPLING 1.0 / (1.5 * 1000000.0) // サンプリング 1.5MHz を秒に変換 +#define PERIOD 2.0 / 1000.0 // syncPatternの周期 +#define TX_SYNC 1.0 / 1000.0 // 送信側で生成したsyncPatternの中心の時間 + +class PhaseMethod{ +private: + Adc* adc; + Thermometer* thermometer; + + double sinc(double x); // 標本化関数 + +public: + void init(Adc* adc, Thermometer* thermometer); + void selectSync(); + void calculation(); + + double epoch; + double TxTime; // 伝播時間 + double arriveTime; // 到達時間 + double distance; // 距離 + double I1; + double I2; + double Q1; + double Q2; + + int calAdcVal[INT_WINDOW]; // 位相一致で使う値を格納 +}; +#endif