公司的專案用電阻屏,觸控的時候發現獲取的位置會漂,後來自己發現是由於壓力的問題....如果親們用電阻屏發現觸控的位置有問題,可以看一下這篇文章,,先測量觸控的壓力,達到一定程度之後再獲取座標值,這樣就不會漂了
今天為了解決乙個測量電阻屏壓力的問題,自己直接用stm32做了乙個測量電阻屏的程式(直接把觸控螢幕的四根線接到微控制器引腳上),通過ad切換採集,採集x軸電壓,y軸電壓,和壓力..最後附上自己的程式
先說一下電阻屏的原理
兩層膜
上下的線(電阻)是呈 十 字交叉
現在按下以後測量x軸
x+ 接vcc x-接gnd y-不接,測y+的電壓
相當於
按下的位置越靠近x+
測得的電壓越高
同理越原理x+測得的電壓越低
對了
測量得電壓不受yr-和yr+的影響,因為測量時yr-那端是浮空,yr+檢測電壓那端的檢測電壓電路沒有寄生電壓影響
現在測量y軸
就是y+接vcc ,y-接gnd,,x-懸空,測量x+的電壓
測得的y軸電壓越高
電阻屏還有一點是可以測量壓力,,,自己也是為了測量這個壓力而自己寫的,,,一開始以為是觸控晶元內部的寄生電阻太大才引起的測量壓力很不準確,自己用32做了以後才發現問題..變數問題....
我這裡就說一種,其實明白了一種另一種自然明白....
如果再知道流過rtouch的電流 i
那麼電阻rtouch = (v1 - v2)/i 假設電流是從v1流向v2哈...
先看怎麼得到v1和v2
先得到v1
而這個r在測量x軸的時候是可以得到的
所以流過touch的電流值就是
v1/r = v1 /(得到的x軸的電壓值/4095*(x+和x-之間的電壓值))
然後切換一下(就是說手在按著的時候電路在做切換測量)
再得到v2
那麼touch的電阻值就是
(v2-v1) / (v1/r) =(v2-v1) / (v1 /(得到的x軸的電壓值/(4095*(x+和x-之間的電壓值))))
得到的x軸的電壓值設為 x
x+和x-之間的電阻設為 r總
touch電阻值 = (v2-v1)/(v1/(x/(4095*r總)) = (v2-v1)*4095*r總/v1
=v2*4095*r總/v1 - 44095*r總
= 4095*r總*(v2/v1 - 1)
應該是4096....
竟然有點高中的感覺了............
感覺寫的有點亂...................一開始就應該把那些引數用變數規定好....不應該用漢字表達
實際操作會發現上下屏接觸的面積越大電阻值就越小,其實也好理解--按照常識來說,為什麼平常都說導線越粗電阻越小...按照物理的公式
這樣的話其實也可以利用電阻屏來檢測接觸面積
我的程式
觸控螢幕引腳 微控制器引腳
x+ pa1
x- pb0
y+ pa2
y- pa3
程式就是按照原理來測量的,沒用dma多路ad採集,,因為弄了好長時間發現靠近的兩個ad總是受到影響..弄得自己很鬱悶
期待我同學小於的dma多路採集ad的程式,,,,,....
程式是在環形佇列那個**上新增的....
STM32採集電阻觸控貼膜
公司的專案用電阻屏,觸控的時候發現獲取的位置會漂,後來自己發現是由於壓力的問題.如果親們用電阻屏發現觸控的位置有問題,可以看一下這篇文章,先測量觸控的壓力,達到一定程度之後再獲取座標值,這樣就不會漂了 今天為了解決乙個測量電阻屏壓力的問題,自己直接用stm32做了乙個測量電阻屏的程式 直接把觸控螢幕...
stm32 電容觸控按鍵
電容觸控按鍵原理 使用的是檢測電容充放電時間的方法來判斷是否有觸控,圖中 r 是外接的電容充電電阻,cs 是沒有觸控按下時 tpad 與 pcb 之間的雜散電容。而 cx 則是有手指按下的時候,手指與 tpad 之間形成的電容。圖中的開關是電容放電開關 由實際使用時,由 stm32f4 的io 代替...
arduion 下stm32 觸控螢幕
觸控螢幕我的是電阻屏,基本上也可以直接拷stm32的原 稍做修改即可 主要完成spi的初始化,u8 read once void 函式,讀取資料即可 void spi1 init 讀取一次x,y值 讀到的x,y座標值必須都大於100 成功返回1,不成功返回0 讀數限制在100 4000之間.u8 r...