国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

使用電位計替代旋轉開關

發布時間:2014-12-16 10:42    發布者:designapp

        有時,基于微控制器的產品需要使用旋轉開關。由于很多微控制器都內置了ADC,在找不到旋轉開關或旋轉開關價格過高時,可以使用低成本電位計來替代旋轉開關(圖1)。
盡管僅需執行少量指令即可將電位計設定值數字化,使其表現得像開關一樣,但一個急需解決的問題是,在電氣噪聲或機械噪聲的影響下,在某一個值和下一個值之間的切換閾值處,數值會不穩定。該問題的解決方法是為每次轉換引入上、下兩個遲滯閾值,這樣一來,電位計就需要在另一個開關狀態有效前越過閾值。針對每次更新的開關狀態,都會有新的一對閾值替換之前的閾值。如此,遲滯效應可以實現各狀態間的完全切換。


圖1:替代多擲開關。

這一方法具有下述諸多優勢:單端口引腳對旋轉開關的多端口引腳、成本低、更易獲得且可實現去抖動切換。該方法的不足之處在于會失去制動感。設定點的另一特性是其可設置在任一位置,例如用以補償電位計在響應過程中出現的非線性變化。
遲滯通常稍高于會導致不期望切換的任何噪聲。建議在電位計觸點與地之間設置一個電容器,以濾除觸點噪聲(圖1)。
圖2列出了算法。一旦用ADC對電位計設定值進行了數字化操作,該數值就將與下閾值比較,若低于下閾值,開關狀態會逐漸降低并限制至零。若電位計設定值高于上閾值,開關狀態會逐漸增大并限制至最大值。若開關狀態發生變化,則上、下閾值會進行更新,并終止子程序。


圖2:流程圖。

為確保該遲滯算法起作用,必須定期讀取電位計設定值,并與上一次開關狀態進行比較。這樣做旨在將從不同狀態跨過閾值或處于相同值的電位計設定值與相同狀態區分開。
此處還需要計算出采樣率的最小值,可由電位計旋轉率最大值除以開關狀態數得到。例如,假設單匝電位計旋鈕在0.25s內完整旋轉一圈,同時假定有七種狀態,那么最低掃描率為28Hz。若電位計數值采樣周期低于最小值,即使切換方向正確,計算得出的開關狀態也可能不正確。倘若未以較快的速率持續改變電位計設定值,則隨后的采樣會對切換狀態進行校正。




       
以七種開關狀態為例創建一個閾值列表。假設有一個8位ADC。首先,ADC的256步范圍被分割為七種開關狀態。各開關狀態的寬度為ADC范圍除以狀態數,即:256/7=36.6。對其四舍五入,將各狀態的寬度定為36,但是兩個外端狀態需增加至38,以使總寬度為256。
下一步是確定各開關狀態的邊界。對于狀態0,邊界為0~37(包含兩端)。狀態1從38開始到73結束,其余開關狀態依此類推。根據增加或降低至邊界的遲滯數值確定閾值。此處使用“4”這一遲滯值。遲滯量既不得大于寬度,也不得低于預期的噪聲。因此,上邊界加4即可得出上閾值,下邊界減4即可得出下閾值,如表1所示。從該例可發現,從狀態2切換為狀態1需要使電位計數值下降至比切換點數值74小4,因此下閾值為70。相反,從狀態1切換為狀態2需要使電位計數值上升至比切換點數值73高4,因此上限閾值為77。用于程序代碼的表格僅需標明上、下閾值,在此例中僅需14個字節。


表1,閾值。


代碼示例(見下)支持Silicon Labs的C8051F310(8051架構),但也可以很容易地改編用于其他微控制器。
OT2SW INITIALIZATION
                MOV UPRVAL, #00H        ;set upper value to opposite end to force the code to run
                MOV LWRVAL, #0FFH        ;set lower value to opposite end to force the code to run
                MOV SWPOS, #03H        ;initialize switch position to middle
                MOV POSMAX, #06H        ;set maximum switch position value
;SUBROUTINES
POT2SW:        ;CALCULATE SWITCH POSITION VALUE FROM POTENTIOMETER VALUE IN ACC
                                ;check if pot setting is below lower threshold
                CLR C               
       
                MOV B, A                ;save pot setting to register B
                SUBB A, LWRVAL        ;potval - lwrval
                JNC P2S1                ;no carry means potval >= lwrval
                DEC SWPOS                ;carry means potval uprval, so increment switch position value
                                ;check if switch position is > max
                MOV A, POSMAX        ;load maximum xwitch position value
                CLR C
                SUBB A, SWPOS
                JNC P2S2
                MOV SWPOS, POSMAX        ;reset curve number to max curve value since overflow

        P2S2:                        ;read lower and upper thresholds using switch position value
                MOV A, SWPOS                ;multiply switch position value by 2
                MOV B, #02H
                MUL AB               
                MOV B, A                ;save multiplied value as table offset
                MOV DPTR, #HYSTBL        ;load base address of table pointer
                MOVC A, @A+DPTR        ;look up table value from base address + offset
                MOV LWRVAL, A        ;read lower threshold value
                MOV A, B                                                       
                INC DPTR                ;increment base address
                MOVC A, @A+DPTR
                MOV UPRVAL, A        ;read upper threshold value
                RET

HYSTBL:        ;TABLE OF LOWER & UPPER THRESHOLDS FOR SEVEN POSITION SWITCH
                DB        00D,        41D        ;Switch state 0
                DB        34D,        77D        ;Switch state 1
                DB        70D,        113D        ;Switch state 2
                DB        106D,        149D        ;Switch state 3
                DB        142D,        185D        ;Switch state 4
                DB        178D,        221D        ;Switch state 5
                DB        214D,        255D        ;Switch state 6



本文地址:http://m.qingdxww.cn/thread-135380-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 無線充電基礎知識及應用培訓教程
  • Chiptorials——如何使用ATECC608 TrustFLEX實現公鑰輪換
  • Chiptorials ——使用ATECC608 TrustFLEX實現基本非對稱身份驗證
  • FPGA設計流程培訓教程
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产ppp在线视频在线观看 | 99视频在线精品免费观看18 | 97视频在线观看免费 | 一个人www免费观看视频 | 日本视频在线观看 | 日本一区二区不卡视频 | 免费无限制观看黄的网址 | 好男人天堂网 | 99色播| 日韩欧美视频 | 爆操妹子 | 国产麻豆媒一区一区二区三区 | 78m成人免费视频 | 最新亚洲精品国自产在线 | 成人免费一级在线播放 | 国产精品23p | 黄色网址视频免费 | 久草视频精品 | 91牛牛 | 97免费在线视频 | 久久精品视频免费 | 成人观看免费大片在线观看 | 欧美日韩国产高清一区二区三区 | 国产成人精品视频一区二区不卡 | 四虎影视色费永久在线观看 | 好男人影视神马在线www | 亚洲热在线 | 色老头综合免费视频 | 久久久久久免费播放一级毛片 | 国产做受视频激情播放 | 日本黄网站 | 精品国产一区二区三区国产馆 | 日日夜夜噜噜噜 | 亚洲污视频 | 四虎剧场 | 春日迟迟再出发综艺在线观看免费 | 91专区 | 好好的曰www视频在线观看 | 色噜噜久久 | 久久精品国产精品亚洲20 | 国产性大片黄在线观看在线放 |