亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版
標題:
stm32單片機紅外遙控超聲波避障小車源程序+視頻+制作詳解
[打印本頁]
作者:
一條金龍魚
時間:
2020-7-2 10:14
標題:
stm32單片機紅外遙控超聲波避障小車源程序+視頻+制作詳解
去年11月到12月,和同學一起在學校參加院電子設計大賽做的項目,看起來時間很長,但實際上我們攏共做的時間差不多是3天的樣子。
板子是正點的,所以很多地方我們就直接扒的正點的例程,比如紅外遙控的部分完整拿過來了,能直接用。
我們在完成學校的要求后又多加了測距顯示和差速調節(讓小車可以從完全停止到最高速度),后面我會分塊盡量詳細敘述小車的功能原理及代碼介紹。
視頻演示
https://www.bilibili.com/video/av85501350/
電源
我們采用的是三節18650供電,三節電池就有12v,用來驅動小車綽綽有余,為了獲得更穩定符合小車需求的電壓,我們又采用了一個LM2596S降壓模塊,把12V的電壓給降到3v給單片機供電。在安裝電源的時候,其實我們犯了一個錯誤,把電池給安裝在了小車的第二層,這樣在取放電池時就需要拆卸螺絲,比較麻煩。
驅動
驅動模塊使用的是經典的L298N,主要是實驗室一抓一大把,關于模塊的詳細說明可以搜索得到,不再贅述。
我們對于這個模塊具體的使用如圖我們做的是4輪驅動,把輪子分左右用一個驅動模塊進行驅動,為了用PWM對小車進行速度控制,所以我們需要調用時鐘,這里調用TIM4,使能PB8對左電機進行方向控制,使能PB9作為左電機的PWM信號,使能PA6對右電機進行方向控制,使能PB10作為右電機的PWM信號。
一邊有倆電機對應倆輪子,所以,這里還進行了映射,PB8映射到PB5和PB6,對應左邊的in1和in2,進行方向控制。
PA6映射到PA5和PA6,對應左邊的in3和in4,進行方向控制。
更多具體的配置都在函數里面。
驅動部分并不是由我完全負責,所以我會在大體完成后找機會請當時一起完成的小伙伴一起校驗。
在驅動部分,我想再主要挑一部分詳細談談。
當時我們在對于進行差速控制部分有一個想法,讓它實現從零開始逐步加速或者最高速逐步減速,同時也完成要求的三擋速度。
對于要求的三擋速度,其他選了小車的組,據我觀察,應該都是在函數里面寫好了預先配置3個的PWM占空比,來實現。
當時是我負責的這個功能的實現,我覺得這樣寫只能單一完成那個要求,然后為了達成我們預想的差速調節,于是我在主函數設置一個變量來代表占空比,然后motor.c里面引進并在后面的調速函數和三擋預置速度函數調用,就能夠實現這兩個功能了。里面更改占空比的數值是我們測試調節修改出來的。
在控制方向上,我們有旋轉和有一定精度的角度的旋轉。功能完成也是依靠調節占空比,不再贅述。
超聲波部分我們采用的模塊是HC-SR04,同樣是一個比較經典的模塊,這一部分比較搞的是什么,是超聲波模塊需要5v供電,及其重要,我們一開始代碼調試好后,一直顯示不出來正確的數據,一直為0(我們有加OLED顯示模塊,所以可以方便測試),從驅動做好后一直順風順水突然在這卡殼了,弄得我們自閉許久。后來在網上查到是5v供電后,一改立馬成功。
OLED顯示
我們用的0.96寸7針顯示模塊,代碼部分也沒什么好說的,網上找到讀懂后直接調用就行了
單片機源程序如下:
#include "stm32f10x.h"
#include "delay.h"
#include "motor.h"
#include "usart.h"
#include "remote.h"
#include "oled.h"
#include "hcsr04.h"
/*
void ZYSTM32_run(int speed,int time); //前進函數
void ZYSTM32_brake(int time); //剎車函數
void ZYSTM32_Spin_Left(int speed,int time); //左旋轉函數
void ZYSTM32_Spin_Right(int speed,int time);//右旋轉函數
void ZYSTM32_back(int speed,int time); //后退函數
*/
float length=0,sum=0;
u16 tim;
uint j=0;
int i=2000;
int main(void)
{
u8 key;
float distance;
delay_init();
TIM4_PWM_Init(7199,0); //初始化PWM
Remote_Init(); //紅外接收初始化
CH_SR04_Init();
OLED_Init(); //初始化OLED
OLED_Clear();
ZYSTM32_brake(500);
NVIC_Config();
while(1)
{
key=Remote_Scan();
distance=Senor_Using();
OLED_ShowString(0,2,"distance is");
OLED_ShowNum(0,4,distance,8,20);
if(distance>30)
switch(key)
{
case 98:ZYSTM32_run(100);break;
case 2:ZYSTM32_brake(100);break;
case 34:ZYSTM32_Spin_Left(100);break;
case 168:ZYSTM32_back(100);break;
case 194:ZYSTM32_Spin_Right(100);break;
case 104:speedchange(1);break;
case 152:speedchange(2);break;
case 176:speedchange(3);break;
case 48:turnleft45(220);break; //4
case 24:turnright45(220);break; //5
case 16:turnleft45(50);break; //7
case 56:turnright45(50);break; //8
case 224:speeddown();break;
case 144:speedup();break;
}
else
{
ZYSTM32_back(100);
delay_us(50);
ZYSTM32_brake(100);
}
}
}
復制代碼
所有資料51hei提供下載:
小車基礎部分+紅外遙控+超聲波避障測距顯示.7z
(205.01 KB, 下載次數: 126)
2020-7-2 12:52 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
morning1
時間:
2020-9-19 14:58
為什么用紅外遙控沒有反應
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1