10 Atmega88で超音波距離センサを製作5(タイマカウンタ)

今回はマイコンのタイマカウンタ機能をつかって超音波を送信してから受信するまでの時間を測定し,その時間から物体との距離を計算します.距離として計算した値はXbeeによってPCに送信します.

まずはプログラムを書き込んでください.

プログラム

以下の回路を製作してください.前回調節した半固定抵抗の出力値はそのままの状態にしてください.

回路図

117

外観

DSC00236

回路の電源を入れ,PC上でX-CTUを起動してください.
超音波器の前に手をかざしてみてください.Xbeeからデータが送信されていると思います.

118

このデータは,超音波が送信されてから受信するまでの時間のデータになります.
マイコン中で,この時間データを計算し,距離に変換してみましょう.

以下のプログラムを書き込んでください.(時間データから距離に変換する数式を加えました.)

回路図は一緒です.

追加した式を説明すると,(飛ばして読んでいただいて結構です)
今回のマイコンのクロックは8MHzですので,一つの動作をするのに1/(8×10^6)秒となります.
タイマカウンタでは,時間をカウントするといいましたが,一つのカウントで1/(8×10^6)秒かかります.
つまり,このカウント値に1/(8×10^6)かけてやると超音波が発信されてから受信されるまでの時間がわかります.
time*(1/(8×10^6))
この時間は超音波が反射された往復の時間ですので,それを2でわります.
(time*(1/(8×10^6)))/2
超音波の速さは340m/sです.速さ×時間=距離.
340*(time*(1/(8×10^6)))/2
このときの単位はmです.表示しやすいようにmmに変換します.
(10^3)*340*(time*(1/(8×10^6)))/2
これをきれいにすると,
L=(time*340)/(8*2*1000); //式 mm単位

受信したデータを見てみましょう.

119

mm単位で表示されます.誤差がある場合は式をいじってください.

次はコンデンサーマイクロホンというものを使って音センサを製作します.

11 Atmega88で音センサを製作 に続く.

おすすめ図書(よかったらどうぞ)

You may also like...

4 Responses

  1. 名無しの より:

    電子回路初心者です.まったく同じ回路とマイコンを使用したのですがLが85,つまりタイムが4000でずっと更新され続けてしまいました.原因がわかりますか?

    • lumenbolk より:

      こんにちは。
      考えられる原因としては、アナログ比較で使用している可変抵抗の値が大き過ぎるからではないでしょうか?

      • 名無しの より:

        ありがとうございます.その通りでした.
        ところで測定できる距離を伸ばすにはどうしたらよいでしょうか?
        今は大体600mmぐらいまでは測定できるのですがそれ以上だと測定できなくなります.

        • lumenbolk より:

          測定距離を伸ばすことはやったことがないので微妙ですが、このサイトを参考にするといいかもしれないですね。
          http://www.piclist.com/images/www/hobby_elec/pic6_610.htm
          このサイトによると、送信時間を長くすると測定範囲が大きくなるみたいです。
          ということは、
          for (int i=0;i<20;i++)
          {
          PORTB=0b00000001;
          _delay_us(12);
          PORTB=0b00000000;
          _delay_us(12);
          }
          この部分のi<20をもっと大きくすれば良いのかもしれません。上手くいくといいですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">