在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux驅動開發-編寫超聲波測距模塊的驅動

DS小龍哥-嵌入式技術 ? 2022-09-17 15:07 ? 次閱讀

【摘要】 當前采用的這種超聲波測距模塊在各大高校實驗室、畢設、課設里用的很多,原理很簡單,通過聲波測距,發出的聲音碰到障礙物會反彈,聲音在空氣里傳播的速度是已知的,根據時間就能計算出測量的距離。這款超聲波模塊內部自帶了時間計算電路,型號是HC-SR04 ,它可提供 2cm-400cm 的非接觸式距離感測功能,距精度可達高到 3mm; 整個模塊包括了超聲波發射器、 接收器控制電路。

1. 介紹

當前采用的這種超聲波測距模塊在各大高校實驗室、畢設、課設里用的很多,原理很簡單,通過聲波測距,發出的聲音碰到障礙物會反彈,聲音在空氣里傳播的速度是已知的,根據時間就能計算出測量的距離。這款超聲波模塊內部自帶了時間計算電路,型號是HC-SR04 ,它可提供 2cm-400cm 的非接觸式距離感測功能,距精度可達高到 3mm; 整個模塊包括了超聲波發射器、 接收器與控制電路。

基本工作原理
(1) 采用 IO 口 TRIG 觸發測距, 給至少 10us 的高電平信號;
(2) 模塊自動發送 8 個 40khz 的方波, 自動檢測是否有信號返回;
(3) 有信號返回, 通過 IO 口 ECHO 輸出一個高電平, 高電平持續的時間就是超聲波從發射到返回的時間。

測量距離的公式:

uS/58=厘米或者 uS/148=英寸; 
或是: 距離=高電平時間*聲速(340M/S)/2;
建議測量周期為 60ms 以上, 以防止發射信號對回響信號的影響。

下面是超聲波模塊與開發板的連線方式:

2. 示例代碼

下面是超聲波測距模塊的驅動代碼,將超聲波模塊的輸出腳接在開發板支持中斷的IO口上,配置為上升沿觸發,當超聲波輸出腳檢測到高電平就進去中斷服務函數,在中斷服務函數里調度工作隊列,最終在工作函數里完成高電平的時間長度獲取,計算測量的距離,直接在驅動代碼里打印出來。

下面是測量的結果:

image-20211229094915304

2.1 驅動代碼

#include 
#include 
#include 
#include 
#include 
#include 
#include 

static struct timer_list timer;
static struct work_struct work;
static int irq;
#define TRIG EXYNOS4_GPB(7)      //輸出觸發信號   第8個IO口
#define ECHO EXYNOS4_GPX1(0)    //ECHO 回響信號輸出--中斷   第9個IO口
/*獲取高電平持續時間--us單位*/
static u32 GetTimeH(void)
{
	ktime_t my_time,my_time2;
	unsigned int i,j;
	my_time=ktime_get(); //獲取當前時間
	i=ktime_to_us(my_time); //轉 us
	while(gpio_get_value(ECHO)){}
	my_time2=ktime_get(); //獲取當前時間
	j=ktime_to_us(my_time2); //轉 us
	return j-i;
}

/*
工作函數
*/
static void csb_work_func(struct work_struct *work)
{
	u32 time=GetTimeH();
	printk("厘米:%d cm\n",time/58);
}

/*外部中斷服務函數*/
irqreturn_t csb_irq_handler_func(int irq, void *dev)
{
	/*添加工作到工作隊列*/
	schedule_work(&work);
	return IRQ_HANDLED;
}

/*內核定時器中斷服務函數*/
static void timer_function(unsigned long data)
{
	static u8 i=0;
	mod_timer(&timer,msecs_to_jiffies(1000)+jiffies);
	i=!i;
	if(i)
	{
		gpio_set_value(TRIG,1);
	}
	else
	{
		gpio_set_value(TRIG,0);
	}
}

static int __init tiny4412_linux_csb_init(void)
{
	/*請求GPIO口使用權*/
	gpio_request(TRIG,"CSB");
    /*配置GPIO引腳*/
	s3c_gpio_cfgpin(TRIG,S3C_GPIO_OUTPUT);
	/*GPIO默認輸出值*/
	gpio_set_value(TRIG,0);

	/*初始化工作函數*/
	INIT_WORK(&work,csb_work_func);
	/*1. 獲取中斷號*/
	irq=gpio_to_irq(ECHO);
	/*2. 注冊中斷*/
	request_irq(irq,csb_irq_handler_func,IRQF_TRIGGER_RISING,"tiny4412_csb",NULL);
	
	timer.expires=HZ+jiffies; /*單位是節拍*/
	timer.function=timer_function;
	timer.data=666;
	/*1. 初始化定時器*/
	init_timer(&timer);
	/*2. 添加定時器到內核*/
	add_timer(&timer);
    printk("驅動測試: 驅動安裝成功\n");
    return 0;
}

