2018年2月18日日曜日

 前回から変化したところといえば、温度計を追加した事と、アナログ値の出力回数を10分の1に減らしたことでしょうか。
 温度計はADT7420を使いました。CubeでI2Cの初期化を追加して、レジスタを2バイト読むだけで温度を計測できます。恐ろしく簡単です。
 1-Wireの温度計の代わりにADT7420を使いました。ストリナのADT7420は時定数を下げるためか、0.1mmのリジット基板に実装されていて、ちょっと面倒な感じです。あと、昔I2Cでかなり苦労をしていて、I2Cセンサは嫌だなぁと思っていました。でも1-Wireで面倒なドライバを自分で実装することを考えると、それらのデメリットを補って余りあるかな、という気がします。



 広い部屋に行く用事が有ったので、ついでに超音波距離計の動作テストもやってきました。リファレンスの距離計が無いので正確性はわかりませんが、とりあえず約12m先からのピークが見えます。とはいえ、相関値はかなり低いですが。
 壁からの反射なので、これ以上大きなピークは出ないと思いますが、考えようによっては、大面積からの反射なので、反射位置によって様々な位相が含まれます。それによって相関値が低くなってしまっている、と考えることもできます。

 あと、距離分解能は思ったより低そうです。


 現在、相関器は16bit*16bitの乗算器で14bit*8bitの計算を行っていますが、相関処理だけならもっとビット数が低くても良さそうな気がします。ARMのSIMDの特性上、16bit*16bitより幅の狭い乗算器はありませんが。
 とはいえ、現状の方法よりは性能の良い相関器は色々な方式が有るはずで、もうちょっと改善の余地があります。

 他にも、受信段のオペアンプのゲインを増やして長距離からの信号を増幅する、と言った手段もあります。近距離からの信号は飽和してしまいますが、相関器はアナログ値の上下がクリップされていても動作しますし、近距離に特化したいならDACの出力を小さくすれば送信エネルギーを下げ、受信が飽和しないようにもできます。
 このあたりも一度考え直して見る必要があります。
 オペアンプの増幅率は3m程度の反射で飽和しないように、という狭い部屋の中で決めた値なので、実際にはもっと増幅率を稼いでも問題ないのかもしれません。ただ、すでにユニ基板に乗せてしまったので、今更リード抵抗を交換するのも面倒だなぁ、と思っています。プリント基板作りたい。。。


 またしばらくは狭い部屋でテストを繰り返すことになります。どうなることやら。

0 件のコメント:

コメントを投稿