• 方案介紹
    • 一、前言
    • 二、代碼實(shí)現(xiàn)
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

STC90C51+HC-SR04超聲波測(cè)距模塊完成測(cè)距儀設(shè)計(jì)(測(cè)量距離實(shí)現(xiàn)壁障)

11小時(shí)前
245
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

更多詳細(xì)資料請(qǐng)聯(lián)系.docx

共1個(gè)文件

一、前言

1.1 功能介紹

本項(xiàng)目的開發(fā)背景源于對(duì)機(jī)器人或自動(dòng)化設(shè)備中安全壁障功能的需求。在諸如無人駕駛車輛、自動(dòng)搬運(yùn)機(jī)器人、智能家居系統(tǒng)以及工業(yè)自動(dòng)化等應(yīng)用場(chǎng)景中,為了避免設(shè)備與環(huán)境中的障礙物發(fā)生碰撞,確保設(shè)備和人員安全,實(shí)時(shí)、準(zhǔn)確地檢測(cè)并測(cè)量與障礙物之間的距離變得至關(guān)重要。

HC-SR04超聲波測(cè)距模塊以其高精度、低成本和易于集成的特點(diǎn),成為了實(shí)現(xiàn)這一功能的理想選擇。該模塊通過發(fā)射超聲波并接收其反射信號(hào)來測(cè)量距離,具有測(cè)量范圍廣、響應(yīng)速度快、抗干擾能力強(qiáng)等優(yōu)點(diǎn)。結(jié)合ST90C51微控制器的強(qiáng)大處理能力和豐富的I/O接口,可以實(shí)現(xiàn)對(duì)HC-SR04模塊的精確控制,并快速處理測(cè)距數(shù)據(jù),實(shí)現(xiàn)實(shí)時(shí)的壁障功能。

本項(xiàng)目結(jié)合ST90C51微控制器和HC-SR04超聲波測(cè)距模塊,設(shè)計(jì)并實(shí)現(xiàn)一個(gè)能夠?qū)崟r(shí)測(cè)量與障礙物之間距離,并根據(jù)距離信息執(zhí)行相應(yīng)壁障動(dòng)作的系統(tǒng)。通過編寫合適的程序算法,可以實(shí)現(xiàn)對(duì)測(cè)量數(shù)據(jù)的分析、判斷和控制,當(dāng)檢測(cè)到設(shè)備接近障礙物時(shí),自動(dòng)觸發(fā)壁障機(jī)制,如減速、轉(zhuǎn)向或停止,以避免發(fā)生碰撞事故。這一項(xiàng)目的成功實(shí)施,不僅可以提升設(shè)備的安全性能,降低維護(hù)成本,還可以為相關(guān)領(lǐng)域的自動(dòng)化和智能化發(fā)展提供有力的技術(shù)支持。

image-20240612133714577

image-20240612133741173

1.2 HC-SR04超聲波測(cè)距模塊介紹

image-20240612133618209

image-20240612133630913

image-20240612133650068

image-20240612133701989

HC-SR04超聲波測(cè)距模塊是一種基于超聲波原理進(jìn)行測(cè)距的傳感器模塊,被廣泛應(yīng)用于機(jī)器人導(dǎo)航、智能家居、安防系統(tǒng)等領(lǐng)域。該模塊主要由兩個(gè)壓電陶瓷超聲傳感器構(gòu)成,一個(gè)用于發(fā)射超聲波信號(hào),另一個(gè)用于接收被目標(biāo)物體反射回來的超聲波信號(hào)。由于超聲波信號(hào)在空氣中的傳播速度已知(約為340米/秒),模塊通過測(cè)量超聲波從發(fā)射到接收的時(shí)間差,可以精確計(jì)算出目標(biāo)與傳感器之間的距離。

HC-SR04模塊的主要技術(shù)參數(shù)包括:使用電壓為DC 5V,靜態(tài)電流小于2mA,感應(yīng)角度不大于15度,探測(cè)距離范圍從2cm到450cm(部分資料提到400cm),并具有高精度特性,可達(dá)0.2cm或0.3cm。模塊的工作原理是通過IO口觸發(fā)測(cè)距,給至少10us的高電平信號(hào)后,模塊會(huì)自動(dòng)發(fā)送8個(gè)40kHz的方波,并自動(dòng)檢測(cè)是否有信號(hào)返回。當(dāng)有信號(hào)返回時(shí),模塊會(huì)通過IO口輸出一個(gè)高電平信號(hào),高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。根據(jù)這個(gè)時(shí)間差和超聲波在空氣中的傳播速度,可以計(jì)算出目標(biāo)與傳感器之間的距離。

