欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 30087|回復: 14
收起左側

51智能尋跡小車以及程序

  [復制鏈接]
ID:79723 發表于 2015-5-12 11:37 | 顯示全部樓層 |閱讀模式

    在歷屆全國大學生電子設計競賽中多次出現了集光、機、電于一體的簡易智能小車題目。筆者通過論證、比較、實驗之后,制作出了簡易小車的尋跡電路系統。整個系統基于普通玩具小車的機械結構,并利用了小車的底盤、前后輪電機及其自動復原裝置,能夠平穩跟蹤路面黑色軌跡運行。
  總體方案
  整個電路系統分為檢測、控制、驅動三個模塊。首先利用光電對管對路面信號進行檢測,經過比較器處理之后,送給軟件控制模塊進行實時控制,輸出相應的信號給驅動芯片驅動電機轉動,從而控制整個小車的運動。


  傳感檢測單元
  小車循跡原理
  該智能小車在畫有黑線的白紙“路面”上行駛,由于黑線和白紙對光線的反射系數不同,可根據接收到的反射光的強弱來判斷“道路”—黑線。筆者在該模塊中利用了簡單、應用也比較普遍的檢測方法——紅外探測法。
  紅外探測法,即利用紅外線在不同顏色的物理表面具有不同的反射性質的特點。在小車行駛過程中不斷地向地面發射紅外光,當紅外光遇到白色地面時發生漫發射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,則小車上的接收管接收不到信號。
  傳感器的選擇
  市場上用于紅外探測法的器件較多,可以利用反射式傳感器外接簡單電路自制探頭,也可以使用結構簡單、工作性能可靠的集成式紅外探頭。ST系列集成紅外探頭價格便宜、體積小、使用方便、性能可靠、用途廣泛,所以該系統中最終選擇了ST168反射傳感器作為紅外光的發射和接收器件,其內部結構和外接電路均較為簡單。
  ST168采用高發射功率紅外光、電二極管和高靈敏光電晶體管組成,采用非接觸式檢測方式。ST168的檢測距離很小,一般為8~15毫米,因為8毫米以下是它的檢測盲區,而大于15毫米則很容易受干擾。筆者經過多次測試、比較,發現把傳感器安裝在距離檢測物表面10毫米時,檢測效果最好。
  R1限制發射二極管的電流,發射管的電流和發射功率成正比,但受其極限輸入正向電流50mA的影響,用R1=150的電阻作為限流電阻,Vcc=5V作為電源電壓,測試發現發射功率完全能滿足檢測需要;可變電阻R2可限制接收電路的電流,一方面保護接收紅外管;另一方面可調節檢測電路的靈敏度。因為傳感器輸出端得到的是模擬電壓信號,所以在輸出端增加了比較器,先將ST168輸出電壓與2.5V進行比較,再送給單片機處理和控制。
  傳感器的安裝
  正確選擇檢測方法和傳感器件是決定循跡效果的重要因素,而且正確的器件安裝方法也是循跡電路好壞的一個重要因素。從簡單、方便、可靠等角度出發,同時在底盤裝設4個紅外探測頭,進行兩級方向糾正控制,將大大提高其循跡的可靠性。
  循跡傳感器全部在一條直線上。其中X1與Y1為第一級方向控制傳感器,X2與Y2為第二級方向控制傳感器,并且黑線同一邊的兩個傳感器之間的寬度不得大于黑線的寬度。小車前進時,始終保持(如圖3中所示的行走軌跡黑線)在X1和Y1這兩個第一級傳感器之間,當小車偏離黑線時,第一級傳感器就能檢測到黑線,把檢測的信號送給小車的處理、控制系統,控制系統發出信號對小車軌跡予以糾正。第二級方向探測器實際是第一級的后備保護,它的存在是考慮到小車由于慣性過大會依舊偏離軌道,再次對小車的運動進行糾正,從而提高了小車循跡的可靠性。
  軟件控制單元
  單片機選型及程序流程
  此部分是整個小車運行的核心部件,起著控制小車所有運行狀態的作用。控制方法有很多,大部分都采用單片機控制。由于51單片機具有價格低廉是使用簡單的特點,這里選擇了ATMEL公司的AT89S51作為控制核心部件。
  小車進入循跡模式后,即開始不停地掃描與探測器連接的單片機I/O口,一旦檢測到某個I/O口有信號變化,程序就進入判斷程序,把相應的信號發送給電動機從而糾正小車的狀態。
車速的控制
  車速調節的方法有兩種:一是用步進電機代替小車上原有的直流電機;二是在原有直流電機的基礎上,采用pwm調速法進行調速。考慮到機械裝置不便于修改等因素,這里選擇后者,利用單片機輸出端輸出高電平的脈寬及其占空比的大小來控制電機的轉速,從而控制小車的速度。經過多次試驗,最終確定合適的脈寬和占空比,基本能保證小車在所需要的速度范圍內平穩前行。
  電機驅動單元
  從單片機輸出的信號功率很弱,即使在沒有其它外在負載時也無法帶動電機,所以在實際電路中我們加入了電機驅動芯片提高輸入電機信號的功率,從而能夠根據需要控制電機轉動。根據驅動功率大小以及連接電路的簡化要求選擇L298N,其外形、管腳分 布如圖5所示。

圖5 L298N管腳分布圖
L298N管腳分布圖.jpg
  從圖中可以知道,一塊L298N芯片能夠驅動兩個電機轉動,它的使能端可以外接高低電平,也可以利用單片機進行軟件控制,極大地滿足各種復雜電路需要。另外,L298N的驅動功率較大,能夠根據輸入電壓的大小輸出不同的電壓和功率,解決了負載能力不夠這個問題。
  結語
