一些傳統的電子設備是經過改變電位器的電阻來實現調整,好比燈的亮度、電機的轉速等。若是想對這種設備進行智能改造但不大幅度改變設備內部的電器結構,咱們須要電位器的電阻可經過單片機或微機進行控制,數字電位器就是這類設備。git
「我也是在項目中有這方面需求,又不想深刻研究設備的內部構造(設備比較貴),發現居然有數字電位器這樣的好用的東西」函數
項目需求最大電阻爲100千歐,故這裏使用的是經常使用的x9c104數字電位器芯片,該型號的芯片滑動阻值爲40歐~100千歐,100階,每階1010歐。其餘阻值型號以下表。ui
芯片有8個管腳,有效管腳7個,分佈位置以下圖,功能以下表。it
本芯片是經過INC、U/D、CS三個輸入端口的高/低電平和上升/降低沿組合實現滑動電位器Vw端的滑動。class
/* * 函數 :set_X9c104 * num :滑動階數,1010歐姆 * ud :方向,1表示上滑,0表示下滑 * save :是否保存,1表示保存,0表示不保存 */ void set_X9c104(int num,int ud,int save) { digitalWrite(CS_pin,LOW); //片選使能 delayMicroseconds(10); if(ud==1) //滑動方向選擇 { digitalWrite(UD_pin,HIGH); } else { digitalWrite(UD_pin,LOW); } delayMicroseconds(100); for(;num>0;num--) //開始向設定方向移動num階 { digitalWrite(INC_pin,HIGH); delayMicroseconds(100); digitalWrite(INC_pin,LOW); delayMicroseconds(100); } delayMicroseconds(100); if(save==1) //是否保存選擇 { digitalWrite(INC_pin,HIGH); delayMicroseconds(100); } digitalWrite(CS_pin,HIGH); delay(20); }
此外,值得一提的是,這個芯片壞片比較多,買了3片,壞了2片,也是悲劇。程序