歸一化處理
很多一開始的小白,在做電磁這一部分時,可能并不太知道歸一化,只是通過濾波算法處理后就用解算出來的電感數(shù)值,開始寫控制算法,這樣導(dǎo)致的結(jié)果就是,調(diào)出來的車可能容錯率不高,適應(yīng)性不強(qiáng)。
換個場地,因受賽道各種因素的影響可能需要不停地調(diào)原有設(shè)定好的電感值,對整個程序框架影響還是挺大的。
這里我給大家通俗地講述下到底歸一化該怎么處理。
這里我們以一個電感采集為例,就把他命名為AD1,接下來的代碼都是表示對AD1電感采集到的數(shù)值進(jìn)行處理。
首先第一步,我們還是先通過濾波算法對AD1電感采集到的數(shù)值進(jìn)行濾波處理:
//AD1-------------------------------------------------------------------------------------
for(num = 0; num < 10; num++)
{
i = adc_once(ADC1_SE8,ADC_12bit); j = adc_once(ADC1_SE8,ADC_12bit); k = adc_once(ADC1_SE8,ADC_12bit); //B0-3
//2.取中值
if (i > j)
{
tmp = i; i = j; j = tmp;
}
if (k > j)
tmp = j;
else if(k > i)
tmp = k;
else
tmp = i;
sum+=tmp;
}
AD_VAL1=sum/10;
sum=0;
然后,我們需要把AD1電感放置在能夠使其數(shù)值呈現(xiàn)最大的位置處,讀出采集到的最大值是多少。
如下圖我采集到的就是4095,這里我們引入一個最大值,也引入一個最小值(最小值默認(rèn)設(shè)置為0)。
int AD_val_1_min=0;
int AD_val_1_max=4095;
接著,對剛才濾波后的電感數(shù)值進(jìn)行限幅處理
//限幅
if(AD_VAL1 >AD_val_1_max) AD_VAL1=AD_val_1_max
再然后,進(jìn)行歸一化處理,引入歸一化后的電感數(shù)值ad_VAL1
//歸一化
ad_VAL1=100*(AD_VAL1 - AD_val_1_min)/(AD_val_1_max-AD_val_1_min);
經(jīng)過以上步驟處理,就可以把原先電感AD1采集到的數(shù)值給限制在0~100之間,電感數(shù)值隨著賽道的改變就不會變的很大。
因?yàn)楸緛斫o定的范圍就很小,利用歸一化處理得到的電感數(shù)值進(jìn)行控制解算,會使得電磁車的適應(yīng)場地能力更強(qiáng)。
-
濾波
+關(guān)注
關(guān)注
10文章
669瀏覽量
56722 -
電磁
+關(guān)注
關(guān)注
15文章
1138瀏覽量
51899 -
智能車
+關(guān)注
關(guān)注
21文章
404瀏覽量
77015 -
控制算法
+關(guān)注
關(guān)注
4文章
166瀏覽量
21757
發(fā)布評論請先 登錄
相關(guān)推薦
評論