AD按鍵掃瞄中串聯電阻轉換值的計算方法

2021-10-03 06:43:49 字數 1042 閱讀 3319

最近請教了一位前輩,終於搞明白用ad做按鍵掃瞄轉換值的計算方法,這裡寫一篇部落格加深下印象順便給大夥兒分享一下。

總的來說,無論是用ad掃瞄按鍵還是用ad檢測溫度,濕度,亮度……原理都是利用電阻值不同來使轉換出來的ad值不同,然後在程式中對這些值做判斷從而識別出是哪乙個按鍵按下或是溫度等數值。

還是用上篇部落格的按鍵掃瞄來做舉例,電路圖如下:

cn7這邊,每條線都是通過串聯乙個10k的電阻到vcc,以乙個ad掃瞄口做分析,四個按鍵通過導線或電阻連線到微控制器io口,同時還通過乙個10k的電阻連線到vcc,這樣按鍵這條路與10k的電阻就會分壓,然後微控制器io口通過檢測電壓的大小來轉換成乙個相應的ad值,計算的式子為vout=vcc*[rx/(rx+10k)],其中rx代表的是與按鍵串聯的分壓電阻+按鍵內阻(忽略不計)。

這樣假設我們什麼鍵也沒有按下,相當於io口直接接了乙個上拉電阻到vcc上,微控制器io口被置為高電平,電壓理論上為5v,ad轉換出來的值也為最大值255(基準值為vcc)

如果按下了10k的按鍵,這時候rx大約為1/2vcc,微控制器io口檢測出來的電壓也大約只有1/2vcc,所以按照比例,轉換出來的八位資料為256*1/2=128。

同理39k則為(39/(39+10))*256=203……如果按下了沒有串聯分壓電阻的那一路按鍵,因為輸入io口的電壓為0,那麼轉換出來的值就直接為0

其他的類似熱敏,光敏……都是根據不同的溫度,亮度……阻值不一樣來給微控制器io口送入不同大小的電壓,使值區分從而對應到溫度或是其他我們需要得到的值。

下面是乙個熱敏電阻接到微控制器io口做ad檢測電路,是乙個典型的分壓電路,vcc-熱敏電阻-同熱敏電阻阻值的精密電阻-gnd,然後中間拉出一根到io口的線,當熱敏電阻組織最大為100k的時候,輸入電壓就是1/2 vcc,這時候為了精度,mcu內部選擇基準值的時候就要盡量接近1/2vcc,最好是略大一點點,這樣就可以把誤差盡量減小。

SDL中按鍵對應的值

想用sdl的按鍵檢測,網上找了半天都沒找到sdl中按鍵的值的定義,索性自己去看標頭檔案,在sdl keysym.h中。其實很多鍵的值和它們的ascii碼是相同的。其他更多的用法,可以參考這篇部落格 typedef enum name international keyboard syms name ...

AD轉換中參考電壓的作用

參考電壓是這個樣子的,假如你選擇的參考電壓是5v,你的ad是12位的,那麼當你的輸入電壓是5v的時候你的微控制器的顯示應該是4095 如果是0v的輸入那微控制器裡面的值就是0 中間點的值成線性關係,就是說假如你的輸入是m,那微控制器微控制器的值就是4096 m 5,這樣反過來你知道了微控制器的值就可...

AD轉換中 參考電壓 的作用

ad轉換就是模數轉換。顧名思義,就是把模擬訊號轉換成數碼訊號。主要包括積分型 逐次逼近型 並行比較型 串並行型 調製型 電容陣列逐次比較型及壓頻變換型。a d轉換器是用來通過一定的電路將模擬量轉變為數字量。模擬量可以是電壓 電流等電訊號,也可以是壓力 溫度 濕度 位移 聲音等非電訊號。但在a d轉換...