HC-SR04超聲波測(cè)距模塊的性能穩(wěn)定,測(cè)距精確,能夠與國外的SRF05、SRF02等超聲波測(cè)距模塊相媲美。其接線方式簡(jiǎn)單,通常包括VCC(電源正極)、Trig(控制端)、Echo(接收端)和GND(電源負(fù)極)四個(gè)引腳。此外,HC-SR04模塊還提供了豐富的編程接口和參考程序,支持多種微控制器和編程語言,如Arduino、C51、PIC等,方便用戶進(jìn)行二次開發(fā)和集成。

HC-SR04超聲波測(cè)距模塊以其高精度、高可靠性和易用性,成為了許多項(xiàng)目中不可或缺的一部分,為機(jī)器人導(dǎo)航、智能家居、安防系統(tǒng)等領(lǐng)域的發(fā)展提供了有力的支持。

二、代碼實(shí)現(xiàn)

2.1 main.c

#include <reg51.h>
#include <INTRINS.H>
#include "delay.h"
#include "type.h"
#include "uart.h"
#include "ds1302.h"
#include "pcf8591.h"
//#include "key.h"
//#include "led.h"
#include "timer.h"
//#include "exti.h"
//#include "infrared.h"
//#include "ds18b20.h"
//#include "at24c02.h"

sbit ECHO=P1^0;  //超聲波的回響信號(hào)輸出腳
sbit TRIG=P1^1;  //觸發(fā)超聲波測(cè)距的引腳
u32 timt0_cnt=0; //記錄定時(shí)器0溢出的次數(shù)
u16 time_val=0;
float distance=0.0; //保存測(cè)量的距離
int main()
{
    ECHO=0;  
    TRIG=0;
    UART_Init(); //初始化串口波特率為4800
    while(1)
    {
        TRIG=1;//觸發(fā)測(cè)距
        delay20us(); //延時(shí)20us
        TRIG=0;          //停止觸發(fā)
        while(ECHO==0){} //等待回響信號(hào)返回
        Timer0_16bit_Init(65535); //初始化定時(shí)器0,并開始計(jì)數(shù)
        while(ECHO==1){} //等待回響信號(hào)結(jié)束
        TR0=0;           //關(guān)閉定時(shí)器0
        time_val=(TH0<<8|TL0)+timt0_cnt*65535; //計(jì)算時(shí)間
        distance=time_val/58.0; //得到距離。單位是厘米
        printf("distance=%f CMrn",distance);
        timt0_cnt=0; //溢出次數(shù)清零  
        DelayMs(1000); //延時(shí)1秒
    }
}


2.2 exit.c

#include "exti.h"
/*
配置外部中斷0下降沿觸發(fā)中斷
IO口: P3.2
*/
sfr IPH=0xB7; //定義特殊功能寄存器
void EXTI0_Init(void)
{
   IPH|=1<<0; //配置PX0H=1 
   PX0=1;     //當(dāng)PX0H=1且PX0=1時(shí),外部中斷0為最高優(yōu)先級(jí)中斷(優(yōu)先級(jí)3)
   EA=1;  //開啟總中斷
   IT0=1; //外部中斷0下降沿觸發(fā)
   EX0=1; //允許外部中斷0產(chǎn)生中斷
}

///*
//外部中斷0中斷服務(wù)函數(shù)
//*/
//void EXTI0_IRQHandler(void) interrupt 0
//{
//    LED=~LED; //改變LED燈的狀態(tài)
//    IE0=0; //清除外部中斷0的標(biāo)志位
//}

/*
配置外部中斷1下降沿觸發(fā)中斷
IO口: P3.2
*/
void EXTI1_Init(void)
{
   EA=1;  //開啟總中斷
   IT1=1; //外部中斷1下降沿觸發(fā)
   EX1=1; //允許外部中斷1產(chǎn)生中斷
}
/*
外部中斷1中斷服務(wù)函數(shù)
IO口: P3.3
*/
void EXTI1_IRQHandler(void) interrupt 2
{
    while(1){}  //死循環(huán)
    LED=~LED; //改變LED燈的狀態(tài)
    IE1=0; //清除外部中斷1的標(biāo)志位
}

2.3 exit.h

#ifndef _EXTI_H
#define _EXTI_H
#include <reg51.h>
#include "led.h"
void EXTI0_Init(void);
void EXTI1_Init(void);
#endif
  • 更多詳細(xì)資料請(qǐng)聯(lián)系.docx
    下載

相關(guān)推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時(shí)響應(yīng)!