用一個微控制器輸入端讀取多個開關(guān)與一只電位計(jì)的設(shè)置
本例中的電路給出了一種方法,用一個輸入端,將混合的模擬與數(shù)字輸入傳送給一個微控制器。電路輸出被連接到一個微控制器的ADC輸入端。電路包括一個可變電阻和幾個SPST(單刀單擲)開關(guān)(圖1)。用戶可以用按鍵來選擇模式、狀態(tài)或選項(xiàng),而模擬輸入提供了一種傳送可調(diào)節(jié)參數(shù)的方法。這個實(shí)現(xiàn)要求分析一個并行電阻電路和一個分壓器。如果仔細(xì)選擇了電阻值,則電路就能提供一個可識別的模擬輸入,以及一系列分立的按鍵輸入狀態(tài)。
圖1,本電路可用一只微控制器管腳,讀出多個開關(guān)和一只電位器的值。
電阻值的選擇是一個多步的過程,用一個電子表可幫助完成這個計(jì)算。例如,假設(shè)你想要用5 kΩ的電位器RADJ,為微控制器產(chǎn)生一個0至100%的值。通常會將0至255的采樣值映像為0至100的值,用于表示某個百分?jǐn)?shù)。不過,通過選擇偏置電阻RBIAS的值,可以將模擬輸入直接定位于ADC的0至255范圍內(nèi),如78至178。
要計(jì)算相應(yīng)的高側(cè)和低側(cè)偏置電阻值,可用下式,將電路作為一個簡單分壓器作計(jì)算:
代入并算出RBIAS,當(dāng)最大電壓值為255時(shí),最大低電壓值為78,最大高電壓值為178,而RADJ的值為5 kΩ時(shí),則得下式:
計(jì)算得到RBIAS的值為3875Ω。電位器選用標(biāo)準(zhǔn)值3.3 kΩ,則輸入范圍從73至182。這個范圍的動態(tài)范圍大于你的需求,但電位器值與按鍵值之間有了一個保護(hù)區(qū)。當(dāng)按下開關(guān)時(shí),RADJ的位置影響著電路看到的總電阻,因此微控制器必須為每個開關(guān)解析一系列值。為S1或S2確定開關(guān)電阻RSW時(shí),可在電位器兩個端點(diǎn)位置上使用一個并聯(lián)電阻網(wǎng)絡(luò)。
當(dāng)按下S1,而RADJ在最大位置時(shí),分壓器下端的有效電阻為RADJ與RBIAS串聯(lián)后再與RSW并聯(lián)。在最小位置時(shí),有效電阻為RSW與RBIAS并聯(lián):
按下S1時(shí),求出RBIAS與RRFFMAX構(gòu)成的分壓器值,就確定了值:
注意,當(dāng)RADJ在最大值并按下S1時(shí),產(chǎn)生的值必須小于RADJ自身提供的最小值,這樣才能唯一地確定按下了哪個開關(guān)。因此最大有效電阻REFFMAX必須產(chǎn)生一個小于最大低電壓的值,如下式所示:
將開關(guān)電阻代入并解算式,得到:
用電子表格算出開關(guān)電阻,得1558Ω,可以選擇標(biāo)稱為1.5 kΩ的電阻。這樣,當(dāng)按下開關(guān)S1時(shí),根據(jù)電位器的位置可得到28至71的區(qū)間。同樣,為S2選擇相同的值可得到184至227的區(qū)間。這些區(qū)間可以用于確定所需按下開關(guān)的一系列值,而與電位器的位置無關(guān)。雖然沒有必要選擇相同的電阻,但這樣可以減少計(jì)算量,簡化設(shè)計(jì)。此外,選擇較小的串聯(lián)開關(guān)電阻可擴(kuò)展它們與電位器之間的保護(hù)區(qū),如果獲得的值之間過于靠近,這可能是可取的方法。微控制器使用一個小例程來確定開關(guān)的位置以及電位器的設(shè)置。
這種方法也有局限,那就是在任何時(shí)間時(shí),不能按下一個以上的按鍵。而且,只有當(dāng)你未按任何其它按鍵時(shí),微控制器才能讀出電位器的位置。本例給出了如何用兩個按鍵,但按鍵的數(shù)量可以修改。輸入范圍可以多達(dá)10個按鍵和一只電位器,所有這些均可共享相同的輸入端(圖2)。盡管計(jì)算范圍并不重疊且是唯一的,但你的ADC能否在所有情況下都可靠地區(qū)分出這些區(qū)段,則是有問題的。選擇較小的電阻值可以使這些頻段相隔較遠(yuǎn),創(chuàng)建一個較大的保護(hù)區(qū)。
圖2,電路最多可以有10個按鍵和一只電位器。
用這一技巧加上四只按鍵與一只電位器,為最佳組合。用電子表作試驗(yàn),有助于快速地確定每個開關(guān)的正確串聯(lián)電阻值,以及其輸出范圍。
評論