本人使用的是原子的MINI版, 移植论坛的HSR-04的超声波模块程序后,自己加入了LCD显示和串口数据发送。
调试过程中遇到的麻烦就是 1米以内测试 准确度在 0.02m左右
超过1米 误差 达到 5cm
超过 1.3米 误差 达到 20cm
求助用过这个模块的同志 这个是什么原因呢?
贴上主程序和超声波库的源码(已修改后)
[mw_shl_code=c,true]void Ultra_Ranging(float *p)
{
u8 i;
u32 j;
float Ultr_Temp;
for(i=0;i<3;i++)
{
TRIG_Send=1;
delay_ms(10);
TRIG_Send=0;
while(!ECHO_Reci);
while(ECHO_Reci)
{
delay_us(10);
j++;
}
Ultr_Temp+=355/2*j*10;// 模块最大可测距3m
j=0;
delay_ms(150);//防止发射信号对回响信号的影响
}
*p=Ultr_Temp/3/1000000;
}[/mw_shl_code]
[mw_shl_code=c,true]#include "LCD5110.h"
#include "ultrasonic.h"
#include "delay.h"
#include "usart.h"
#include "stdio.h"
#include "lcd.h"
int main()
{ u8 Dis[10];
float temp;
SystemInit();
delay_init(72);
Ultran_Init();
uart_init(9600);
LCD_Init();
POINT_COLOR=RED;
LCD_ShowString(30,00,200,16,16,"Distance Measure");
LCD_ShowString(80,20,200,16,16,"m");
while(1)
{
Ultra_Ranging(&temp);
printf("%1.4f\n",temp);
sprintf((char *)Dis,"%1.4f",temp);
LCD_ShowString(30,20,200,16,16,Dis);
delay_ms(100);
}
}
[/mw_shl_code]
|