99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

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
返回資訊列表
天天操天天曰天天射| 九九激情综合| 天天日天天舔| 久久久18| 亚洲V国产V欧美V久久久久久| 丁香五月天婷婷在线视频| 色色五月天婷婷| 伦乱天堂| 亚洲欧美在线观看| 六月丁香VA| 9色操| 天天色域综合网| 久9草在线观看视频| 亚洲另类视频| 日韩无码成人电影| 欧美日本韩国亚洲| 九九在线精点品| 五月婷婷日本| 五月天婷婷成人网| 美英法精品无码免费视频| 9色免费网| 天天日天天爽夜夜爽| 欧美乱码国产一级A片| 六月撸婷婷| 五月天激情四射| 丁香五月av| 在线五月色播| 91视频久久久| 无码日本精品XXXXXXXXX| 天天做综合网色综合| W色综合| 国产婷婷色综合AV蜜臀AV| 日韩欧美一道四区中文字幕| 在线只有精品| 色五月婷婷小说亚洲中文字幕组| 丁香五月在线人妻| 国产女生爱爱AA| 五月丁香影院| 夜夜爽日日躁| 中文久久婷婷| 国产肥白大熟妇BBBB视频| 99热中文字幕久久| 丁香色情五月综合激情| 9久热在线视频| 色狠久| 国产精品日日躁夜夜躁| 99热网精品| 99亚州综合精品成人网| 狠狠干2007| 东北熟女高潮99综合99| 亚洲五月婷婷| 日本在线视频播放91| 婷婷丁香视频在线观看免费| 伦99热| 五月丁香色婷婷| 综合五月激情| 伊人五月天综合网| www,com,五月色色| 婷婷丁香熟女| 99综合网| 色色婷婷五月天| 五月婷庭丁香在线| 天天射影| 婷婷久久免费| 91人人人人人人人| 最近中文字幕2019视频1| 婷婷五月天六月丁香| 久久丁香五月综合六月激情红杏视频 | 99热国产婷婷| 久久九九Com| 色色激情网| 婷婷五月婷婷五月| 婷五月天在线草| 一起肏在线视频| 五月婷婷六月激情| a网站免费观看| 99免费视频网| 六月丁香婷婷天堂| 日韩一区二区在线播放| 99ri精品视频在线观看| 美国不卡视频| 婷婷伊人綜合| 色插人人| 99热国品| 九九热九九| 婷婷深爱五月天| site:esunnet.com| 九月丁香婷婷综合激情| 日日干天天射| 一级精品999WWW| 日本韩国视频在线观看社区免费的9| 日韩另类| 欧美婷婷日本| 丁香色成人| 六月丁香婷婷六月激情综合| 777精品成人a v久久| 五月婷婷啪啪啪| 丁香五月天社区婷婷| 亚洲精品V天堂中文字幕| 婷婷五月丁香久久| 91成人电影| 婷婷五月无码| 亚艹艹| 婷婷五月天成人动漫| 日良久久| 精品久久99| 99九九视频精彩在线| 亚洲黄网在线| 婷婷五月天大香蕉在线视频观看| 亚洲丁香婷婷| 大香蕉太香蕉视频97| 国外亚洲成AV人片在线观看| 免费看欧美成人A片无码| 99热免| 日本一级| 成人网站在线观看视频| 91久久久久久久久久久| 天天爽夜爽| 99自拍网| 欧美色五月| Av大香蕉| 97干婷婷| 久久久精品色| 99热亚洲| 一本到不卡高清DVD| 免费无码毛片一区二区A片| 人妻人人操| 天天玩夜夜操| 91狠狠综合久久久| 中文字幕1区2区。| 国产VA播放| 亚洲综合999| 九九色色色| 99色久| caopeng97人人| 涩 五月 婷婷 狠狠| 激情综合丁香| 五月综合丁| 伊人综合婷婷| 99热超碰| 色五月婷婷天天干| 七七九九色色| 26UUU精品一区二区c〇m| 丁香婷婷五色月| 99热这里只是精品| 天天综合色| 五月婷婷啪啪网| 99自拍视频在线| 秋霞免费视频| 国产69精品久久久久999小说| 97操操网| 亚洲四色五月| 激情av| 激情久久久| 久久视频66| 色婷丁香五月| 亚洲人妻五月丁香婷婷| 岛国AV网| 日本色五月| 人妻人人操| 99国产精品白浆在线观看免费| 国产午夜成人免费看片无遮挡| 色婷丁香91| 直接看的AV| www.一起草av| 五月丁香天堂| 国产精品电影网| 亚洲另类电影| 26UUU精品一区二区Com| 久久女人天堂| 五月婷婷丁香91| 久久一级免费黄色片| 婷婷五月丁香91| 超碰成人免费| 六月丁香激情综合网| 久久久er热| 婷婷基地五月色| 99热99热在线| 欧美色频| 极品人妻VIDEOSSS人妻| 色色色视频免费无码 | 欧在线一区| 免费看欧美成人A片无码| 亚韩精品视频1区| 国产肏屄大片| 天天干天天日日| 丁香五月婷婷色播艳门照| 婷婷丁香五月,狠狠综合| 99热手机在线精品| 婷婷五月色| 青青操日本摸摸看看| 9久国产精品| 内射激情在线| 五月婷婷啪| 激情涩播| 99热情这里只有精品在线播放| 思思re视频在线| 成人免费在线电影| 99A级片| 99.N在线视频| 国产AV一区二区三区最新精品| 五月天婷婷在线播放免费| 亚洲中文乱字字幕在线永久| 99ER热精品视频| 五月天另类图片区99| 激情宗合哪里能看| 超碰色综合| 国产在线激情视频| www。狠狠干。com| 亚洲精品99| 大香蕉视频婷婷| 成人片在线播放| 久久 视频这里只有精总| 丁香综合网| 久久久精品免费啪啪国| 操笔无码| 丁香五月播播| 国产亚洲网站在线| 欧美成人网99网| 五月丁香色婷婷| 五月丁香六月婷婷色| 久久小说| 日噜噜色| 色五月涩涩婷婷蜜桃| 色五月综合资源推荐| 久草热久草在线视频| 久久婷婷婷| 亚州AV超碰人人操| 成人国产欧美大片一区| 中文字幕+乱码+中文字幕在线观看| 深爱激情综合| 久久99jiu9| 婷婷日日天天| 亚洲精品成人| 色综合中文色综合网| 操你av| 综合网色| 五月婷婷丁香深深爱| 综合网啪| 久99久视频精品| 激情人妻综合| 天天爽夜夜爽天天爽夜夜爽| 伊人久久婷婷| 丁香色五月婷婷17C| 久9免费视频| 四季日韩AV无码综合| ay2区| www色婷婷| 五月间天堂综合| 五月婷婷激情综合拍| 色色色综合网| 一本道综合网| 国外亚洲成AV人片在线观看| 婷婷五月天国产手机在线视频观看| 色一情一乱一乱一区91| 亚洲人妻一区二区 | 久久Xx| 播五月丁香六月| 超爽内射| 人人视频色| 色噜噜狠狠色综无码久久合欧美| www.五月天性.com| 日韩欧美不卡| 色狠狠色综合| 色婷婷色| 婷婷五月天堂| 色婷婷99| 五月综合视频| 丁香五月激情性色郤| 色欧美一级| 97人妻碰碰中文无码久热丝袜| 久久精品五月天| 色激情五月| 九九热在线视频| se99热久久一本| 夜夜撸夜夜骑| 欧洲毛片基地c区| 日日干天天射| 婷婷激情五月天7| 五月综合色| 热久91| 青草青草视频2免费观看| 五月婷婷中文字幕| 丁香婷婷五月份| 色五月色开心开心五月| 久久精品综合色| 六月婷婷九月丁香| 婷婷五月天堂网| 全国最新疫情| 天天做天天爱天天玩| 操操自拍| 极品少妇高潮啪啪AV无码| 亚洲乱码日产精品BD在线观看| 国产SUV精品一区二区6| 中文在线视频久9| www91久久| 色玖玖爱| 五月婷婷亞洲中文| 婷婷五月天AV| 婷婷天堂伊人| 久99热| 五月激情网五月综合网| 九九精品免费| 99热 免费| 久热这里精品免费| www.seqingwuyuetian| 综合久| 9l视频自拍9l九色9l成人| 99视频精品全部观看10| 久久婷婷五月天激情四射| www.夜夜操| 狠狠高潮精品亚洲1| 色色色9| 99热只有精品在线播放| 九九草热在线观看| 99精品久久| 中文字幕1区2区。| 亚洲成人影视在线观看| 六月久久狠狠| 激情小说五月天| 碰人人97| 久色五月婷婷综合| 夜夜骑夜夜撸| 五月天伊人久久久久| 激情五月小说婷婷| 色爽九九| 日日夜夜狠狠操| 色久影院| 人妻人人操| 婷婷丁香77777| 天天草天天舔| 婷婷久久亚洲| 丁香五月成人网| 99网| 国产精品色婷婷久久久精品| 丁香五月花婷婷开心| 激情小说五月天中文字幕| 色999;丁香五月| 五月婷婷六月少妇激情| 久久综合婷婷五月| 激情二色月| 99热这| ...婷婷五月综合不卡,国产在线手机 | 99热在线观看免费精品| 亚洲无码色| 五月丁香婷草| 深爱激情网综合| 亚洲色久| 丁香婷婷精品视频| 国产成人99久久亚洲综合精品| 五月亭亭性| 国产性爱一级| 亚洲色色色色色色色色色| 亚洲狠狠狠色婷婷综合激情久久久| www激情网| 色五月综合| 五月婷婷色播| 色五月婷婷激情基地| 精品女人九九九| 成人深爱丁香五月| 99热成人| 九九色逼| 天天草天天爽| 操国产人妻| 久久新| 91se精品国产| 人妻久久久| 国产9色在线/日韩| 婷婷99狠狠| 蜜乳久AV| 久久久ww| 噜噜五月天综合| 成人av中文字幕| 夜夜夜夜操| 亚洲色综合| 啪啪五月综合| www.99操| 日韩欧美成人网| 九九伊人网| 久婷婷| www.婷婷六月天| 激情婷婷五月基地| 丁香五月激情无码视频| 我要射综合| 五月香蕉综合| 久婷婷五月丁香在线观看| 婷婷爱爱蜜臀天天操| 九一牛视频探花| 青青草青青草五月天| 色综合色色| 久久婷婷成人综合色怡春院| 日本三级黄色大片| 婷婷伊人| 岛国av网站| 天天色图| 五月天社区婷婷丁香社区| 五月天婷婷色播在线网| 六月丁香基地| 色色色精品无码区| 婷婷色五月开心五月| 99热婷婷| 久9视频| 激情影院丁香五月| 婷婷激情97| www好屌操| 五月天伊人网| 全亚洲最大的婷婷五月天网站COM 丁香五月婷婷狠狠色 | 中文字幕日产A片在线看| 中文字幕日韩成人| 大香蕉久久婷婷| 综合日本婷婷| 天天干天天色综合| 综合激情专区| 久热69| 性爱激情小说AV五月丁香花| 九九婷婷网五月天| 五月婷天堂视频| 婷婷综合爱| 综合大香蕉| 久久久97| 亚洲精品大片| 99精品视频在线| 婷婷人妻激情| 最近免费中文字幕大全高清大全1 免费看欧美成人A片无码 | 91疯狂操操操操| 亚洲综合婷婷| 丁香婷婷视频| 开心五月天私房婷婷| 日韩AV在线免费| 精品人妻一区| 久久久27操| 丁香五月aV| 婷婷五月网图片区| 超碰人人摸AV| 色五月激情综合网| 五月天开心色情网| 五月色天情| 久鲁鲁色网| 色婷婷情片| 老美AA片| 香蕉AV福利精品导航| 成人丁香色| 婷婷丁香五月天中文字幕| 99久久免费精品| 色色色色综合网| 中文字幕在线视频播放| 久久久婷婷五月亚洲97号色| 成人电影AV在线观看| 99ri精品视频在线观看| 久热免费视频| 九九99视频| 午夜丁香六月婷| 丁香五月91| 激情五月天在线观看婷婷| 99视频久久| 丁香五月1页| 久久精品一区二区三区四区| 精品久久艹| 久9无码视频| 99无码视频| 丁香婷婷五月天在线视频| caopeng97日韩| 四色综合网| 黄网免费看| 婷婷五月天AV在线| 99热主页日本| 91干视频| 欧美精品99| 久久婷婷网| 五月99久久| 激情网婷婷五月天| 婷婷五月精品在线| 97男人天堂| 色九网| www.狠狠色.com| 五月丁香日逼| 99操碰| 五月婷婷开心综合| 91精选国| 五月天久久久| 日亚二欧美| 丁香六月AV| 日本丰满久久| 婷婷大香蕉| 婷婷五月色播放| 狠狠干婷婷| 超碰97在线观看免费| 99这里只有精| 白天AV月月| 超碰操网| 国産精品| 国产在线aaa片一区二区99| 久热这里只有精品99re| 久热这里只有精品视频6| 啪啪激情综合| 激情五月婷婷综合秋霞| 婷婷五月丁香五月| av在线免费网站| 中文不卡一二三区| 91精品久久久久久77777| 色六月 婷婷| 夜夜操夜夜操| 六月丁香色色| 噜噜精品| 偷拍视频五月天| 九九热a| 亚韩精品视频1区| 色婷婷亚洲精品天天综| 丁香五月社区| 欧州色色| 婷婷综合六月| 五月婷婷丁香深深爱| 五月停停色| 九月色婷婷婷| 色人久久| 国产成人综合在线| 五月丁香激情综合六月涩涩爱| 五月婷色啪| 777色色色| 97色永久免费视频| 六月激情网| 色欲影香| 久久欧洲综合网| 丁香婷婷人妻综合网| 99久久婷婷国产综合| 免费99色| 精品一区二区三区三区| 免费色婷婷| 五月丁香六月片| 午夜免费试看| 欧美日综合| 99久精品视频| 91久久五月天| 五月丁香久久久久| 91九色中文字幕女在线观看| wWwCom夜操wwW| 中文乱子伦视频| 色婷婷五月天在线观看| 成人国产网站| 就要去操亚洲成人精品五月天丁香婷婷| 天天色综合综合| 91中文在线| 激情小说五月天| 天天综合久久| 日日操夜夜爽| 性色天| A A色色| 亚洲精品小视频| WwW天天干| 狠狠色官网| 色婷婷在线视频久| site:901-07.com| 色天天综合天天综合频道。| 六月丁香啪| 婷婷五月 丁香六月| 思思99精品视频| 激情综合网五月天天| 亚洲欧洲中文日韩久久AV乱码| 96精品成人无码A片观看金桔| 操碰99| 天天日,天天干,天天操| 26uuu亚洲色| 都市激情小说婷婷| 婷婷情爱五月天6| 人人操AV| 97超碰在线免费观看| 九九热婷婷| 91色在线/日韩| 成人在线99| 国产精品久久久久久妇女6080| 蜜桃成语时李时珍 免费| 99久久66综合| 丁香六月成人| 超级碰碰碰97免费| 久久永久网址| 五月丁香999| 激情六月婷| 色五月大| 色噜噜狠狠色综无码久久合欧美| 99国产99| 丁香五月激情视频| 伊人啪啪网| 99re66热这里只有精品| 看片视频在线免费日产在线看| 国产精品电影| 丁香亭亭久久| 婷婷五月天激情在线观看| 亚洲第一视频 久久| 日本五月天网站| 日韩无码色色| 婷久久久| 国产免费一区二区在线A片视频| 六月婷婷视频| 99视频这里有精品| 婷婷99狠狠| 九九视频在线免费视频| 大陆极品少妇内射AAAAAA| 亚洲天堂亚洲色色色| 色婷婷成人做爰A片免费看网站| 婷婷激情四射| www.五月.com| 国产伦亲子伦亲子视频观看| 丁香婷婷综合影院| 五月激情小说| 狠狠久综合| 97超级免费无码| 亚洲人妻av| 久久99这里| 婷婷五月色天| 日韩小视频在线99| 色爱综合网| 色综合射婷婷| 99久视频| 久久久精品婷婷五月天| 色五月五月天色婷婷色五月| 国产亚洲色婷婷久久99精品91| 婷婷啪啪| 99久在线精品99re8| 丁香五月大香蕉AV| 大香蕉久操| va亚洲中文在线| 五月玖玖| 伊人大综合| 99精品国产在热久久婷婷| 婷婷丁香五月亚洲欧美| 天天xxxxxx天天日| 激情五月天丁香| 五月天婷婷婷| 日夜操B| 天天干天天色天天干| 超级碰碰碰碰视频| 国产熟妇的荡欲午夜视频| 丁香婷婷色五月| 久久久18| 97人人操人| 婷婷五月综合啪| 91碰碰碰| 婷婷五月综合色中文字幕| 丁香六月激情综合| 99色色视频| 亚洲色情免费网| 色噜久| 少妇伦子伦精品无吗| 久久久人妻| 第四色婷婷色五月| 婷婷久久五月天| 丁香五月婷婷激情中文| 泰州成人视频| 狠狠爱五月婷婷| 天天草天天日| 夜夜涩涩涩| 超碰在线观看9| 影音 五月 婷婷 久久| 97香蕉碰碰人妻国产欧美| 97成人视频| 日韩视频99| 色五月婷婷狠狠撸| 婷婷激情综合网| 婷婷九色| 亚州婷婷五月激情综合| 亚洲AV成人一区二区在线观看| 五月婷成人网| 丁香午夜天| www.超碰| www激情| 亚洲综合婷婷六月丁香五月| 噜噜色五月| 91丨九色丨老农村| 99ER热精品视频| 五月综合色| 久久精品9| 久热A| 丁香五月婷婷黑人妻黄色电影院| 激情五月天电影| 热久久婷婷| 久久ab| 丁香五月婷婷99| 日婷婷久久开心| 国熟女视频| 一根材五月婷成人| 婷婷五月天激情综合| 激情网五夜婷婷| 色色自拍视频网站| 精品在线| caopeng超碰| 5月色婷婷| 五月婷婷与六月丁香图片激情| 东京热免费视频| 操久久精| 综合大香蕉| 国产亚洲网站在线| 香蕉AV福利精品导航| 国产99久久久国产精品免费看| 激情久久综合| 色综合99| 六月丁香婷婷综合狠狠爱夜夜爱| 天久久久久| 9色视频在线| 天天肏屄夜夜爽| 九九一区| 色色五月天婷婷丁香| 大香蕉五月丁香| 天天日天天操心| 综合图区激情| 丁香五月天婷婷大香蕉| VA色婷婷| 欧美视频在线观看噜噜| 亚洲操B视频| 天天狠狠夜夜狠狠2023| 青草热视频这里只有精品| 九九99在线| 狠狠狠狠狠狠色| 丁香六月啪啪| 丁香六月激情综合网| 狠狠五月激情婷婷直播片| 狠狠干思思热| 五月丁香亭亭| 天天艹夜夜艹| 99在线精品免费视频| 成人美女网| 人人操人| 婷婷色情网| 女同激情久久av久久| 色视频2025| 伊人五月人妻精品| 五月天婷婷色综合| 天天看A片| 久久精品99国产精品日本| 色婷婷的五月天| 五月丁香成人| 激情五月天婷婷播播久久综合91| 丁香婷婷深情五月亚洲| 激情深爱婷婷网| 激情婷婷综合网| 婷婷综合久久| 五月天狠狠色| 色天使色婷婷| 在线观看五月婷婷网| A久网| 色99网站| 丁香六月色| 99re在线观看视频| 人人爽欧美婷婷久久久五月丁香| 天堂爱爱| 操操自拍| 欧美性爱专区| 99热综合在线| 婷婷成人五月天成人文学| 北京熟妇搡BBBB搡BBBB | 激情五月天的婷婷| 人妻操操色| 五月婷婷激情网| 五月婷婷激情在线| 婷婷色五月天第7色| 97干综合网| 色婷婷五月天av在线| 欧美日韩成人在线网| 很很干五月天| 色婷婷丁香五月| 人人干女人| 99热12| 日本三级中国三级99人妇网站| 99热久久日本| 五月激情丁香| 熟女激情网| 九九成人高清视频| 久久久婷婷五月亚洲97号色| 中文字幕网伦射乱中文| 91丨九色丨熟女|新版| 伊人青草成人| 五月婷婷丁香大陆免费| 粉嫩AV久久一区二区三区| 九九亚洲无码| 婷婷五月伦理| 97碰在线视频| 99乱视频| 五月天五月天成人网亭亭成人色网站| 婷婷五月色天| www.99精品视频| 甈你aaaaa| 久久久精品AV| 色欲Av五月天| 玖玖爱资源站| 99碰碰视频| 丁香五月婷婷高清| 激情超碰网| 精品AV无码超碰| 在线观看免费人成视频无码| 婷婷五月丁香五月| 97色色色| 久久99热这里只频精品6学生| 91操片| 色色色色色色网| 天天爽,夜夜爽| 免费五月婷婷网| 天天天天天日| 色婷婷狠狠| 婷婷五月天香蕉| 日日狠狠久久偷偷四色综合免费| 情婷婷五月天| Www.狠狠| 丁香 亚洲 久久| 五月天夜夜爱夜夜操| 色 五月婷婷基地| 就爱射中文字幕资源网| 天天操狠狠操| 色婷婷亚洲五月天| 五月丁香六月婷婷国产视频| 婷婷国产成人| 26.uuu丁香五月婷婷| 亚洲视频五区| 五月激情六月综合| 99婷婷| 婷五月天| 大香蕉五月婷婷| 色婷婷小说| 成人精品视频99在线观看免费| 色综合色色| 成人综合网站| 久久久久9久无码视频| 婷婷色一二三区波多野结衣| 在线中文亚洲| 五月六月播婷婷| 色五月婷婷五月久久| 俺去也在线视频| 野战毛片三一3| 日本啪啪网| 色五月婷婷色| 国产亚洲精品久久久久久豆腐| 色99在线| 五月天婷婷激情四射综合| 91日视频| 五月丁了香蕉综合| 天天操夜夜爱| 六月婷婷av| 99热这里都是精品| 国产精品美女久久久久AV超清 | 九九热免费| 中文字幕,综合,91| 色区久久| 亚洲字幕AV一区二区三区四区| YW无码| 丁香婷婷五月天激情四射| 另类五月婷婷| 五月婷婷影| www.色婷婷| 另类五月激情| 久久丁香网| www99精品| 甈吧vv| 丁香五月色网| 天天插天天日| 婷婷中文字暮| 99在线观看视频免费| 色天天综合成人网| 亚洲人妻AV| www.婷婷久久五月天| 欧美久久婷婷| 婷婷六月伊人| 五月天色影院| 久久久久五月丁香| 99∨VTV| 成人AV在线中文版| 99操逼视频| 996热re视频精品视频这里| 9色在线视频| 影音先锋五月婷婷| 五月丁香六月在线欧美| 五月天堂在线| 欧美这里只有精品| 综合亚洲AV| 狠狠肏综合网| 99视频| 日本乱子人伦在线视频| 欧美人久久| 色99视| 婷婷五月色综合| 99色热综合| 99热免费精品热久久66| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 在线视频激情网站| 五月丁香成人网| 五月丁香六月婷婷网| 国产精品美女久久久久AV超清| 欧美伊人9| 99热这里只有精品 搜| 婷婷俺去也| www.综合久久.com| 五月婷婷网站| 婷婷丁香五月天激情| 色色九九五月天| 日本不卡五月婷婷丁香| 99精品免费| 九九热99视频| 亚洲六月色| 91九九九九| 99精品无码视频| 日韩超碰在线| 丁香五月色情av| 五月婷婷 六月丁香| 99久久极情精品一区| 色爽九九| 婷婷五月丁香色综合| 怡春院天天干| 五月婷婷九月婷婷九月婷婷| 六月激情婷婷| 亚洲在线操| 天堂综合久久 | www久久久久久| 亚州AV超碰人人操| www.99热| wWw色五月| 97资源欧美日韩大香蕉超碰一区| 九色亚洲| 久8色色| 成人龟情网丁香五月| 九九国产视频| 五月激情偷拍| 国产日比| www.色综合.com| 91九色国产熟女| 91美女被操| 影视av久久久噜噜噜噜噜三级| 久操香蕉| 99av视频| 亚洲99一级无嗎特制在线| 思思久久99热只有频精品66| 五月天丁香婷婷视频网址 | 黄网在线免费观| 婷婷丁香视频在线观看免费| 丁香五月天激情视频| 九九99久久| 五月婷婷官网色| 98热精品| 99热在线播放| 影音先锋天天日| 色丁香久久久| 五月天婷婷Av| 婷婷99狠狠躁| 久久婷婷东京热大香樵| 丁香六月欧美| 91猫咪国产在线播放| 婷婷五月天激情五月天深爱五月天| 超碰人人在线观看| 五月天天天色| 99热日| 无码人妻激情| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 影音先锋 一区| 精品网站:999WWW| 九九热av| 能看的AV| 久久九九在线视频| 五月天婷婷涩涩| av五月天婷婷丁香| 丁香 亚洲 久久| 狠狠色婷婷7777久| 91热er| 20253AV| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 亚洲性爱99| 亚洲狠狠丁香婷婷香蕉| 激情综合五月婷婷六月丁香| 操比激情五月综合| 久久99热这里只有精品| 天天插夜夜爽| 丁香五月很很肏| 伊人久久婷| 精品人妻伦| 色色网站日本91| 激情丁香五月| 婷婷激情丁香五月天综合| 91人久| 婷婷五月天狠狠色| 9.1综合网| 精品导航在线x不卡| 成人在线不卡| 日日撸日日操| 日本 欧美在线| 亚洲AV久久久久久久久久久久久久久久 | 丁香婷婷九月| 成人在线观看国产| 色婷婷激情四射视频| 婷婷开心青青草| 我去色色网五雨天| 99综合视频一体| 99视频这里只有久久精品| 国产精品久久久久久久久久久久| 亚洲激情.com| 亚洲精品网址| 成人短视频在线观看| 五月丁香六月婷婷免费视频| 亚洲成人网站在线| 五月丁香六月激情| 播五月,色五月,开心五月播放器| 黄色aaaaa| 国产色色小草视频| 亚洲最大在线| 人人做天天爱| 六月久久婷婷| 天天日天天肏天天奸| 色停停五月天| 天天射夜夜爽| 99亚洲无码| 久久综合丁香| 国产精品18久久久| 91丨九色丨熟女| 久久99这里只有精品视频| 久久婷婷网站| 六月婷婷日| 五月天婷婷色色| 996日日爱| 凹凸7777操操操| 97九色视频| 色五月婷婷丁香凹凸| 婷婷射图| 久久免费婷婷视频| 综合亚洲六月婷婷在线| 97成人超碰免| 五月婷婷综合网| 综合婷婷久久| 天天射综合网夜夜操| 久久色频| 五月天操逼网| 欧美亚洲色色色色| 99热这里都是精品| 天天草天天摸| 久久A热| 精a品a视a频| 五月婷六月| 大香蕉懂9| 99热一区| 色婷婷丁香五月| 丁香五月天天高清在线| 亚州操操| 色九综合| 五月天色小说| 丁香五月天啪啪| 丝袜大香蕉| 丁香五月最新地址| 国产在这里只有精品| 五月四色婷婷| 五月婷婷色男女| 九玖视频这里只有精品| 日韩 中文 欧美| 丁香婷婷老熟女综合网| 色综合五月天| 亚洲色五月| 激情婷婷六月天| 婷婷亚洲综合| 第五色色色婷婷| 丁香花婷婷五月天| 激情综合五| 丁香五月亚洲天堂| 五月丁香激情综合欧美| 婷婷五月激情片| 亚洲色色在线| 色婷五月婷婷| 色五月综合网| 久久五月天合网| 亚洲五月婷婷| 五月丁香综合啪啪| 伊人婷婷五月天| 天堂AV三级| 激情丁香婷婷六月天| 婷婷伊人无码| 色婷婷影视| 久久之人妻| 成人电影一区| 高清a片基地| 任你艹| 国产精品色情AAAAA片软件| av狠狠操| 极品人妻VIDEOSSS人妻| AV中文网| 五月丁香久久激情综合| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 亚洲无码九九| 夜夜操天天爽| www.久久av.com| 爱草人视频| 中文字幕在线免费观看视频| 99精品在线观看| 99久久综合网| 五月婷婷 激情按摩| 亚洲中文字幕在线观看| 成人做爰高潮A片免费视频| 亚洲综合网在线| 大香久久伊人网| 丁香五月婷婷偷拍| 狠狠五月激情在线| 天天艹夜夜爽| 另类激情五月天| 色婷婷五月色| 日韩色色视频| 国产伦亲子伦亲子视频观看| 91久女| 色情五月婷| www.色9| 五丁香激情综合| 色色色色色色综合| 先锋资源婷婷| 狠狠干五月天| 综合aV在线| 成人AV中文字幕| 久久久99免费视频| 久久婷婷五月国产激情综合片| 99精品国产在热久久| 六月丁香婷婷在线波多 | 玖玖五月| 亚洲丁香五月深爱五月| 色婷婷五月天不卡| 五月婷丁香| 99热网精品| 婷婷丁香花五月天| 亚洲成人综合在线| 色五月五月天| 五月丁香成人| 熟女人妻一区二区三区免费看| 精品视频网| 亚洲高清在线| 狠狠色噜噜狠狠| 色婷婷六月| 综合激情五月天| 色综合偷拍| 美女va| 亚洲AV第二区国产精品| 玖月婷婷爱丁香| 噜一噜在线| 综合XX网| 色欲一区二区三区精品A片| 在线观看欧美| 色五月丁香婷婷综合| 五月天激情综合| 亚洲色网络| 婷婷色情五月| 久久人妻爱爱| 五月婷婷六月丁香在线视频免费在线观看| 亚洲激情四射| 都市激情亚洲| 久久五月丁香综合17C| 久久久www| 久久久亚洲成人无码A片| 日本3级片偷拍网站| 日本欧美国产| 97色婷婷| 欧美日本97| 五月色情婷婷开心五月色情| 亚洲六月婷婷| 伊人免费视频9| www.色五月| 天堂草在线看www| 亚洲午夜AV| 91九色视频| 婷婷五月天免费视频| 99国产在线精品视频| 五月天激情综合网俺也去| 亚洲a色| 日本不卡一区二区三区| 亚洲在线操| 五月激情在线| 热99视频精品在线| 亚洲小视频免费播放| 色婷婷天堂| 亚洲啪| 五月天欧美 另类小说| 激情五月丁香五月| 丁香婷婷婷五月综合色情| 丁香五月开心婷婷| 欧美日韩中文国产一区发布| 五月丁香六月婷婷综合在线| 亚洲综合色色| 婷婷久久婷婷| 激情五月少妇| 9久久狠狠的| 夜夜天天久久婷婷| 丁香六月欧美| 丁香九月综合激情| 天堂综合久久| 96丁香婷婷九月蜜桃综合久久| 天天色一道本综合婷婷| 人妻久久久久久| 久9久9久9久9久9久9| 色欧美影院| 男人天堂AV在线一区二区| 色五月婷激情| 婷婷色色亚洲| 婷婷五月丁香在线观看| 97人人草| 九九热a| 中文字幕视频在线播放| 大香蕉久久久| 九九色影视| 激情婷婷久久| 天天射影院| 影音先锋91男人资源在线播放| 五月丁香激情婷婷| 青青色com久久| 五月天婷婷中文字幕在线播放| 97操碰人免费| 亚洲色婷婷99一9|| 丁香五月色| 深情六月婷婷综合久久| 色婷婷色99国产综合精品| 激情婷婷五月女| .精品久久久麻豆国产精品| 国产99美少妇| 五月色综合| 五月丁香在线国产 | 黄色高清无码| 色狠狠色综合| 第四色色六月色综合| 五月婷婷av| 色综合大香蕉| 婷婷91| 夜夜躁狠狠| 欧美亚洲色色色色| 五月婷婷免费在线观看| 亚洲亚洲人成综合网络| 五月天婷婷爱丁香中文字幕| 亚洲狠狠丁香婷婷香蕉| 综合色五月| 色情网综合| 色综合五月天| 九月婷婷| 狠狠干综合| 五月丁香基地| 日韩99视频| a久久| 丁香花色色网| 六月婷婷激情| 婷婷五月天激情综合| 久草婷妨| 亚洲天堂色色| 久久99久久99精品免视看婷| 九九色色| 天天xxxxxx天天日| 1024AV视频| 久热亚洲| 久综合网| 99久久66综合| 六月丁香激情| PORNY九色9l自拍视频成人| 深爱五月婷婷| 亚洲欧美一区二区三区爱爱动图 | 少妇AB又爽又紧无码网站| 草婷婷在线| 色婷婷文字幕| 五月天啪啪啪| 狠狠色丁香久久久婷| 99在线小视频| 久久婷婷色丁香| 日韩大片艹艹| 婷色五月| 欧美激情综合色综合| 色五月天丁香婷婷| 亚洲综合成人网| 开心五月色婷婷综合开心网| 精品网站:999WWW| 专区无日本视频高清8| 五月天婷婷中文字幕在线播放| 丁香五月综合久久综合| 99热在线观看| 激情五月小说婷婷| 丁香女人五月天| 免费观看高清无码|