USS3の内部機能及び設定は次に示すメモリマップとして提供され、インストラクションパケットを使用して操作されます。USS3はコントロールテーブルに値を書くことで操作され、状態はコントロールテーブルから値を読むことで確認します。
16ビット幅を持つデータは(L)と(H)の2バイトで表されます。両方のバイトが1つのインストラクションパケットにおいて同時に読み書きされる必要があります。
Address 0x03~0x24は不揮発メモリに割り当てられ、書き込まれた値は電源を切っても保持されます。しかし、不揮発メモリは電気的な制約として最大10万回の書き込み消去回数となるため、これらのアドレスへの頻繁な書き換えを伴う通信は絶対に行わ無いで下さい。Address 0x25~0x53はRAMになっており電源を切るとデータは保持されませんが、頻繁な書き換えを要するものや、USS3内部で計測されたデータ等に使用されます。
なお、reserveとあるエリアは将来のために予約されていますので使用しないで下さい。
Address | Item | Access | Initial Value |
0 (0x0) | Model number(L) | R | 4 (0x04) |
1 (0x1) | Model number(H) | R | 64 (0x40) |
2 (0x2) | Version of firmware | R | ? |
3 (0x3) | ID | R/W | 0 (0x00) |
4 (0x4) | Baudrate | R/W | 34 (0x22) |
5 (0x5) | Return delay time | R/W | 80 (0x50) |
6 (0x6) | Mode | R/W | 1 (0x01) |
7 (0x7) | Number of pulses | R/W | 5 (0x05) |
8 (0x8) | Cycle (L) | R/W | 160 (0xA0) |
9 (0x9) | Cycle (H) | R/W | 15 (0x0F) |
10 (0xA) | Deadband (L) | R/W | 100 (0x64) |
11 (0xB) | Deadband (H) | R/W | 0 (0x00) |
12 (0xC) | Threshold (L) | R/W | 150 (0x96) |
13 (0xD) | Threshold (H) | R/W | 0 (0x00) |
14 (0xE) | DAC (L) | R/W | 44 (0x2C) |
15 (0xF) | DAC (H) | R/W | 1 (0x01) |
16 (0x10) | Detect level (L) | R/W | 0 (0x00) |
17 (0x11) | Detect level (H) | R/W | 3 (0x03) |
18 (0x12) | Sound of speed (L) | R/W | 87 (0x57) |
19 (0x13) | Sound of speed (L) | R/W | 1 (0x01) |
20 (0x14) | Status return level | R/W | 2 (0x02) |
21 (0x15) | reserve | - | ? |
22 (0x16) | reserve | - | ? |
23 (0x17) | reserve | - | ? |
24 (0x18) | reserve | - | 0 (0x00) |
25 (0x19) | LED | R/W | 0 (0x00) |
26 (0x1A) | reserve | - | 0 (0x00) |
27 (0x1B) | Number of pulses | R/W | 5 (0x05) |
28 (0x1C) | Cycle (L) | R/W | 160 (0xA0) |
29 (0x1D) | Cycle (H) | R/W | 15 (0x0F) |
30 (0x1E) | Deadband (L) | R/W | 100 (0x64) |
31 (0x1F) | Deadband (H) | R/W | 0 (0x00) |
32 (0x20) | Threshold (L) | R/W | 150 (0x96) |
33 (0x21) | Threshold (H) | R/W | 0 (0x00) |
34 (0x22) | DAC (L) | R/W | 44 (0x2C) |
35 (0x23) | DAC (H) | R/W | 1 (0x01) |
36 (0x24) | Detect level (L) | R/W | 0 (0x00) |
37 (0x25) | Detect level (H) | R/W | 3 (0x03) |
38 (0x26) | Sound of speed (L) | R/W | 87 (0x57) |
39 (0x27) | Sound of speed (L) | R/W | 1 (0x01) |
40 (0x28) | reserve | R/W | - |
41 (0x29) | SCANSW | R/W | ? |
42 (0x2A) | Distance (L) | R | ? |
43 (0x2B) | Distance (H) | R | ? |
44 (0x2C) | Detect1 (L) | R | ? |
45 (0x2D) | Detect1 (H) | R | ? |
46 (0x2E) | Detect2 (L) | R | ? |
47 (0x2F) | Detect2 (H) | R | ? |
48 (0x30) | Detect3 (L) | R | ? |
49 (0x31) | Detect3 (H) | R | ? |
50(x032) | Detect4 (L) | R | ? |
51(0x33) | Detect4 (H) | R | ? |
52(0x34) | Detect5 (L) | R | ? |
53(0x35) | Detect5 (H) | R | ? |
各USS3を特定するための固有のID番号を0~253の間で設定します。
同じネットワーク内の各USS3には異なるID番号を設定する必要があります。また、出荷時は全てのUSS3のIDが0となりますので、複数台のUSS3を併用する場合は、ネットワーク上に1台のUSS3のみが存在する状態で各々のIDを変更して下さい。
通信速度を0~254の間で設定します。実際の通信速度は以下の公式で求められます。
Speed(BPS)=2000000/(Value+1)
主な通信速度とデータ
Value | Hex | 計算値[bps] | 汎用値[bps] | 誤差率 |
1 | 0x01 | 1000000.0 | 1000000 | 0.000% |
3 | 0x03 | 500000.0 | 500000 | 0.000% |
4 | 0x04 | 400000.0 | 400000 | 0.000% |
7 | 0x07 | 250000.0 | 250000 | 0.000% |
9 | 0x09 | 200000.0 | 200000 | 0.000% |
16 | 0x10 | 117647.1 | 115200 | -2.124% |
34 | 0x22 | 57142.9 | 57600 | 0.794% |
103 | 0x67 | 19230.8 | 19200 | -0.160% |
207 | 0xCF | 9615.4 | 9600 | -0.160% |
なお、通信を正常に行うには±3%以下の誤差で接続する必要があります。
インストラクションパケットが送られた後、ステータスパケットが返ってくるまでの時間を0~254の間で設定します。遅延時間は約Value×2μ秒です。
ANALOG OUTの使用法を決定します。1(Analogモード)を設定すると計測距離に比例した電圧出力、0(Interruptモード)を設定すると指定された敷居値と計測距離によって0Vないし5VのON/OFF出力を行います。
超音波を出力する際のパルス数を2~250の間で指定します。パルスを送出している時間はValue×25μ秒で求められます。
数値が大きいと長時間超音波を出力することになり反射波を検出する確率が上がりますが、近距離における動作が不安定になります。
計測周期を200~8000の間で指定します。時間はValue×16μ秒で求められます。 計測周期内で反射波が検出されると、その時点の内部カウンタ(16μ秒刻みのフリーランカウンタ)値が検出値として採用されます。また内部カウンタはCycleで指定された値になると次の計測に備えリセットされます。計測周期内で反射波が検出され無い場合は全ての検出値が未検出値(=9999)となります。
無感時間を0~8000の間で指定します。時間はValue×16μ秒で求められます。 内部カウンタが0(=計測開始直後)の時点で超音波を発振しますが、発振器の近傍にある受信器は反射波ではなく直接回りこむ音波で反応してしまいます。この間を検出対象とし無いための時間を指定しますが、一般にNumber of pluseで指定された時間以上の値を設定するべきです。
ModeでInterrupt(=0)が指定された場合に有効な値で、閾値を0~1000[cm]の間で指定します。
Interruputモード時に計測距離がThresholdを越えるとANALOG OUTから5V、以下ならば0Vを出力します。
ModeでAnalog(=1)が指定された場合に有効な値で、5Vの出力を得る時の距離を1~4095[cm]の間で指定します。
Analogモード時に距離が計測されるとANALOG OUTから5[V]×Distanceb[cm]÷Value[cm]の電圧が出力されます。なお、アナログ出力の分解能は本設定値に依存します。
反射波検出のレベルを0~4095の間で指定します。
内部で常時増幅されている受信波に対して反射波とみなせるレベルを指定することであり、Valueが大きいと検出しにくくなり、小いさいと微小な反射波が検出しやすくなります。
音速度を0~999[m/秒]で指定します。
空中を伝播する音波の速度は温度・湿度・気圧に依存します。補正用のセンサをUSS3内に装備しても実際に伝播する空中を計測した値とはかけ離れる事が多いため、計測結果に大きな誤差を生じるだけとなってしまいます。よって、USS3は音速のみをパラメータとして内部カウンタ値を距離に変換しますので、周囲環境を計測している別の装置から音速を計算し、本パラメータへフィードバックすることで誤差を軽減できます。
インストラクションパケットを受けた後にUSS3がステータスパケットを返すかどうかを設定します。
Value | ステータスパケット |
0 | PING以外のインストラクションには応答しない |
1 | READ_DATAだけに応答する |
2 | すべてのインストラクションに応答する |
超音波を出力する際のパルス数を2~250の間で指定します。パルスを送出している時間はValue×25μ秒で求められます。
数値が大きいと長時間超音波を出力することになり反射波を検出する確率が上がりますが、近距離における動作が不安定になります。
計測周期を200~8000の間で指定します。時間はValue×16μ秒で求められます。
計測周期内で反射波が検出されると、その時点の内部カウンタ(16μ秒刻みのフリーランカウンタ)値が検出値として採用されます。また内部カウンタはCycleで指定された値になると次の計測に備えリセットされます。計測周期内で反射波が検出され無い場合は全ての検出値が未検出値(=9999)となります。
無感時間を0~8000の間で指定します。時間はValue×16μ秒で求められます。
内部カウンタが0(=計測開始直後)の時点で超音波を発振しますが、発振器の近傍にある受信器は反射波ではなく直接回りこむ音波で反応してしまいます。この間を検出対象とし無いための時間を指定しますが、一般にNumber of pluseで指定された時間以上の値を設定するべきです。
ModeでInterrupt(=0)が指定された場合に有効な値で、閾値を0~1000[cm]の間で指定します。
Interruputモード時に計測距離がThresholdを越えるとANALOG OUTから5V、以下ならば0Vを出力します。
ModeでAnalog(=1)が指定された場合に有効な値で、5Vの出力を得る時の距離を1~4095[cm]の間で指定します。
Analogモード時に距離が計測されるとANALOG OUTから5[V]×Distanceb[cm]÷Value[cm]の電圧が出力されます。なお、アナログ出力の分解能は本設定値に依存します。
反射波検出のレベルを0~4095の間で指定します。
内部で常時増幅されている受信波に対して反射波とみなせるレベルを指定することであり、Valueが大きいと検出しにくくなり、小いさいと微小な反射波が検出しやすくなります。
音速度を0~999[m/秒]で指定します。
空中を伝播する音波の速度は温度・湿度・気圧に依存します。補正用のセンサをUSS3内に装備しても実際に伝播する空中を計測した値とはかけ離れる事が多いため、計測結果に大きな誤差を生じるだけとなってしまいます。USS3は音速のみをパラメータとして内部カウンタ値を距離に変換しますので、周囲環境を計測している別の装置から音速を計算し、本パラメータへフィードバックすることで誤差を軽減できます。
Detect1とSound of speedを元に距離を算出し、ストアします。算定式は次の通りです。
Value = (Detect1)×(Sound of Speed)÷1250
計測限界値を超えたり計算結果がオーバフローすると999となります。
内部カウンタがDeadband以上かつCycle以下の間で、Detect levelを超えた反射波を検出した早い順にその時の内部カウンタ値をDetect1からストアします。未検出の場合は9999となります。
計測周期内で検出されたものは最大5つまで保持されるため、一番近い物体以外も計測対象としたい場合に利用できる可能性があります。