• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于CC430F6137的工業(yè)手柄搖桿優(yōu)化模型研究

      2022-01-18 01:34:28劉偉靜趙超澤徐文麗王小濤
      自動(dòng)化儀表 2021年12期
      關(guān)鍵詞:死區(qū)搖桿偏移量

      劉偉靜,趙超澤,王 東,徐文麗,姚 寧,王小濤

      (1.天津航天機(jī)電設(shè)備研究所,天津 300458;2.天津市宇航智能裝備技術(shù)企業(yè)重點(diǎn)實(shí)驗(yàn)室,天津 300458;3.北京交通大學(xué)海濱學(xué)院,河北 廊坊 061100)

      0 引言

      隨著現(xiàn)代機(jī)械工程的快速發(fā)展,工業(yè)手柄[1-2]越來(lái)越多地應(yīng)用于無(wú)人機(jī)、機(jī)器人[3]、移動(dòng)車(chē)等。其中,工業(yè)手柄的搖桿[4]操作可實(shí)現(xiàn)設(shè)備移動(dòng)的靈活性與穩(wěn)定性。手柄控制方式分為無(wú)線(xiàn)和有線(xiàn)兩種。無(wú)線(xiàn)手柄與有線(xiàn)手柄相比,具有較高的移動(dòng)靈活性,且安裝方便、操作簡(jiǎn)單、調(diào)試維護(hù)成本較低。因此,大部分領(lǐng)域使用無(wú)線(xiàn)手柄進(jìn)行遠(yuǎn)程控制。文獻(xiàn)[5]以STC89C52單片機(jī)為主控單元,設(shè)計(jì)了搖桿信號(hào)無(wú)線(xiàn)傳輸模塊。該模塊在模數(shù)轉(zhuǎn)換器(analog to digital converter,ADC)模塊初始化時(shí)讀取的三組數(shù)據(jù)均為無(wú)效數(shù)據(jù),且在檢測(cè)數(shù)據(jù)時(shí)需在一定時(shí)間內(nèi)關(guān)閉無(wú)線(xiàn)傳輸,因而增加了數(shù)據(jù)處理時(shí)間和設(shè)備能耗。文獻(xiàn)[6]設(shè)計(jì)了一種便攜式多功能無(wú)線(xiàn)游戲手柄。該手柄能準(zhǔn)確輸出控制命令,但同一時(shí)間從緩存區(qū)讀取的11個(gè)字節(jié)不一定是同一個(gè)數(shù)據(jù)包中的,導(dǎo)致信道利用不充分甚至丟包。

      本文從手柄軟件設(shè)計(jì)入手,采用CC430F6137單片機(jī)[7]作為手柄控制器的核心部分,利用ADC采集搖桿偏移量,設(shè)置ADC采樣參數(shù),確??刂破髅看尉刹杉揭粋€(gè)完整的數(shù)據(jù)包;通過(guò)對(duì)比的方式建立搖桿數(shù)學(xué)優(yōu)化模型,以提高搖桿操作精度。

      1 硬件系統(tǒng)

      作為智能設(shè)備的上位機(jī)系統(tǒng),無(wú)線(xiàn)手柄具有遠(yuǎn)距離遙控下位機(jī)的功能,可實(shí)現(xiàn)平移、轉(zhuǎn)向、升降、翻轉(zhuǎn)等動(dòng)作。無(wú)線(xiàn)手柄操控方便,可靠性較高,能較好地滿(mǎn)足使用者的要求。

      單片機(jī)具有集成度高、可靠性高、控制功能強(qiáng)、功耗低的特點(diǎn),是工業(yè)控制領(lǐng)域廣泛使用的元件。德州儀器推出的射頻芯片CC430延續(xù)了MSP430單片機(jī)的超低功耗設(shè)計(jì),采用了CC1101[8]作為無(wú)線(xiàn)內(nèi)核,成為新一代無(wú)線(xiàn)式單片機(jī)。因此,本文選用CC430F6137作為手柄控制核心單元。將CC430F6137中的13個(gè)I/O連接手柄按鍵,4個(gè)模擬量接口連接手柄搖桿。手柄顯示屏采用并行通信模式。其中,手柄搖桿產(chǎn)生的模擬量信號(hào)通過(guò)ADC中斷轉(zhuǎn)換成數(shù)字量信號(hào),并存入CC430F6137單片機(jī)寄存器內(nèi)。解析該搖桿信號(hào)即可控制下位機(jī)的動(dòng)作。手柄硬件結(jié)構(gòu)如圖1所示。

      圖1 手柄硬件結(jié)構(gòu)框圖

      2 搖桿優(yōu)化模型設(shè)計(jì)

      本文設(shè)計(jì)的手柄采用雙軸搖桿模塊。該模塊由2個(gè)滑動(dòng)變阻器[9]組成。撥動(dòng)搖桿時(shí)滑動(dòng)變阻器的阻值發(fā)生變化,對(duì)應(yīng)的x、y軸電壓值隨之變化,進(jìn)而產(chǎn)生x、y軸方向的偏移量。當(dāng)搖桿不進(jìn)行任何操作時(shí),單片機(jī)ADC采集到的x、y軸的偏移量視為搖桿的原點(diǎn)。然而,由于滑動(dòng)變阻器的不穩(wěn)定性,搖桿原點(diǎn)會(huì)在一定范圍內(nèi)浮動(dòng),易產(chǎn)生手柄無(wú)操作但下位機(jī)動(dòng)作的問(wèn)題。因此,必須將搖桿原點(diǎn)限定在一定范圍(即死區(qū)[10]范圍)內(nèi),以防止危害事故的發(fā)生。本文以該特性為出發(fā)點(diǎn)優(yōu)化搖桿死區(qū),提高手柄操控性能。搖桿偏移量采集流程如圖2所示。

      圖2 搖桿偏移量采集流程

      在保證搖桿正常應(yīng)用的前提下擴(kuò)大搖桿死區(qū)范圍,確定在不進(jìn)行任何操作時(shí)搖桿采集點(diǎn)數(shù)始終保持在死區(qū)范圍內(nèi)。不同的死區(qū)設(shè)置方式具有不同的效果。下面解析搖桿死區(qū)分別設(shè)置為方形和圓形時(shí)的特點(diǎn),并優(yōu)化設(shè)計(jì)。

      2.1 方形死區(qū)模型

      方形死區(qū)模型如圖3所示。

      圖3 方形死區(qū)模型

      當(dāng)不操作搖桿時(shí),設(shè)定搖桿x、y軸的實(shí)際偏移量分別為s、t(s>0,t>0)。死區(qū)范圍設(shè)為:當(dāng)x值滿(mǎn)足a

      搖桿在死區(qū)范圍外,xvirtual、yvirtual軸正負(fù)方向的偏移量分別為1 024,即解析后的搖桿坐標(biāo)范圍為-1 024≤xvirtual≤1 024、-1 024≤yvirtual≤1 024。由此可以得到死區(qū)范圍之外的角度計(jì)算方法,如式(1)所示。

      (1)

      式中:A為搖桿當(dāng)前角度值。

      當(dāng)x、y值處于陰影區(qū)域2時(shí),滿(mǎn)足xvirtual=0或yvirtual=0,表示搖桿向正前、正左、正后、正右四個(gè)方向推動(dòng)。

      上述方式可在保證搖桿正常應(yīng)用的前提下有效擴(kuò)大死區(qū)范圍,保證搖桿不會(huì)在非操作模式下發(fā)出錯(cuò)誤信號(hào)。

      以圖3(a)的第一象限為例。當(dāng)搖桿沿圖3(b)中的虛線(xiàn)箭頭方向推動(dòng)時(shí),搖桿角度會(huì)出現(xiàn)0°(OA)→90°(AB)→γ(0<γ<45°)的跳變,造成輸出方向的突變,極易引起下位機(jī)方向突變,甚至死機(jī)。同理,在其他3個(gè)象限也會(huì)出現(xiàn)角度跳變現(xiàn)象。

      2.2 圓形死區(qū)模型

      滿(mǎn)足(xvirtual-s)2+(yvirtual-t)2≤r2(r>0)的區(qū)域?yàn)樗绤^(qū)范圍。當(dāng)搖桿處于死區(qū)范圍內(nèi)時(shí),坐標(biāo)設(shè)為O(0,0)。

      死區(qū)范圍之外的角度計(jì)算如式(1)所示。為判斷搖桿向正前、正左、正后、正右四個(gè)方向的推動(dòng),設(shè)定:

      (2)

      式中:0°<α<45°。

      圓形死區(qū)模型如圖4所示。

      圖4 圓形死區(qū)模型

      根據(jù)式(1)、式(2)可知,該設(shè)置方法擴(kuò)大了搖桿0°、90°、180°、270°四個(gè)方向的范圍。圓形死區(qū)模型撥動(dòng)方向如圖4(b)中陰影區(qū)域2所示。

      分析圖4(b)中的第一象限可知,直行推動(dòng)搖桿至死區(qū)范圍外,不會(huì)出現(xiàn)角度跳變,消除了搖桿操作造成的下位機(jī)方向突變的問(wèn)題。

      3 基于優(yōu)化模型的無(wú)線(xiàn)傳輸程序

      搖桿采用圓形死區(qū)模型。本文采用自定義方式設(shè)置無(wú)線(xiàn)傳輸程序,采用6個(gè)字節(jié)的自由協(xié)議:幀頭為0xAA;第2個(gè)字節(jié)為x軸坐標(biāo)數(shù)據(jù);第3個(gè)字節(jié)為y軸坐標(biāo)數(shù)據(jù);第4個(gè)字節(jié)為角度;第5個(gè)字節(jié)為校驗(yàn)位,應(yīng)用偶校驗(yàn)方式;幀尾0xBB。

      手柄發(fā)送數(shù)據(jù)流程如圖5所示。

      圖5 手柄發(fā)送數(shù)據(jù)流程

      本文應(yīng)用CC430F6137單片機(jī)中的ADC中斷構(gòu)建程序。具體程序構(gòu)建流程如下所述。

      3.1 ADC中斷初始化

      首先初始化ADC中斷,然后通過(guò)配置寄存器,使能該中斷。

      void ADC_Init(void)

      |{|P2SEL=0xCF;//使能ADC 通道輸入

      ADC12CTL0=ADC12ON+ADC12MSC+ADC12SHT0_8;

      ADC12CTL1=ADC12SHP+ADC12CONSEQ_1+ADC12SSEL_3;

      ADC12MCTL0=ADC12INCH_0;

      ADC12MCTL1=ADC12INCH_1;

      ADC12MCTL2=ADC12INCH_2;

      ADC12MCTL3=ADC12INCH_3;

      ADC12MCTL6=ADC12INCH_6;

      ADC12MCTL7=ADC12INCH_7+ADC12EOS;

      ADC12IE=0x08;

      delayxms(100);

      ADC12CTL0 |=ADC12ENC;

      ADC12CTL0 |=ADC12SC;

      delayxms(100);

      }

      3.2 配置ADC寄存器

      在中斷程序中應(yīng)用無(wú)符號(hào)整型數(shù)組results[8]配置ADC中的0、1、2、3、6、7號(hào)寄存器,將x、y、z三軸坐標(biāo)分別配置在results數(shù)組的1、0、6號(hào)寄存器中。具體如下。

      results[0] = ADC12MEM0; //y軸坐標(biāo)

      results[1] = ADC12MEM1;

      //x軸坐標(biāo)

      results[2] = ADC12MEM2;

      //外部電壓

      results[3] = ADC12MEM3;

      //電池電壓

      results[6] = ADC12MEM6;

      //z軸坐標(biāo)

      results[7] = ADC12MEM7;

      3.3 設(shè)置搖桿死區(qū)

      x軸和y軸采用二維坐標(biāo),設(shè)置圓形死區(qū)。中心點(diǎn)設(shè)置方法為:采集20次x軸和y軸搖桿在起始點(diǎn)的坐標(biāo),取其平均值,設(shè)為中心點(diǎn),例如(2 035,2 022)。以中心點(diǎn)為圓點(diǎn),以Blind_Spot為半徑,設(shè)置圓形死區(qū)。

      z軸單獨(dú)作為一維坐標(biāo)。采集20次z軸搖桿在起始點(diǎn)的坐標(biāo),取其平均值,設(shè)為中心,例如2 050。以中心點(diǎn)為起點(diǎn),上下取100,設(shè)置為死區(qū)范圍,即z軸在(1 950,2 150)范圍內(nèi)的變化忽略不計(jì)。

      具體程序如下。

      if(zeroflag==0)

      //原點(diǎn)限制

      {

      ShiftZeroX = results[1];

      ShiftZeroY = results[0];

      if ((pow((ShiftZeroX-2035),2)+pow((ShiftZeroY-2022),2))>=pow(Blind_Spot,2))

      {

      ShiftZeroX=2035;

      ShiftZeroY=2022;

      }

      ShiftZeroZ = results[6];

      if((ShiftZeroZ>2150)||(ShiftZeroZ<1950))

      ShiftZeroZ=2050;

      }

      3.4 x、y、z軸坐標(biāo)變換

      搖桿坐標(biāo)變化范圍為0~4 096,在初始位置時(shí)在2 048上下變化。將中心(2 035,2 022)轉(zhuǎn)換為原點(diǎn)(0,0),將上下1 024設(shè)置為搖桿的死區(qū)范圍,超出1 024的部分記為1 024。其中,x、y軸坐標(biāo)變換代碼如下。

      void XYConvert(int x,int y,int rocker)

      |{

      if ((pow((x-2035),2)+pow((y-2022),2))>=pow(Blind_Spot,2))

      {

      if((x>SZeroXN-1024)&&(x

      statex=x-SZeroXN;

      //x-

      else if(x

      statex=-1024.0;

      else if((x>SZeroXP)&&(x

      statex=x-SZeroXP;

      else if(x>SZeroXP+1024)

      statex=1024.0;

      else statex=0;

      if((y>SZeroYP)&&(y

      statey=y-SZeroYP;

      //y+

      else if(y>SZeroYP+1024)

      statey=1024.0;

      //y+

      else if((ySZeroYN-1024))

      statey=y-SZeroYN;

      //y-

      else if(y

      statey=-1024.0;

      //y+

      else statey=0;

      }

      else

      {

      statex=0;

      statey=0;

      }

      _no_operation();

      |}

      z坐標(biāo)變換代碼如下:

      |int ZConvert(int z,int rocker)

      |{

      int q;

      if((z>SZeroZP)&&(z

      q=z-SZeroZP;

      //z+

      else if(z>SZeroZP+1024)

      q=1024.0;

      //z+

      else if((zSZeroZN-1024))

      q=z-SZeroZN;

      //z-

      else if(z

      q=-1024.0;

      //z-

      else q=0;

      return q;

      |}

      4 試驗(yàn)驗(yàn)證

      本文應(yīng)用工業(yè)手柄無(wú)線(xiàn)遙控全向移動(dòng)轉(zhuǎn)運(yùn)車(chē)的方式,測(cè)試搖桿死區(qū)優(yōu)化模型。試驗(yàn)選擇周?chē)系K物較少、地面干凈平整的場(chǎng)地,使轉(zhuǎn)運(yùn)車(chē)可全向移動(dòng)。試驗(yàn)工業(yè)手柄發(fā)射功率為-10 dBm,最大發(fā)射半徑為100 m,距離轉(zhuǎn)運(yùn)車(chē)5 m處。x軸和y軸的死區(qū)半徑設(shè)置為100 mm。多次撥動(dòng)搖桿并將角度值顯示于液晶屏(liquid crystal display,LCD)上,觀察轉(zhuǎn)運(yùn)車(chē)的移動(dòng)方向是否與LCD上的角度信息一致。以x、y軸第一象限為例,說(shuō)明圓形死區(qū)模型和方形死區(qū)模型的優(yōu)劣。緩慢推動(dòng)搖桿,觀察x軸和y軸偏移量的變化。

      角度數(shù)值變化如表1所示。

      表1 角度數(shù)值變化

      由表1可知,當(dāng)設(shè)置圓形死區(qū)時(shí),由0°變化到65°,無(wú)角度跳變發(fā)生;當(dāng)設(shè)置方形死區(qū)時(shí),轉(zhuǎn)運(yùn)車(chē)的移動(dòng)方向由0°變化到90°,再跳變到65°。該跳變會(huì)引起轉(zhuǎn)運(yùn)車(chē)的行走角度突然發(fā)生變化,造成危險(xiǎn)。而設(shè)置圓形死區(qū)時(shí),無(wú)角度跳變的情況發(fā)生,消除了上述危險(xiǎn)。

      5 結(jié)論

      本文以CC430F6137作為手柄控制核心,根據(jù)工業(yè)手柄的可靠性建立搖桿數(shù)學(xué)模型,設(shè)定搖桿的死區(qū)模型,并分析該模型的優(yōu)劣。針對(duì)搖桿信號(hào)的無(wú)線(xiàn)傳輸程序進(jìn)行了分析設(shè)計(jì),編寫(xiě)了主要的功能函數(shù),實(shí)現(xiàn)了數(shù)據(jù)的轉(zhuǎn)換和無(wú)線(xiàn)傳輸功能。該研究為后續(xù)的應(yīng)用奠定了良好的基礎(chǔ)。

      猜你喜歡
      死區(qū)搖桿偏移量
      街機(jī)、格斗游戲更暢爽
      基于格網(wǎng)坐標(biāo)轉(zhuǎn)換法的矢量數(shù)據(jù)脫密方法研究
      曲柄搖桿機(jī)構(gòu)的急回程度分析與探討*
      具有輸入死區(qū)的分?jǐn)?shù)階Victor-Carmen 系統(tǒng)的有限時(shí)間同步(英)
      曲柄與搖桿擺角的關(guān)系
      零電壓開(kāi)關(guān)移相全橋的死區(qū)時(shí)間計(jì)算與分析
      攪拌針不同偏移量對(duì)6082-T6鋁合金接頭勞性能的影響
      基于最小二乘平差的全極化SAR配準(zhǔn)偏移量估計(jì)方法
      接觸網(wǎng)驗(yàn)電死區(qū)電場(chǎng)仿真及其啟動(dòng)電壓的探討
      電氣化鐵道(2017年1期)2017-04-16 06:00:17
      曲柄搖桿行星系取苗機(jī)構(gòu)參數(shù)匹配與優(yōu)化
      安平县| 喀什市| 秭归县| 三都| 东乡县| 大宁县| 揭东县| 滦南县| 铅山县| 贞丰县| 桦南县| 息烽县| 彭水| 洮南市| 聊城市| 电白县| 工布江达县| 胶州市| 维西| 赣州市| 寿光市| 阳曲县| 桐乡市| 黎川县| 永德县| 墨脱县| 三台县| 德昌县| 永善县| 丰县| 锦州市| 林西县| 霍邱县| 交城县| 响水县| 绥滨县| 阿合奇县| 同仁县| 封开县| 建平县| 镇原县|