chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

探討STM32F407+KS103超聲波模塊測距

Q4MP_gh_c472c21 ? 來源:21ic藍V作者吶咯密密 ? 作者:21ic藍V作者吶咯密 ? 2021-03-26 13:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文介紹基于STM32F407的KS103超聲波模塊的使用,包含使用注意事項以及代碼配置,同時會附上本人在開發(fā)時遇到的問題以及解決方法。

KS103模塊使用串口/IIC接口與主機通信,自動響應主機的iic/串口控制指令。

包含溫度補償?shù)木嚯x探測,同時可以在1ms內檢測光強。

探測范圍 1cm~800cm及 1cm~1000cm(10 米)

5s 未收到 I2C 控制指令自動進入 uA 級休眠,并可隨時被主機 I2C 控制指令喚醒

TTL串口模式

在 KS103 上連線引腳上標識有:VCC、SDA/TX、SCL/RX、GND 及 MODE。模塊在上電之前,MODE 需要接 0V 地,上電后模塊將工作于 TTL 串口模式。如果KS103在上電后再將 MODE 引腳接 0V 地,模塊將仍然工作于 I2C 模式。因此,TTL 串口模式時需要 5 根線來控制,其中 VCC 用于連接+5V(3.0~5.5V 范圍均可)電源(1),GND用于連接電源地,SDA/TX 連接 MCUUSB 轉 TTL 模塊的 RXD,SCL/RX 引腳連接 MCU 或USB 轉 TTL 模塊的 TXD 。

在使用時最好使用5V標準電壓,電壓低會影響量程。

新到手的模塊默認串口地址是0xE8,可修改。

這里本人被坑了,因為我到手的模塊是別人用過的,被修改了地址但是不和我說,就是調試不出來。

當然也是我偷懶了,模塊在上電的時候背面的LED會閃爍,告訴用戶自身的地址,我沒在意。上電后快閃兩下是代表二進制的“1”,慢閃一下代表“0”,一共八位,盯著記錄就能獲得其地址。

串口模式很占用串口資源,我并沒有使用該模式進行開發(fā),僅僅使用了官方的上位機進行測試,鑒定模組的好壞。

確認模組沒問題,選用IIC接口進行開發(fā),這樣一條總線可以掛載多個模塊,只需要總線尋址便可。

I2C 模式

在使用iic模式時,硬件需要注意幾點:

SCL 及 SDA 線均需要由主機接一個 4.7K(阻值 1~10K 均可)電阻到 VCC ;I2C 通信速率建議不要高于 100kbit/s (因為模塊的iic最大速率只有100K)。

直接從代碼開始:

因為對速度要求不高,而且為了移植方便,采用軟件模擬iic。其實為了偷懶,模擬簡單呀。

老規(guī)矩,初始化iic。

void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//使能GPIOB時鐘 //GPIOB8,B9初始化設置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通輸出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化 IIC_SCL=1; IIC_SDA=1; }

寫iic控制函數(shù),老掉牙的東西,全網都有。

//產生IIC起始信號 void IIC_Start(void){ SDA_OUT(); //sda線輸出 IIC_SDA=1; IIC_SCL=1; delay_us(10); IIC_SDA=0;//START:when CLK is high,DATA change form high to low delay_us(10); IIC_SCL=0;//鉗住I2C總線,準備發(fā)送或接收數(shù)據(jù) } //產生IIC停止信號 void IIC_Stop(void){ SDA_OUT();//sda線輸出 IIC_SCL=0; IIC_SDA=0;//STOP:when CLK is high DATA change form low to high delay_us(10); IIC_SCL=1; IIC_SDA=1;//發(fā)送I2C總線結束信號 delay_us(10); } //等待應答信號到來 //返回值:1,接收應答失敗 // 0,接收應答成功 u8 IIC_Wait_Ack(void){ u8 ucErrTime=0; SDA_IN(); //SDA設置為輸入 IIC_SDA=1;delay_us(6); IIC_SCL=1;delay_us(6); while(READ_SDA) { ucErrTime++; if(ucErrTime>250) { IIC_Stop(); return 1; } } IIC_SCL=0;//時鐘輸出0 return 0; } //產生ACK應答 void IIC_Ack(void){ IIC_SCL=0; SDA_OUT(); IIC_SDA=0; delay_us(10); IIC_SCL=1; delay_us(10); IIC_SCL=0; } //不產生ACK應答 void IIC_NAck(void){ IIC_SCL=0; SDA_OUT(); IIC_SDA=1; delay_us(10); IIC_SCL=1; delay_us(10); IIC_SCL=0; } //IIC發(fā)送一個字節(jié) //返回從機有無應答 //1,有應答 //0,無應答 void IIC_Send_Byte(u8 txd){ u8 t; SDA_OUT(); IIC_SCL=0;//拉低時鐘開始數(shù)據(jù)傳輸 for(t=0;t<8;t++) { IIC_SDA=(txd&0x80)>>7; txd<<=1; delay_us(10); //對TEA5767這三個延時都是必須的 IIC_SCL=1; delay_us(10); IIC_SCL=0; delay_us(10); } } //讀1個字節(jié),ack=1時,發(fā)送ACK,ack=0,發(fā)送nACK u8 IIC_Read_Byte(unsigned char ack){ unsigned char i,receive=0; SDA_IN();//SDA設置為輸入 for(i=0;i<8;i++ ) { IIC_SCL=0; delay_us(10); IIC_SCL=1; receive<<=1; if(READ_SDA)receive++; delay_us(5); } if (!ack) IIC_NAck();//發(fā)送nACK else IIC_Ack(); //發(fā)送ACK return receive; }

