亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5056|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

stm32單片機(jī)紅外遙控超聲波避障小車源程序+視頻+制作詳解

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:794476 發(fā)表于 2020-7-2 10:14 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
去年11月到12月,和同學(xué)一起在學(xué)校參加院電子設(shè)計(jì)大賽做的項(xiàng)目,看起來時(shí)間很長,但實(shí)際上我們攏共做的時(shí)間差不多是3天的樣子。
板子是正點(diǎn)的,所以很多地方我們就直接扒的正點(diǎn)的例程,比如紅外遙控的部分完整拿過來了,能直接用。
我們在完成學(xué)校的要求后又多加了測距顯示和差速調(diào)節(jié)(讓小車可以從完全停止到最高速度),后面我會(huì)分塊盡量詳細(xì)敘述小車的功能原理及代碼介紹。

視頻演示
https://www.bilibili.com/video/av85501350/
電源
我們采用的是三節(jié)18650供電,三節(jié)電池就有12v,用來驅(qū)動(dòng)小車綽綽有余,為了獲得更穩(wěn)定符合小車需求的電壓,我們又采用了一個(gè)LM2596S降壓模塊,把12V的電壓給降到3v給單片機(jī)供電。在安裝電源的時(shí)候,其實(shí)我們犯了一個(gè)錯(cuò)誤,把電池給安裝在了小車的第二層,這樣在取放電池時(shí)就需要拆卸螺絲,比較麻煩。

驅(qū)動(dòng)
驅(qū)動(dòng)模塊使用的是經(jīng)典的L298N,主要是實(shí)驗(yàn)室一抓一大把,關(guān)于模塊的詳細(xì)說明可以搜索得到,不再贅述。
我們對于這個(gè)模塊具體的使用如圖我們做的是4輪驅(qū)動(dòng),把輪子分左右用一個(gè)驅(qū)動(dòng)模塊進(jìn)行驅(qū)動(dòng),為了用PWM對小車進(jìn)行速度控制,所以我們需要調(diào)用時(shí)鐘,這里調(diào)用TIM4,使能PB8對左電機(jī)進(jìn)行方向控制,使能PB9作為左電機(jī)的PWM信號,使能PA6對右電機(jī)進(jìn)行方向控制,使能PB10作為右電機(jī)的PWM信號。

一邊有倆電機(jī)對應(yīng)倆輪子,所以,這里還進(jìn)行了映射,PB8映射到PB5和PB6,對應(yīng)左邊的in1和in2,進(jìn)行方向控制。
PA6映射到PA5和PA6,對應(yīng)左邊的in3和in4,進(jìn)行方向控制。
更多具體的配置都在函數(shù)里面。
驅(qū)動(dòng)部分并不是由我完全負(fù)責(zé),所以我會(huì)在大體完成后找機(jī)會(huì)請當(dāng)時(shí)一起完成的小伙伴一起校驗(yàn)。
在驅(qū)動(dòng)部分,我想再主要挑一部分詳細(xì)談?wù)劇?br /> 當(dāng)時(shí)我們在對于進(jìn)行差速控制部分有一個(gè)想法,讓它實(shí)現(xiàn)從零開始逐步加速或者最高速逐步減速,同時(shí)也完成要求的三擋速度。
對于要求的三擋速度,其他選了小車的組,據(jù)我觀察,應(yīng)該都是在函數(shù)里面寫好了預(yù)先配置3個(gè)的PWM占空比,來實(shí)現(xiàn)。
當(dāng)時(shí)是我負(fù)責(zé)的這個(gè)功能的實(shí)現(xiàn),我覺得這樣寫只能單一完成那個(gè)要求,然后為了達(dá)成我們預(yù)想的差速調(diào)節(jié),于是我在主函數(shù)設(shè)置一個(gè)變量來代表占空比,然后motor.c里面引進(jìn)并在后面的調(diào)速函數(shù)和三擋預(yù)置速度函數(shù)調(diào)用,就能夠?qū)崿F(xiàn)這兩個(gè)功能了。里面更改占空比的數(shù)值是我們測試調(diào)節(jié)修改出來的。


