一、概述 本雙輪自動尋跡小車旨在實(shí)現(xiàn)對任意給定軌跡的快速精準(zhǔn)跟蹤,基于單片機(jī)控制技術(shù),整合傳感器檢測、電機(jī)驅(qū)動及路徑規(guī)劃算法,構(gòu)建具備高穩(wěn)定性的自動尋跡小車。實(shí)物設(shè)計聚焦于硬件可靠性、軟件邏輯的高效性及系統(tǒng)整體的安全性,適用于智能物流、教育科研及工業(yè)巡檢等場景。 二、硬件設(shè)計方案 (一)主控芯片 選用STC89C52RC 單片機(jī)(STC 品牌,型號 89C52RC),其具備 8KB Flash ROM、256B RAM、3 個 16 位定時器 / 計數(shù)器及 6 個中斷源,支持最高 24MHz 晶振頻率,可滿足多任務(wù)實(shí)時處理需求。搭配最小系統(tǒng)電路,包括 11.0592MHz 晶振與按鍵復(fù)位電路,確保芯片穩(wěn)定運(yùn)行。程序下載通過MAX232 電平轉(zhuǎn)換芯片(MAXIM 品牌,型號 MAX232)連接 PC 端串口,支持 STC-ISP 軟件離線下載。 (二)傳感器模塊 采用TCRT5000 反射式紅外光電傳感器,內(nèi)置高功率紅外發(fā)射管與高靈敏度光電晶體管,檢測距離 4-13cm 可調(diào),抗環(huán)境光干擾能力強(qiáng)。內(nèi)置數(shù)模轉(zhuǎn)換,將紅外信號轉(zhuǎn)換為數(shù)字量,實(shí)現(xiàn)對黑色軌跡線的精準(zhǔn)識別。 (三)電機(jī)驅(qū)動模塊 選用L298N 電機(jī)驅(qū)動芯片,支持雙直流電機(jī)驅(qū)動,工作電壓 5-46V,最大輸出電流 2A。搭配12V/2000mAh 鋰電池供電,通過 PWM 控制電機(jī)轉(zhuǎn)速。電機(jī)選型為RS370直流減速電機(jī)(電壓 12V,轉(zhuǎn)速 3000rpm),滿足雙輪小車的驅(qū)動力與速度要求。 (四)電源模塊 12V 鋰電池經(jīng) 7809(輸出 9V)、7805(輸出 5V)穩(wěn)壓芯片,分別為電機(jī)驅(qū)動、傳感器及單片機(jī)系統(tǒng)供電。電容濾波網(wǎng)絡(luò)(10μF 貼片電容 + 0.1μF 瓷片電容)降低電源紋波,確保各模塊穩(wěn)定工作。
三、軟件設(shè)計方案 (一)軟件設(shè)計與代碼實(shí)現(xiàn) 軟件基于 STC89C52 單片機(jī)開發(fā),采用 C 語言編程,通過 Keil uVision 環(huán)境編譯生成 HEX 文件,利用 STC-ISP 工具下載至單片機(jī)。代碼核心邏輯圍繞 5 路紅外傳感器(P0.0-P0.4)的信號采集、電機(jī)差速控制及 PWM 調(diào)速。 (二)傳感器信號采集與狀態(tài)編碼 代碼通過 P0 口讀取 5 路紅外傳感器狀態(tài),未檢測到黑線時引腳為高電平(邏輯 1),檢測到黑線時為低電平(邏輯 0)。傳感器狀態(tài)被組合為 5 位二進(jìn)制數(shù)存儲于sensorValue變量,中間傳感器觸發(fā)時狀態(tài)為0b11011(對應(yīng)十六進(jìn)制0x1B),右側(cè)中間傳感器觸發(fā)時為0b11101(0x1D),左側(cè)雙傳感器觸發(fā)時為0b01111(0x0F)。代碼通過Sensor_Read()函數(shù)完成狀態(tài)采集,采用逐位賦值方式避免sbit類型直接移位運(yùn)算,確保邏輯正確性。 (三)電機(jī)驅(qū)動與 PWM 調(diào)速 電機(jī)驅(qū)動采用 L298N 模塊,通過 P2 口控制轉(zhuǎn)向邏輯(IN1-IN4),并利用定時器 0 生成 PWM 信號調(diào)節(jié)轉(zhuǎn)速(ENA/ENB)。定時器 0 工作于模式 1(16 位自動重裝),配置初值實(shí)現(xiàn)約 100μs 定時周期,中斷函數(shù)中通過pwmCounter計數(shù)器(0-100)生成 100Hz PWM 波形。左右電機(jī)占空比由cntPWM1(右電機(jī))和cntPWM2(左電機(jī))控制,直行時占空比設(shè)為 40%(cntPWM1=40、cntPWM2=40),偏左時右電機(jī)占空比提高至 55%-70%、左電機(jī)降低至 40%-55%,通過差速實(shí)現(xiàn)轉(zhuǎn)向。 (四)路徑跟蹤邏輯實(shí)現(xiàn) 主函數(shù)循環(huán)調(diào)用XunJi()函數(shù)執(zhí)行路徑控制,通過switch-case語句匹配sensorValue狀態(tài)。當(dāng)狀態(tài)為0b00000(全黑)或0b11111(全白)時執(zhí)行停車邏輯;中間傳感器觸發(fā)(0b00100對應(yīng)的flag=0)時調(diào)用Forward()函數(shù)雙電機(jī)正轉(zhuǎn);左側(cè)傳感器觸發(fā)(如0b10000對應(yīng)的flag=3)時調(diào)用TurnLeft1()函數(shù),右電機(jī)正轉(zhuǎn)、左電機(jī)反轉(zhuǎn)并設(shè)置較大轉(zhuǎn)速差(cntPWM1=55、cntPWM2=70);右側(cè)傳感器觸發(fā)時則調(diào)用TurnRight1()函數(shù),通過右電機(jī)反轉(zhuǎn)、左電機(jī)正轉(zhuǎn)糾正偏移。代碼通過固定轉(zhuǎn)速差策略實(shí)現(xiàn)轉(zhuǎn)向。
圖片1.png (95.37 KB, 下載次數(shù): 0)
下載附件
原理圖
2025-6-9 11:28 上傳
單片機(jī)源程序如下:
以上Keil代碼下載:
雙輪循跡小車.7z
(20.25 KB, 下載次數(shù): 0)
2025-6-9 13:37 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
原理圖:無
PCB:無
|