static void __exit tiny4412_linux_csb_cleanup(void)
{
	/*3. 刪除定時器*/
	del_timer_sync(&timer);
	free_irq(irq,NULL);
    printk("驅動測試: 驅動卸載成功\n");
}

module_init(tiny4412_linux_csb_init);    /*驅動入口--安裝驅動的時候執行*/
module_exit(tiny4412_linux_csb_cleanup); /*驅動出口--卸載驅動的時候執行*/

MODULE_LICENSE("GPL");  /*設置模塊的許可證--GPL*/

2.2 Makefile

KER_DRI=/home/wbyq/work/linux-3.5/linux-3.5
all:
	make -C $(KER_DRI) M=`pwd` modules
	cp *.ko /home/wbyq/work/rootfs/code -f
	make -C $(KER_DRI) M=`pwd` modules clean
obj-m += linux_csb.o
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 驅動
    +關注

    關注

    12

    文章

    1906

    瀏覽量

    86585
  • 超聲波測距模塊

    關注

    1

    文章

    8

    瀏覽量

    5099
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    超聲波清洗的原理是什么?超聲波清洗是如何起作用的?

    超聲波清洗是一種利用高頻超聲波振動來清洗物體表面和難以達到的細微部分的清潔技術。其工作原理基于聲波的物理特性和聲波對液體中微小氣泡的影響。以下是超聲
    的頭像 發表于 05-26 17:21 ?269次閱讀
    <b class='flag-5'>超聲波</b>清洗的原理是什么?<b class='flag-5'>超聲波</b>清洗是如何起作用的?

    超聲波頻率和功率對在線式超聲波清洗的影響如何?

    在線式超聲波清洗是一種高效、環保的清洗方式,在多個行業得到了廣泛應用。然而,超聲波頻率和功率是影響清洗效果和清洗速度的關鍵因素。在本文中,我們將從理論和實踐兩個方面分析超聲波頻率和功率對在線式
    的頭像 發表于 05-09 16:39 ?226次閱讀
    <b class='flag-5'>超聲波</b>頻率和功率對在線式<b class='flag-5'>超聲波</b>清洗的影響如何?

    Aigtek功率放大器如何驅動超聲波探頭

    驅動超聲波探頭是功率放大器應用的一種重要場景。功率放大器作為超聲波系統的關鍵部分之一,扮演著將電信號轉化為聲能,并提供足夠的功率驅動超聲波
    的頭像 發表于 02-24 11:23 ?372次閱讀
    Aigtek功率放大器如何<b class='flag-5'>驅動</b><b class='flag-5'>超聲波</b>探頭

    AK2超聲波傳感器驅動和信號處理:Elmos芯片篇

    Elmos芯片在AK2超聲波傳雷達驅動和信號處理方面提供了高度集成的解決方案,它們不僅提高了超聲波泊車輔助系統的準確性和可靠性,還通過集成的MCU和通信接口,為實現更智能的泊車輔助功能提供了可能。
    的頭像 發表于 12-23 00:00 ?1499次閱讀
    AK2<b class='flag-5'>超聲波</b>傳感器<b class='flag-5'>驅動</b>和信號處理:Elmos芯片篇

    【CW32模塊使用】US-016超聲波測距傳感器

    US-016是市場上唯有的一款模擬量輸出的超聲波測距模塊,輸出的模擬電壓和距離值成正比,可以方便的和其他系統相連,US-016工作穩定可靠。 US-016超聲波
    的頭像 發表于 11-28 12:02 ?1442次閱讀
    【CW32<b class='flag-5'>模塊</b>使用】US-016<b class='flag-5'>超聲波</b><b class='flag-5'>測距</b>傳感器

    超聲波液位計的工作原理 超聲波液位計與其他液位計的比較

    超聲波液位計是一種利用超聲波信號來測量液體高度的儀器。其工作原理基于超聲波在介質中的傳播特性。以下是超聲波液位計的基本工作原理: 發射超聲波
    的頭像 發表于 11-23 10:28 ?1169次閱讀

    如何避免超聲波對晶振的影響

    超聲波技術被廣泛應用于工業生產中,常見的超聲波工藝有:超聲波清洗工藝、焊接工藝。而在電子元器件圈中最常用到的則是超聲波清洗工藝。使用該種工藝時,超聲
    的頭像 發表于 10-19 08:10 ?1342次閱讀
    如何避免<b class='flag-5'>超聲波</b>對晶振的影響

    光學超聲波清洗機發生器

    索尼克超聲(ucsonic) 多功能高頻超聲清洗機驅動板是超聲清洗系統中的核心部件,它負責產生高頻超聲波信號,以
    的頭像 發表于 10-09 10:05 ?569次閱讀
    光學<b class='flag-5'>超聲波</b>清洗機發生器

    RK3568教學實驗箱_操作案例:5-19 超聲波測距實驗

    、熟悉Qt程序的開發流程; 2、掌握Qt Creator的基礎開發使用; 3、通過編寫Qt程序實現超聲波測距的顯示界面。 三、實驗原理 Qt
    發表于 09-23 15:40

    超聲波和次聲波的頻率范圍和應用

    超聲波和次聲波是兩種不同頻率的聲波,它們在許多領域都有廣泛的應用。以下是關于超聲波和次聲波的頻率范圍和應用的介紹:
    的頭像 發表于 09-19 16:42 ?5891次閱讀

    PGA460超聲波換能器全橋驅動器解決方案應用報告

    電子發燒友網站提供《PGA460超聲波換能器全橋驅動器解決方案應用報告.pdf》資料免費下載
    發表于 09-14 10:25 ?8次下載
    PGA460<b class='flag-5'>超聲波</b>換能器全橋<b class='flag-5'>驅動</b>器解決方案應用報告

    超聲波風速傳感器的換能器需要多大電容驅動

    超聲波風速傳感器的換能器所需的驅動電容大小并不是一個固定的值,它受到多種因素的影響,包括換能器的型號、規格、工作頻率、額定電壓以及驅動電路的設計等。因此,無法直接給出一個具體的電容值來驅動
    的頭像 發表于 09-07 11:29 ?710次閱讀

    超聲波測速的原理、方法及應用

    超聲波測速是一種利用超聲波在介質中的傳播速度來測量物體速度的技術。它廣泛應用于工業、醫療、交通等領域。 一、超聲波測速的原理 超聲波的定義 超聲波
    的頭像 發表于 08-16 10:36 ?6964次閱讀

    第七章-V1.5 STM32超聲波測距STM32F103C8t6超聲波避障小車 超聲波避障模塊 STM32超聲波測距

    5STM32超聲波測距STM32F103C8t6超聲波避障小車
    的頭像 發表于 08-15 16:25 ?1565次閱讀
    第七章-V1.5 STM32<b class='flag-5'>超聲波</b><b class='flag-5'>測距</b>STM32F103C8t6<b class='flag-5'>超聲波</b>避障小車 <b class='flag-5'>超聲波</b>避障<b class='flag-5'>模塊</b> STM32<b class='flag-5'>超聲波</b><b class='flag-5'>測距</b>

    超聲波發生器-40khz脈沖功能的應用場景有哪些?-驅動

    索尼克超聲(ucsonic) 超聲波驅動板40kHz的脈沖功能在多個應用場景中發揮著重要作用,尤其是在需要高效、精確的清洗和清潔的領域。以下是幾個主要的應用場景: 1.超聲波清洗:在
    的頭像 發表于 07-26 16:20 ?923次閱讀
    <b class='flag-5'>超聲波</b>發生器-40khz脈沖功能的應用場景有哪些?-<b class='flag-5'>驅動</b>板
    主站蜘蛛池模板: 精品国产麻豆免费人成网站 | 久热精品在线视频 | 天天色天天搞 | 一本到在线观看视频不卡 | 亚洲va中文字幕无码 | 国内精品91久久久久 | 日本xxxx色视频在线观看 | 国产精品美女一级在线观看 | 99国产成人精品2021 | 免费在线观看的视频 | 亚洲免费色视频 | 亚洲影视自拍揄拍愉拍 | 高清欧美日本视频免费观看 | 操美女视频网站 | 国产精品一区二区三区四区五区 | 色偷偷资源 | 日日干天天草 | 午夜激情福利网 | 久久99精品国产麻豆宅宅 | 一级做a爰片久久毛片图片 一级做a爰片久久毛片鸭王 | 天天操夜夜操狠狠操 | 成人三级毛片 | 久久综合中文字幕 | 欧美成人自拍视频 | 久久视频精品线视频在线网站 | 激情五月亚洲色图 | 日本h片在线观看 | 国产亚洲欧美日韩俺去了 | 成人精品人成网站 | 深夜在线观看大尺度 | 精品香港经典三级在线看 | 99热热热 | 狠狠干b| 亚洲狠狠网站色噜噜 | 天天爽天天爽天天片a久久网 | 欧美.亚洲.日本一区二区三区 | 天天干天天爽天天操 | 性欧美黑人xxxx | 午夜视| 欲色影视香色天天影视来 | 中文字幕一区二区三区四区五区 |