超音波帯域 ネコ、コウモリ...
Transcript of 超音波帯域 ネコ、コウモリ...
PAGE 1 OF 9
超音波帯域 (ネコ、コウモリ)ピリオドグラム解析装置 ∗†
YEES ‡
概要
何も聞こえないのに、壁や天井に向かって様子をうかがうネコには何か聞こえるらしい、ということでネコ可聴
周波数帯域のピリオドグラムを表示する装置を検討試作しました。
ピリオドグラムはパワースペクトル(密度関数)の推定量です。装置としてはFFTアナライザーの簡易版です。
ネコの他、コウモリの超音波帯域も似た感じです。
さらに、中年オヤジがツマヨウジを使う際、高音圧超音波を発生する事例も観測できる、、、観測したところでどう
しようもないけど。
目次
1 目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 ハードウェア . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1 超音波センサ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 センサアンプ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 マイコン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 ソフトウェア . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1 処理内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 AD変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.3 窓関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
3.4 FFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.5 センサ感度補正 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.6 表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4 設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5 資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.1 回路図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
5.2 シリアル通信コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.3 マルチタスク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
∗ Ver1.00新規公開 2015/02/22(ネコの日)† Ver1.01誤記訂正 2015/03/02(32dot→ 16dot)‡ http://homepage2.nifty.com/yees/
PAGE 2 OF 9
1 目的
何も聞こえないのに、壁や天井に向かって様子をうかがうネコには何か聞こえるらしいということで、ネコの可聴
周波数帯域ピリオドグラムを表示する装置を検討試作しました。
コウモリの超音波を観察するバットデテクターといった装置を調査したところ、ミキサー(アナログ乗算器)による
周波数変換を行うものでした。 ミキサーはアナログ乗算ICやトランス使用 DBMを使ったものがありました。
アナログ信号処理を簡易にしたくアナログ SWあるいはJFET使用の同期検波も検討しましたが、マイコンでAD
変換して直接FFT計算したほうがアナログ回路が簡単になるのでは、という考えかたです。
2 ハードウェア
図 1 試験基板
マイコンボード(Cixi Borui Electronic Technol-
ogy Co.,Ltd 製)のユニバーサル部に超音波セ
ンサ、センサアンプ(オペアンプ×2)を組み
付け動作確認。
超音波センサ出力を増幅後、AD変換しデジタル処理します。
アンチエイリアスフィルタは無く、想定周波数を超える超音波については、ピリオドグラム上折り返します。
超音波センサ センサアンプ
マイコン
有機EL表示器グラフィック100 × 16 dot
スイッチ(×6)
USBコネクタ5V
レギュレータ(5V/3.3V)
3.3Vアナログ回路マイコン表示器
// // //
OO
// //
図 2 構成概略
2.1 超音波センサ
図 3 SPM0404UD5データシート抜粋(1/2)
PAGE 3 OF 9
図 4 SPM0404UD5データシート抜粋(2/2)
超音波センサは 10kHz~60kHz対応の超音波マイクロホン
を使用。
回路に組み込んだ状態でノイズフロアを観測すると図 4と
ほぼ一致しました。
センサ出力を増幅してオシロ観察すると、100kHzを超える領域でも十分感度があり、感度補正を行えば目安程度
のスペクトル観測ができるのでは、、、ということで試験検討したところ、共振点 62kHz近傍では、線形に感度補正す
るのは困難でした。(62kHz近傍では、音波入力の有無に関わらずほぼ一定の出力がある)
図 5、図 6表示電圧範囲:−20dBVolt~−60dBVolt/表示周波数範囲:8kHz~128kHz
(実際の補正については、ソフトウェア「補正」参.)
図 5 ノイズフロア(補正無し) 図 6 ノイズフロア(補正有り)
2.2 センサアンプ
広帯域、フルスイングオペアンプによる2段ACアンプです。位相・ゲイン余裕が小さかったので発振防止、また、
有機EL表示器搭載 DC-DCコンバータのスイッチングノイズの影響低減のための処置を行っています。
メーカ型番 NJU77701
利得帯域幅積 34MHz typ.
スルーレート 35V/us typ.
入力換算雑音電圧 6nV/√ Hz typ. at f=1kHz
入力オフセット電圧 1.5mV max
オフセット電圧ドリフト 3.0uV/℃ max.
動作電圧範囲 +2.4V to +5.5V
入出力 フルスイング
表 1 使用オペアンプ
PAGE 4 OF 9
2.3 マイコン
メーカ型番 STM32F103RCT6
コアプロセッサ 32ビット ARM Cortex-M3
最大動作周波数 72MHz(使用システムクロック 72MHz)
動作電圧範囲 2~3.6V
ROM 256Kバイト
RAM 48Kバイト
表 2 使用マイコン
3 ソフトウェア
3.1 処理内容
AD変換(サンプリング 256kHz、256データ)
窓関数適用
FFT
ピリオドグラム
センサー補正
平均
ピークホールド
表示
��
��
��
��
��
��
��
��
USB仮想 COMポート通信
コマンド処理��
��
実際のプログラムは、簡易マルチタスク処理(OS無)を行っています。
上図の処理とおりのループ構造ではありません。
3.2 AD変換
AD変換はマイコン内蔵の 12bitのもので、リファレンス電圧はマイコン電源 3.3V です。
AD変換起動トリガーはタイマーで発生しています。
AD変換データはDMA転送しています。転送先として 256word のバッファーを2つ用意し、FFT計算に使用して
いないバッファーに転送しています。
3.3 窓関数
デフォルトで Blackmanを使用します。その他、矩形(窓関数無)、hanning、hammingが選択可能です。
PAGE 5 OF 9
3.4 FFT
FFT単体は 16bit、256ポイント計算で、実行時間は 470usec程度(実行中ポートにH出力し実測)です。
オフセット減算、窓関数乗算、感度補正、各スペクトルの時間移動平均を含め、10ms毎にピリオドグラムを計算して
います。
ピリオドグラムは、FFT結果の cos 成分 sin成分から直接計算しています。自己相関関数計算は行っていません。
(ウィーナー=ヒンチンの定理)
また、ウェルチの手法による誤差低減も行っておりません。今回最小ハードウェアが目的で、採用すると表示更新周
期が大きくなります。そのかわり各スペクトルの時間移動平均を計算しています。(実際は、IIRデジタルフィルタ)
3.5 センサ感度補正
センサー特性詳細を計測する装置はありません。以下の仮定のもと感度補正を行っています。
■予備試験
センサーをできる限り遮音し、ノイズの FFT結果を観察した。結果ノイズのパワースペクトルは、データシートの音
圧/周波数応答(図 4)とよく似ていた。
センサーに音圧入力が無くても周波数応答が似ているので、センサー内部のバッファーの特性が支配的と仮定する。
また、バッファー入力ノイズは白色雑音と仮定する。
■各周波数成分の補正値
各周波数成分の補正値をあらかじめ決定して ROMに持つのは面倒なんで、FFT計算のたびに、各スペクトルの長時
間にわたる時間移動平均を行う。 音波入力が無ければノイズのパワースペクトルそのもであり、それをセンサーの
音圧/周波数応答特性として補正に使用する。ノイズのパワースペクトルが平坦となるよう各スペクトルを補正する
係数を決定している。(FFT計算毎)
■共振点の補正
上記補正では共振点で不安定です。データシートの音圧/周波数応答(図 4)の測定条件詳細は不明ですが、使用状
態で FFT処理を行うと、ずっと共振 Qが大いような感じで、狭い範囲にピークが発生します。実測 62kHz ± 1kHz
でヒゲ状(窓関数:Blackmanおよび矩形で確認)です。
プログラムの実際は、ピリオドグラムにヒゲ状(3kHz未満幅)要素が発生したら取り除き、その近傍の平均値で埋め
る処理を行っています。
3.6 表示
■ピークホールド
各スペクトルはピークホールドし、ゆっくり減衰するよう表示しています。
■表示更新しきい値
「表示更新しきい値」を設定することでチラツキを防止しています。
「表示更新しきい値」を「表示電圧範囲ボトム」と同じ値に設定すると算出の都度更新します。
■その他
有機 EL表示器はグラフィックタイプで、フォントはドット描画です。プログラムソースは美咲フォント対応ですが、
今回美咲フォントは使用していません。
PAGE 6 OF 9
4 設定
基板上のスイッチ操作で設定変更できる項目は、以下のとおりです。
図 7 < 1 >表示周波数範囲スタート 図 8 < 2 >表示周波数範囲ストップ
図 9 < 3 >表示電圧範囲トップ 図 10 < 4 >表示電圧範囲ボトム
図 11 < 5 >表示更新しきい値 図 12 < 6 >ピークホールド ON/OFF 図 13 < 7 >窓関数選択
図 14 < 8 >周波数範囲の数値表示
ON/OFF
図 15 < 9 > 電圧範囲の数値表示
ON/OFF
図 16 < 10 > 超音波センサー感度
補正 ON/OFF
PAGE 7 OF 9
5 資料
5.1 回路図
5 5
4 4
3 3
2 2
1 1
DD
CC
BB
AA
GN
D
+3V
3
+3V
3
+3V
3
+3V
3
GN
D
+3V
3
GN
D
GN
D
+3V
3A
+5V
GN
D
+3V
3
+3V
3
GN
D
GN
D
GN
D
GN
D
+5V
BU
S+
3V
3
GN
D
+5V
BU
S
+3V
3
GN
D
GN
D
+3V
3
AG
ND
GN
D
AG
ND
AG
ND
AG
ND
+3V
3A
AG
ND
AG
ND
+3V
3A
+3V
3A A
GN
D
+3V
3A
+5V
GN
D
GN
D
PA
9
PA
10
NR
ST
NR
ST
PB
4P
A15
PA
13
PA
14
PB
3N
RS
T
PB
8P
B9
PC
12
PC
11
PC
10
PA
15
PA
14
PA
13
PA
12
PA
11
PA
10
PA
9P
A8
PC
9P
C8
PC
7P
C6
PB
15
PB
14
PB
13
PB
12
PC
0P
C1
PC
2P
C3
PA
1P
A2
PA
3P
A4
PA
5P
A6
PA
7P
C4
PC
5
PC
13
VB
AT
PB
4P
B5
PB
6P
B7
PB
3P
D2
PB
0P
B1
PB
10
PB
11
PA
12
PA
11
PB
6
PA
0
PA
0
PA
5
PA
4
PC
0
PC
1
PC
2
PC
3
PC
4
PC
5
Title
Siz
eD
ocum
ent
Num
ber
Rev
Date
:S
heet
of
YEES20150202
A
CIRCUIT
DIAGRAM,
ULTRA-SONIC-DETECTOR
A3
12
Tuesday,February17,2015
Title
Siz
eD
ocum
ent
Num
ber
Rev
Date
:S
heet
of
YEES20150202
A
CIRCUIT
DIAGRAM,
ULTRA-SONIC-DETECTOR
A3
12
Tuesday,February17,2015
Title
Siz
eD
ocum
ent
Num
ber
Rev
Date
:S
heet
of
YEES20150202
A
CIRCUIT
DIAGRAM,
ULTRA-SONIC-DETECTOR
A3
12
Tuesday,February17,2015
C15
J2
+1
+3
+2
+4
R16
TP
1
R7
J1
+1
+3
+2
+4
C20
J7
+1
+3
+5
+7
+9
+11
+13
+15
+17
+19
+2
+4
+6
+8
+10
+12
+14
+16
+18
+20
R11
L1
R13
C12
C10
C3
C19
TP
5
C14
Y1
D2
TP
6
R12
F1
J3
C9
Y2
C18
S3
R17
C1
C17
C13
S1
R8
S2
TP
4
-+
U2
3 41
5 2
D1
R6
J5 +1
+3
+2
+4
S5
R4
C11
S7
C4
C16
R5
C21
S4
R14
U4
VB
AT
1
PC
13-T
AM
PE
R-R
TC
2
PC
14-O
SC
32_IN
3
PC
15-O
SC
32_O
UT
4
PD
0O
SC
_IN
5
PD
1O
SC
_O
UT
6
NR
ST
7
PC
08
PC
19
PC
210
PC
311
VS
SA
12
VD
DA
13
PA
0-W
KU
P14
PA
115
PA
216
PA317
VSS_418
VDD_419
PA420
PA521
PA622
PA723
PC424
PC525
PB026
PB127
PB228
PB1029
PB1130
VSS_131
VDD_132
PB
12
33
PB
13
34
PB
14
35
PB
15
36
PC
637
PC
738
PC
839
PC
940
PA
841
PA
942
PA
10
43
PA
11
44
PA
12
45
PA
13
46
VS
S_2
47
VD
D_2
48
PA1449 PA1550 PC1051 PC1152 PC1253 PD254 PB355 PB456 PB557 PB658 PB759 BOOT060 PB861 PB962 VSS_363 VDD_364
S6
C5
U5 AD
J/G
ND
1IN
PU
T2
OU
TP
UT
3
R15
CN
1
VB
US
1
D-
2
D+
3
ID(N
C)
4
GN
D5
SHIELD
C2
R3
R21
R22
R19
L2
J6
C6
R18
C8
R10
TP
2
C7
R1
-+
U3
3 41
5 2
D3
TP
3
R20
+C
22
U1
4
1
2
3
R2
J4
R9
図17
回路図(1/2)
PAGE 8 OF 9
5 5
4 4
3 3
2 2
1 1
DD
CC
BB
AA
OLED
+------+------+----------------------------+
|PIN#
|SIG.
|FUNC
|+------+------+----------------------------+
|14
|DB7
|Data
bit7
||
13
|DB6
|Data
bit6
||
12
|DB5
|Data
bit5
||
11
|DB4
|Data
bit4
||
10
|DB3
|Data
bit3
||
9|
DB2
|Data
bit2
||
8|
DB1
|Data
bit1
||
7|
DB0
|Data
bit0
||
6|
E|
Chip
Enable
||
5|
R/~W
|Read/~Write
||
4|
RS
|Select
Instruction/Data
||
3|
NC
|N.C.
||
2|
VSS
|GND
||
1|
VDD
|VDD
(3V
-5V)
|+------+------+----------------------------+
PIN-HEADER-PIN#
=FLAT-CABLE-WIRE#
+-------+-------------+-------+
|WIRE#
|OLED
(PIN#)
|CPU
|+-------+-------------+-------+
|3
|RS
(4
)|
PB9
||
6|
R/W
(5
)|
PB10
||
5|
E(
6)
|PB11
||
12
|D4
(11
)|
PB12
||
11
|D5
(12
)|
PB13
||
14
|D6
(13
)|
PB14
||
13
|D7
(14
)|
PB15
|+-------+-------------+-------+
TOP
VIEW
SIDE
VIEW
表示器
裏側
にピ
ンヘ
ッダ
取付
の場合
ピンヘ
ッダ
PIN#
1⇔
22
⇔3
・ ・13⇔
14
+3V
3
GN
D
PB
10
PB
11
PB
12
PB
13
PB
14
PB
15
PB
9
Title
Siz
eD
ocum
ent
Num
ber
Rev
Date
:S
heet
of
YEES20150202
A
CIRCUITDIAGRAM,ULTRA-SONIC-DETECTOR
A3
21
Sunday,February15,2015
Title
Siz
eD
ocum
ent
Num
ber
Rev
Date
:S
heet
of
YEES20150202
A
CIRCUITDIAGRAM,ULTRA-SONIC-DETECTOR
A3
21
Sunday,February15,2015
Title
Siz
eD
ocum
ent
Num
ber
Rev
Date
:S
heet
of
YEES20150202
A
CIRCUITDIAGRAM,ULTRA-SONIC-DETECTOR
A3
21
Sunday,February15,2015
C23
L4
14
13
12
11
10
98
76
54
32
1
9 711 5 3
10 24
1
12 8
13
614
PIN
HE
AD
ER
PIN
HE
AD
ER
SU
BA
SS
Y1
J8
+1
+3
+5
+7
+9
+11
+13
+2
+4
+6
+8
+10
+12
+14
L3
図18
回路図(2/2)
PAGE 9 OF 9
5.2 シリアル通信コマンド
USB仮想COMポートの使用には、STMicro社 VCPドライバのダウンロード/インストールが必要です。
デバッグ用コマンド+----------+-----------------------------+| H | ヘルプ 1| HH | ヘルプ 2| CL | Clear Screen (VT100)+----------+-----------------------------+| SF f | ADC サンプリング周波数 fs[Hz]| DF f | DAC out f[Hz]| T | 経過時間 確認 | A | ADC 最新データ| W | 波形メモリ データ| F | FFT データ| D | 内部変数| P b e | ピリオドグラム (FFT)| | b:開始 f[Hz] e:終了 f[Hz]| | 0 ≦ b,e ≦ (fs/2)| TL r | Set Tresh(LIN)| | 0 ≦ r ≦ 4095| TG f | Set Tresh(LOG)| | -80.0 ≦ r ≦ 0.0| CM n | Sensor Compensation| | n=0:OFF, 1:ON| WC f | Set Weight Compensation| | 0.0 ≦ f ≦ 1.0| PH f | Peak Hold f:decay factor| | 0.0 ≦ f ≦ 1.0| MA f | Moving Average| | 0.0 ≦ f ≦ 1.0| V | Version| GF b e | Grapic Range| | b:f[Hz] to e:f[Hz]| | 0 ≦ b < e ≦ (fs/2)| SC n | Scale LIN or LOG| | n=0:LIN, 1:LOG| RE m n | REF of Scale-LOG| | m:REFmax n:REFmin| | -80.0 ≦ m < e ≦ 10.0| | -80.0 ≦ n < e ≦ 0.0+----------+-----------------------------+
マルチタスク動作確認用コマンド+----------+-----------------------------+| H | ヘルプ 1| HH | ヘルプ 2| CL | Clear Screen (VT100)+----------+-----------------------------+| ST | スタック確認+----------+-----------------------------+| TS | タスク周期 実行回数| | (開始時 計測値リセット)| | (1000ms 繰り返し )+----------+-----------------------------+| BR | BREAK MULTI-TASK| RS | RESTART MULTI-TASK+----------+-----------------------------+
5.3 マルチタスク
一般的な組み込み用マルチタスク処理と同様、sleep(time)や next()でタスクを切り替えるものです。
タスクごとにスタック領域を確保しておいて (プログラム上バイトデータの配列)、タスクの切り替えはサブルーチン
コール/リターンの前にスタックポインタやその他レジスタを書き換えるようなものです。この切り替え管理はアセ
ンブラで記述しています。ARMはリンクレジスタがあるのでやりやすい。
各タスクは専用のスタック領域を使って実行されますが、マイコンに適当なメモリアクセス制限機能が無いので、各
タスク用のスタックがオーバーフローしてないか確認する処理を作成してあります。
スタック使用量確認MAIN STACK ADRS: 2000F800-2000FFFFMAIN STACK SIZE: 00000800MAIN STACK USED: 0000011C( 284)+------+------+------+-------------------+| ID | USED | SIZE | ADRS+------+------+------+-------------------+| 00 | 0364 | 2048 | 20002B8C-2000338B| 01 | 0236 | 2048 | 20001554-20001D53| 02 | 0252 | 2048 | 2000338C-20003B8B| 03 | 0236 | 2048 | 20000D54-20001553| 04 | 0228 | 2048 | 20001D54-20002553+------+------+------+-------------------+
タスク周期、実行時間確認+----+----------+----------+----------+| ID | 周期 MIN | 周期 MAX | 回数+----+----------+----------+----------+| 00 | 00000000 | 00000019 | 00100405| 01 | 00001035 | 00001049 | 00000018| 02 | 00000132 | 00000135 | 00000135| 03 | 00000033 | 00000041 | 00000496| 04 | 00000000 | 00000019 | 00100537+----+----------+----------+----------+