電子回路入門 超音波センサー


はじめに

書籍に沿って引き続き進めていきます。

超音波センサーとは

超音波を出して距離を測定するセンサーです。
音波を出し戻ってくるまでの時間で距離を計測することができるようです。

まずTriggerを10μ秒間ONにすると、超音波が発信れます。
発信されるとechoがONになり、受信するとechoがOFFになります。

今回の製作において、こちらのページが大変わかりやすく、参考にさせていただきました。
Arduinoの場合だとライブラリがあったり参考記事がたくさんあるのですが…

超音波がいっぱいある場所や超音波が苦手な動物がいる場所では使用しないようにしましょう。
→ その場合は赤外線で距離を計測

回路図

PSoC設定

  • ControlRegを使用してTrigger(Pin2)のONとタイマーのリセットを同時に実行できるようにします。
  • echo(Pin3)がONになったときタイマー計測を開始できるようにします。

プログラム

ほぼ参考にさせていただいたページと同じですが。

#include "project.h"
#include <stdio.h>
#include <stdlib.h>

int value_counter=0;
float distancia=0.0;
char imp[9];

int main(void)
{
    CyGlobalIntEnable;

    Timer_1_Start();
    UART_1_Start();
    for(;;)
    {
        while(Pin_3_Read()==0)
        {
            Control_Reg_1_Write(1);
            CyDelayUs(10);
            Control_Reg_1_Write(0);
            CyDelay(1);
        }
        while(Pin_3_Read()== 1){};
        value_counter = 65535-Timer_1_ReadCounter();
        distancia = value_counter / 58.0 ;
        sprintf(imp,"%.1f cm  \n",distancia);
        UART_1_PutString(imp);      
    }
}

結果