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

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探討STM32F407+KS103超聲波模塊測(cè)距

Q4MP_gh_c472c21 ? 來(lái)源:21ic藍(lán)V作者吶咯密密 ? 作者:21ic藍(lán)V作者吶咯密 ? 2021-03-26 13:58 ? 次閱讀

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

KS103模塊使用串口/IIC接口與主機(jī)通信,自動(dòng)響應(yīng)主機(jī)的iic/串口控制指令。

包含溫度補(bǔ)償?shù)木嚯x探測(cè),同時(shí)可以在1ms內(nèi)檢測(cè)光強(qiáng)。

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

5s 未收到 I2C 控制指令自動(dòng)進(jìn)入 uA 級(jí)休眠,并可隨時(shí)被主機(jī) I2C 控制指令喚醒

TTL串口模式

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

在使用時(shí)最好使用5V標(biāo)準(zhǔn)電壓,電壓低會(huì)影響量程。

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

這里本人被坑了,因?yàn)槲业绞值哪K是別人用過(guò)的,被修改了地址但是不和我說(shuō),就是調(diào)試不出來(lái)。

當(dāng)然也是我偷懶了,模塊在上電的時(shí)候背面的LED會(huì)閃爍,告訴用戶(hù)自身的地址,我沒(méi)在意。上電后快閃兩下是代表二進(jìn)制的“1”,慢閃一下代表“0”,一共八位,盯著記錄就能獲得其地址。

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

確認(rèn)模組沒(méi)問(wèn)題,選用IIC接口進(jìn)行開(kāi)發(fā),這樣一條總線可以掛載多個(gè)模塊,只需要總線尋址便可。

I2C 模式

在使用iic模式時(shí),硬件需要注意幾點(diǎn):

SCL 及 SDA 線均需要由主機(jī)接一個(gè) 4.7K(阻值 1~10K 均可)電阻到 VCC ;I2C 通信速率建議不要高于 100kbit/s (因?yàn)槟K的iic最大速率只有100K)。

直接從代碼開(kāi)始:

因?yàn)閷?duì)速度要求不高,而且為了移植方便,采用軟件模擬iic。其實(shí)為了偷懶,模擬簡(jiǎn)單呀。

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

void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//使能GPIOB時(shí)鐘 //GPIOB8,B9初始化設(shè)置 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; }

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

//產(chǎn)生IIC起始信號(hào) 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總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù) } //產(chǎn)生IIC停止信號(hào) 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總線結(jié)束信號(hào) delay_us(10); } //等待應(yīng)答信號(hào)到來(lái) //返回值:1,接收應(yīng)答失敗 // 0,接收應(yīng)答成功 u8 IIC_Wait_Ack(void){ u8 ucErrTime=0; SDA_IN(); //SDA設(shè)置為輸入 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;//時(shí)鐘輸出0 return 0; } //產(chǎn)生ACK應(yīng)答 void IIC_Ack(void){ IIC_SCL=0; SDA_OUT(); IIC_SDA=0; delay_us(10); IIC_SCL=1; delay_us(10); IIC_SCL=0; } //不產(chǎn)生ACK應(yīng)答 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ā)送一個(gè)字節(jié) //返回從機(jī)有無(wú)應(yīng)答 //1,有應(yīng)答 //0,無(wú)應(yīng)答 void IIC_Send_Byte(u8 txd){ u8 t; SDA_OUT(); IIC_SCL=0;//拉低時(shí)鐘開(kāi)始數(shù)據(jù)傳輸 for(t=0;t<8;t++) { IIC_SDA=(txd&0x80)>>7; txd<<=1; delay_us(10); //對(duì)TEA5767這三個(gè)延時(shí)都是必須的 IIC_SCL=1; delay_us(10); IIC_SCL=0; delay_us(10); } } //讀1個(gè)字節(jié),ack=1時(shí),發(fā)送ACK,ack=0,發(fā)送nACK u8 IIC_Read_Byte(unsigned char ack){ unsigned char i,receive=0; SDA_IN();//SDA設(shè)置為輸入 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; }

