久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

基于stm32的超聲波避障小車

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:640743 發(fā)表于 2019-11-26 10:35 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 墨染宸星 于 2019-12-2 12:41 編輯

最近STM32剛剛?cè)腴T,用ZET6和超聲波模塊做了一個(gè)避障小車,希望對(duì)初學(xué)者能有幫助;
大體思路如下:
利用定時(shí)器判斷超聲波的發(fā)出到接收的時(shí)間,然后通過公式計(jì)算得到距離,再在主函數(shù)里進(jìn)行數(shù)據(jù)分析,控制電機(jī)進(jìn)行轉(zhuǎn)彎,實(shí)現(xiàn)避障的功能。
也可以再加上屏幕,用來顯示測(cè)得的距離。
這里我們用的是HC-SR04模塊,此模塊性能穩(wěn)定,測(cè)度距離精確,模塊高精度,盲區(qū)小。采用IO口TRIG觸發(fā)測(cè)距,給至少10us的高電平信號(hào);模塊自動(dòng)發(fā)送8個(gè)40khz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回;有信號(hào)返回,通過IO口ECHO輸出一個(gè)高電平,高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。測(cè)試距離=(高電平時(shí)間*聲速(340M/S))/2;本模塊使用方法簡(jiǎn)單,一個(gè)控制口發(fā)一個(gè)10US以上的高電平,就可以在接收口等待高電平輸出。一有輸出就可以開定時(shí)器計(jì)時(shí),當(dāng)此口變?yōu)榈碗娖綍r(shí)就可以讀定時(shí)器的值,此時(shí)就為此次測(cè)距的時(shí)間,方可算出距離。如此不斷的周期測(cè),即可以達(dá)到你移動(dòng)測(cè)量的值



小車設(shè)計(jì)思路:
3個(gè)超聲波分別安裝在正前方左邊和右邊各一個(gè),具體情況見下圖:
在主函數(shù)里調(diào)用測(cè)距函數(shù),分別計(jì)算出障礙物離小車前方、左邊、右邊的距離lenth1、lenth2、lenth3,如果前方距離大于20cm并且左邊和右邊的距離大于10厘米則前進(jìn)(GO)負(fù)責(zé)判斷左邊和右邊的距離。如果左邊距離小于10cm(lenth2<10),則右轉(zhuǎn)(YOU)。如果右邊的距離小于10cm(lenth3<10),則左轉(zhuǎn)(ZUO)。其它情況下則是:后退——>延時(shí)500ms——>左拐——>延時(shí)200ms。值得注意的是:小車在超聲波測(cè)距時(shí)要保證小車處于靜止?fàn)顟B(tài)為了避免小車在測(cè)距時(shí)小車依舊在運(yùn)動(dòng)從而增加誤差。同時(shí)利用PWM調(diào)速盡量讓小車速度慢下來,來減小誤差



主要代碼如下
#include <hcsr04.h>
#include <motor.h>
#include <delay.h>
#include <stm32f10x.h>
#include <usart.h>
#include <key.h>
#include <lcd.h>
void  Car_Turn(float length1,float length2);
int main()
{
   delay_init();//延時(shí)初始化
         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
         MotorDriver_Init();//電機(jī)初始化
         uart_init(9600);
         KEY_Init();
         LCD_Init();
         HC_SR04_1_Init();
         POINT_COLOR=RED;//設(shè)置字體為紅色
         LCD_ShowString(10,70,200,16,16,"Please press wake_up to");
         LCD_ShowString(10,90,200,16,16,"start the little car");
         while(KEY_Scan(0) != WKUP_PRES);
         LCD_Clear(WHITE);
         LCD_ShowString(60,70,200,16,16,"IS WORKING...");
         //TIM3_Int_Init(1999,7199);
   while(1)
         {
                       float        length1 = Senor_Using_1();//超聲波模塊測(cè)的距離
                       float  length2 = Senor_Using_2();
                       
                       Car_Turn(length1,length2);
                       
                                         //printf("\n\t%f\t\n",length1);
                                         //printf("\n\t%f\t\n",length2);
                                         //LCD_ShowString(60,70,200,16,16,"distance:    cm");
                                         //LCD_ShowNum(80,70,length1,16,16);
                       
                                         if(KEY_Scan(0) == KEY0_PRES)
                                         {
                                            MotorDriver_L_Turn_Stop();
                          MotorDriver_R_Turn_Stop();
                                                  break;
                                         }
                                         delay_ms(50);
         }
}


void  Car_Turn(float length1,float length2)
{
  if(length1 > 30&&length2 > 30)//前進(jìn)
        {
           MotorDriver_L_Turn_Forward();
                 MotorDriver_R_Turn_Forward();
        }else if(length1 <= 30&&length2 > 30)//右轉(zhuǎn)
        {
                MotorDriver_L_Turn_Forward();
                MotorDriver_R_Turn_Reverse();
        }
        else if(length1 > 30&&length2 <= 30)//左轉(zhuǎn)
        {
          MotorDriver_R_Turn_Forward();
                MotorDriver_L_Turn_Reverse();
        }
        else if(length1 <= 30&&length2 <= 30)//后退+左轉(zhuǎn)
        {
          MotorDriver_R_Turn_Reverse();
                MotorDriver_L_Turn_Reverse();
                delay_ms(150);
                MotorDriver_R_Turn_Forward();
                MotorDriver_L_Turn_Reverse();
                delay_ms(150);
        }
}


20190803160005567.jpg (796.22 KB, 下載次數(shù): 71)

20190803160005567.jpg

避障小車.7z

229.61 KB, 下載次數(shù): 81, 下載積分: 黑幣 -5

評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2019-11-26 14:24 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本激情一区二区 | 亚洲精品免费视频 | 亚洲综合在线一区二区 | 精品免费国产一区二区三区四区 | 人干人人 | 黄色一级电影免费观看 | 欧美精品乱码久久久久久按摩 | 欧美日韩成人在线 | 一区二区蜜桃 | 国产精品毛片一区二区在线看 | 亚洲欧美国产毛片在线 | 国产激情偷乱视频一区二区三区 | 久久久国产一区 | 久操av在线| 久久成人国产 | 色综合色综合网色综合 | 国产精品久久久久久久久污网站 | 国产乱码精品一区二区三区忘忧草 | 在线视频99 | 免费在线一区二区 | 欧洲亚洲视频 | 视频1区 | 人人做人人澡人人爽欧美 | 亚洲国产精品一区二区三区 | 久久蜜桃av一区二区天堂 | 久久黄网| 久久久久国产精品 | 久在线视频 | 一级毛片免费视频观看 | 免费在线成人网 | 久久69精品久久久久久久电影好 | 国产精品乱码一区二区三区 | 欧美精品导航 | 日韩欧美在线观看视频 | 少妇一区二区三区 | 欧美日韩网站 | 成人影院免费视频 | 国产一级片久久久 | 亚洲综合大片69999 | 天天躁日日躁狠狠的躁天龙影院 | 特级黄一级播放 |