在控制方向上,我們有旋轉(zhuǎn)和有一定精度的角度的旋轉(zhuǎn)。功能完成也是依靠調(diào)節(jié)占空比,不再贅述。

超聲波部分我們采用的模塊是HC-SR04,同樣是一個(gè)比較經(jīng)典的模塊,這一部分比較搞的是什么,是超聲波模塊需要5v供電,及其重要,我們一開始代碼調(diào)試好后,一直顯示不出來正確的數(shù)據(jù),一直為0(我們有加OLED顯示模塊,所以可以方便測試),從驅(qū)動(dòng)做好后一直順風(fēng)順?biāo)蝗辉谶@卡殼了,弄得我們自閉許久。后來在網(wǎng)上查到是5v供電后,一改立馬成功。

OLED顯示
我們用的0.96寸7針顯示模塊,代碼部分也沒什么好說的,網(wǎng)上找到讀懂后直接調(diào)用就行了

單片機(jī)源程序如下:
  1. #include "stm32f10x.h"
  2. #include "delay.h"
  3. #include "motor.h"
  4. #include "usart.h"
  5. #include "remote.h"  
  6. #include "oled.h"
  7. #include "hcsr04.h"
  8. /*
  9. void ZYSTM32_run(int speed,int time);       //前進(jìn)函數(shù)
  10. void ZYSTM32_brake(int time);               //剎車函數(shù)
  11. void ZYSTM32_Spin_Left(int speed,int time); //左旋轉(zhuǎn)函數(shù)
  12. void ZYSTM32_Spin_Right(int speed,int time);//右旋轉(zhuǎn)函數(shù)
  13. void ZYSTM32_back(int speed,int time);      //后退函數(shù)
  14. */
  15. float length=0,sum=0;
  16.          u16 tim;
  17.          uint j=0;
  18. int i=2000;
  19. int main(void)
  20. {        
  21.          u8 key;
  22.           float distance;
  23.          delay_init();
  24.          TIM4_PWM_Init(7199,0);  //初始化PWM
  25.          Remote_Init();                        //紅外接收初始化        
  26.          CH_SR04_Init();
  27.                           OLED_Init();                        //初始化OLED  
  28.                 OLED_Clear();
  29.          ZYSTM32_brake(500);         
  30.          NVIC_Config();         
  31.          while(1)
  32.                 {                  
  33.                          key=Remote_Scan();        
  34.                         distance=Senor_Using();                        
  35.                         OLED_ShowString(0,2,"distance is");
  36.                         OLED_ShowNum(0,4,distance,8,20);
  37.                         if(distance>30)
  38.                         switch(key)
  39.                         {   
  40.                                 case 98:ZYSTM32_run(100);break;            
  41.                                 case 2:ZYSTM32_brake(100);break;                                             
  42.                                 case 34:ZYSTM32_Spin_Left(100);break;                  
  43.                                 case 168:ZYSTM32_back(100);break;                  
  44.                                 case 194:ZYSTM32_Spin_Right(100);break;
  45.         case 104:speedchange(1);break;
  46.         case 152:speedchange(2);break;        
  47.         case 176:speedchange(3);break;        
  48.                                 case 48:turnleft45(220);break;                //4   
  49.                                 case 24:turnright45(220);break;                //5   
  50.                      case 16:turnleft45(50);break;     //7
  51.         case 56:turnright45(50);break;                //8               
  52.                                 case 224:speeddown();break;                                    
  53.                                 case 144:speedup();break;
  54.                         }
  55.                         else
  56.                                 {
  57.                                         ZYSTM32_back(100);
  58.                                         delay_us(50);
  59.                                         ZYSTM32_brake(100);
  60.                         }
  61.                 }
  62. }
復(fù)制代碼

所有資料51hei提供下載:
小車基礎(chǔ)部分+紅外遙控+超聲波避障測距顯示.7z (205.01 KB, 下載次數(shù): 126)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:793141 發(fā)表于 2020-9-19 14:58 | 只看該作者
為什么用紅外遙控沒有反應(yīng)
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表