寫(xiě)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); //進(jìn)入接收模式 IIC_Wait_Ack(); delay_us(50); //增加此代碼通信成功!!! temp=IIC_Read_Byte(0); //讀寄存器3 IIC_Stop();//產(chǎn)生一個(gè)停止條件 return temp; } void KS103_WriteOneByte(u8 address,u8 reg,u8 command) { IIC_Start(); IIC_Send_Byte(address); //發(fā)送寫(xiě)命令 IIC_Wait_Ack(); IIC_Send_Byte(reg);//發(fā)送高地址 IIC_Wait_Ack(); IIC_Send_Byte(command); //發(fā)送低地址 IIC_Wait_Ack(); IIC_Stop();//產(chǎn)生一個(gè)停止條件 }

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

pIYBAGBdeRSAPxHbAAGAvS6ph0U137.png

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

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

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

每一幀的探測(cè)指令格式為:

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

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

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


在發(fā)送探測(cè)指令后需要等待一段時(shí)間才可通過(guò)iic總線獲取數(shù)據(jù),過(guò)早的查詢(xún)總線會(huì)獲得0XFF。在讀取總線數(shù)據(jù)時(shí)除了需要發(fā)送模塊iic的地址,還需要將模塊iic的地址加1,而且在之后必須要等待,才能獲取完整的數(shù)據(jù)。因?yàn)榉祷氐氖?6位數(shù)據(jù),所以這里我采用執(zhí)行兩次KS103_ReadOneByte()函數(shù)。

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

編輯:jq

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

    關(guān)注

    5

    文章

    246

    瀏覽量

    38488
  • STM32F407
    +關(guān)注

    關(guān)注

    15

    文章

    188

    瀏覽量

    30313
  • KS103
    +關(guān)注

    關(guān)注

    3

    文章

    2

    瀏覽量

    8043

原文標(biāo)題:STM32F407+KS103超聲波模塊測(cè)距

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

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

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

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

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

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

    超聲波液位計(jì)是一種利用超聲波信號(hào)來(lái)測(cè)量液體高度的儀器。其工作原理基于超聲波在介質(zhì)中的傳播特性。以下是超聲波液位計(jì)的基本工作原理: 發(fā)射超聲波
    的頭像 發(fā)表于 11-23 10:28 ?1190次閱讀

    如何避免超聲波對(duì)晶振的影響

    超聲波技術(shù)被廣泛應(yīng)用于工業(yè)生產(chǎn)中,常見(jiàn)的超聲波工藝有:超聲波清洗工藝、焊接工藝。而在電子元器件圈中最常用到的則是超聲波清洗工藝。使用該種工藝時(shí),超聲
    的頭像 發(fā)表于 10-19 08:10 ?1370次閱讀
    如何避免<b class='flag-5'>超聲波</b>對(duì)晶振的影響

    RK3568教學(xué)實(shí)驗(yàn)箱_操作案例:5-19 超聲波測(cè)距實(shí)驗(yàn)

    的設(shè)計(jì)實(shí)現(xiàn):LCD顯示界面以及與用戶(hù)的交互; (3)編輯控制代碼; (4)編譯程序; (5)運(yùn)行程序。 根據(jù)原理圖,可知本實(shí)驗(yàn)使用的超聲波測(cè)距模塊是基于CS100A系列芯片的。 CS100A芯片
    發(fā)表于 09-23 15:40

    超聲波和次聲波的頻率范圍和應(yīng)用

    超聲波和次聲波是兩種不同頻率的聲波,它們?cè)谠S多領(lǐng)域都有廣泛的應(yīng)用。以下是關(guān)于超聲波和次聲波的頻率范圍和應(yīng)用的介紹:
    的頭像 發(fā)表于 09-19 16:42 ?5961次閱讀

    STM32最小系統(tǒng)板與ESP01S接入機(jī)智云教程

    本次采用STM32F103C8T6單片機(jī)、ESP-01S模塊、紅外避障模塊、蜂鳴器模塊,OLED(0.96iic)、繼電器模塊
    的頭像 發(fā)表于 09-04 08:02 ?1660次閱讀
    <b class='flag-5'>STM32</b>最小系統(tǒng)板與ESP01S接入機(jī)智云教程

    PGA460超聲波模塊硬件和軟件優(yōu)化

    電子發(fā)燒友網(wǎng)站提供《PGA460超聲波模塊硬件和軟件優(yōu)化.pdf》資料免費(fèi)下載
    發(fā)表于 08-27 11:16 ?7次下載
    PGA460<b class='flag-5'>超聲波模塊</b>硬件和軟件優(yōu)化

    第16章-超聲波跟隨功能 基于STM32的三路超聲波自動(dòng)跟隨小車(chē) 畢業(yè)設(shè)計(jì) 課程設(shè)計(jì)

    第16章-超聲波跟隨功能 基于STM32的三路超聲波自動(dòng)跟隨小車(chē) 畢業(yè)設(shè)計(jì) 課程設(shè)計(jì)
    的頭像 發(fā)表于 08-21 15:26 ?932次閱讀
    第16章-<b class='flag-5'>超聲波</b>跟隨功能 基于<b class='flag-5'>STM32</b>的三路<b class='flag-5'>超聲波</b>自動(dòng)跟隨小車(chē) 畢業(yè)設(shè)計(jì) 課程設(shè)計(jì)

    超聲波測(cè)速的原理、方法及應(yīng)用

    超聲波測(cè)速是一種利用超聲波在介質(zhì)中的傳播速度來(lái)測(cè)量物體速度的技術(shù)。它廣泛應(yīng)用于工業(yè)、醫(yī)療、交通等領(lǐng)域。 一、超聲波測(cè)速的原理 超聲波的定義 超聲波
    的頭像 發(fā)表于 08-16 10:36 ?7006次閱讀

    雷達(dá)探測(cè)障礙物是超聲波還是次聲波

    的特點(diǎn),這使得它非常適合用于探測(cè)和測(cè)距。 雷達(dá)探測(cè)障礙物的工作原理 雷達(dá)(包括超聲波雷達(dá))通過(guò)發(fā)射裝置向外發(fā)射超聲波。 這些超聲波遇到障礙物后會(huì)被反射回來(lái)。 雷達(dá)的接收器接收到反射回來(lái)
    的頭像 發(fā)表于 08-16 10:26 ?2741次閱讀

    第七章-V1.5 STM32超聲波測(cè)距STM32F103C8t6超聲波避障小車(chē) 超聲波避障模塊 STM32超聲波測(cè)距

    5STM32超聲波測(cè)距STM32F103C8t6超聲波避障小車(chē)
    的頭像 發(fā)表于 08-15 16:25 ?1605次閱讀
    第七章-V1.5 <b class='flag-5'>STM32</b><b class='flag-5'>超聲波</b><b class='flag-5'>測(cè)距</b><b class='flag-5'>STM32F103</b>C8t6<b class='flag-5'>超聲波</b>避障小車(chē) <b class='flag-5'>超聲波</b>避障<b class='flag-5'>模塊</b> <b class='flag-5'>STM32</b><b class='flag-5'>超聲波</b><b class='flag-5'>測(cè)距</b>

    AFE5812超聲波模擬前端數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《AFE5812超聲波模擬前端數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-29 09:37 ?0次下載
    AFE5812<b class='flag-5'>超聲波模</b>擬前端數(shù)據(jù)表

    AFE5818 16通道超聲波模擬前端數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《AFE5818 16通道超聲波模擬前端數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-29 09:29 ?14次下載
    AFE5818 16通道<b class='flag-5'>超聲波模</b>擬前端數(shù)據(jù)表
    主站蜘蛛池模板: 久久久久久久久久久观看 | 亚洲一区二区中文字幕 | 成人免费看黄网站yyy456 | 免费看污视频软件 | 成人国产一区二区 | 新版bt天堂资源在线 | 性欧美f | 久久亚洲欧美成人精品 | 久久综合久色欧美婷婷 | 黄色免费小视频 | 能看的黄色网址 | 一级毛片视屏 | 9299yy看片淫黄大片在线 | 天天狠天天操 | 人人艹人人插 | 亚洲天天操 | 手机天堂网 | 免费黄色一级片 | 亚洲男人的天堂久久香蕉 | 国产成人乱码一区二区三区 | 精品国产麻豆免费人成网站 | 国产又黄又爽又猛的免费视频播放 | 伊人手机在线观看 | 色香欲综合成人免费视频 | 中文字幕导航 | 色拍拍视频| 手机看片福利永久 | 手机看片91 | 最近2018中文字幕免费看手机 | 午夜大片在线观看 | 中文字幕不卡一区 | 日本一本高清 | 免费在线黄视频 | 免费看va| 成人午夜剧场 | 欧美午夜视频在线 | www.亚洲日本| 成人亚洲电影 | 免费一级视频在线播放 | 中文字幕三级久久久久久 | 日本中文字幕在线播放 |