寫KS103的控制函數(shù)

u8 KS103_ReadOneByte(u8 address, u8 reg) { u8 temp=0; IIC_Start(); IIC_Send_Byte(address); //發(fā)送低地址 IIC_Wait_Ack(); IIC_Send_Byte(reg); //發(fā)送低地址 IIC_Wait_Ack(); IIC_Start(); IIC_Send_Byte(address + 1); //進入接收模式 IIC_Wait_Ack(); delay_us(50); //增加此代碼通信成功?。?! temp=IIC_Read_Byte(0); //讀寄存器3 IIC_Stop();//產生一個停止條件 return temp; } void KS103_WriteOneByte(u8 address,u8 reg,u8 command) { IIC_Start(); IIC_Send_Byte(address); //發(fā)送寫命令 IIC_Wait_Ack(); IIC_Send_Byte(reg);//發(fā)送高地址 IIC_Wait_Ack(); IIC_Send_Byte(command); //發(fā)送低地址 IIC_Wait_Ack(); IIC_Stop();//產生一個停止條件 }

這里依照了模塊的指令發(fā)送流程:

pIYBAGBdeRSAPxHbAAGAvS6ph0U137.png

探測指令從 0x01 到 0x2f,數(shù)值越大,信號增益越大。

獲取距離數(shù)據(jù)

KS103_WriteOneByte(0XD2,0X02,0XB0); delay_ms(100); range1 = KS103_ReadOneByte(0xD2, 0x02); range2 = KS103_ReadOneByte(0xD2, 0x03);

每一幀的探測指令格式為:

c78d6dce-8dcb-11eb-8b86-12bb97331649.png

KS103_WriteOneByte(0XD2,0X02,0XB0);中,0xd2為模塊的地址,02為寄存器地址,0xB0為控制命令。

c7b74c7a-8dcb-11eb-8b86-12bb97331649.png


在發(fā)送探測指令后需要等待一段時間才可通過iic總線獲取數(shù)據(jù),過早的查詢總線會獲得0XFF。在讀取總線數(shù)據(jù)時除了需要發(fā)送模塊iic的地址,還需要將模塊iic的地址加1,而且在之后必須要等待,才能獲取完整的數(shù)據(jù)。因為返回的是16位數(shù)據(jù),所以這里我采用執(zhí)行兩次KS103_ReadOneByte()函數(shù)。

在這些都處理完之后我將采集到的數(shù)據(jù)輸出到串口,發(fā)現(xiàn)并不能成功,range1和range2的值并不變。最后發(fā)現(xiàn)我是用的是0xBC探測指令,最大耗時87MS,而我只延時50ms。通過修改探測指令和延時時間均可解決問題。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 超聲波測距
    +關注

    關注

    5

    文章

    247

    瀏覽量

    39415
  • STM32F407
    +關注

    關注

    15

    文章

    189

    瀏覽量

    31411
  • KS103
    +關注

    關注

    3

    文章

    2

    瀏覽量

    8118

原文標題:STM32F407+KS103超聲波模塊測距

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    什么是超聲波原理的液位傳感器?

    超聲波液位傳感器是一種基于超聲波反射測距原理的非接觸式液位測量設備,核心功能是通過發(fā)射與接收超聲波信號,計算聲波傳播時間差來反推容器內液位高
    的頭像 發(fā)表于 11-25 11:32 ?528次閱讀
    什么是<b class='flag-5'>超聲波</b>原理的液位傳感器?

    超聲波清洗機的環(huán)保性如何?探討綠色清潔新趨勢

    走向一個環(huán)保的新趨勢。本文將深入探討超聲波清洗機的環(huán)保性以及它在現(xiàn)代清潔技術中的地位。一、超聲波清洗機的基本原理及優(yōu)勢超聲波清洗機的工作原理是利用
    的頭像 發(fā)表于 10-08 16:24 ?229次閱讀
    <b class='flag-5'>超聲波</b>清洗機的環(huán)保性如何?<b class='flag-5'>探討</b>綠色清潔新趨勢

    無線超聲波測距傳感器:精準感知,開啟智能測距新時代

    在科技飛速發(fā)展的今天,距離測量不再局限于傳統(tǒng)的卷尺、激光等工具,無線超聲波測距傳感器憑借其獨特的優(yōu)勢,正逐漸成為工業(yè)自動化、智能家居、汽車安全等領域的“智慧之眼”,為我們的生活和工作帶來前所未有
    的頭像 發(fā)表于 09-09 08:35 ?584次閱讀

    【Milk-V Duo S 開發(fā)板免費體驗】DuoS 超聲波測距 OLED 顯示

      上篇搭建開發(fā)環(huán)境并點亮了 OLED 顯示屏,詳見: https://bbs.elecfans.com/jishu_2498771_1_1.html   本篇使用 DuoS 驅動超聲波測距模塊
    發(fā)表于 08-22 03:55

    超聲波測距換能器:工業(yè)與生活中的測量利器

    在科技飛速發(fā)展的今天,各類傳感器在各個領域發(fā)揮著至關重要的作用。其中,超聲波測距換能器憑借其獨特的優(yōu)勢,成為了距離測量領域的明星產品。無論是工業(yè)生產中的精密檢測,還是日常生活中的智能應用,超聲波
    的頭像 發(fā)表于 07-02 16:22 ?604次閱讀
    <b class='flag-5'>超聲波</b><b class='flag-5'>測距</b>換能器:工業(yè)與生活中的測量利器

    超聲波測距換能器:工業(yè)與生活中的測量利器

    在科技飛速發(fā)展的今天,各類傳感器在各個領域發(fā)揮著至關重要的作用。其中,超聲波測距換能器憑借其獨特的優(yōu)勢,成為了距離測量領域的明星產品。無論是工業(yè)生產中的精密檢測,還是日常生活中的智能應用,超聲波
    發(fā)表于 07-02 16:20

    超聲波清洗機是什么,它如何通過超聲波振動來清洗物品?

    超聲波清洗機的工作原理超聲波清洗機是一種廣泛用于清洗物品的設備,它利用超聲波振動來去除污垢和雜質。本文將深入探討超聲波清洗機的工作原理以及它
    的頭像 發(fā)表于 06-30 16:59 ?855次閱讀
    <b class='flag-5'>超聲波</b>清洗機是什么,它如何通過<b class='flag-5'>超聲波</b>振動來清洗物品?

    超聲波換能器:原理與多領域應用解析

    一、引言 在現(xiàn)代科技的發(fā)展進程中,超聲波技術占據(jù)著重要地位,從工業(yè)生產到醫(yī)療診斷,從日常生活到科研探索,超聲波的身影無處不在。而超聲波換能器作為超聲波技術的核心部件,如同一位幕后英雄,
    發(fā)表于 06-28 15:09

    超聲波水下測距換能器:探索水下世界的“千里眼”

    水下測量的“超級英雄”——超聲波水下測距換能器。 一、什么是超聲波水下測距換能器 超聲波水下測距
    發(fā)表于 06-26 10:43

    一文讀懂超聲波換能器:原理、應用與未來趨勢

    、輕量化和多功能化的發(fā)展趨勢,超聲波換能器也將不斷朝著小型化和集成化的方向發(fā)展 。通過采用先進的材料和制造工藝,減小換能器的體積和重量,同時將多個功能模塊集成在一起,實現(xiàn)一體化設計 。這樣不僅
    發(fā)表于 06-23 16:51

    超聲波換能器--聲波世界的 “神奇魔法師”

    在科技的奇妙世界里,有這樣一位 “魔法師” —— 超聲波換能器,它在眾多領域施展著神奇的聲波魔法,今天就讓我們一起揭開它神秘的面紗,一探其中的奧秘。 超聲波換能器的原理:神奇的壓電效應 超聲
    發(fā)表于 06-11 17:30

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

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

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

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

    超聲波焊接工藝詳解 超聲波焊接應用領域

    一、超聲波焊接工藝詳解 超聲波焊接是一種利用高頻振動波進行焊接的工藝。其工作原理是將高頻振動波傳遞到兩個需焊接的物體表面,在加壓的情況下,使兩個物體表面相互摩擦而形成分子層之間的熔合。以下是關于
    的頭像 發(fā)表于 01-31 15:12 ?2823次閱讀

    超聲波焊接技術原理

    在現(xiàn)代工業(yè)生產中,塑料材料因其輕便、耐腐蝕和成本效益高而被廣泛使用。超聲波焊接技術作為一種高效的塑料連接方法,因其快速、清潔、無需使用粘合劑或溶劑而受到青睞。 超聲波焊接技術原理 超聲波焊接技術
    的頭像 發(fā)表于 01-19 11:01 ?2890次閱讀