一. 前言
在控制物體移動方面,像控制智能小車、平衡車、四軸飛控,雙軸遙感按鍵遠比按鍵要實用,而且引腳少,程序編寫簡單,是時候該放棄對按鍵的使用了,來看看雙軸遙感按鍵吧!
二. 雙軸遙感按鍵簡介
雙軸,可以輸出X,Y兩個方向上的電壓值表示當前遙感所處的位置。按鍵,可以按下,具有按鍵的功能,看到這里是不是覺得它功能強大?。?!。每個軸共有三個引腳,分別是VCC,GND和信號引腳。所以說,它一共用六個引腳,外加按鍵的四個引腳。VCC可以接3.3-5V。信號引腳輸出的電壓為0-VCC。遙感處于中間位置的時候,兩個軸輸出的電壓為VCC/2。以X軸為例,如果遙感在最右邊,那么輸出為0V,在最左邊,那么輸出為VCC。是不是覺得采集它的數據很容易,通過STM32內部的ADC就可以很輕松的采集到了,(#^.^#)。
二. 雙軸遙感信號采集
采集部分我打算略寫,一共兩個通道,X,Y,使用ADC采集,ADC的配置基本上是通用的。采集到的值理論上為0-4096。
三.雙軸遙感信號校準
由于實際上采集到的信號不為0-4096,這里需要有一個校準的操作。也就是采集多次各個方向上的遙感數據,然后取平均。X軸的最左邊為例,這里采集了400次。同時對模擬量進行一個判斷,在最左邊的就要,否則舍棄。/*XL方向校準*/
void Rocker1CalibrationXL(void)
{
uint16_ti;
uint32_t valueSum = 0;
for(i = 0 ;i < 400; )
{
uint16_tvalue=getX1Value();/*獲取X軸的模擬量*/
if(value>0xf600)/*判斷模擬值,是不是在左邊了*/
{
valueSum += value;
i++;
}
}
XOffSetL = valueSum / 400;
}
四.雙軸遙感信號歸一化
這里將X,Y兩軸的信號全部歸一化到0-100區間內,至于為什么歸一化到這個區間內,是為了方便計算遙感的角度值。具體做法如下- 獲取原始數據
- 計算原始數據到對應兩邊界的距離
- 將計算得到的結果擴大100倍(避免小數),除以區間范圍
- 左邊 加(100 - 右邊)除以2得到最終結
XValue = getX1Value(); //獲取X方向遙感數值
if(XValue > XOffSetL)
XtempL = 0; /*小于左邊界,直接復制為0*/
else
XtempL = XOffSetL - XValue ;
if(XValue < XOffSetR)
XtempR = 0; /*大于右邊界,直接復制為0*/
else
XtempR = XValue - XOffSetR;
uint32_t XtL = XtempL * 100;
uint32_t XtR = XtempR * 100;
XtL = XtL / (XOffSetL - XOffSetR);
XtR = XtR / (XOffSetL - XOffSetR);
X = (XtL + (100 - XtR)) / 2; /*結果為遙感到左邊界的距離,0 - 100*/
五.計算雙軸遙感的角度
計算出來的角度分布如下圖所示。先來想一下如何將遙感數據對應起這些角度來。不妨先看看遙感數據的特點。180°,X軸對應為0,0°,X軸對應100。如果只考慮半個圓0-180°。是不是可以用 180*X,然后用18000 - 180*X,最后除以一個100就ok啦!然后再看Y軸,如果Y軸輸出小于50。那么整體度數加個180,就可以完美和上圖對應起來啦。代碼實現如下
/*將輸入的pos信息 轉換為角度信息*/
/*左為180度 上為270度*/
uint16_t ConvPos2Angle(uint16_t pos)
{
uint16_t angle = 0;
uint8_t X = pos;
uint8_tY=pos>>8;
uint16_t Xtemp = 180 * X;
uint16_t Ytemp = 180 * Y;
/*遙感位置中心 直接返回*/
if(X < 55 && X > 45 && Y < 55 && Y > 45)
return RockerNone;
/*Y軸位于上方,就是180°加上X軸的偏移*/
if(Ytemp < 9000)
angle = 18000 + Xtemp;
else /*Y軸位于下方,就是180°減上X軸的偏移*/
{
if(Xtemp > 18000)
angle = 0;
else
angle = 18000 - Xtemp;
}
/*由于遙感數據有誤差,需要截取*/
if(angle > 36000)
angle=36000;
return angle / 100;
}
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
按鍵
+關注
關注
4文章
223瀏覽量
57602 -
遙感
+關注
關注
0文章
246瀏覽量
16823 -
Vcc
+關注
關注
2文章
305瀏覽量
36008
原文標題:還在用按鍵? 快來試試雙軸遙感按鍵吧?。?!
文章出處:【微信號:FPGA之旅,微信公眾號:FPGA之旅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
單軸和雙軸測徑儀在線纜方面的應用
外徑尺寸的閉環控制。單軸測徑儀適用于線纜電纜、橡膠、塑料等行業的檢測,特別是對于圓形線纜的外徑檢測。
雙軸測徑儀的應用
雙軸測徑儀配備了兩組
發表于 08-16 17:48
NanoPi +雙軸重力搖桿
介紹JoystickMatrix-Joystick是一個雙軸按鍵搖桿模塊,由兩個滑動變阻器和一個按鍵組成。當撥動搖桿時,滑動變阻器的阻值就發生變化,對應的X/Y電壓值也隨之變化,而用力
發表于 11-13 17:25
遙感
遙感是指非接觸的,遠距離的探測技術。一般指運用傳感器/遙感器對物體的電磁波的輻射、反射特性的探測。[remote sensing] 通過人造地球衛星上的遙測儀器把對地球表面實施感應遙測和資源管理
發表于 03-11 08:03
如何使用單片機接入按鍵遙感
文章目錄1 簡介2 主要器件2.1 雙軸搖桿模塊2.2 電路原理圖3 實現效果4 測試代碼6 最后1 簡介Hi,大家好,這里是丹成學長,今天向大家介紹如何使用單片機接入
發表于 01-19 08:31
【GD32F303紅楓派開發板使用手冊】第十二講 ADC-雙軸按鍵搖桿多通道循環采樣實驗
本實驗是通過ADC規則組多通道循環采樣方式實現雙軸按鍵搖桿傳感器x和y軸電壓值的讀取,通過本實驗主要學習以下內容:
?雙
評論