無運放的權電阻網絡在單片機控制系統中的應用(下)
{
Address=31;
}
return address;
}
#endif
#ifdef series
//串聯電路AD數表
const uint code ad_table[]=
{
1023,964 ,911 ,863 ,820 ,781 ,746 ,714 ,//0~7
683 ,656 ,631 ,608 ,586 ,566 ,547 ,530 ,//8~15
512 ,496 ,482 ,468 ,455 ,443 ,431 ,420 ,//16~23
410 ,400 ,390 ,381 ,373 ,364 ,357 ,349 //24~31
}
//串聯電路地址計算,形參為AD采樣值
uint address_cal(uint value)
{
uchar i=0;
uint address=0;
uint buff=value;
for(i=0;i<31;i++)
{
if(buff>=ad_table[i])
{
address=i;
break;
}
}
if(i==31)//低于下限
{
address=31;
}
return address;
}
#endif
系統設計
本文引用地址:http://www.j9360.com/article/273258.htm1、單次AD采樣時間以及兩次采樣的間隔時間都盡量長些,能減少數據抖動。每次采樣都要讀多次然后求平均。
2、PCB布線時,將該電路的電源其它電源分開走線,只和數字電源單點連接,且連接點盡可能靠近MCU。
3、如果發生部分地址丟失的情況,就量一下相關電阻的大小,看是否偏差過大。測焊在板上的電阻時要斷掉所有電源,撥碼全部斷開再測,否則會影響測量值。
4、注意MCU管腳內部的干擾,需要把它設置成模擬輸入的形式,而且不能帶內部上拉或下拉。
溫度特性
對串聯和并聯電路進行高低溫測試,溫度范圍是-10℃~70℃,實驗結果是-10℃的低溫對AD采集值幾乎沒影響,50℃~70℃下AD的波動由±1增加到±2,但也不影響地址判斷。
調試經驗
1、查表算法是個難點,需要進行反復調整,以保證0~31各個地址都能被正確識別,地址沒被修改時判斷出來的地址值也不能變動。
2、電路的電源和地要處理好,不能和數字地鋪成一片,電源線要和其它供電器件分開走線,這些都是為了降低AD采樣值的波動以及準確性,每一個采樣到的值都應該和理論計算值保持在至少±1的誤差內。
3、需要驗證底層的AD驅動的正確性要做到采樣點接地時,AD為0,接電源正時,AD為滿量程,10位的話是1023,12位的是4095。
4、I/O口的干擾是較難發現的問題,需要查清楚芯片內部I/O口的設置,是否自帶了內部上拉或下拉,這里的上拉電阻和下拉電阻會影響電路的輸出電壓。
電阻相關文章:電阻的作用居然有這么多,你造嗎
光敏電阻相關文章:光敏電阻工作原理
評論