完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>
標簽 > 循跡小車
做單片機的工程師相比都堆循跡小車有所認識,它是自動引導機器人系統的基本應用,那么今天小編就給大家介紹下自動自動循跡小車的原理,智能循跡小車的應用,智能循跡小車程序,循跡小車用途等知識吧!
一款自動循跡小車的設計方案 自動循跡小車是比較熱門地電子競賽,有許多設計方案。做單片機的工程師相比都堆循跡小車有所認識,它是自動引導機器人系統的基本應用,那么今天小編就給大家介紹下自動自動循跡小車的原理,智能循跡小車的應用,智能循跡小車程序,循跡小車用途等知識吧!
做單片機的工程師相比都堆循跡小車有所認識,它是自動引導機器人系統的基本應用,那么今天小編就給大家介紹下自動自動循跡小車的原理,智能循跡小車的應用,智能循跡小車程序,循跡小車用途等知識吧!
自動循跡小車的原理
1.小車控制及驅動單元的選擇
此部分是整個小車的大腦,是整個小車運行的核心部件,起著控制小車所有運行狀態的作用。通常選用單片機作為小車的核心控制單元,本文以臺灣凌陽公司的 SPCE061A單片機為例予以介紹。SPCE061是一款擁有2K RAM、32KFlash、32 個I/O 口,并集成了AD/DA功能強大的16位微處理器,它還擁有豐富的語音處理功能,為小車的功能擴展提供了相當大的空間。只要按照該單片機的要求對其編制程 序就可以實現很多不同的功能。
小車驅動電機一般利用現成的玩具小車上的配套直流電機。考慮到小車必須能夠前進、倒退、停止,并能靈活轉向,在左右兩輪各裝一個電機分別進行驅動。當左輪 電機轉速高于右輪電機轉速時小車向右轉,反之則向左轉。為了能控制車輪的轉速,可以采取PWM調速法,即由單片機的IOB8、IOB9輸出一系列頻率固定 的方波,再通過功率放大來驅動電機,在單片機中編程改變輸出方波的占空比就可以改變加到電機上的平均電壓,從而可以改變電機的轉速。左右輪兩個電機轉速的 配合就可以實現小車的前進、倒退、轉彎等功能。
2.小車循跡的原理
這里的循跡是指小車在白色地板上循黑線行走,通常采取的方法是紅外探測法。
紅外探測法,即利用紅外線在不同顏色的物體表面具有不同的反射性質的特點,在小車行駛過程中不斷地向地面發射紅外光,當紅外光遇到白色紙質地板時發生漫反 射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,小車上的接收管接收不到紅外光。單片機就是否收到反射回來的紅外光為依據來確定黑線的 位置和小車的行走路線。紅外探測器探測距離有限,一般最大不應超過15cm。對于發射和接收紅外線的紅外探頭,可以自己制作或直接采用集成式紅外探頭。
?。?)自制紅外探頭電路如圖1所示,紅外光的發送接收選用型號為ST168的對管。當小車在白色地面行駛時,裝在車下的紅外發射管發射紅外線信號, 經白色反射后,被接收管接收,一旦接收管接收到信號,那么圖中光敏三極管將導通,比較器輸出為低電平;當小車行駛到黑色引導線時,紅外線信號被黑色吸收 后,光敏三極管截止,比較器輸出高電平,從而實現了通過紅外線檢測信號的功能。將檢測到的信號送到單片機I/O口,當I/O口檢測到的信號為高電平時,表 明紅外光被地上的黑色引導線吸收了,表明小車處在黑色的引導線上;同理,當I/O口檢測到的信號為低電平時,表明小車行駛在白色地面上。此種方法簡單,價 格便宜,靈敏度可調,但是容易受到周圍環境的影響,特別是在圖1較強的日光燈下,對檢測到的信號有一定的影響。
?。?)集成式紅外探頭可以采用型號為E3F-DS10C4集成斷續式光電開關探測器,它具有簡單、可靠的工作性能,只要調節探頭上的一個旋鈕就可以 控制探頭的靈敏度。該探頭輸出端只有三根線(電源線、地線、信號線),只要將信號線接在單片機的I/O口,然后不停地對該I/O口進行掃描檢測,當其為高 電平時則檢測到白紙,當為低電平時則檢測到黑線。此種探頭還能有效地防止普通光源(如日光燈等)的干擾。其缺點則是體積比較大,占用了小車有限的空間。
3.紅外探頭的安裝
在小車具體的循跡行走過程中,為了能精確測定黑線位置并確定小車行走的方向,需要同時在底盤裝設4個紅外探測頭,進行兩級方向糾正控制,提高其循跡的可靠 性。這4個紅外探頭的具體位置如圖2所示。圖中循跡傳感器共安裝4個,全部在一條直線上。其中InfraredMR與InfraredML 為第一級方向控制傳感器,InfraredSR 與InfraredSL 為第二級方向控制傳感器。小車行走時,始終保持黑線(如圖2 中所示的行走軌跡黑線)在InfraredMR和InfraredML這兩個第一級傳感器之間,當小車偏離黑線時,第一級探測器一旦探測到有黑線,單片機 就會按照預先編定的程序發送指令給小車的控 制系統,控制系統再對小車路徑予以糾正。若小車回到了軌道上,即4個探測器都只檢測到白紙,則小車會繼續行走;若小車由于慣性過大依舊偏離軌道,越出了第 一級兩個探測器的探測范圍,這時第二級動作,再次對小車的運動進行糾正,使之回到正確軌道上去??梢钥闯觯诙壏较蛱綔y器實際是第一級的后備保護,從而 提高了小車循跡的可靠性。
4.軟件控制
其程序控制框圖如圖3。小車進入循跡模式后,即開始不停地掃描與探測器連接的單片機I/O口,一旦檢測到某個I/O口有信號,即進入判斷處理程序 (switch),先確定4個探測器中的哪一個探測到了黑線,如果InfraredML(左面第一級傳感器)或者InfraredSL(左面第二級傳感 器)探測到黑線,即小車左半部分壓到黑線,車身向右偏出,此時應使小車向左轉;如果是InfraredMR(右面第一級傳感 器)或InfraredSR(右面第二級傳感器)探測到了黑線,即車身右半部壓住黑線,小車向左偏出了軌跡,則應使小車向右轉。在經過了方向調整后,小車 再繼續向前行走,并繼續探測黑線重復上述動作。
由于第二級方向控制為第一級的后備,則兩個等級間的轉向力度必須相互配合。第二級通常是在超出第一級的控制范圍的情況下發生作用,它也是最后一層保護,所 以它必須要保證小車回到正確軌跡上來,則通常使第二級轉向力度大于第一級,即level2》level1(level1、level2為小車轉向力 度,其大小通過改變單片機輸出的占空比的大小來改變),具體數值在實地實驗中得到。
專家點評:根據本文所講述的方法,我們可以較容易地做出按照一定軌跡行走的智能電動小車。但是按照該方法行走的小車如果是走直線,有可能會是蛇形前進。為 了使小車能夠按軌跡行走的更流暢,可以在軟件編程時運用一些簡單的算法。例如,在對小車進行糾偏時,適當提前停止糾偏,而不要等到小車完全不偏時再停止, 以防止小車的過沖。
51單片機尋跡小車完整程序
今天終于把小車調成功了耶?。。?/p>
費了好大勁去調PWM波把速度降下來,然后寫轉彎,左轉大灣,左轉小灣,右轉大灣,右轉小灣,四個紅外收發管,所以就寫了四個轉彎的狀態。
P1是用來控制電機的端口,IN~控制前進后退,EN~控制小車能不能走,P0是紅外接收的口,為1時表示探測到黑線
zkb為占空比,通過zkb來控制小車的速度,t為相當于總時間,zkb是在t時間內電機工作的時間。
下面是我寫的程序:
#include 《reg52.h》
sbit IN1 = P1^0;
sbit IN2 = P1^1;
sbit ENA = P1^2;
sbit IN3 = P1^3;
sbit IN4 = P1^4;
sbit ENB = P1^5;
sbit left1 = P0^0;
sbit left2 = P0^1;
sbit right1 = P0^2;
sbit right2 = P0^3;
unsigned char zkb1 = 0;
unsigned char zkb2 = 0;
unsigned char t = 0;
void init()
{
EA = 1;
TMOD |= 0x01;
TH0 =(65536 - 100) / 256;
TL0 = (65536 - 100)% 256;
ET0 = 1;
TR0 = 1;
}
void timer0() interrupt 1
{
TH0 = (65536 - 100) / 256;
TL0 = (65536 - 100) % 256;
if(t 《 zkb1)
{
// if(t % 2 == 0)
// {
// ENA = 1;
// }
// else
// {
// ENA = 0;
// }
ENA = 1;
}
else
{
ENA = 0;
}
if(t 《 zkb2)
{
// if(t%2 == 0)
// {
// ENB = 1;
// }
// else
// {
// ENB = 0;
// }
ENB =1;
}
else
{
ENB = 0;
}
++t;
if(t 》= 50)
{
t = 0;
}
}
void turn_left1()
{
zkb1 = 13;
zkb2 = 0;
}
void turn_left2()
{
zkb1 = 13;
zkb2 = 0;
}
void turn_right1()
{
zkb1 = 0;
zkb2 = 13;
}
void turn_right2()
{
zkb1 = 0;
zkb2 = 13;
}
void qianjin()
{
zkb1 = 8;
zkb2 = 8;
}
void xunji()
{
unsigned char flag;
if((right2 == 0)&&(right1 == 0)&&(left1 == 0)&&(left2 == 0))
{
flag = 0;
}
if((right2 == 0)&&(right1 ==1)&&(left1 == 0)&&(left2 == 0))
{
flag = 1;
}
if((right2 == 0)&&(right1 == 0)&&(left1 == 1)&&(left2 == 0))
{
flag = 2;
}
if((right2 == 0)&&(right1 == 0)&&(left1 == 0)&&(left2 == 1))
{
flag = 3;
}
if((right2 == 1)&&(right1 == 0)&&(left1 == 0)&&(left2 == 0))
{
flag = 4;
}
switch(flag)
{
case 0:qianjin();break;
case 1:turn_right1();break;
case 2:turn_left1();break;
case 3:turn_left2();break;
case 4:turn_right2();break;
default:qianjin();break;
}
}
void main()
{
init();
// zkb1 = 40;
// zkb2 = 30;
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
while(1)
{
xunji();
}
}
基于 STC12C5A60S2 的智能循跡小車(附傳感器電機驅動電路圖)
設計了一種智能循跡小車,介紹了系統總體,STC12C5A60S2 單片機為智能小車控制核心、電源模塊、電機驅動電路、循跡傳感器模塊及相應軟件設計方案。...
2017-04-19 標簽:傳感器循跡小車stc12c5a60s2 1.1萬 0
以LDC1000電感/數字轉換器為核心,設計并制作了一個可自動根據鐵絲形狀循跡小車。系統的主要功能模塊包括:主控模塊、金屬信號探測模塊、速度檢測模塊,電...
編輯推薦廠商產品技術軟件/工具OS/語言教程專題
電機控制 | DSP | 氮化鎵 | 功率放大器 | ChatGPT | 自動駕駛 | TI | 瑞薩電子 |
BLDC | PLC | 碳化硅 | 二極管 | OpenAI | 元宇宙 | 安森美 | ADI |
無刷電機 | FOC | IGBT | 逆變器 | 文心一言 | 5G | 英飛凌 | 羅姆 |
直流電機 | PID | MOSFET | 傳感器 | 人工智能 | 物聯網 | NXP | 賽靈思 |
步進電機 | SPWM | 充電樁 | IPM | 機器視覺 | 無人機 | 三菱電機 | ST |
伺服電機 | SVPWM | 光伏發電 | UPS | AR | 智能電網 | 國民技術 | Microchip |
開關電源 | 步進電機 | 無線充電 | LabVIEW | EMC | PLC | OLED | 單片機 |
5G | m2m | DSP | MCU | ASIC | CPU | ROM | DRAM |
NB-IoT | LoRa | Zigbee | NFC | 藍牙 | RFID | Wi-Fi | SIGFOX |
Type-C | USB | 以太網 | 仿真器 | RISC | RAM | 寄存器 | GPU |
語音識別 | 萬用表 | CPLD | 耦合 | 電路仿真 | 電容濾波 | 保護電路 | 看門狗 |
CAN | CSI | DSI | DVI | Ethernet | HDMI | I2C | RS-485 |
SDI | nas | DMA | HomeKit | 閾值電壓 | UART | 機器學習 | TensorFlow |
Arduino | BeagleBone | 樹莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 華秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |