25章:HC-SR04 超音波距離センサーモジュール

    作成2014.10.10

     HC-SR04 超音波距離センサーモジュール(アマゾン)¥ 475をテストします!!

  1. HC-SR04 超音波距離センサーモジュール評価回路図
      HC-SR04 超音波距離センサーモジュール評価回路図を以下に示します。

     HC-SR04 超音波距離センサーモジュール評価用ですので、無線機能は使用せずに、トワイ・ライターとTWE−Liteのみを使用します。
     ベースプロジェクトは「Samp_PingPong」を使用します。

     HC-SR04 超音波距離センサーモジュールの詳細仕様は下記を参照します。
    [25-1.pdf]をダウンロードする。
    [25-2.pdf]をダウンロードする。


    品名単価個数小計購入先
    HC-SR04 超音波距離センサーモジュール4751475アマゾン
    ZigBeeワイヤレスモジュール TWE−Lite Dip−WA (半完成品セミキット)162011620秋月電子通商
    USBアダプター TWE−Lite R(トワイ・ライター)189011890秋月電子通商


  2. HC-SR04 超音波距離センサーモジュール評価回路外観
     HC-SR04 超音波距離センサーモジュール評価回路外観を以下に示します。



  3. HC-SR04 超音波距離センサーモジュール評価プログラムのダウンロード
     完成プログラムは「40-25.zip」ファイルをダウンロードしてください。
    [40-25.zip]をダウンロードする。

     解凍するとフォルダー内に
    Samp_PingPongg
    フォルダーがあります。
    \40-25\Samp_PingPong\PingPong\Build\Samp_PingPong_PingPong_JN5164_0_1_4.binが実行ファイルです。
     WindowsパソコンソフトはターミナルソフトTera Termや9章〜24章のWin-PingPong.exeが適用できます。
     24章のWin-PingPong.exeがフォルダー内にあります。


  4. 基本操作方法
    (1)\40-25\Samp_PingPong\PingPong\Build\Samp_PingPong_PingPong_JN5164_0_1_4.binを無線マイコンTWE-Lite DIP(トワイライト・ディップ)に書込みます。(方法は7章:ToCoNet(トコネット)のソフトウエア開発環境(SDK) とPingPongの実行プログラムの書込みを参照願います。
    (2)TWE-Lite R(トワイ・ライター)は接続したままにします。
    (3)「Win-PingPong.exe」をダブルクリックで起動します。
    (4)画面の左側を「COM9」にセットして、「Conect」ボタンを押します。
    (5)HC-SR04 超音波距離センサーモジュール評価回路の電源をいれます。(リセットボタンは電源ON/OFFと同じとなります。下記画面となります。

    (6)Send Data に「h」を入力して「Send Data vbCrLf無し」ボタンを押すと測定結果が表示されます。



  5. TimerReadCount値と長さ(mm)の相関
     TimerReadCount値と長さ(mm)の相関を測定してグラフにすると以下のようになりました。

     図25からTimerReadCount値に0.0875をかけた値が長さ(mm)になることが確認できます。この係数 はCPUのクロック周波数とプレスケールの値に依存します。
     オフセットが1.8mmありますが、これは測定基準位置に依存します。


  6. Samp_PingPongプログラムの変更箇所
    (1)IOの設定とIO制御関数の追加
     以下のコードを追記しました。
    //***変更1
    #define vPortSetHi(c)    vAHI_DioSetOutput(1UL << (c), 0)
    #define vPortSetLo(c)   vAHI_DioSetOutput(0, 1UL << (c))
    #define vPortSet_TrueAsLo(c, s)    vAHI_DioSetOutput((s) ? 0 : 1UL << (c), s ? 1UL << (c) : 0)
    #define vPortAsInput(c)   vAHI_DioSetDirection(1UL << (c), 0)
    #define vPortAsOutput(c)   vAHI_DioSetDirection(0, 1UL << (c))
    #define bPortRead(c)    ((u32AHI_DioReadInput() & (1UL<<(c))) ? FALSE : TRUE) // Lo as True
    #define u32PortReadBitmap() (u32AHI_DioReadInput())
    #define bPortCheckBitmap(bitmap, c) ((bitmap & (1UL<<(c))) ? FALSE : TRUE)
    #define vPortDisablePullup(c) vAHI_DioSetPullup(0x0, 1UL << (c))
    
    // TWE-Lite DIP (TWELITE の標準構成)
    #define PORT_OUT1 18
    #define PORT_OUT2 19
    #define PORT_OUT3 4
    #define PORT_OUT4 9
    
    #define PORT_INPUT1 12
    #define PORT_INPUT2 13
    #define PORT_INPUT3 11
    #define PORT_INPUT4 16
    

    (2)HC-SR04 超音波距離センサー制御プログラムの追加
     タイマーは0〜4の5個が使用可能ですが、下記コードではタイマー4を使用しました。
     
    case 'h'://***変更1		
    	vfPrintf(&sSerStream,"HC-SR04-TEST\r\n");//TEST表示	
    	vPortAsInput(PORT_INPUT1);//入力設定	
    	vPortAsOutput(PORT_OUT1);//出力設定	
    		
    	vPortSetLo(PORT_OUT1);//トリガOFF	
    	vAHI_TimerEnable(E_AHI_TIMER_4,3,FALSE,FALSE,FALSE);//プレスケール1/8設定	
    	vAHI_TimerStartSingleShot(E_AHI_TIMER_4,0x0000,0x0000);//タイマー4スタート	
    	while(u16AHI_TimerReadCount(E_AHI_TIMER_4) < 20);//10μsディレイ	
    		
    	vPortSetHi(PORT_OUT1);//トリガON	
    	vAHI_TimerStop (E_AHI_TIMER_4);//タイマー4ストップ	
    	vAHI_TimerStartRepeat(E_AHI_TIMER_4,0x0000,0x0000);//タイマー4スタート	
    	while(u16AHI_TimerReadCount(E_AHI_TIMER_4) != 20);//10μsディレイ	
    		
    	vPortSetLo(PORT_OUT1);//トリガOFF	
    	vAHI_TimerStop (E_AHI_TIMER_4);//タイマー4ストップ	
    	vAHI_TimerStartRepeat(E_AHI_TIMER_4,0x0000,0x0000);//タイマー4スタート	
    	while(bPortRead(PORT_INPUT1) &&  u16AHI_TimerReadCount(E_AHI_TIMER_4) != 0xffff);//エコーON	
    		
    	vAHI_TimerStop (E_AHI_TIMER_4);//タイマー4ストップ	
    	vAHI_TimerStartRepeat(E_AHI_TIMER_4,0x0000,0x0000);//タイマー4スタート	
    	while(!bPortRead(PORT_INPUT1) &&  u16AHI_TimerReadCount(E_AHI_TIMER_4) != 0xffff);//エコーOFF	
    	vfPrintf(&sSerStream,"TimerReadCount=%d\r\n",u16AHI_TimerReadCount(E_AHI_TIMER_4));//結果出力	
    	vAHI_TimerStop (E_AHI_TIMER_4);//タイマー4ストップ	
    	break;	
    


  7. 結果の検討
    (1)Samp_PingPongは入出力ピンの設定がされていないため、入出力ピンの設定が必要となりました。
    (2)タイマーは0〜4の5個が使用可能ですが、タイマー0のみが種々の機能があり、1〜4は単純タイマー機能となっています。
    (3)今回はタイマー4を使用しました。
    (4)今回はHC-SR04 超音波距離センサーモジュール評価用であり、無線通信は省略しました。
    (5)比較的シンプルなコードでHC-SR04 超音波距離センサーモジュールを制御できることがわかりました。




26章:高精度IC温度センサLM61BIZに行く。

トップページに戻る。