久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
大一新生第一輛循跡小車,問問大佬們怎么優化調試小車啊,小車不能穩定循跡,崩潰....
[打印本頁]
作者:
金并
時間:
2024-11-16 15:44
標題:
大一新生第一輛循跡小車,問問大佬們怎么優化調試小車啊,小車不能穩定循跡,崩潰....
主函數
#include <REGX52.H>
#include "MotorTurn.h"
#include "State.h"
#include "Timer.h"
#include "Infrared.h"
void main()
{
Timer0_Init();
EA=1;
while(1)
{
Track();
}
}
定時器
#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;
}
}
小車狀態
#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) //小車稍微左轉
{
CompareR=12;
CompareL=0;
Forward();
if(D2==0&&D3==0) //小車前進
{
CompareR=15;
CompareL=15;
Forward();
}
}
if(D2==0&&D3==1) //小車稍微右轉
{
CompareR=0;
CompareL=12;
Forward();
if(D2==0&&D3==0) //小車前進
{
CompareR=15;
CompareL=15;
Forward();
}
}
if(D2==0&&D3==0) //小車前進
{
CompareR=15;
CompareL=15;
Forward();
}
}
作者:
飛云居士
時間:
2024-11-16 17:22
可能導致不穩定循跡的問題及優化調試建議
(一)硬件相關
紅外傳感器布局與安裝角度:
問題:如果紅外傳感器安裝得不夠水平或者與地面的距離不一致,可能會導致不同傳感器接收到的反射光強度有較大差異,從而影響對黑線的準確檢測。
調試建議:仔細檢查紅外傳感器的安裝情況,確保它們在同一水平面上且與地面的距離合適(一般幾毫米到一厘米左右,具體可根據實際情況調整)?梢允褂靡恍┹o助工具如水平儀等來保證安裝的準確性。
電機性能差異:
問題:左右電機的轉速、扭矩等性能可能不完全一致,即使定時器設置相同的時間來控制電機轉動,也可能導致小車行駛軌跡出現偏差。
調試建議:單獨測試左右電機,在相同的輸入條件下(如相同的電壓、相同的控制信號持續時間等),觀察它們的轉速和轉動情況是否一致。如果存在明顯差異,可以考慮更換電機或者在軟件上進行一些補償性的調整(比如根據實際測試結果,對左右電機的控制參數CompareR和CompareL進行微調)。
電源穩定性:
問題:如果電源電壓不穩定,可能會導致電機轉速波動,進而影響小車的循跡穩定性。
調試建議:使用萬用表等工具監測電源電壓,確保在小車運行過程中電壓保持在穩定的范圍內。如果電壓波動較大,可以考慮增加穩壓電路來改善電源的穩定性。
(二)軟件相關
紅外傳感器讀取的防抖處理:
問題:在代碼中直接根據紅外傳感器引腳的當前讀取值來判斷小車的位置狀態,但是在實際環境中,由于電磁干擾、傳感器本身的特性等原因,傳感器的讀取值可能會出現短暫的抖動(即瞬間的誤讀),這可能會導致小車做出錯誤的動作決策。
調試建議:可以在讀取紅外傳感器值后增加防抖處理邏輯。例如,連續多次讀取傳感器的值(比如讀取 5 - 10 次),然后根據多數值的情況來確定最終的傳感器狀態。示例代碼如下(以D2傳感器為例):
c
復制
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函數中,將原來對D2和D3的直接讀取改為調用上述防抖處理函數,比如:
c
復制
if (ReadD2Stable() == 1 && ReadD3Stable() == 1) // 小車停止
{
CompareR = 0;
CompareL = 0;
Stop();
}
循跡算法的優化:
問題:當前的循跡算法相對比較簡單,只是根據D2和D3兩個傳感器的狀態進行了幾種基本情況的判斷和處理。在實際的循跡場景中,可能會遇到更復雜的路況(如彎道較急、黑線不連續等),這種簡單的算法可能無法很好地應對。
調試建議:
考慮增加更多的傳感器或者利用現有的傳感器獲取更多的信息。例如,可以同時考慮D1和D4傳感器的狀態,綜合四個傳感器的信息來更準確地判斷小車的位置和前方路況,從而做出更合理的動作決策。
對于不同的傳感器狀態組合,可以設計更細致的動作策略。比如,當D2和D3之間的狀態切換頻繁時(可能表示小車即將進入彎道或者已經在彎道中),可以適當降低車速(通過調整CompareR和CompareL的值),以提高循跡的穩定性。
可以采用一些智能的循跡算法,如 PID 控制算法。PID 算法可以根據小車當前位置與期望位置(沿著黑線行駛)的偏差,實時調整電機的控制參數,從而實現更精準的循跡。不過,實現 PID 算法相對復雜一些,需要對 PID 原理有一定的了解并進行相應的代碼編寫和參數調試。
全局變量的保護與一致性:
問題:代碼中使用了一些全局變量如CompareR、CompareL和Counter,在多函數共享這些變量的情況下,如果沒有適當的保護機制,可能會出現意外的修改,導致程序邏輯混亂,影響小車的循跡效果。
調試建議:
盡量減少全局變量的使用,如果可能的話,可以將一些變量改為局部變量,并通過函數參數傳遞的方式在不同函數之間共享必要的數據。
如果必須使用全局變量,可以考慮使用互斥鎖等機制來保護它們。在 51 單片機中,雖然沒有像操作系統那樣完善的互斥鎖機制,但可以通過一些簡單的標志位和邏輯判斷來實現類似的功能。例如,在修改某個全局變量之前,先檢查一個特定的標志位是否允許修改,如果允許則進行修改,并在修改完成后設置標志位為不允許修改狀態,直到下一次合適的時機再允許修改。
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中文字幕免费视频
|
亚洲精选在线观看
|
国产日韩精品在线
|
成人午夜激情视频
|
久久最新视频
|
亚洲专区在线
|
国产一区二区福利
|
日本在线不卡视频
|
老司机午夜免费精品视频
|
成人激情视频
|
国产视频a
|
91看片淫黄大片
|
日韩精品在线看
|
成人黄色一级片
|
一级免费片
|
国产在线二区
|
日韩一级二级三级
|
亚洲一级特黄
|
香蕉视频一区二区三区
|
亚洲视频在线视频
|
狠狠干影院
|
91超碰在线播放
|
欧美日韩在线免费观看
|
国产日韩在线播放
|
国产午夜精品久久
|
欧美日韩一区二区在线观看
|
午夜免费小视频
|
天堂久久久久
|
特大黑人巨交吊性xxxx视频
|
色噜噜狠狠一区二区三区
|
不卡中文字幕
|
欧美色影院
|
91蜜桃在线观看
|
蜜桃视频一区二区
|
亚洲+小说+欧美+激情+另类
|
亚洲精品一区二区三区精华液
|
草草视频在线
|
亚洲国产欧美日韩在线
|
欧美日韩一区二区在线
|
美日韩精品
|
嫩草在线视频
|