1.模块简介
HC-SR04超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。HC-SR04超声波模块主要是由两个通用的压电陶瓷超声传感器,并加外围信号处理电路构成的。
2. 模块参数
(1)模块主要电气参数
使用电压:DC---5V 静态电流:小于2mA 电平输出:高5V 电平输出:低0V
感应角度:不大于15度
探测距离:2cm-450cm
高精度 可达0.2cm
超声波模块有4个引脚,分别为Vcc、 Trig(控制端)、 Echo(接收端)、 GND;其中VCC、GND接上5V电源, Trig(控制端)控制发出的超声波信号,Echo(接收端)接收反射回来的超声波信号。
此次调试主要是调试的是基于msp430f149的超声波测距的,没有外加显示,有需要的小伙伴可以持续关注,后续会发布相应的帖子。
超声波的使用,使用了定时器A的定时和对上升沿和下降沿的捕获等;全部代码在附加件中,欢迎大家下载和交流!
部分代码如下:
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch(TAIV)
{
case 2 :if(Edge==RISE)
{
RiseCapVal = TACCR1;
TACCTL1 |= CAP+CM_2+CCIS_0+SCS+CCIE;//改为下降沿捕获
Edge = FALL;//下降沿捕获标志
}
else
{
_DINT();
Period = TACCR1-RiseCapVal; //这里要注意是否考虑溢出,跟测试距离有关,希望大家拓展
S=(Period*17)/100; // 距离计算 s=340m/s*Period/2*10^(-6)*1000(mm)
TACCR1 = 0;
TACCTL1|= CAP+CM_1+CCIS_0+SCS+CCIE;//改为上升沿捕获
Edge = RISE;//上升沿捕获标志
_EINT();
}
break;
case 4 : break;
case 10: //TA_Overflow_Cnt++; //溢出标志
break;
}
}
void init_timerA(void)
{
TACTL |= TASSEL_2+MC_2+TAIE+TACLR+ ID_3;//SMCLK,8MHz,8分频,连续计数,中断允许,计数器清零
TACCTL1 |= CAP+CM_1+CCIS_0+SCS+CCIE;//捕获模式,上升沿捕获(CM_2),CCI1A输入,同步捕获,中断允许
}
void init_IO(void)
{
P1DIR |= BIT1; //P1.1输出,普通I/O
P1DIR &=~ BIT2; //P1.2输入
P1SEL |= BIT2; //P1.2第二功能,捕获输入
P1OUT &=~BIT1; // 开始低电平,控制驱动波形发生
}
void init_clk(void)
{
uchar i;
BCSCTL1&=~XT2OFF; //打开XT振荡器
BCSCTL2|=SELM_2+SELS;//MCLK 8M and SMCLK 8M
do
{
IFG1 &= ~OFIFG;//清除振荡错误标志
for(i = 0; i < 0xff; i++) _NOP();//延时等待
}
while ((IFG1 & OFIFG) != 0);//如果标志为1继续循环等待晶振起振
IFG1&=~OFIFG;
}
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |