1方案介紹設(shè)計(jì)思路
做一個(gè)測(cè)距儀,需要幾部分:
1. 信號(hào)采集;
2. 信號(hào)轉(zhuǎn)換成距離;
3. 將距離顯示出來(lái);
這次在網(wǎng)上分別買了超聲測(cè)距、紅外測(cè)距、激光測(cè)距的模塊,一直放那里沒(méi)有試,等需要用的時(shí)候,發(fā)現(xiàn)就紅外測(cè)距的模塊有幾根線,可以直接插到板子上用,那么就用紅外測(cè)距模塊了。
紅外測(cè)距模塊的型號(hào)是SHARP GP2D12,輸出的信號(hào)是模擬電壓信號(hào),電壓值跟距離有關(guān),那么用板子采集分析這個(gè)電壓,就能得到距離;分析模擬電壓,需要用到ADC。本次使用基于GD32F450VET6的小紅板,其中GD32F4系列MCU集成的ADC采樣速率可達(dá)2.6M SPS,性能非常高。
2方案框圖
信號(hào)換算成距離,ADC得到AD轉(zhuǎn)換后的數(shù)據(jù),但是跟距離還沒(méi)有關(guān)聯(lián)起來(lái),需要用一個(gè)公式將ADC輸出數(shù)據(jù)換算成一個(gè)距離值;這個(gè)模塊的測(cè)程大概是10cm到80cm的樣子,測(cè)了4組數(shù)據(jù),分別是20cm、40cm、60cm、80cm距離時(shí)候的ADC輸出值,將這四組數(shù)據(jù)擬合一個(gè)曲線出來(lái),就可以得到全測(cè)程的距離計(jì)算公式了;實(shí)際擬合的時(shí)候用的是指數(shù)函數(shù)。
關(guān)于距離的顯示,可以用串口顯示,也可以用LCD顯示,這里用了串口在調(diào)試的時(shí)候顯示,調(diào)好了用OLED顯示。
測(cè)試:
1. while (1)
2. {
3. static uint8_t i;
4. uint16_t adc_data;
5. float m;
6. uint8_t d;
7. uint8_t d_lcd[2] = {0};
8.// printf(" test%3d",i++);
9. bsp_led_on(LED4);
10. delay_ms(100);
11. bsp_led_off(LED4);
12. delay_ms(800);
13. adc_data = adc_regular_data_read(ADC1);
14.
15. m = 160700 * pow(adc_data,-1.097);
16. d = (uint8_t)m;
17.
18. printf(" %3d,adc:%5d,%2dcm",i++,adc_data,d);
19.
20. sprintf((char*)d_lcd,"%2d",d); // 打印到數(shù)組
21. OLED_ShowString(0,0,"D:",16);
22. OLED_ShowString(16,0,d_lcd,16);
23. OLED_ShowString(32,0,"cm",16);
24. adc_software_trigger_enable(ADC1,ADC_REGULAR_CHANNEL);
25.
26. }
用一根20cm杜邦線做參考,能測(cè)出距離,抬高一點(diǎn)點(diǎn),也可以反應(yīng)過(guò)來(lái)。
-
傳感器
+關(guān)注
關(guān)注
2564文章
52619瀏覽量
763895 -
模擬信號(hào)
+關(guān)注
關(guān)注
8文章
1158瀏覽量
53293 -
輸出信號(hào)
+關(guān)注
關(guān)注
0文章
302瀏覽量
12153
發(fā)布評(píng)論請(qǐng)先 登錄
磁致伸縮位移傳感器為何使用專用DAC輸出模擬信號(hào)

位移傳感器與激光測(cè)距儀對(duì)比
基于XIAO的迷你激光數(shù)顯測(cè)距儀設(shè)計(jì)

評(píng)論