此方案選擇的器件比較簡單,實際中也很容易實現。經過多次測試,結果表明在一定的弧度范圍內,小車能夠沿著黑線軌跡行進,達到了預期目標。不足之處,由于小車采用直流電機,其速度控制不夠精確和穩定,不能實現急轉和大弧度的拐彎。

程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
ucharpro_left,pro_right,i,j; //左右占空比標志

sbit left1=P2^0;
sbit left2=P2^1;
sbit right1=P2^2;
sbit right2=P2^3;   
sbit en1=P1^0;      
sbit en2=P1^1;
       //循跡口 三個紅外傳感器
sbit left_red=P1^2; //白線位置
sbit mid_red=P1^3; //黑線位置
sbit right_red=P1^4; //白線位置
void delay(uint z)
{
uchar i;
while(z--)
{for(i=0;i<121;i++);}
}
void init()
{
left_red=0; //白線位置
mid_red=1; //黑線位置
right_red=0;
TMOD=0X01; //定時器0選用方式1
TH0=(65536-100)/256;
TL0=(65536-100)%256;
EA=1;
ET0=1;
TR0=1;
en1=1;
en2=1;
}
void time0(void)interrupt 1
{
i++;
j++;
if(i<=pro_right){en1=1;}
   else en1=0;
if(i==40) {en1=~en1;i=0;}
if(j<=pro_left) {en2=1;}
   else en2=0;
if(j==40) {en2=~en2;j=0;}
TH0=(65536-100)/256;
TL0=(65536-100)%256;
}
void straight() //走直線函數
{
pro_right=39;
pro_left=39;
left1=0;
left2=1;
right1=1;
right2=0;
}
void turn_left() //左轉彎函數
{
pro_right=5;
pro_left=39;
left1=0;
left2=1;
right1=1;
right2=0;
}
void turn_right() //右轉彎函數
{
pro_right=39;
pro_left=5;
left1=0;
left2=1;
right1=1;
right2=0;
}
void turn_back() //后退(反轉)函數
{
left1=1;
left2=0;
right1=0;
right2=1;
pro_right=39;
pro_left=39;
}
void infrared() //循跡
{
uchar flag;
if(left_red==1)
   {flag=1;}
   else
if(right_red==1)
   {flag=2;}
   else
if((left_red==0)&(mid_red==0)&(right_red==0))
   {flag=3;}
   else flag=0;
switch (flag)
   {
    case 0: straight();
     break;
    case 1: turn_left();
     break;
    case 2: turn_right();
     break;
    case 3: turn_back();
     break;


    default:
     break;
   }

}
void main(void)
{
init();
delay(1);
while(1)
{
   infrared();
// straight();
}

}
void int0(void)interrupt 0
{

}


評分

參與人數 3黑幣 +68 收起 理由
想學習的電子熱 + 6 贊一個!
hantp + 12 很給力!
admin + 50 共享資料的積分獎勵!

查看全部評分

回復

使用道具 舉報

ID:75172 發表于 2015-5-30 10:13 | 顯示全部樓層
這個功能就可以做AGV小車了啊
回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:129080 發表于 2016-7-10 10:01 | 顯示全部樓層
不錯的程序
回復

使用道具 舉報

ID:127936 發表于 2016-7-10 14:56 | 顯示全部樓層
不錯!
回復

使用道具 舉報

ID:120456 發表于 2016-7-22 16:47 | 顯示全部樓層
樓主,小車的輪子左右反著走是怎么回事啊
回復

使用道具 舉報

ID:164920 發表于 2017-4-24 17:36 | 顯示全部樓層
深紅Crimson 發表于 2016-7-22 16:47
**** 作者被禁止或刪除 內容自動屏蔽 ****

那是控制端接反了
回復

使用道具 舉報

ID:193359 發表于 2017-4-25 12:05 | 顯示全部樓層
這用什么軟件打開,我用Keiluvision打開說有74個錯誤,為什么哦!!!樓主能留聯系方式?
回復

使用道具 舉報

ID:276702 發表于 2018-1-29 12:14 | 顯示全部樓層
您好,請問程序里的left1、2 right1、2控制的是什么?
回復

使用道具 舉報

ID:283315 發表于 2018-2-12 21:38 | 顯示全部樓層
請問如果想做一個掃地機器人的話,想參照你這個來做,可以嗎??那些方面需要改動??
回復

使用道具 舉報

11#
無效樓層,該帖已經被刪除
ID:299036 發表于 2018-5-6 09:43 來自觸屏版 | 顯示全部樓層
深紅Crimson 發表于 2016-7-22 16:47
**** 作者被禁止或刪除 內容自動屏蔽 ****

兩個電機接線相反了
回復

使用道具 舉報

ID:924166 發表于 2021-5-19 23:18 來自觸屏版 | 顯示全部樓層
求發電路圖
回復

使用道具 舉報

ID:582255 發表于 2021-5-20 08:17 | 顯示全部樓層
能不能把里面的圖貼出來啊,看不到你的傳感器安裝方法
回復

使用道具 舉報

ID:945628 發表于 2021-6-28 21:33 | 顯示全部樓層
按著程序只有一個輪子在動是為什么呀
回復

使用道具 舉報

ID:945628 發表于 2021-6-28 21:34 | 顯示全部樓層
中斷時沒有用嗎?
回復

使用道具 舉報

ID:946639 發表于 2021-6-30 07:56 | 顯示全部樓層
深紅Crimson 發表于 2016-7-22 16:47
**** 作者被禁止或刪除 內容自動屏蔽 ****

傳感器位置放反了嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表