免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

STM32CubeMX正交編碼器配置實(shí)戰(zhàn):原理、步驟與踩坑指南

STM32CubeMX正交編碼器配置實(shí)戰(zhàn):原理、步驟與踩坑指南 1. 從轉(zhuǎn)輪上的幾根線說起正交編碼器到底解決了什么問題做電機(jī)控制、小車底盤、云臺(tái)角度反饋的朋友多半都遇到過同一個(gè)困惑怎么準(zhǔn)確知道電機(jī)現(xiàn)在轉(zhuǎn)了多少圈、轉(zhuǎn)向是正還是反用霍爾傳感器只能測個(gè)大概用光碼盤配合普通IO讀又得盯著電平邊沿?cái)?shù)脈沖稍微一轉(zhuǎn)快了程序就亂套。直到你接觸了正交編碼器Quadrature Encoder再配合STM32定時(shí)器自帶的編碼器模式這件事才真正變得優(yōu)雅起來。正交編碼器本質(zhì)上就是一種通過兩組相位相差90度的方波信號(hào)來傳遞位置和方向信息的傳感器。A相和B相各自輸出脈沖電機(jī)每轉(zhuǎn)過一個(gè)固定角度就產(chǎn)生一個(gè)邊沿。因?yàn)閮上嘈盘?hào)之間有90度的相位差所以控制器只需要判斷A相和B相誰先跳變、誰后跳變就能知道軸是正轉(zhuǎn)還是反轉(zhuǎn)。更關(guān)鍵的是利用A、B兩相的共同邊沿可以把一圈的物理分辨率直接翻四倍這就是常說的4倍頻。比如編碼器一圈輸出500個(gè)脈沖4倍頻之后控制器每圈能分辨2000個(gè)計(jì)數(shù)單位。STM32的定時(shí)器外設(shè)在設(shè)計(jì)上就內(nèi)置了編碼器接口模式。也就是說硬件層面已經(jīng)幫你把A、B兩相的判向和計(jì)數(shù)邏輯做完了不需要外部判向電路也不需要占用CPU中斷去逐個(gè)邊沿判斷。你只需要把編碼器的A、B相接在定時(shí)器的兩個(gè)通道輸入上配置好工作模式計(jì)數(shù)器就會(huì)自動(dòng)加一或減一整個(gè)過程零CPU負(fù)擔(dān)。對(duì)工程實(shí)踐來說這意味著三件事接線簡單、實(shí)時(shí)性好、分辨率高。接線方面只需兩根信號(hào)線加電源地實(shí)時(shí)性方面計(jì)數(shù)由硬件完成不會(huì)因?yàn)橹袛囗憫?yīng)延遲而丟脈沖分辨率方面天然支持4倍頻不用額外算法就能拿到更精細(xì)的位置信息。我最早接觸這個(gè)功能是在做一個(gè)雙輪差速小車的時(shí)候。當(dāng)時(shí)用的是500線增量式編碼器加直流減速電機(jī)MCU是STM32F103RCT6。最初的方案是用外部中斷讀A相再用GPIO判斷B相電平來定方向結(jié)果車速一快中斷頻繁觸發(fā)主循環(huán)直接卡死測速數(shù)據(jù)還時(shí)不時(shí)跳變。后來換用定時(shí)器的編碼器模式整個(gè)測速鏈路瞬間輕松了。本文就圍繞STM32CubeMX中的正交編碼器配置完整講一遍原理、配置步驟、代碼集成和實(shí)際踩坑經(jīng)驗(yàn)給正準(zhǔn)備做運(yùn)動(dòng)控制的朋友一個(gè)可直接參考的路徑。2. 硬件層的關(guān)鍵判斷編碼器類型、接口電壓和定時(shí)器選型2.1 增量式編碼器與絕對(duì)式編碼器的區(qū)別談到正交編碼器第一件事是分清增量式和絕對(duì)式。STM32定時(shí)器的編碼器模式主要配合增量式編碼器使用。增量式編碼器輸出A、B兩相方波可能還有Z相零位脈沖它的特點(diǎn)是只輸出相對(duì)位置變化量斷電后無法記憶絕對(duì)位置。絕對(duì)式編碼器直接輸出當(dāng)前角度的二進(jìn)制編碼值一般走SPI、SSI或者并口不走定時(shí)器編碼器模式這條路。我自己項(xiàng)目里用過兩類增量式編碼器一種是光電式碼盤上刻著密密麻麻的柵格通過光柵透射產(chǎn)生方波信號(hào)另一種是磁式利用磁阻傳感器感知磁鐵旋轉(zhuǎn)角度變化輸出也同樣是A、B正交信號(hào)。光電式精度高但怕塵土油污磁式抗污染能力強(qiáng)價(jià)格相對(duì)便宜在小型機(jī)器人關(guān)節(jié)和電機(jī)尾軸上很常見。STM32的編碼器模式對(duì)這兩類都適用因?yàn)闅w根到底它只識(shí)別電平跳變和相位關(guān)系不在乎信號(hào)是光還是磁產(chǎn)生的。2.2 信號(hào)電平匹配3.3V與5V編碼器的處理編碼器供電電壓常見的有5V和3.3V兩種。許多工業(yè)級(jí)編碼器都是5V供電輸出高電平是5V這個(gè)電壓直接進(jìn)STM32的GPIO是有風(fēng)險(xiǎn)的。STM32F1系列的IO容忍5V輸入F4系列的部分IO也標(biāo)注了FTFive-volt tolerant屬性但不是所有引腳都支持。穩(wěn)妥的做法是在CubeMX里查看引腳定義表確認(rèn)選擇的通道引腳帶FT標(biāo)識(shí)否則串電阻分壓之后再進(jìn)MCU。我在一個(gè)項(xiàng)目中用的是歐姆龍E6B2-CWZ6C額定供電5V到24V輸出是開集電極方式必須外部加上拉電阻才能有明確的高電平。那時(shí)候?yàn)榱耸∈轮苯影演敵鲂盘?hào)引到F103的PA0和PA1上實(shí)測能用但波形邊沿比較緩后來在信號(hào)線上并聯(lián)了100pF電容去毛刺波形立刻干凈了不少。如果你的編碼器是推挽輸出邊沿會(huì)比較陡直接接3.3V供電的編碼器則最簡單完全不用考慮電平轉(zhuǎn)換。下表是我判斷編碼器接口適配性時(shí)常用的參考編碼器輸出類型輸出電平是否可直接接STM32 F1是否可直接接STM32 F4處理方式推挽輸出3.3V0~3.3V是是直接連接推挽輸出5V0~5V多數(shù)引腳可僅FT引腳可確認(rèn)FT或電平轉(zhuǎn)換開集電極輸出需外部上拉視上拉到3.3V或5V視上拉到3.3V或5V上拉到3.3V最安全差分輸出RS-422差分信號(hào)否否需要差分轉(zhuǎn)單端電路2.3 定時(shí)器選型為什么優(yōu)先選帶編碼器模式的通用定時(shí)器STM32家族里高級(jí)定時(shí)器TIM1、TIM8通用定時(shí)器TIM2、TIM3、TIM4、TIM5等都支持編碼器接口模式。選型時(shí)主要看三點(diǎn)可用的通道引腳是否和你的PCB走線沖突、計(jì)數(shù)器位寬、以及是否有其他外設(shè)搶占同一引腳。F103這種老經(jīng)典TIM2和TIM3的通道引腳映射很常用。TIM2的CH1和CH2可以映射到PA0、PA1或者通過重映射到PA15、PB3TIM3的CH1和CH2可以映射到PA6、PA7或者重映射到PB4、PB5。如果你用了JTAG調(diào)試口PA15、PB3、PB4這些引腳默認(rèn)被調(diào)試功能占用需要先關(guān)閉JTAG才能當(dāng)普通IO用。不要小看這一步很多人配置了半天引腳就是沒反應(yīng)最后發(fā)現(xiàn)是JTAG占用的問題。計(jì)數(shù)器位寬方面F103的TIM2和TIM5是32位計(jì)數(shù)器TIM3和TIM4是16位。高速旋轉(zhuǎn)時(shí)16位計(jì)數(shù)器在極高分辨率下可能很快溢出需要額外處理溢出中斷。32位計(jì)數(shù)器則寬裕得多。同樣是500線4倍頻電機(jī)最高轉(zhuǎn)速3000轉(zhuǎn)/分鐘每秒產(chǎn)生的脈沖數(shù)是500 × 4 × 50 10000016位計(jì)數(shù)器65535的上限在一秒內(nèi)一定會(huì)溢出。雖然可以通過溢出中斷配合擴(kuò)展位數(shù)但如果你同時(shí)做多路電機(jī)控制溢出中斷會(huì)時(shí)不時(shí)打斷主流程增加復(fù)雜度。這也是我后來做四輪小車時(shí)優(yōu)先選TIM2的原因32位計(jì)數(shù)器讓位置計(jì)數(shù)變得非常省心。另外CubeMX的引腳分配視圖里可以直接搜索TIM2_CH1、TIM2_CH2這樣的復(fù)用功能標(biāo)識(shí)誰和誰共用一個(gè)引腳會(huì)高亮顯示底層引腳沖突一目了然。選定時(shí)器時(shí)我習(xí)慣先在CubeMX里把引腳分配方案拖一遍確認(rèn)沒有沖突再回去畫PCB能省掉后面不少飛線改板的麻煩。3. 定時(shí)器編碼器模式的內(nèi)部機(jī)制計(jì)數(shù)方向判定的硬核邏輯3.1 為什么硬件判向比中斷判向更可靠軟件判向的思路通常是A相觸發(fā)外部中斷進(jìn)中斷后讀B相電平高電平代表正轉(zhuǎn)低電平代表反轉(zhuǎn)。這個(gè)方法在小車慢速運(yùn)行時(shí)沒問題但轉(zhuǎn)速起來之后中斷的響應(yīng)延遲會(huì)引入判斷誤差。更麻煩的是如果A相毛刺較多可能在極短時(shí)間內(nèi)觸發(fā)多次中斷造成計(jì)數(shù)錯(cuò)誤。硬件編碼器模式?jīng)]有這個(gè)問題。STM32的編碼器接口邏輯同時(shí)監(jiān)視兩個(gè)輸入信號(hào)在每個(gè)信號(hào)邊沿處進(jìn)行一次采樣綜合兩個(gè)信號(hào)的電平狀態(tài)判斷方向。因?yàn)榕袛噙壿嬐耆捎布M合電路實(shí)現(xiàn)不依賴指令執(zhí)行速度所以只要信號(hào)頻率在定時(shí)器時(shí)鐘能處理的范圍內(nèi)就不會(huì)出錯(cuò)。判斷方向和計(jì)數(shù)的本質(zhì)邏輯可以理解成一個(gè)兩輸入的狀態(tài)機(jī)。A、B兩相各有兩個(gè)電平狀態(tài)高、低組合起來有四種狀態(tài)。編碼器每轉(zhuǎn)過一個(gè)最小角度單位組合狀態(tài)就變化一次變化的方向則決定了計(jì)數(shù)器是加一還是減一。這有點(diǎn)像我們判斷一個(gè)人往哪邊走看到腳印從左邊挪到右邊就知道他往右走了。硬件在每個(gè)邊沿看的是上一個(gè)狀態(tài)和當(dāng)前狀態(tài)的關(guān)系而不是單看一路信號(hào)。3.2 三種計(jì)數(shù)模式為什么不選X1和X2直接上X4STM32的編碼器模式可以在CubeMX里配置三種計(jì)數(shù)方式X1模式只在一個(gè)通道的邊沿計(jì)數(shù)X2模式在兩個(gè)通道的邊沿計(jì)數(shù)X4模式在四個(gè)邊沿計(jì)數(shù)也就是每個(gè)完整信號(hào)周期產(chǎn)生四個(gè)計(jì)數(shù)脈沖。三種模式的差異直接反映在分辨率上。X1模式一圈計(jì)500個(gè)數(shù)以500線編碼器為例X2模式一圈計(jì)1000個(gè)數(shù)X4模式一圈計(jì)2000個(gè)數(shù)。很多人會(huì)糾結(jié)選哪個(gè)好我的建議是只要計(jì)數(shù)器位數(shù)夠用直接X4模式。X4模式不光分辨率最高而且每個(gè)邊沿都在更新計(jì)數(shù)器角度變化信息更平滑低速時(shí)的測速表現(xiàn)也更細(xì)膩。代價(jià)僅僅是計(jì)數(shù)器溢出更快但在32位計(jì)數(shù)器面前這個(gè)代價(jià)基本可以忽略。CubeMX中的配置項(xiàng)叫做Encoder Mode下拉里會(huì)出現(xiàn)Encoder Mode TI1、Encoder Mode TI2、Encoder Mode TI1 and TI2三個(gè)選項(xiàng)。第一個(gè)對(duì)應(yīng)X1模式第二個(gè)對(duì)應(yīng)X1模式只是計(jì)數(shù)沿選擇的通道不同第三個(gè)才是X4模式。填的時(shí)候注意別選錯(cuò)我早期就誤選過Encoder Mode TI1結(jié)果分辨率只到了一半查了半天資料才發(fā)現(xiàn)是這里的問題。3.3 計(jì)數(shù)方向、溢出中斷和Counter Period的配合邏輯編碼器模式下計(jì)數(shù)器是一個(gè)雙向計(jì)數(shù)器。有人說編碼器模式下定時(shí)器的ARPE自動(dòng)重裝載預(yù)裝載和重裝載值沒有意義這句話是不準(zhǔn)確的。編碼器模式下計(jì)數(shù)器會(huì)在0和自動(dòng)重裝載值之間來回計(jì)數(shù)上溢和下溢都會(huì)觸發(fā)更新事件。如果你把重裝載值設(shè)為默認(rèn)的65535計(jì)數(shù)范圍就是0到65535如果你設(shè)成2000計(jì)數(shù)范圍就變成0到2000計(jì)數(shù)器到2000后繼續(xù)正轉(zhuǎn)就回0反轉(zhuǎn)從0往下就跳到2000。這個(gè)特性非常有用。假設(shè)你的編碼器一圈4倍頻之后正好是2000個(gè)脈沖把Counter Period設(shè)為2000那么讀回來的CNT值就直接對(duì)應(yīng)當(dāng)前角度在0到2000之間的位置根本不需要額外做取模運(yùn)算。做云臺(tái)和機(jī)械臂角度控制時(shí)這個(gè)特性可以省掉大量運(yùn)算代碼。需要注意的一件事是CubeMX里Counter Period填的值對(duì)應(yīng)的是ARR寄存器它決定計(jì)數(shù)上限。有人把Encoder Mode配好了但Counter Period還沿用默認(rèn)值運(yùn)行起來發(fā)現(xiàn)計(jì)數(shù)到65535就跳變還以為是程序問題。這其實(shí)是重裝載值沒有按編碼器一圈的脈沖數(shù)來設(shè)計(jì)的典型表現(xiàn)。下面我用一個(gè)表格梳理三種模式下的關(guān)鍵參數(shù)建議方便你配置時(shí)對(duì)照檢查配置項(xiàng)X1模式X2模式X4模式一圈計(jì)數(shù)脈沖500線50010002000Counter Period建議值499或500999或10001999或2000低速測速細(xì)膩度一般較好最佳溢出中斷頻率最低中等最高3.4 初始化時(shí)清零計(jì)數(shù)的兩種方式項(xiàng)目啟動(dòng)時(shí)位置必須從一個(gè)已知的狀態(tài)開始。清零計(jì)數(shù)器常見有兩種做法一種是調(diào)用__HAL_TIM_SET_COUNTER(htim, 0)直接把計(jì)數(shù)器寫入0另一種是開啟定時(shí)器后向TIM_SR寄存器的UIF位寫0等待一次更新事件完成清零。實(shí)際上最方便的還是第一種因?yàn)镠AL庫提供現(xiàn)成宏一條語句搞定。如果你接的編碼器有Z相零位脈沖還可以把Z相接在另一個(gè)IO上通過外部中斷或者輪詢方式檢測到零位信號(hào)時(shí)清零計(jì)數(shù)器這樣每次上電后機(jī)器都能自動(dòng)找到機(jī)械原點(diǎn)。對(duì)于不帶Z相的編碼器只能采用上電找限位開關(guān)的方式歸零或者在機(jī)械結(jié)構(gòu)上做一個(gè)固定參考點(diǎn)讓電機(jī)轉(zhuǎn)到參考點(diǎn)時(shí)執(zhí)行一次清零操作。4. STM32CubeMX配置實(shí)操一步步點(diǎn)出一份可用的工程4.1 新建工程與時(shí)鐘樹設(shè)置打開STM32CubeMX新建工程選擇你的具體芯片型號(hào)。這里以STM32F103RCT6為例如果你用的是其他型號(hào)流程大同小異。先到Pinout Configuration界面左側(cè)Categories欄里找到SYS把Debug設(shè)為Serial Wire。這一步很重要否則默認(rèn)的JTAG會(huì)占用部分引腳后面配置編碼器輸入時(shí)可能出現(xiàn)引腳灰色不可選的情況。接著配置RCCHSE選擇Crystal/Ceramic Resonator。然后進(jìn)Clock Configuration把系統(tǒng)時(shí)鐘設(shè)為72MHz。F103的編碼器定時(shí)器時(shí)鐘來自APB1APB1的最高頻率是36MHz但定時(shí)器時(shí)鐘會(huì)自動(dòng)倍頻到72MHz這個(gè)細(xì)節(jié)不用手動(dòng)干預(yù)。不過你需要知道編碼器模式下定時(shí)器能處理的最高信號(hào)頻率和這個(gè)時(shí)鐘有關(guān)72MHz的定時(shí)器時(shí)鐘足以覆蓋絕大多數(shù)編碼器的信號(hào)頻率。4.2 TIM2的Encoder Mode配置細(xì)節(jié)在Categories里找到TIM2點(diǎn)擊進(jìn)去在Mode一欄把Combined Channels設(shè)為Encoder Mode。此時(shí)下方會(huì)出現(xiàn)兩個(gè)輸入通道的配置選項(xiàng)Channel1和Channel2都會(huì)自動(dòng)變成Input Capture Indirect Mode之類的顯示不需要手動(dòng)修改CubeMX會(huì)自動(dòng)關(guān)聯(lián)。接著在Configuration一欄里設(shè)置參數(shù)Counter Period根據(jù)上一章的公式計(jì)算如果500線編碼器用X4模式填1999。填1999的意思是從0數(shù)到1999共2000個(gè)值正好對(duì)應(yīng)一圈。Encoder Mode選Encoder Mode TI1 and TI2。Polarity默認(rèn)的Rising Edge即可不需要改動(dòng)。只有在編碼器信號(hào)接反、方向反了的時(shí)候才考慮通過取反極性來修正方向。有個(gè)小技巧在配置完TIM2后到右側(cè)的Pinout視圖確認(rèn)一下TIM2_CH1和TIM2_CH2映射到了哪個(gè)引腳。如果不滿意默認(rèn)映射可以在芯片視圖里直接點(diǎn)擊引腳旁邊的復(fù)用功能文字下拉重新選擇。這樣不用改PCB布局也能靈活調(diào)整。4.3 打開中斷還是DMA實(shí)際場景的選擇依據(jù)編碼器模式單獨(dú)工作不需要中斷也不需要DMA。計(jì)數(shù)器是硬件自己跑的你想讀位置時(shí)直接讀CNT寄存器就行。但從工程實(shí)用性角度建議開啟更新中斷尤其是需要做測速或者位置溢出管理的時(shí)候。在NVIC Settings標(biāo)簽頁里勾選TIM2 global interrupt然后在代碼里實(shí)現(xiàn)定時(shí)器周期中斷回調(diào)就能實(shí)現(xiàn)定期采集位置值。如果你只是偶爾讀取一下當(dāng)前位置比如操作員按鍵觸發(fā)的機(jī)械臂點(diǎn)動(dòng)就不必開中斷輪詢讀取CNT足夠。開了中斷反而會(huì)頻繁打斷主循環(huán)增加功耗和復(fù)雜度。選擇標(biāo)準(zhǔn)只有一個(gè)你是否需要在計(jì)數(shù)溢出邊界進(jìn)行處理或者需要恒定周期采集數(shù)據(jù)。需要就開不需要就不開。DMA在編碼器場景下的用途不大典型的DMA用法是配合ADC連續(xù)采樣模擬量或是配合串口收發(fā)數(shù)據(jù)編碼器計(jì)數(shù)本身沒有DMA的需求。如果你看到別人在編碼器項(xiàng)目里用DMA多半是用DMA搬運(yùn)周期采樣的位置數(shù)據(jù)到內(nèi)存數(shù)組做的是后級(jí)數(shù)據(jù)處理不是編碼器模式本身的要求。4.4 生成代碼前的最后檢查清單點(diǎn)擊Project Manager設(shè)置好工程名稱、存儲(chǔ)路徑和工具鏈。這里有幾個(gè)容易忽略的檢查點(diǎn)需要確認(rèn)IDE選項(xiàng)要和本機(jī)安裝的版本對(duì)應(yīng)MDK-ARM選對(duì)應(yīng)版本或者選STM32CubeIDE。代碼生成選項(xiàng)里Generated files框下勾選Generate peripheral initialization as a pair of .c/.h files per peripheral這樣每個(gè)外設(shè)單獨(dú)生成文件和頭文件后續(xù)維護(hù)方便。如果勾選了Initialize all peripherals with their default settings可能會(huì)把沒配置的外設(shè)也生成初始化代碼增加編譯時(shí)間建議不勾。確認(rèn)無誤后點(diǎn)擊GENERATE CODE。生成的工程放在你指定的路徑下打開MDK或者CubeIDE就能直接編譯。注意第一次編譯之前在魔術(shù)棒或項(xiàng)目屬性里檢查C/C編譯器選項(xiàng)是否選中了Use MicroLIB。STM32標(biāo)準(zhǔn)庫全功能時(shí)需要較少??臻g也會(huì)影響printf之類的重定向這些雖然不是編碼器專屬配置但能讓后續(xù)調(diào)試順暢不少。5. 生成代碼解讀與業(yè)務(wù)代碼集成怎么把CNT變成有用的速度5.1 HAL庫初始化流程里發(fā)生了什么打開生成的tim.c文件你會(huì)看到MX_TIM2_Init函數(shù)里面有幾段關(guān)鍵代碼。第一段是會(huì)話語句和結(jié)構(gòu)體賦值配置Prescaler、CounterMode、Period和ClockDivision。需要特別注意的是編碼器模式下ClockDivision位置和采樣控制有關(guān)一般默認(rèn)值即可不要去調(diào)整預(yù)分頻值。HAL_TIM_Encoder_Init這個(gè)函數(shù)比普通定時(shí)器初始化多做了什么它會(huì)調(diào)用定時(shí)器底層初始化函數(shù)把編碼器模式寫入到定時(shí)器的控制寄存器里并配置兩個(gè)輸入通道為映射模式。更重要的是它設(shè)置了輸入濾波器的相關(guān)參數(shù)。在CubeMX界面的Input Filter選項(xiàng)里你可以填0到15的數(shù)字。這個(gè)濾波器是數(shù)字信號(hào)濾波器用于濾除信號(hào)線上的窄毛刺。實(shí)際工程中如果編碼器線纜較長或者電機(jī)電磁干擾較重把輸入濾波調(diào)到2到4左右能大幅減少誤計(jì)數(shù)。調(diào)太高會(huì)讓有效信號(hào)的最小脈寬變長影響極限轉(zhuǎn)速下的計(jì)數(shù)準(zhǔn)確度。5.2 啟動(dòng)編碼器接口HAL_TIM_Encoder_Start和Start_IT的區(qū)別代碼生成后不會(huì)自動(dòng)啟動(dòng)定時(shí)器。你需要在主程序的初始化階段調(diào)用HAL_TIM_Encoder_Start來啟動(dòng)編碼器接口。這里有一個(gè)常見的坑有人用了編碼器模式但忘了啟動(dòng)定時(shí)器CNT寄存器永遠(yuǎn)是0怎么轉(zhuǎn)電機(jī)都沒反應(yīng)查了老半天。如果開啟了更新中斷則要調(diào)用HAL_TIM_Encoder_Start_IT這樣才能在計(jì)數(shù)器溢出時(shí)觸發(fā)中斷回調(diào)。不帶_IT的版本永遠(yuǎn)進(jìn)不了中斷。不要記混這兩個(gè)接口的名字我在一個(gè)四軸機(jī)械臂的項(xiàng)目里就吃過這個(gè)虧只調(diào)了Start沒調(diào)Start_IT中斷服務(wù)函數(shù)里怎么調(diào)試都不進(jìn)最后對(duì)著手冊逐行查才發(fā)現(xiàn)是調(diào)用錯(cuò)了API。啟動(dòng)編碼器之后讀位置的接口是__HAL_TIM_GET_COUNTER(htim2)。這個(gè)宏返回當(dāng)前計(jì)數(shù)器的值也就是編碼器從啟動(dòng)或上次清零到現(xiàn)在的位置變化量。如果當(dāng)前方向是反轉(zhuǎn)讀回的值會(huì)從計(jì)數(shù)上限往下遞減你不需要判斷正負(fù)CNT值本身就是有方向性的位置信息。5.3 周期測速兩次采樣差值與M法測速編碼器最常見的應(yīng)用場景是測速度。M法測速的思路是在固定時(shí)間窗口內(nèi)統(tǒng)計(jì)脈沖數(shù)用計(jì)數(shù)差值除以時(shí)間得到速度。實(shí)現(xiàn)起來非常簡單開啟一個(gè)基礎(chǔ)定時(shí)器比如TIM6配置成1ms中斷在中斷回調(diào)里讀取CNT值減去上一次的CNT值差值就是1ms內(nèi)的脈沖變化量。用這個(gè)差值乘以一個(gè)換算系數(shù)就能得到轉(zhuǎn)速。換算系數(shù)怎么算舉個(gè)例子編碼器500線4倍頻后一圈2000個(gè)脈沖1ms采到100個(gè)脈沖那么每秒就是100000個(gè)脈沖除以2000就是50圈/秒也就是3000轉(zhuǎn)/分鐘。代碼里可以寫成 speed_rpm (delta_count * 60) / (2000 * 0.001) / 60簡化之后其實(shí)就是按比例算。為了防止計(jì)數(shù)器溢出帶來的跳變?nèi)绻麅纱尾钪到^對(duì)值超過計(jì)數(shù)范圍的一半就做一次補(bǔ)償修正。比如Counter Period設(shè)為1999如果這次讀到100上次讀到1900直接算差值是-1800但實(shí)際可能是正轉(zhuǎn)了200個(gè)脈沖發(fā)生了回繞需要判斷差值大于半周期就減掉一個(gè)滿周期。這個(gè)判斷邏輯是測速代碼里最容易出錯(cuò)的地方務(wù)必處理。5.4 和PWM控制配合一個(gè)位置閉環(huán)的最簡樣例有了速度和位置信息就能做最簡單的閉環(huán)控制。比如你要讓電機(jī)轉(zhuǎn)到設(shè)定位置就可以寫一個(gè)比例控制器PID里只保留P項(xiàng)int32_t target 1000; // 目標(biāo)位置 int32_t current __HAL_TIM_GET_COUNTER(htim2); int32_t error target - current; int32_t output Kp * error; // 輸出限幅到PWM占空比范圍 __HAL_TIM_SET_COMPARE(htim3, TIM_CHANNEL_1, output);這里的Kp需要實(shí)際調(diào)試調(diào)小了響應(yīng)慢調(diào)大了會(huì)振蕩。通常的做法是先讓電機(jī)在一個(gè)固定占空比下運(yùn)行觀察編碼器讀數(shù)是否穩(wěn)定再逐步加大Kp觀察響應(yīng)曲線。完整的PID還要加上積分項(xiàng)消除靜差和微分項(xiàng)抑制超調(diào)這里只是演示閉環(huán)控制的框架足以說明編碼器數(shù)據(jù)如何注入到控制鏈路中。6. 實(shí)測踩坑記錄從波形毛刺到方向反了我遇到過的五個(gè)典型問題6.1 A、B相接反導(dǎo)致計(jì)數(shù)方向反轉(zhuǎn)這是新手最容易碰到的問題。STM32CubeMX中默認(rèn)的計(jì)數(shù)方向是A相超前B相為正轉(zhuǎn)如果你的編碼器線序恰巧反了電機(jī)正轉(zhuǎn)時(shí)計(jì)數(shù)器的值反而在減小。排查這個(gè)問題很簡單手動(dòng)緩慢正轉(zhuǎn)電機(jī)打開調(diào)試器看CNT值的變化方向。如果發(fā)現(xiàn)反了有兩個(gè)解決辦法一是在硬件上把A、B兩相信號(hào)對(duì)調(diào)二是在CubeMX的Polarity設(shè)置里把其中一個(gè)通道的極性設(shè)為Falling Edge。從項(xiàng)目維護(hù)角度看改軟件極性更省事因?yàn)椴挥脛?dòng)接線。需要注意的是改極性不僅會(huì)影響計(jì)數(shù)方向還會(huì)影響計(jì)數(shù)邊沿的位置本質(zhì)上等于把采樣點(diǎn)平移了90度。如果你同時(shí)還用了Z相零位零位脈沖的位置和計(jì)數(shù)器的匹配關(guān)系可能會(huì)因此偏一位不過對(duì)大多數(shù)應(yīng)用沒有影響。6.2 布線太長導(dǎo)致波形邊沿抖動(dòng)數(shù)字濾波器的正確設(shè)置編碼器線纜超過30厘米又沒有采用雙絞屏蔽線時(shí)A、B相波形邊沿容易出現(xiàn)振鈴和毛刺。毛刺導(dǎo)致的結(jié)果是異常計(jì)數(shù)有時(shí)正轉(zhuǎn)一下計(jì)數(shù)器跳好幾個(gè)數(shù)有時(shí)反轉(zhuǎn)時(shí)計(jì)數(shù)反而增加。逐一對(duì)硬件進(jìn)行改動(dòng)可能比較麻煩但STM32定時(shí)器自帶的輸入濾波器能在軟件層面解決大部分問題。在CubeMX的Input Filter字段中填入合適值就可以開啟濾波。這個(gè)濾波器的原理是只有當(dāng)信號(hào)連續(xù)穩(wěn)定N個(gè)采樣周期后才確認(rèn)電平變化。Filter值越大抗干擾越強(qiáng)同時(shí)對(duì)真實(shí)信號(hào)的延遲也越大。編碼器轉(zhuǎn)速不高時(shí)直接把濾波值設(shè)到8都行但高速場合需要核算一下最大可接受延遲。以72MHz定時(shí)器時(shí)鐘為例Filter值為8時(shí)最短可識(shí)別的信號(hào)脈寬大約是8個(gè)采樣周期即大約110納秒的脈沖寬度要求。如果編碼器最高轉(zhuǎn)速下信號(hào)脈寬小于這個(gè)值就會(huì)丟脈沖。6.3 編碼器零點(diǎn)漂移Z相清零與CNT自動(dòng)回繞的區(qū)別很多編碼器帶有Z相也叫Index信號(hào)每圈出一個(gè)脈沖。利用Z相可以精確確定機(jī)械零位。有人直接把Z相接在普通IO上在中斷里用軟件清零CNT。另一種實(shí)現(xiàn)方式是利用定時(shí)器的編碼器接口和Z相輸入的特性在硬件層面自動(dòng)復(fù)位計(jì)數(shù)器但STM32的編碼器模式并不內(nèi)置Z相清零邏輯除非額外使用定時(shí)器的外部觸發(fā)復(fù)位功能。如果你需要Z相清零最常規(guī)的做法就是外部中斷加軟件清零。不過要小心Z相脈沖寬度和A相脈寬相關(guān)如果Z相信號(hào)在電機(jī)高速旋轉(zhuǎn)時(shí)變得很窄外部中斷可能會(huì)漏觸發(fā)。我用的E6B2-CWZ6C編碼器Z相脈寬是A相脈寬的四分之一低速完全沒問題高速時(shí)最好用輸入捕獲來測量脈寬避免漏掉。6.4 計(jì)數(shù)器溢出處理在CubeMX里留足余量的設(shè)計(jì)思路如果你用的是16位定時(shí)器計(jì)數(shù)器溢出是一個(gè)繞不開的問題。以500線編碼器X4模式為例Counter Period設(shè)為1999那么它范圍只有0到1999遠(yuǎn)小于65535這種情況下計(jì)數(shù)器每隔一圈就會(huì)溢出一次。每次溢出都需要在中斷里把溢出計(jì)數(shù)值加到一個(gè)軟件擴(kuò)展變量里保證位置讀數(shù)的連續(xù)性。實(shí)際上處理溢出最簡單的方式是NVIC開啟更新中斷在中斷回調(diào)里判斷更新事件的方向。如果讀取SR中的DIR標(biāo)志位為0表示向下計(jì)數(shù)即反轉(zhuǎn)溢出為1表示向上計(jì)數(shù)即正轉(zhuǎn)溢出。根據(jù)方向給軟件計(jì)數(shù)變量加一或減一最終位置值等于擴(kuò)展變量乘以(Period 1)再加上當(dāng)前CNT值。這塊邏輯雖然不復(fù)雜但涉及臨界段保護(hù)的問題要在中斷里操作共享變量時(shí)注意加臨界區(qū)保護(hù)防止主循環(huán)讀數(shù)據(jù)時(shí)讀到一半被中斷改寫造成高字節(jié)和低字節(jié)屬于不同時(shí)刻的快照。6.5 機(jī)械安裝誤差造成的輕微零速抖動(dòng)最后說一種比較隱蔽的情況電機(jī)靜止時(shí)計(jì)數(shù)器讀數(shù)卻在小幅跳動(dòng)。這種情況多半是機(jī)械振動(dòng)帶動(dòng)編碼器碼盤微小擺動(dòng)A、B相在臨界邊沿附近輕微顫抖導(dǎo)致硬件捕捉到多次跳變。解決方法和毛刺類似適當(dāng)增大輸入濾波值同時(shí)在應(yīng)用層做一個(gè)小范圍的死區(qū)判斷連續(xù)多次讀到同一位置才認(rèn)為電機(jī)靜止。這一類問題不會(huì)影響大范圍運(yùn)動(dòng)控制但如果你在做云臺(tái)增穩(wěn)或精密定位就非常致命。我在做小型云臺(tái)時(shí)零速抖動(dòng)導(dǎo)致畫面緩慢漂移排查了很久才發(fā)現(xiàn)是電機(jī)減速箱的微小回程間隙帶動(dòng)編碼器碼盤抖動(dòng)最后通過調(diào)高輸入濾波器值和增加死區(qū)閾值解決了。這類經(jīng)驗(yàn)很難在芯片手冊里找到只能靠現(xiàn)場調(diào)試總結(jié)。7. 數(shù)據(jù)鏈路之外為什么我強(qiáng)烈建議你把編碼器數(shù)據(jù)流單獨(dú)封裝7.1 底層寄存器操作與上層控制邏輯解耦寫編碼器相關(guān)代碼時(shí)我強(qiáng)烈建議把編碼器的讀取和處理封裝成獨(dú)立模塊不要在主循環(huán)里直接到處調(diào)用__HAL_TIM_GET_COUNTER。原因很簡單第一如果以后換了MCU平臺(tái)只需要修改底層封裝上層控制邏輯完全不用動(dòng)第二相同的位置數(shù)據(jù)會(huì)在不同地方用到比如顯示、閉環(huán)控制、日志如果直接散落在各處代碼改起來苦不堪言。我自己習(xí)慣的封裝方式是這樣的單獨(dú)建一個(gè)encoder.c和encoder.h提供Encoder_Init、Encoder_GetPosition、Encoder_GetSpeed、Encoder_Clear等接口。在上層代碼里所有模塊都只調(diào)用這幾個(gè)接口看不到任何硬件寄存器操作。調(diào)試的時(shí)候也只需要在這幾個(gè)接口里加入日志打印就能看到全系統(tǒng)的位置變化情況。7.2 一種更可靠的位置累加方法定時(shí)采樣配合溢出補(bǔ)償對(duì)于需要長時(shí)間記錄位置的應(yīng)用單純依賴CNT寄存器是不夠的因?yàn)橐绯銮辶銜?huì)丟數(shù)據(jù)。推薦的做法是用固定周期定時(shí)器中斷比如1kHz讀取一次CNT值并累加到軟件位置變量里同時(shí)處理溢出回繞。這樣即使主程序被其他任務(wù)阻塞位置也不會(huì)丟。舉個(gè)具體實(shí)現(xiàn)例子static int32_t last_count 0; static int32_t position_sum 0; #define COUNTER_PERIOD 1999 void Encoder_Tick_1ms(void) { int32_t cur __HAL_TIM_GET_COUNTER(htim2); int32_t delta cur - last_count; if (delta (COUNTER_PERIOD 1) / 2) delta - (COUNTER_PERIOD 1); else if (delta -(COUNTER_PERIOD 1) / 2) delta (COUNTER_PERIOD 1); position_sum delta; last_count cur; } int32_t Encoder_GetPosition(void) { return position_sum; }這個(gè)方法把溢出的判斷條件統(tǒng)一封裝在一個(gè)中斷函數(shù)里主程序在任何時(shí)刻讀取的都是連續(xù)的軟件累加位置徹底擺脫了計(jì)數(shù)回繞的困擾。而且position_sum是32位有符號(hào)變量即便長時(shí)間運(yùn)行也不容易溢出實(shí)際項(xiàng)目中一年半載跑下來都沒問題。7.3 使用場景擴(kuò)展從單軸測速到多軸同步如果你的項(xiàng)目不只是一個(gè)電機(jī)而是像機(jī)械臂、四輪小車這樣多個(gè)電機(jī)協(xié)同工作每個(gè)電機(jī)一個(gè)定時(shí)器測速頻率要保持一致控制周期也要盡量同步。最簡單的方法是利用同一個(gè)基礎(chǔ)定時(shí)器觸發(fā)所有電機(jī)的采樣中斷在同一個(gè)中斷回調(diào)里完成所有編碼器的數(shù)據(jù)采集和速度解算。這樣不同軸之間的數(shù)據(jù)天然同步控制解算不容易出現(xiàn)因?yàn)闀r(shí)間戳不一致導(dǎo)致的偏差。多軸系統(tǒng)里的另一個(gè)注意點(diǎn)是所有編碼器共用一個(gè)電源時(shí)多個(gè)電機(jī)同時(shí)啟動(dòng)會(huì)造成電源電壓跌落可能讓編碼器輸出波形畸變。解決方法是每個(gè)編碼器電源附近都加一個(gè)去耦電容并且在MCU端的信號(hào)線上加RC濾波或施密特觸發(fā)器緩沖。這個(gè)細(xì)節(jié)是我們在做四輪小車時(shí)發(fā)現(xiàn)的當(dāng)時(shí)只給主控供電一個(gè)電機(jī)啟動(dòng)瞬間編碼器讀數(shù)就亂跳排查了很久才發(fā)現(xiàn)是電源軌受到干擾。8. 從配置到穩(wěn)定運(yùn)行的最后一段路我最想讓你記住的三件事回頭再看整個(gè)STM32CubeMX正交編碼器方案其實(shí)主要就三件事。第一原理上要搞懂A、B兩相正交信號(hào)如何通過相位關(guān)系產(chǎn)生位置和方向信息硬件編碼器模式為什么能替代中斷判向方案。第二配置上要選對(duì)定時(shí)器、選對(duì)引腳、選對(duì)Encoder Mode和Counter Period這三樣決定了物理層能不能正常計(jì)數(shù)。第三工程上要做好溢出處理、信號(hào)濾波和模塊封裝這三件事決定了系統(tǒng)長時(shí)間跑下來穩(wěn)不穩(wěn)定。最后的建議是不要一上來就追求花哨的算法先把編碼器數(shù)據(jù)讀準(zhǔn)、讀穩(wěn)、讀連續(xù)再談后面的PID和運(yùn)動(dòng)規(guī)劃。你把一個(gè)編碼器通道吃透了其他通道都是復(fù)制粘貼的事情。我自己第一次調(diào)通編碼器模式時(shí)看到電機(jī)轉(zhuǎn)一圈讀數(shù)從0走到2000再歸零那種踏實(shí)感是單純寫GPIO中斷判向完全體會(huì)不到的。希望這篇內(nèi)容能幫你少走幾個(gè)彎路一次就把編碼器這塊做利索。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日本丁香五月| 99热个人在线| 激情五月综合ì香亚洲| 日本黄色在线观看| 色域五月丁香| 99啪啪| 五月婷婷九| 色色色色区| 久久综合婷婷| 99热思思| 日日噜狠狠色| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 婷婷五月丁香五月| 色婷婷五月天在线观看| 婷婷五月天论坛| 色综合九九色综合88| 成人无码精品1区2区3区免费看 | 天天日日| 北京熟妇搡BBBB搡BBBB| www99热| 精品怡红九九九| 9精品视频在线观看| 五月天婷婷久久| 玖玖热视频| 超碰久热| 国产激情综合| …亚洲黄色在线播放日韩、av中文a…| 大学生高潮无套内谢视频| 色五XX| 午夜丁香| 丁香九月综合激情| 啪啪99| 婷婷字幕在线| 九九在线91| 婷婷五月天成人网| 91操操| 色色色色色色网站| 中文AV网| 久人人操| 欧美碰碰| 九九精品re免费视频| 日99网站| 2025超碰| 精品自拍97| 亚洲人妻av伦理| 热99在线精品| 丁香五月天网站| 色色色热热热| 色色99| 99热这里只要精品免费| www.五月天激情| 久久婷婷婷婷伊人| 色五月六月| 这里只有精品免费视频在线观看 | 婷婷五月天免费视频| 久久婷婷五月草视频在线播放| 中文色婷婷| 碰人人97| 操操国产| 五月婷无码| 中文久久久人妻| 99久久婷婷| 九月影院義母在线播放| 婷婷六月丁香综合| 色五月天本日| 97操操操| 成人精品一区日本无码网| 五月丁香六月婷婷久久| 久久婷婷精品| 久久婷婷桃花五月天| 国产原创视频91九色| 色噜噜狠狠色综合日日| 丁香网站| 久久久九九九 99| 国产高清视频91九九九久久久| 五月婷婷啪啪啪啪| 婷婷色色欧美| 99re热精品视频国| 激情婷婷啪啪| 国产成人网址| 久草x色在线观看99| 97日本在线播放| 九一娱乐在线观看视频| 丁香婷婷六月天| 色色五月婷| 成人精品一区二区三区四区五区| 五月四色色| Xx色综合| 五月婷婷综合久久| 婷婷色在线观看| 丁香色五月婷婷17C| 欧美激情 日韩无码 婷婷 五月天| 日韩色色小视频| 蜜乳A√| 极品人妻videosss人妻| 综合久久影院| 五月开心播播网| www亚洲无码| 九九AV在线| 丁香五月婷婷丫| 六月丁香婷婷五月| 激情五月天网站| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 国产亚洲99久久| 色综合中文| 一起草无码视频| 久久久久久综合五月婷婷| 99热这里只有精品1| 99精品久久久久久久婷婷| 爱爱色五月天| 亚洲另类日本| 先锋影音av色五月天资源站| 丁香五月天日韩无码| 激情五月天综合网| 欧美色色色色色| 亚洲午夜AV| 牛牛热这里只有jingpin| 五月丁香综合久久夜夜| 性爱电影科技贸易有限公司| 91久久| 91男同视频| 激情av在线| 久久人人看| 26uuu亚洲精品国产| 亚洲综合色色| 影音先锋 萱萱| 嫩草视频观看| 色久丁香五| 大地9中文在线观看免费高清| 日本人妻久久| 婷婷五月成人系列| tingtingcaobi| 色情五月天丁香社区| 天天在线久久综合 | 五月婷婷视频ab| 激情五月综合久久| 激情五月,激情综合网| 精品久久艹| 久热久re| 六月婷婷开心| 久九九热| 97操碰碰无码视频| 亚洲AV日韩无码| 五月天激情无码专区| www.夜夜| 五月婷六月综合在线观看| 亚洲天天| 久大香蕉| 色婷精品91| 超碰在线个人观看| 激情五月,婷婷五月,丁香五月| AA片在线观看视频在线播放| 久久综合网桃花| 色丁香婷婷美女视频网站| 啪啪啪综合网| site:hcxsz888.com| 超碰人人干| 一本到不卡高清DVD| WWW.桔色成人.COM入口| 色婷婷丁香花五月天| 99热大全在线观看| 亚洲精品久久久久久久久久吃药 | 欧美啄木乌丝袜人妻系列| 99热最新网址| 婷婷色播综合五月| 最新婷婷五月丁香| 色欲午夜无码久久久久久张津瑜| 9l视频自拍9l九色成人| 久热这里只有| 丁香五月AV综合激情| 五月激情综合网| 久婷婷五月丁香在线观看| 丁香五月婷婷日本| 操久久网| 思思热在线| 天天爽—爽| 夜夜操狠狠操| 亚洲aV写真天天综合网久久| 久草视频大香蕉99| 久久综合激情| 99热99热在线观看| 色的色综合| 一本色综合色| 国产成人亚洲综合A∨婷婷| 97在线天堂| 看久久性爱99视频| 噜噜噜狠狠色综合| 亚洲综合五月天婷婷| 综合六月激情婷婷| 久久人人九九| 天天日天天久久青青| 成人欧美一区二区三区在线观看| 婷婷色网址| 丁香五月天资源网| 成人五月天色天堂| 久久久9久| www,超碰| 色五月天综合| 久久总和99| 色婷婷影视| 久久五月天免费网站| 成人va视频| 丁香六月 婷婷六月| 天天综合色| 综合视频五月| 亚洲av网址| 成人亚洲精品| 五月激情五月婷婷五月天在线| 色五月婷婷天堂| 色久九| 欧美一区二区三区不卡影视| 99久免费视频| 中字幕视频在线永久在线观看免费| 国产一二三四五六七八视频| 九九热亚洲中文在线观看免费| 九月婷婷在线视频| 中文字幕 中文字幕明步| 99热大全在线观看| 男人的天堂99| 欧美狠狠色| 丁香九月综合| 婷婷天堂视频| 精品日本视频444| 九九99精品视频| 深爱激情四射| 日本色色图| 99久久婷婷综合| 天天射影院| 亚洲视频图片婷婷五月| 丁香五月停停av| 伊人五月天综合网| 五月五婷婷网| 天天弄天天爽| 亚洲精品va| 日韩99视频| 中文字幕成人日韩| 国内在线99视频| 色五月激情五月| 日本精品99| 五月婷婷在线视频观看| 久久人妻精品| 色五月色图| 婷婷五月六月丁香| 色五月婷婷五月天| 曰曰久久| 色五月婷婷基地| 婷婷99| 人妻操日日| 99热传媒| 九九热内射| 久久久天堂国产精品女人| 99热九九热| 丁香五月日韩| 久久狠狠干| 丁香五月天堂| www.色五月| 91久久久久久| 久久精品一区二区三区四区| AV网在线| 五月天激情图片网| 色婷| 五月综合婷婷开心网| 九九热只有精品6| 色五月婷婷少妇人妻| 九九热这里有精品视频| 午夜性爱影视一区77| 丁香丁香激情网| 密黄站| 狠狠色婷婷7| 亚洲综合在线视频| 婷婷激情综合网| 激情开心五月亚洲| 激情综合网激情五月天| 99只有精品| 99国产精品白浆在线观看免费| 八戒青柠影视剧在线观看| 五月婷婷无码| 五月丁香婷色| 国产伦理精品高清在线观看网站一区二区 | 97干欧美| 六月丁香婷婷尤物| 99.N在线视频| 99热啪啪| 婷婷久久内射| 亚洲成人色五月婷婷综合| 婷婷五月天激情综合| www激情网| 五月天婷婷爱| 天天做天天爱天天高潮| 中文字幕高清av| 五月天婷婷基地综合网| α久久| 人人干人人看| 中文字幕人妻熟女在线| 国产精品美女| 99色色最新视频| 激情深爱五月| 99热亚洲| www.五月婷婷.com| www.俺去也com| 五月综合色| 色色色色综合网| 五月婷护士| 99亚洲视频| 26uuu淫色| 五月天婷婷色综合| 专区无日本视频高清8| 热久久这里只有三级视频| 97在线视频人妻九色| 色婷婷在线综合色播网| 超碰超碰在线| 五月亭亭色| 九九九九九无码| 26UUU欧美| 五月天婷婷影院| 超碰成人在线免费观看| 国产色色网站网址| 超碰成人免费| 五月丁香婷婷成人版| 婷婷色五月综合丁香| 第五色婷婷| 全部老头和老太XXXXX| 婷婷五月天综合AV| 99精品福利视频| 亚洲人人操| 婷婷伊人视婷婷婷| 国产精品香蕉| 婷婷最新地址| 99久久思思| 国产免费一区二区在线A片视频| 色啦啦视频| 99热色无码| 日日夜夜干| 99热草草| 色五狠狠| 日本高清不卡免费一区二区三区| 亚洲、热| av网站不卡在线| 五月份婷婷| www.五月婷婷| 久久久久亚洲AV无码网影音先锋| 夜夜骑夜夜操| 五月丁香婷婷激情四射迷人| 色五月人妻| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 激情婷婷丁香色五月| 五月天开心网| 五月婷婷开心亚洲无| 色热久| 影音先锋天天日| 婷婷五月天综合小说网| 九九九九热99超碰| 五月天啪啪| 91精品刘玥| 噜噜噜色噜噜| 国产精品成人网址| av狠狠操| 色爽九九| 俺去也五月天婷婷| www.狠狠操.co m| 亚洲激情五月| 我要色综合五月婷婷| 久久综合99| 思思99热这里只有精品| 丁香激情合作五月| 亚洲超碰青涩| 丁香五月av| 玖玖婷婷婷丁香五月| 色五月婷婷基地| 久久999久久999久久999久久| 色五月色五天免费视频| 26.uuu丁香五月婷婷| 五月激情小说| 九九热a| 久草热在线视频| 五月丁香综合激情在线观看| 91嫩草国产线观看亚洲一区二区| AAAA网站| 91超碰人人操| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 99色干| 婷婷色导航| 婷婷五月天久久久| 婷婷五月六月激情| 五月婷激情影院| 99热婷婷| 夜夜爽天天日| 99热日韩| 99热在线中出| 五月激情综合网| 99精品在线观看| AV九九| 丁香五月,激情五月,深爱五月| 大香蕉久久伊人网| 五月丁香六月婷| av婷婷丁香 六月| 亚洲A片成人无码久久精品青桔| 丁香六月天婷婷开心综合| 婷婷六月天| 超碰免费人妻| 激情五月www| 超碰a女人的天堂| 大香网伊人久久综合| 欧美婷婷五月| 国产亚洲99| 97色精品视频| 婷婷亚洲综合| 色婷久| 丁香五月成人论坛| 五月丁香久| 双性美人被调教到喷水A片| 夜夜骑夜夜撸| 五月丁香色五月| 大香蕉 伊人夜| 久久久久9999| 五月天激情综合在线| 亚洲乱码日产精品BD| 五月天激情综合| 天天日夜夜B久久| www色综合亚洲92| 五月婷婷六月色| 人人操五月天| 久久久久思思热| 久久只有精| 人人叉久| 九九热青青草| 色婷婷yy久| 狠狠草在线观看| 天天做天天爱天天综合| 色高清无码视频| 亚洲成人在线播放| 99久久精品国产色欲| 香蕉久久国产AV一区二区| 五月婷婷色| 六月丁香五月激情婷婷| 四色 爱 婷婷 精品 亚洲 五月天| 日本欧美国产| 91日视频| 在线视频激情网站| 色综合久久88色综合天天| 亚洲综合五月天婷婷丁香| 日韩 中文 欧美| 五月婷婷中文字幕| 五月天激情无码| 五月五丁香婷婷| 韩日在线熟女| 五月丁了香蕉综合| 99久久99视频只有精品| 五月丁香久久| 免费九九热| 九九干视频| 91色碰| 日逼影音先锋AV男人资源站| 69久久久| 五月婷婷97| 大香蕉久久伊人网| 五月天激情啪啪| 久久久久人妻网址| 高清无码入口| 婷婷五月天AV在线| 综合色色网| 久久停停超碰| 婷婷色婷婷| 婷婷五月天影院| 99亚洲精品| 九九色逼| 中文字幕 中文字幕明步| 日本欧美成人片AAAA| 丁香五月天激情综合| 五月天激情综合| 这里有精品| 久草五月| 日韩三级高清无码| 综合久久久婷| 成人AV免费观看| 狠狠干婷婷| 婷婷五月天AV网| 五月婷婷开心亚洲无| 丁香六月天婷婷在线| 99这里只有精品国产| 激情纯色婷婷五月天在线不卡视频| 日日色五月天| 五月丁香啪啪伦理电影| 大香蕉网站,大香蕉综合| 亚洲欧美成人在线| www.五月天| 国产毛片欧美毛片久久久| 精品欧美性爱超级爽| 99精品丰满| 久久丁香婷婷五月| 五月天天丁香婷婷在线中| 丁香五月婷婷亚洲综合精品在线| 岛国AV网站| 日韩另类在线观看| 五月综合激情图片| 色丁香婷婷| 人人摸人人澡人人| 久久精彩免费视频| 久热天堂| 琪琪秋霞| 天天爱天天秀天天做| 97久久久| 日本啪啪视频HD| 大香蕉伊在| 成人天天爽| 精品成人无码A片观看香草视频| 91精品久久久久、久五月天| 日本99热| 91丁香五月| henhencao国产在线| 天天干天天操| 开心五月激情网| 中文不卡av| 亚洲AV综合在线观看 | 丁香六月婷婷缴情欧美| 人人视频人人干人人做| 国产AV国片偷人妻麻豆| 久久婷网| 香蕉AV777XXX色综合一区| www九九热| 91碰碰视频在线观看| 亚洲区视频| www.ppypp| 五月天婷婷久久| 婷婷五月精品| 九九sese| 五月婷婷六月丁香综合在线| 99资源人人| 天天爽夜夜爽夜夜爽精| 久久婷婷成人| 激情婷婷久久| 色综合99无码 | 亚洲欧美一区二区三区爱爱动图| 丁香六月婷婷久久综合| 美欧日韩国产成人在战| 色视频五月天| 刘玥精品一区| 激情五月丁香色婷婷| 91狠狠综合网| 在线看黄色| 色婷婷五月天堂资源| 五月婷婷色播| 久久久人妻人伦| 狠狠狠狠狠| 日本色超碰| 五月丁香天堂网婷婷| 五月天伊人网| 超碰99在线| 天天插天天插| 国产伊人大香蕉| 五月天欧美激情| 久草热久草在线视频| 色五月丁香五月| 狠狠色97| 丁香久久综合| AV在线大香蕉| 中文资源在线a| 丁香久久久| 99热 在线播放| 狠狠干综合网| 另类丁香综合| 日本爆乳片手机在线播放| 99re免费视频| 欧美成人精品A片免费一区99| 狠狠色噜噜色狠狠狠综合色 | 天天色视频| 伊人成综合五月婷婷| 久久天堂女人| 丁香六月婷婷综合欧美| 色婷婷综合在线| 日本五月婷婷| 99色在线观看视频| av在线资源| 五月天色色网站| 在线99热| 婷婷舔| 久久AAAA片一区二区| 中文字幕日韩无码制服诱或| 99热每日| 天天色天天| 久久久久网站| 激情第四色| 日韩人妻无码一区二区| 五月婷婷丁香91| 国语精品探花| 中文色婷婷| 狼人婷婷久久| 五月色综合网欧美网| 婷婷免费视频| 丁香婷五月| 久草 tingting| 开心网五月色婷婷| 九九碰九九爱97超碰| 五月丁香五月综合欧美| 精品怡红九九九| 99视频在线观看视频| 台湾无码A片一区二区| 九月婷婷| 亚洲正能量欧美| 五月天天天天天天天天天天天天天天天婷婷婷| 99热青青草| 久久精彩视频| 岛国av网站| 五月综合久久| 91热久88| 1024日韩| 日日舔夜夜操| 色九区| 久久无码成人| 六月婷婷av| 久久伊人日日夜夜| 99玖玖在线视频| 五月激情小说| 日韩淑女人妻luan伦激情精品一区二| 久热视频A.| 色激情网| 99视频只有精品| 婷婷五月激情小说| 天天爱天天做综合| 亚洲旡码| 久久五月热| 五月丁香久久网| 亲子乱av一区二区三区的| 九九人人操| 99热这里只有精品最新| 99热思思久| 99资源在线| 九九热免费视频| 人人摸人人澡人人| www,五月天激情| 激情五月综合网| 密视AV综合在线| 中文字幕按摩做爰| 九九久久99| 五月综合婷婷五月| 超碰renrenai| 五月丁香五月丁香| 五月婷婷黄色| 综合九九久久| 久久婷综| 极品人妻VIDEOSSS人妻| 色五月av| 九久9精品| 免费亚洲婷婷五月| 色婷婷久综合久久一本国产AV| 色婷婷五月六月丁香综合视频| 久久9999| 国产成人亚洲综合亚洲| 西西4r午夜剧场| 99性爱视频| 亚洲情欲| 丁香六月婷婷久久综合| 99热99极品观看| 色欲色香综合网| 快色t v在线入口| 日日操夜夜爽天天天| 久久精彩综合视频| 九九色影视| 91超级碰在线| 亚洲无码11| 亚洲爱婷婷| 婷婷婷久久| 亚洲xx在线| 精品二区| 欧美婷婷精品激情| 日本色色色| 99热这里只有精品2| 色区域网站视频| www,五月丁,com| 六月丁香射婷婷欧美色图片 | 人人爽天天莫| 色播五月婷婷| 色婷婷中文字母五月丁香| 亚洲色情久久| 人人操Av| 五月婷婷免费视频| 亚洲色A| 色五月在线视频观看| 久久精品视频9| 都市激情五月婷婷亚洲| 人妻操逼视频| 激情婷婷六月天| 五月丁香色综合| 五月色色色| 亚洲九九视频| 成人做爰A片免费看视频| www婷婷色| WWW.五月com| www.99久久久久99| 999热在线视频| 天天爱天天做天天日| 综合激情五月四射婷婷| 99久久思思| 深夜A片| 婷婷五月色播| 思思久久精品| 日韩色色色色| 影音先锋 一区| 91久久久久久久久久久| 五月天婷婷网站| 婷婷五月天狠狠| 五月婷婷人人人操| 天天操夜夜操| 91综合视频在线| 黄色片区子| 天天日狠狠| 免费啪啪啪网站| 99爱爱| 五月激激网w'w'w| 天天干天干| 深夜男女福利刺激影院一区完整| 久久综合99| 日韩不卡123| 在线天堂9| 我要色综合五月婷婷| 丁婷婷五月天在线播放| 六月婷婷中文字幕| 九热视频在线伦| 91精品久久久久久77777| 颜射 精品性爱av| 欧美丁香五月| 99在线精品免费视频| 色一情一乱一乱91Av| 丁香婷婷五月激情综合| 亚洲激情五月| 激情丁香五月| 久9久成人精品视频| 丁香五月天婷婷久久| 狠狠色综合网| 99国产精品久久久久久久久久久| 久99久精品视频| 成人欧美Va| 99碰超| 天天日P天天射P| 天天狠天天狠| 91要啪| 超碰cap| 天天开心婷婷丁香五月| 激情五月天综合网| 五月婷婷很很色| 99热国品免费| 97人妻碰碰碰久久香蕉| 色噜婷婷| 深爱丁香激情| 天天射影院| 国产老熟妇亲子乱对白| 婷婷五月综合视频免费播放| 96精品成人无码A片观看金桔| 久久资源网五月婷| 六月婷婷色综合| 丁香六月婷婷综合欧美| 日韩丰满少妇无码内射| 99热最新| 亚洲第一成人无码A片| 激情国产五月| 丁香综合伊人AV| 婷香五月激情视频| www.精品99| 天天综合精品| txt五月激情四射网综合俺也来了| 亚洲色五月天在线| 婷婷色色网| 免费九九热| 91丨九色丨熟女|新版| 色月丁| 这里只有精品9| 成人做爰A片免费看网站找不到了| 六月激情婷婷| 五月婷婷啪啪| 综合亚洲六月婷婷在线| 激情视频网址| 欧美内射AA| 99热99干| 婷婷大香蕉| 激情五月丁香五月| 欧美极品999| 五月丁香啪啪| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 吊色AV男人的天堂| 操逼三区| 99热综合网| 色噜噜狠狠色综合成人99| 九九精品热播| 欧美日韩123| 91精品久久久久久久久久久久| 黄色一级影片| 婷婷五月丁香久久| 色婷婷五月天| 欧美色六月婷婷| 玩熟女五十AV一二三区| 久久机热这里只有精品| 九一九九黄色| 色婷婷www| 91久久久久久| 乱女乱妇熟女熟妇综合网站| 嫩草AV久久伊人妇女超级A| 热热久久久久久久久| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 怕怕av| 亚洲乱码日产精品BD| 五月色婷婷激情| 婷婷伊人综合| 五月天停婷基地| 婷婷色影院| 欧美成人精品A片免费一区99| 天天拍久久| 久热伊人在91| 超碰91在线| 激情伊人六| 超碰一区二区| 五月丁香久久网| 亚洲综合新99视频| 亚洲殴洲精品Av在线| 99久久婷婷五月综合| 人妻久久做| 91国产精品视频播放| 台湾无码A片一区二区| 激情五月,色五月| 96丁香婷婷九月蜜桃综合久久| 日日操日日撸| 色欲婷婷夜夜| 青青色com久久| 另类天堂| 婷婷五月18永久免费视频| www..999热久| 色吧婷婷五月亚洲| 五月久久婷婷| 99热精品9| 日本婷久久| 国产精品久久久久久久久久久久| 五月婷婷六月丁香综合在线| 婷婷精品| 五月丁香婷婷99| 免费精品99| 婷婷五月天激情文学| 五月激情日本在线| 伊人三级激情| 天天cha成人综合网| 99视频在线啪| 性做爰1一7伦| 91婷婷搞| 中文字幕婷婷五月天在线观看| 久久激情综合| 大香蕉久久久久久久久| 婷婷色影院| 亚洲精品色| 久久机热这里只有| 国产激情视频在线观看| 色站9/| 少妇性按摩无码中文A片| 国产免费一区二区三区三州老师F1F1.CC | 91综合色| 婷婷久久亚洲| 婷婷亚洲五月丁香综合在线| 9精品在线| 五月激情久久| 99燥99日| 中文字幕成人| 五月丁香激情啪啪| www,com,五月色色| 婷婷色情六月| A A色色| 天天色爽| 色婷久久| 外国碰视频网站97| 色五月中文字幕| 五月停视频天堂| 亚洲视频在线观看| 俺去也五月天| 日本久久综合| 欧美性爱一区| 日本丁香五月| 综合色色色色色色| 日本成人噜噜| 俺去也在线官网| 秋霞学生妹一二级| 一区二区中文字幕| 久久天天天| 操碰91| 99热99色| 超碰人人操人人干| 亚洲av成人在线| 久久99久久99精品免观看粉嫩| 69精品人妻不卡视频| 婷婷伊人綜合中文| 久久久久五月丁香| 一区中文字幕电影| 丁香97综合| 综合激情四射一theav| 91高潮喷水久久久久久久久| 婷婷丁香18| 婷婷五月色播天| 丁香五月开心七月| 碰超亚洲| 激情婷婷在线| 99人人干人人操| 五月婷婷亚洲色图| 五月丁香综合中文| 99狠狠操一| 五月综合丁香婷婷| 一本久道综合色婷婷五月| 亚洲无码99| 久久人妻精品| 中文字幕丰满孑伦无码专区| 丰满少妇猛烈A片免费看观看| 色婷婷成人做爰A片免费看网站| 国产精品18久久久| 婷婷丁香熟女| 99热99思午夜精品| 天堂久久婷婷| 亚洲五月天,激情视频| 热热久久精品视频| 亚洲成人乱码av网站| 色婷婷小说| 五月婷婷色播| 天天色亚洲| AA片在线观看视频在线播放| 精品人妻一区二区三区在| 九月停停| 综合伊人久久| 永久的网站AAAA| 成人色情五月天婷婷丁香| 亚洲五月天婷婷综合| 婷婷深爱五月| 亚洲无码播放| 久99| 日本在线观看aaa 99| 九九狠狠干| 性 色 婷婷| 99er热精品视频| 五月婷婷av| 伊人激情AV一区二区三区| 超碰在线免费观看3 9| 综合玖玖偷拍| 人人草成人视频| 欧美成人精品一区二区 | 丁香婷婷AV| 久久综合色五月| 婷婷综合欧美| 精品久久久久久久人妻| 成人婷婷| 国产五月视频| 婷婷操超碰| 亚洲射激情| 婷婷涩涩五月天| 成人无码髙潮喷水A片| 中文在线视频久9| 激情五月天丁香| 可以免费看的av网站| 久操激情| 狠狠久久婷五月综合色| 香蕉国产2013| 丁香5月婷婷| 色五月丁香网| 免费啪啪啪网站| 亚洲精品乱码久久久久久综合| 五月丁香啪啪综合| 中文字幕人成乱码在线观看| 七七色色综合| 99亚洲大片精品永久在线观看| 色综合天堂| 99A片| 欧洲色色| 九九色院| 日韩欧美骚货| 天天干天天做| 五月丁香婷婷综合视频| 五月丁香亚洲综合网| 婷婷久久久| 日本色色影院| 亚洲十月婷婷综合| 开心婷婷五月| 五月天丁香婷婷社区| 成人婷婷五月| 欧美色五月| 国产婷婷五月天| av操一操| 丁香花社区av| 久久视频这里都是精品| 99在线精品观看99| 成人短视频在线免费观看| 丁香五月23111| 99久久99九九99九九九| 成人婷婷| 天天爽天天爽| 秋霞网在线免费基地五月婷婷丁香| 无码天天操| 九热视频| 久久网日本| 激情五月天综合网| 九九99视频精品| 激情二色月| 三男玩一女三A片| 久久五月视频| 久久五月婷| 五月天成人综合| 色色色色色色色色色色色色色97| 丁J香六月首页| 嫩草AV久久伊人妇女超级a| 久久精品99国产精品日本| 99re热视频这里只有综合亚洲| 丁香久久综合| 色婷婷超碰| 五月天激情小说| 97超级操操| 日日日日日| 丁香五月激情综合婷综| 亚洲婷婷免费| 亚洲成片在线观看| 色婷婷小说网| 色噜噜五月天| 丁香伊人网| 久月婷婷| 久久99网| 色狠狠999综合网| 五月丁香久久| 欧美成人网婷婷综合在线| 99国产在线精品视频| 婷婷深爱色五月| 久色精品| 亚洲欧州色情在线观看| 中文字幕人妻AV| 九九视频在线观看| 国产精品人妻在线网址| 97干欧美| 婷婷五月天受日本法律保护| 婷婷伊人綜合中文字幕小说| 婷婷丁香成人色综合| 欧美激情-区二区三区| 第四色色六月色综合| 丁香婷婷五月| 99精品一二三四视频| 99热18| 丁香六月av| 97超级碰| 中文字幕激情综合| 九九av| 在线看的免费网站| 色婷亚洲| 99热这里有精品首页10| 99热精品中文字幕| 日批在线看| 一区二区三区四区牛| 99精品在线观看视频| 婷五月丁香俺| 久久婷婷五月综合色区| 99免费在线视频| 色色色色色热| 婷婷视频在线碰| 久久hd| 五月天激日本色情在线| 亚洲99热| 色停停香蕉视频| 五月天婷婷色播| 国产成人亚洲综合亚洲| 超碰在线看| 激情婷婷五月色| 天堂综合久久| 天天拍天天操| 五月丁香婷婷综合视频| 一级黄色影片| 久久婷婷五月综合色和| 噜噜干日本| 天天射影视综合网| 久久久久8888| 成人做爰黄A片免费看直播室男男| 淑女丝袜bi操逼123| 97色干| 伊人喵咪a V| 亚洲成人免费电影| 日本五月视频| 99视频自拍| 亚洲日比视频| 思思热在线精品视频| 99免费热视频| 国产VA播放| 亚州婷婷五月激情综合| 五月激情综合网| 五月天婷婷基地| 婷婷丁香五月天色区| 99热99久久| 亚洲久久天堂| 激情五月天丁香| 五月天激情亚洲| 亚洲亚洲激情| 香蕉狠狠爱视频| 丁香五月婷婷总啪啪| 狠狠操天天干| 激情丁香五月婷婷| 久久人人人人妻| 99re99在线看| 五月天婷婷色情| 成人五月天综合网| 五月丁香综合啪啪| 99热最新精品| 婷婷激情社区| 婷婷五月色影视先锋| 成人视频一区| 久婷婷五月综合欧美| 99热人人艹| 中文字幕永久在线| 中文字幕在线不卡| 婷婷丁香人妻天天爽| tingtingzonghewang| 五月天婷婷综合久久| 91人人操人人爱| 丁香五月天亚洲综合| 免费看欧美成人A片无码| 五月天播播| 亚洲婷婷91丁香| 九九这里有精品| 五月婷婷开心丁香| 国产女18毛片多18精品| 天堂成人A片永久免费网站 | 大地资源色婷婷视频在线| 97色色婷婷| 丁香五月综合婷婷| 亚洲色五月| 色久丁香五| 激情五月天在线视频| 色色色国产| 五月天婷婷高清无码| 天天舔天天| 狠狠操天天操天天操| 五月花综合网| 天天日日人| 思思久久网| 另类激情五月天。| 久久九九网| 色色丁香| 丁香六月婷婷久久综合| 99热啪啪| 婷婷五月天成人在线视频| 超碰91av| 亚洲黄色影视| 大香蕉九九| 那里有AV网址| 亚洲色色图片| 伊人在线婷婷草| 六月丁香综合999| 天天操夜夜玩!| 色五月色五天色情网| 久色网五月| 日屌日日操日日色| 五月在线| 色婷另类| 亚州色婷婷| 日日夜夜干| 国产AV一区二区三区最新精品| 亚洲亚洲人成综合网络| 热日韩欧美| 激情婷婷。| 99热丁香| 超碰碰碰碰| 婷婷综合网在线| 五月天夜夜爱夜夜操| 丁香六月在线| www久久艹| 色色射| 思思久久99热只有频精品66| 另类五月激情| 丁香六月激情毛片| 亚洲不卡| 激情丁香婷婷五月天| 六月婷婷色宗合| 九九热精品视频| 91色婷婷综合久久中文字幕二区| 久久久久婷婷| 在线综合亚洲欧美65| 九九九午夜视频| 久热这里只精品| Va另类视频| 能看的AV| 色婷婷丁香五月| 99久操视频| 日本久久视频| 婷婷色五月天第7色| 久久视频在线| 色色婷婷丁香| 性做爰A片免费视频A片直播| 无码一级片| 色久播播| 亚洲最大五月天成人网| 色婷婷www| 极品人妻VIDEOSSS人妻| 99热国产婷婷| 六月婷婷狠狠| 激情五月天婷婷五月天| 中文字幕 中文字幕明步| 久草免费福利视频| 五月婷婷五月天| 激情综合亚洲色婷婷五月| 玖玖99免费视频| 超碰在线caop| 狠狠综合色网| 六月激情综合| 九九精品9| 99色干| 激情五月五月五月婷婷| 久99热在线观看| 免费看欧美成人A片无码| 四季AV综合网| 丁香五月亭亭六月综合激情网| 中文av网| 欧美三级巜人妻互换| 色色色在线| anquye五月| 五月婷婷啪啪| 婷婷五月丁香色综合| 亚洲婷婷月丁香五月| 国产精品美女| 超极99精品| 99亚色色色| EEUSS鲁片一区二区三区| 专区无日本视频高清8| 猫咪伊人久久| 九九精品视频在线观看| 9久精品| 久久综合综合久久| 婷婷丁香五月高清| 亚洲亚洲人成综合网络| 综合久久97| 丁香色婷婷五月天| 久久久久久久久久久-久五月天婷婷| 99久久久久久| 99re这里| 色吧婷婷五月亚洲| 色综合色综合婷婷热| 丁香五月先锋| 婷久久久| 亚洲看av的网站| 亚洲婷婷五月天| 丁香五月婷婷AV| 五月天婷婷成人网| 婷婷情色五月| 丁香婷婷久久老熟女综合网| 99精品无码| 久久9视频| 色婷婷激情| 婷婷五月色情| 激情综合网五月激情| 123日本不卡在线| 五月丁香色婷婷基地| 99国产精品久久久久久久久久久| 天天五月丁香五月| 丝袜大香蕉| 九九色图| 色婷婷在线播放| 久久婷婷五月天激情四射| 婷婷五月天美女21p| YW无码| 人人操人av| 色婷婷在线视频观看| 国产精品久久久久久五月天加勒比| 性无码专区无码| 五月婷婷天天色| 五月天激情综合网| 视色网在线播放| 亚洲成av人影院| 婷婷深爱色五月| 国产露脸150部国语对白| 丁香5月综合啪啪| 精品少妇人妻AV无码专区偷人| 天天色综合色| 91夫妻视频| 天天爽天天摸|