久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
大一新生第一輛循跡小車,問問大佬們怎么優(yōu)化調(diào)試小車啊,小車不能穩(wěn)定循跡,崩潰....
[打印本頁]
作者:
金并
時(shí)間:
2024-11-16 15:44
標(biāo)題:
大一新生第一輛循跡小車,問問大佬們怎么優(yōu)化調(diào)試小車啊,小車不能穩(wěn)定循跡,崩潰....
主函數(shù)
#include <REGX52.H>
#include "MotorTurn.h"
#include "State.h"
#include "Timer.h"
#include "Infrared.h"
void main()
{
Timer0_Init();
EA=1;
while(1)
{
Track();
}
}
定時(shí)器
#include <REGX52.H>
sbit ENA=P2^3;
sbit ENB=P2^5;
extern unsigned char CompareR;
extern unsigned char CompareL;
extern unsigned char Counter;
void Timer0_Init(void) //100us
{
TMOD &= 0xF0;
TMOD |= 0x01;
TL0 = 0xA4;
TH0 = 0xFF;
TF0 = 0;
TR0 = 1;
ET0=1;
EA=1;
PT0=0;
}
void Timer0_Routinue() interrupt 1
{
TL0 = 0xA4;
TH0 = 0xFF;
Counter++;
Counter%=100;
if(Counter<CompareR)
{
ENB=1;
}else{
ENB=0;
}
if(Counter<CompareL)
{
ENA=1;
}else{
ENA=0;
}
}
小車狀態(tài)
#include <REGX52.H>
#include "MotorTurn.h"
#include "Timer.h"
void Forward()
{
RightForward();
LeftForward();
}
void Back()
{
RightBack();
LeftBack();
}
void TurnRight()
{
RightStop();
LeftForward();
}
void TurnLeft()
{
LeftStop();
RightForward();
}
void Stop()
{
RightStop();
LeftStop();
}
紅外循跡
#include <REGX52.H>
#include "MotorTurn.h"
#include "State.h"
#include "Timer.h"
#include "Delay.h"
sbit D4=P1^4;
sbit D3=P1^5;
sbit D2=P1^6;
sbit D1=P1^7;
unsigned char CompareR;
unsigned char CompareL;
unsigned char Counter;
void Track()
{
if(D2==1&&D3==1) //小車停止
{
CompareR=0;
CompareL=0;
Stop();
}
if(D2==1&&D3==0) //小車稍微左轉(zhuǎn)
{
CompareR=12;
CompareL=0;
Forward();
if(D2==0&&D3==0) //小車前進(jìn)
{
CompareR=15;
CompareL=15;
Forward();
}
}
if(D2==0&&D3==1) //小車稍微右轉(zhuǎn)
{
CompareR=0;
CompareL=12;
Forward();
if(D2==0&&D3==0) //小車前進(jìn)
{
CompareR=15;
CompareL=15;
Forward();
}
}
if(D2==0&&D3==0) //小車前進(jìn)
{
CompareR=15;
CompareL=15;
Forward();
}
}
作者:
飛云居士
時(shí)間:
2024-11-16 17:22
可能導(dǎo)致不穩(wěn)定循跡的問題及優(yōu)化調(diào)試建議
(一)硬件相關(guān)
紅外傳感器布局與安裝角度:
問題:如果紅外傳感器安裝得不夠水平或者與地面的距離不一致,可能會(huì)導(dǎo)致不同傳感器接收到的反射光強(qiáng)度有較大差異,從而影響對(duì)黑線的準(zhǔn)確檢測。
調(diào)試建議:仔細(xì)檢查紅外傳感器的安裝情況,確保它們在同一水平面上且與地面的距離合適(一般幾毫米到一厘米左右,具體可根據(jù)實(shí)際情況調(diào)整)。可以使用一些輔助工具如水平儀等來保證安裝的準(zhǔn)確性。
電機(jī)性能差異:
問題:左右電機(jī)的轉(zhuǎn)速、扭矩等性能可能不完全一致,即使定時(shí)器設(shè)置相同的時(shí)間來控制電機(jī)轉(zhuǎn)動(dòng),也可能導(dǎo)致小車行駛軌跡出現(xiàn)偏差。
調(diào)試建議:單獨(dú)測試左右電機(jī),在相同的輸入條件下(如相同的電壓、相同的控制信號(hào)持續(xù)時(shí)間等),觀察它們的轉(zhuǎn)速和轉(zhuǎn)動(dòng)情況是否一致。如果存在明顯差異,可以考慮更換電機(jī)或者在軟件上進(jìn)行一些補(bǔ)償性的調(diào)整(比如根據(jù)實(shí)際測試結(jié)果,對(duì)左右電機(jī)的控制參數(shù)CompareR和CompareL進(jìn)行微調(diào))。
電源穩(wěn)定性:
問題:如果電源電壓不穩(wěn)定,可能會(huì)導(dǎo)致電機(jī)轉(zhuǎn)速波動(dòng),進(jìn)而影響小車的循跡穩(wěn)定性。
調(diào)試建議:使用萬用表等工具監(jiān)測電源電壓,確保在小車運(yùn)行過程中電壓保持在穩(wěn)定的范圍內(nèi)。如果電壓波動(dòng)較大,可以考慮增加穩(wěn)壓電路來改善電源的穩(wěn)定性。
(二)軟件相關(guān)
紅外傳感器讀取的防抖處理:
問題:在代碼中直接根據(jù)紅外傳感器引腳的當(dāng)前讀取值來判斷小車的位置狀態(tài),但是在實(shí)際環(huán)境中,由于電磁干擾、傳感器本身的特性等原因,傳感器的讀取值可能會(huì)出現(xiàn)短暫的抖動(dòng)(即瞬間的誤讀),這可能會(huì)導(dǎo)致小車做出錯(cuò)誤的動(dòng)作決策。
調(diào)試建議:可以在讀取紅外傳感器值后增加防抖處理邏輯。例如,連續(xù)多次讀取傳感器的值(比如讀取 5 - 10 次),然后根據(jù)多數(shù)值的情況來確定最終的傳感器狀態(tài)。示例代碼如下(以D2傳感器為例):
c
復(fù)制
unsigned char ReadD2Stable()
{
unsigned char readValues[10];
unsigned char i;
unsigned char countOn = 0;
for (i = 0; i < 10; i++)
{
readValues[i] = D2;
}
for (i = 0; i < 10; i++)
{
if (readValues[i] == 1)
{
countOn++;
}
}
if (countOn >= 5)
{
return 1;
}
else
{
return 0;
}
}
然后在Track函數(shù)中,將原來對(duì)D2和D3的直接讀取改為調(diào)用上述防抖處理函數(shù),比如:
c
復(fù)制
if (ReadD2Stable() == 1 && ReadD3Stable() == 1) // 小車停止
{
CompareR = 0;
CompareL = 0;
Stop();
}
循跡算法的優(yōu)化:
問題:當(dāng)前的循跡算法相對(duì)比較簡單,只是根據(jù)D2和D3兩個(gè)傳感器的狀態(tài)進(jìn)行了幾種基本情況的判斷和處理。在實(shí)際的循跡場景中,可能會(huì)遇到更復(fù)雜的路況(如彎道較急、黑線不連續(xù)等),這種簡單的算法可能無法很好地應(yīng)對(duì)。
調(diào)試建議:
考慮增加更多的傳感器或者利用現(xiàn)有的傳感器獲取更多的信息。例如,可以同時(shí)考慮D1和D4傳感器的狀態(tài),綜合四個(gè)傳感器的信息來更準(zhǔn)確地判斷小車的位置和前方路況,從而做出更合理的動(dòng)作決策。
對(duì)于不同的傳感器狀態(tài)組合,可以設(shè)計(jì)更細(xì)致的動(dòng)作策略。比如,當(dāng)D2和D3之間的狀態(tài)切換頻繁時(shí)(可能表示小車即將進(jìn)入彎道或者已經(jīng)在彎道中),可以適當(dāng)降低車速(通過調(diào)整CompareR和CompareL的值),以提高循跡的穩(wěn)定性。
可以采用一些智能的循跡算法,如 PID 控制算法。PID 算法可以根據(jù)小車當(dāng)前位置與期望位置(沿著黑線行駛)的偏差,實(shí)時(shí)調(diào)整電機(jī)的控制參數(shù),從而實(shí)現(xiàn)更精準(zhǔn)的循跡。不過,實(shí)現(xiàn) PID 算法相對(duì)復(fù)雜一些,需要對(duì) PID 原理有一定的了解并進(jìn)行相應(yīng)的代碼編寫和參數(shù)調(diào)試。
全局變量的保護(hù)與一致性:
問題:代碼中使用了一些全局變量如CompareR、CompareL和Counter,在多函數(shù)共享這些變量的情況下,如果沒有適當(dāng)?shù)谋Wo(hù)機(jī)制,可能會(huì)出現(xiàn)意外的修改,導(dǎo)致程序邏輯混亂,影響小車的循跡效果。
調(diào)試建議:
盡量減少全局變量的使用,如果可能的話,可以將一些變量改為局部變量,并通過函數(shù)參數(shù)傳遞的方式在不同函數(shù)之間共享必要的數(shù)據(jù)。
如果必須使用全局變量,可以考慮使用互斥鎖等機(jī)制來保護(hù)它們。在 51 單片機(jī)中,雖然沒有像操作系統(tǒng)那樣完善的互斥鎖機(jī)制,但可以通過一些簡單的標(biāo)志位和邏輯判斷來實(shí)現(xiàn)類似的功能。例如,在修改某個(gè)全局變量之前,先檢查一個(gè)特定的標(biāo)志位是否允許修改,如果允許則進(jìn)行修改,并在修改完成后設(shè)置標(biāo)志位為不允許修改狀態(tài),直到下一次合適的時(shí)機(jī)再允許修改。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
精品视频在线观看
|
91色在线视频
|
99久久久久
|
啪一啪
|
欧美一区二区三区,视频
|
国产精品亚洲精品日韩已方
|
伊大人久久
|
亚洲 中文 欧美 日韩 在线观看
|
午夜影院在线视频
|
成年人网站免费视频
|
午夜精品视频
|
亚洲精品久久久久久久久久久久久
|
午夜精品一区二区三区在线观看
|
www.99re
|
91国产精品
|
国产乱码一二三区精品
|
欧美三级在线
|
欧美久久不卡
|
人人干人人干人人
|
成人在线观看中文字幕
|
久草99
|
国产视频中文字幕在线观看
|
午夜影晥
|
h免费观看
|
国产线视频精品免费观看视频
|
91久久北条麻妃一区二区三区
|
国产成人a亚洲精品
|
国产精品欧美一区二区三区不卡
|
国产一区二区三区四区五区加勒比
|
九九精品在线
|
av资源中文在线
|
久久中文字幕一区
|
日日射影院
|
久久精品视频91
|
精品国产一区二区三区性色av
|
毛片网络
|
国产一级特黄真人毛片
|
欧美激情在线精品一区二区三区
|
a毛片
|
国产视频福利一区
|
日日噜噜噜夜夜爽爽狠狠视频97
|