欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,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
返回資訊列表
91操屁股| 99爱无码| 操日本三片99| 99在线精品免费视频| 天天干天天操| www.精品99| 亚洲精品成人片在线播| 亚洲天堂婷婷| 26uuu国产| 中文乱子伦视频| 婷婷久久午夜网| 丁香av网| 超碰色碰碰| 婷婷性爱| www.色综合.com| 丁香五月婷婷天| 婷婷色在线| AV操一操| www.丁香黄色五月天人与| 女操碰| 久久久国产精品黄毛片| 色区久久| 六月丁香五月婷婷| 99操| 激情五月天婷婷| 日本婷色| 婷婷久久99| 五月好婷婷| 久久99热这里| 狠色狠色狠色狠色狠色网| 色婷婷久久综| 婷婷午夜精品久久久| 欧美久久久久久久久中文字幕| 97色在线| 麻豆AV一区二区三区| 日本欧美在线| 狠狠色色| 五月丁香综合激情| 五月天精品| 久久婷婷激情| 丁香五月激情综合| 婷婷综合精品| 亚洲成人网站在线观看| 五月激情站| 五月丁香色| 亚洲精品永久久久久久| 51国精产品自偷自偷综合| 色五月丁香六月婷婷| www.狠狠操.con| 色五月丁香六月资源站| 亭亭丁香久久五月| 丁香五月瑟瑟| 九九精品大香蕉| 成人精品视频99在线观看免费| 五月丁香婷婷综合网| 亚洲在线操| 婷婷五月综激情| 婷婷丁香六月天| 欧美成人性爱网| 五月花婷婷丁香| 99热这里只有精品一| 精品网站99| 精品视频这里只有精品| 色婷綜合网| 色婷婷成人在线| 99精品视频免费在线播放| 99ri国产在线| 天天干天天干天天| 激情综合五月婷婷| www.久久久久久久久久.com| 五月婷婷色综图片| 婷婷久久午夜网| 久久伦乱| WWW、日本色丁香co m| 亚洲小视频免费看| 一级二级香港秋霞欧美欧美秋霞| 狠狠狠狠狠狠| 九九热精品视频| 天天操夜夜操| 丁香色色五月| 久操热线| 婷婷五月天激情五月天网站| 色五月五月天色婷婷色五月| 免费精品99| 五月婷婷啪啪啪啪| 六月丁香色色| 新激情五月开心五月婷婷五月丁香五月| 色噜综| 婷婷五月六| 亚洲av日韩无码| 五月天成人综合| 国产毛片精品一区二区色欲黄A片| 五月婷婷综合在线| 丁香久月| 亚洲中文字幕AV在线| WWW嗯嗯啊啊啊啊| 成人va在线| 久久婷网| 青草热视频这里只有精品| 婷婷精品综合| 九九热精品| 丁香综合日产精品久久| 另类视频一区| WWW,五月| 综合色99| 超碰在线99热| 色性日本| 九九精品免费| 99色在线观看视频| 五月丁香人人婷婷在线观看| 婷婷激情五月天小说校园| 99性爱视频| 日本狠狠色| 天天日色情| 精品99视频| 第二色AⅤ| 都市激情五月婷婷亚洲| 亚洲精品99| 先锋影音男人的天堂AV| 五月天激情偷拍| 26UUU欧美| 婷婷五月天丁香| 九九热青草| 久久9精品视频| 天天狠狠色噜噜| 日韩久久色| 狠狠操狠狠狠| 九九热AV| 97人人干人人操| 噜噜久| 五月丁香六月色| 久久天堂女人| 天天成人综合视频| 极品人妻VIDEOSSS人妻| 婷婷五月天成人五月天| 超碰人人干| 婷婷五月天丁香久久| 丁香婷婷五月天校园春色| 情久久综合五月天| 91久女| 全亚洲最大的婷婷五月天网站COM| 99精品免费欧美小视频| 4438亚洲欧美| 6080av| 超碰人人在线| 99在线播放视频| 亚洲精品婷婷| 婷婷五月无码| 国产欧美va| www.超碰97| 国产伊人五月天| 中文字幕综合| 色综合中文色综合网| 激情五月亚洲| 一本色道久久综合狠狠躁一二三| 丁香婷婷六月天| 99久久综合| 亚洲有码在线视频| 99热网址| 99久在线精品| 久久久99久久| 九九综合伊人| 久久五月天婷婷| 超碰在线观看9| 久久婷婷亚洲五月天| 国产精品色色| 2020夜夜操天天爽| 久久大大香| 九九sese| 色五月婷婷777| 影音先锋自拍网| 婷婷五月 丁香六月| 91狠狠综合久久久久久| 99热热这里只精品996小说| 激情五月婷婷视频| VA色婷婷| 天天色视频| 久碰久操| 国产日比| 中文字幕日韩无码制服诱或| 久久99人人| 人妻尝试久久久久久久久久久久| 五月丁香久久激情综合| 天天做天天爽| 激情五月丁香社区| 九九在线视频| 欧美天天性| 国产午夜成人免费看片无遮挡| 亚洲天天免费| 亚洲AV电影av| 色色A| 丁香社92视频| 9l视频自拍九色9l视频自拍九色9l社区 | 大香蕉太香蕉视频97| 久久久久久五月天| 一本久道综合99| 久久99精品久久久久久噜噜| 天天操夜夜爽天天操| 欧美色频| 可以直接看的AV网站| 麻豆123区| 秋霞日本免费毛片A片| 丁香五月天论坛| 另类激情五| 99精在线| 婷婷五月色亚洲| 五月婷综合| 99热精品免费| 五月婷婷中字在线| WWW嗯嗯啊啊啊啊| 99视频网| 99热婷婷| 欧美色必爱| 五月天婷久精视频| 99热99ai| 99ri国产精品| www久久99| 天天艹夜夜爽| 久久总和99| 99爱精品| 亚洲成人日韩无码精品| 99热大香蕉| 精品国产va久久久久久久| 六月色激情| 日韩一本操| 五月天综合网| 日日夜夜干| 天堂婷婷五月色| 99精品女人天堂| 熟女少妇内射日韩亚洲| 亚洲视频操| 五月天色网站| 青草激情在线| 99热这里只有精品13| 91玖玖| 丁香五月激情五月色综合| 婷色五月天| 色在线99| 激情综合色婷婷啪啪六月天| 97色色色色| 久9热视频在线| 91碰在线| 亚洲热热视频| 色色色.com| 视频一二区| 无码少妇高潮喷水A片免费| 人人操五月天| 五月天婷婷激情春色小说| 日本97在线视频| 国产一区二区av免费| 强伦轩人妻一区二区电影| 狠狠干2007| 丁香六月婷| 色色三级视频| 亚洲人人操| 九九精品免费| 婷婷丁香五月综合网上| 一区二区三区四区无码| 丁六月激情| 吊色AV男人的天堂| 国洲夜色亚热在线久久| 久久综合9| 可以看的av| 五月天综合网| 韩国激情五月天综合网| 综合久久人妻| 激情性五月天免费小说视频| 丁香六月成人网| 伊人啪啪网| 婷婷丁香五月亚洲| 精品免费99| 青青草a在线| 亚洲六月色婷婷| 9精品国产在热久久| 五月天电影网| 婷婷亚洲天堂| 开心激情网在线| 久久这里只有精品热在99| 人人射av| AV 3P| 五月欧美色播| 天天看片日日夜夜| 操一区| 久久一级片| 日韩小视频在线99| 日韩av高清| 97操碰98| 99久久色| 日本色久| 日本三级大片| 久久九九怡红院| 九九热av| 婷婷五月亚洲激情| 久久婷婷六月| 狠狠色丁香婷婷基地| 丁香婷婷五月天亚洲| 天天爽在线视频| 97视频久久| 99精品一二三四视频| 99碰视频| 婷婷色五月丁香六月欧美啪| 国产欧美日韩性爱| 狠狠擼综合| XX色综合| 免费无码毛片一区二区A片| 日日夜夜狠狠| AV在线不卡播放| 大香蕉久久青青| www.金莲av| 激情五月四色| 激情淫乱男女| 婷香五月| 伊人干练久| 色婷婷六月综合| 亚洲六月婷| 嫩草AV久久伊人妇女超级a| 五月丁香久久呀| 精品草原久久视频| 丁香五月日韩| 777影视理论片大全在线观看| 午夜天堂一区人妻| 日噜噜色| www.com亚洲网站在线免费| 射区导航| 色色色色色色色综合| 色色影院aaaav| 日本va视频| 久热视频这里只有精品| 天天噜日日噜综合无码| 伊人无码高清| 日韩有码久久| 久久这里只有精品5| 天天综合插插| 久久精彩视频| 五月婷婷六月激情| 9在线9在线婷婷在线国产| 丁香五月天狠狠操| 九九热10| 九九热这里| 久9热在线视频| 久久综合激情| 久久曰9| 久久加勒比| www.狠狠| 99无码黄色视频| 色五月激情| 蜜桃人妻无码AV天堂三区| 另类国产欧美视频| 成人va在线观看视频| 99热99这里有免费的精品| 六月丁香综合| 99热这里| 婷婷五月色情天| 五月婷婷色五月| 欧美A级成人婬片免费看理论| 99在线视频女女视频| 亭亭五月丁香综合欧美| 婷婷丁香五月天激情| www狠狠| 五月天婷婷激情六月久久| 99热综合在线| 亚洲激情97五月天| 五月婷婷五月天| 激情碰碰碰| 丁香五月自拍| 婷婷的色色五月天| 九月丁香婷婷基地| 久久五月天精品视频| 国产婷婷色综合AV蜜臀AV| 婷婷狠狠干| 超级久久久| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 丁香五月无码| 第九色区av天堂| 欧美日韩成人在线网| 天天拍夜夜爽日日| 狠狠操狠狠操AV| 伊人久热91网| 亚洲精品性色| 免费无码毛片一区二区A片| 色五月欧美| 亚洲综合婷婷五月天| 91欧美| 日韩大片艹艹| 深爱1激情网| 狠狠色综合网| 99在线观看视频免费| 亚洲五月天激情| 国产精品第一国产精品| 怡红院99| 六月婷婷狠狠| 九九99免费视频| 一级韩国产精品毛| 婷婷伊人久久综合| 狠狠干.com| 丁香五月天婷婷在线视频| 成人免费高清在线播放| 激情婷婷丁香色五月| 激情五月婷婷综合视频| 人妻熟人中文字幕一区二区 | 久久激丁香| 99久久黄色顶级视频| 综合99久久| 丁香五月天激情四射网络不好| 日日撸天天干| 日韩成人不卡| 五月天狠狠干| 亚洲精级| 天天操狠狠操| 99久久高清视频| 婷婷成人小说综合| 丁香五月欧美婷婷| 天天爱夜夜爽| 国产精品岛国片在线观看免费| 这里只有免费的精品| 精品夜夜澡人妻无码AV| 久久综合网免费视频| 久久丁香| 草美女在线观看视频在线播放 | 亚洲综合激情五月久久| 婷婷五月天无码视频| 久久精品人妻| 天天噜天天爱| 国产五月视频| 天天粽合合合合| 午夜天堂一区人妻| 欧美英丁香开心快乐六月天网| 国产成人精品123区免费视频| 五月天色婷好好| 激情深爱五月天| 五月亭亭六月色| 99色视频| 欧美成人网婷婷综合在线| 婷婷五月天影院| 五月丁六月香av| 亚州美女| 亚洲色婷婷五月| 婷婷情色开心五月天99| 日日夜夜天天综合| 色色五月天丁香婷婷| 五月丁香六月香香蕉| 五月天婷婷色色| 99久久国产成人精品| 777影视理论片大全在线观看| 天天插天天很| 四川操逼站| 干一干xxxx| 色啪影院| 男女啪啪做爰高潮无遮挡 | AV天堂婷婷五月天| 97碰碰在线观看视频| 激情综合婷婷| 九九在线免费观看| 99干99| 色五月激情婷婷| 热的国产,热的综合,热的有码| 色婷婷六月| 五月婷婷在线视频| 思思色播| 性爱五月婷| 五月天婷婷av| 亚洲99在线视频| 四季AV综合网| 婷婷综合久久| 99精品视频网| 婷婷五月天在线综合导航| 碰超亚洲| 婷婷伊人綜合中文字幕小说| 综合综合网| 亚洲秘 无码一区二区三区妃光/1| 久久久97| 亚艹艹| 丁香婷婷啪啪| 伊人激情综合| 婷婷色六月| 这里只有精品免费视频在线观看| 欧美99热| 午夜福利8055| 欧美成人AAA片一区国产精品| 国产午夜一区二区三区| 亚洲激情淫网| av在线中文| 欧美叉叉叉BBB网站| 激情小说婷婷| 99热这里只有精品69| 9久热在线视频精品| 国产精品涩涩涩视频网站| 日本天堂免费99| 色色婷婷丁香| 欧美视频五区| 色婷婷久久综合丁香五月| 啪啪综合网| 婷婷国产五月天17c| 综合久久综合久久| 婷婷播5月| 婷婷丁香久久| 人人操女人| 大伊香蕉精品视频在线| 精品久久99| 久久婷婷成人综合色怡春院| 五月天色综合服务平台| 成人AV在线电影| 91919191919久久成人视频| 日本三级中文字幕| 99热这里只有精品4| 婷婷六月激情啪啪| 婷婷综合另类小说| 色婷婷操逼| 欧美碰碰碰| jiZZdr| 五月丁香六月色| 五月天激情子轮| 免费99情趣网视频| 六月丁香婷| 色婷婷综合影院| 99色在线观看视频者| 婷婷六月色| 99热国产精品| 日本色天堂| 99免费| 色播婷婷五月天| 色亚洲中文| 天天爱天天做天天日| 任你擦免费视频| 综合 蜜月 婷婷| 久久九网| 色婷婷91激情小说| 丁香五月婷婷国产在线| 97人人妻人人艹| 人人艹艹艹| 狠狠色综合网| 亚洲超碰在线| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 快色t v在线入口| 日日色五月天| 色婷婷色五月丁香| 婷婷亚洲五月丁香综合在线 | 黄网在线播放| 婷色五月天| 色五月丁香婷婷在线观看| 人人视频色| 激情欧美婷五月| 丁香五月天色| 亚洲成人色五月天| 激情五月婷婷伊人| 色婷婷丁香五月色综合网| 79成人网| 天天草天天爱| 五月天激情网页| 精品人妻久久久久久久| 五月丁香六月激情综合欧美| 91九色熟女| 亚洲 25P| 五月婷婷开心网| 在线中文亚洲| www,com,五月色色| 视频久久9| 丁香五月亚洲天堂| 婷婷综合丁香| 人妻操操色| 强壮公让我夜夜高潮A片视频| 青青草tp| 成人在线视频网| 亚洲熟女乱色综合亚洲网站| 婷婷基地五月色| 精品无码久久久久久久久| 六月丁香啪啪| 伊人五月天在线| 五月丁香琪琪| 色欲丁香| 啪啪色激情五月天| 五月天久久久| 99热这里只有精品98| 能看的AV| 一區四區歐美日韓| 日本人妻伦在线中文字幕| 丁香五月天天| 五月激情偷拍| 六月婷婷深深爱| 日韩婷婷| 噜噜噜噜在线| 91传媒无码人妻精| 丁香五月伊人| 伊九九三级区| 欧美性做爰大片免费看办公室| 婷婷五月色花丁香社区| 99国产精品久久久久久久久久久| 欧美婷婷六月丁香综合色连续高潮抽搐| 婷婷五月丁香久久| 激情五月深爱五月| 婷婷六月激情综合| 婷婷性爱五月天| 久久五月情| 五月丁香影院| 五月色婷婷亚洲 | 色性日本| 五月丁香六月婷婷的女人| 欧美色性色好| 色婷婷操逼| 91久久99久久91熟女精品| jiujiu无码五区| 亚洲综合网在线| 99re思思热这里| 婷婷五月天涩涩| 久色大| 婷香五月| 大香蕉 婷婷| 五月天啪啪| 色婷婷av在线| 日逼AV影音先锋男人资源站| 亚洲 小说 欧美 激情 另类| 91av视频在线观看最新网址| 日本在线视频www色| 丁香五月电影| 超碰日日操| 综合色色婷婷| www.婷婷五月| 四色五月视频| 婷激情五月| 99热免费观看| 天天日夜夜欢| 这里只有精品在线看| 99久视频| 欧美视频五区| 人人做天天爱| 99久久国产宗和精品1上映| 伊人大蕉香| 婷婷丁香五月天小说| 五月丁香六月综合激情| 艹色18p| 丁香五月第九色| 亚洲精品成人| www91在线| 色婷婷电影网| 久久丝袜婷婷| 丁香花婷婷五月天| 婷婷五月天偷拍| 亚洲无AV在线中文字幕| 这里只有精品日韩| 99re视频在线播放| 五月婷婷导航| 99热这里只有精品免费观看| 色五月丁香A欧美com| 综合激情网五月激情| 欧美五月婷婷| 99ri精品在线| 久久久精品色色色| 久久精品熟女亚洲AV麻豆| www.五月天性.com| 久久久久人妻| 五月天色播网| 久热91| 五月丁香狠狠爱| 丁香五月综合| 日夜操B| 九九九九国产| 99这里有精品| 日本三级中文字幕| 久久久久亚洲AV无码网影音先锋| 97碰成超视频免费视频| 欧美日本另类| 五月婷婷|欧美| 欧洲色色| 超碰AV成人| 五月婷婷啪啪网| 亚洲精品一二三| 一级A片天天操夜夜操| 天天插综合网| 99热这里只有精品98| 天天射影院| 日本色婷婷综合| 欧洲第一无人区观看| 亚洲亚洲激情| 99re欧美精品| 婷婷五月天在线一区| 精品导航在线x不卡| 国产激情婷婷| 99乱视频| 99热这里只有精品在线观看| 亚洲色情免费网| 99在线精品免费视频| 色婷五月丁香久亚洲| 丁香五月之久操视频| 懂色AⅤ| 五月天久久激情| 狼友超碰| 亚洲午夜精品久久久久久人妖| 丁香五月天啪啪| 亚洲六月婷| 久久五月婷综合网| 色情五月天丁香社区| www.zbzhongsen.com| 人妻久久久| 五月天伊人手机在线播放AV| 99玖玖人人| 人妻激情综合| 色综合爽| 久久日本wwww色| 91日日日| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 久9视频| 亚洲精品国产A久久久久久| 天天插天天插天天插| 91九色国产| 中文字幕一色哟哟哟哟| 91九色中文字幕女在线观看| 色综合天天| 狠狠色综合网站久久久久| 九九热黄色| 丁香五月亚洲综合| 99re久久| WWW.夜夜| 久热 91| 亚洲成av人影院| 中文av网站| 婷婷少妇激情| 精品一二三区久久AAA片| 丁香六月婷婷综合缴| 大功率国产在线| 九九99九九精品视频| 天天干电影| anquye伊人| 欧亚中文A V| 亚洲色热| 五月天六月色| 综合激情网| 伊人九九综合| 少妇出轨做爰高潮A片| 夜夜夜夜撸夜夜操| 99热思思在线观看| 狠狠狠狠狠狠色| 久久久久亚洲AV综合| 国产精品色婷婷AV综合色色| 色婷婷丁香六月| 久久影视婷婷五月| 99精品在这里| 26uuu国产| 无码激情精品色婷婷久久久久| 国产精品视频免费看| www.婷婷com| 久久99网站| 亚洲婷婷免费| 6080av| 91操人| 噜噜狠狠色综合久| 精品无码久久久久久久久| 日本三级中文字幕| 亚洲色域网| av色婷婷| 五月丁香婷草| 4399高清无码视频| txt五月激情四射网综合俺也来了| 最近免费中文字幕大全高清大全1| 欧美va在线| 久久狼人天堂| 9久热在线视频精品| 激情五月天偷拍综合网| 人人噜天天上| 丁香五月天的网址。| 丁香5月啪啪| 婷婷激情综合无月| 思思视频这里是精品| 丁香五月婷婷亚洲人| 亚洲av成人在线| 日韩999| 91日视频| 久久与婷婷| 在线中文亚洲| 色99在线观看| 色碰碰| 日韩av在线电影| 另类图片激情五月| 九九AV在线| 午夜成人网站在线观看| 亚洲黄色精品| 国产精品久久久久久白浆色欲| 98永久精品| 在线观看免费狠狠色丁香香综合| 天天艹夜夜艹| 超碰猛烈的性猛交| 午夜爱爱网站| 国产亚洲在线观看| 夜夜操狠狠操| 国产精品扒开腿做爽爽爽A片唱戏 亚洲爆乳无码精品AAA片蜜桃 | 欧美五月停| 丁香五月婷婷啪啪视频| 亚洲成人电影在线免费观看| 久久一伦| 夜夜大香蕉婷婷丁香| 婷婷射丁香| 青青草性爱视频| 激情综合网,婷婷| 五月婷婷综合色拍| 九九精品视频在线观看| 欧美va在线观看| WWW免费视频碰碰碰碰| 91性高潮久久久久久久久| 五月婷六月| 国产精品国产成人国产三级| 激情五月丁香五月色| 97se在线视频| www.97碰碰com| 五月天丁香六月综合| 99爱免费在线观看| 天天舔天天摸天天透| 伊人五月天在线| 色婷婷激情| 一本色道久久综合狠狠躁小说| JAPANRCEP老熟妇乱子伦视频| 久久五月婷天天干| 玖玖婷婷视频| 欧美性二区| 五月色婷婷激情| 五月婷婷激情综合av| 久草五月| 51精品国自产在线| 色婷亚洲五月丁香| 五月天狠狠网站| 五月天婷婷伊人| 婷婷激情综合| 大香蕉伊人久久| 五月婷A V在线| 日本黄色在线观看| 天天舔夜夜操www com| cao视频,现在观看| 成人五月丁香社区| 激情的五月| 五月天播播| 五月丁香六月色| 色香蕉婷婷| 久久精品4| 丁香五月亚洲无码| 亚洲综合另类| 欧洲第一无人区观看| 一区二区传媒视频| 六月丁香啪啪| 丁香五月婷婷色| 久久免片| 狠狠 久久| 亚洲激情综合色站| 色色色色色色网| 99热久| 五月天婷婷激情网| 千人斩操逼| 丁香五月成人| av高清无码| 影音先锋一区二区三区| 五月婷久久在线| AV九九| 久久99免费视屏| 安息电影在线观看完整版| 免费视频99| 亚洲精品V天堂中文字幕| 国产精品操| 天堂婷婷丁香六月网| 99精品热| 无码动漫AV| 日韩婷婷五月天| 91一起操| 97AV人人插人人操| 亚洲五月综合色播| 婷婷色五月天在线观看| 亚洲色综合色网| 天天做天天要天天爽| 久九色| 亚洲无码你懂的| 色婷婷激情视频| 91日本在线观看| 免费国产视频| 日日噜狠狠色综合久| 成人做爰黄A片免费看直播室男男 久草热8精品视频在线观看 | 第五色婷婷| 五月婷婷丁香啪啪| 久热这里只有精品99re | 激情婷婷五月亚洲| 熟女网站久久| 久热伊人在91| 久热精品视频| 日本不卡高字幕在线2019| 五月天激情黄色小说在线观看| 夜夜撸夜夜骑| 国产女人十八水真多1| 26uuu国产精品| 婷婷激情图片| 亚洲天堂爱爱| 婷婷五月天丁香社区| 丁香花五月天社区| 天天干天天叉| 五月婷婷亚洲天堂97色婷婷| 日韩激情婷婷五月天| 97人人草| 久久久性爱视频| Caop在线| 能看的av网站| 成人网页在线观看| 5月丁香啪啪啪| 狠狠色婷| 婷婷丁香五月高清| 九九色插| 四色AVwww| 亚洲AV久久久久久久久久久久久久久久| 丁香八月综合激情| 国产成人精品亚洲线观看| 久久视屏这里只有久久| 天天综合在线网| 婷婷综合五月| 久久九九免费视频| 综合97五月| 99热亚洲| 99在线免费视| 大伊香蕉精品视频在线| 五月婷婷精品视频| 五月停性愛| 天天精品视频在线观看视频| 婷婷9月天| WWW五月| 综合久久伊人| 超碰人人操| 女婷久久| 久久精彩视频| 激情五月网站| 日本成人内射| 丁香五月手机在线| 九九人人精品| 婷婷五月成人| 同性gv国产精品一区二区| 精品少妇人妻AV无码专区偷人| 夜夜操狠狠操天天操| 26uuu成人网| 日日爽日日| 久9免费视频| 九九伊人网| 五月天婷亚洲综合在线嫩草网| AA片在线观看视频在线播放| 色天天综合| 色月丁| 九色婷婷| 99爱这里只有精品| 婷婷狠狠综合网入口| 深爱五月激情| 婷婷色五月丁香六月欧美啪| 五月丁香啪| 9999色色色色| 欧美日韩五月婷婷| 91精品综合久久久久久五月丁香| 日本无va视频| 久艹久| 日韩久久视频| 色婷婷丁香五月在线| 亚洲成人精品三区| 色婷婷www| 色亚洲中文| 色播色丁香五月| 人人操97| 超碰精品手机在线| 丁香综合久久| 99热在线只有精品| 六月丁香激情婷婷| 五月婷婷丁香大陆免费| 久久人妻精品| 99免费| 激情小说五月天社区丁香| av中文网| 激情综合网五月| 激情网狠狠干| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 99综合| 九九九九这里只有精品| 日韩成人网址| 99爱操| 欧美99热| 人人做人人看人人摸| 超碰99久久| 亚洲最大成人综合网720P| 人人播| 色综合爱综合| 久久五月婷婷丁香| 无码少妇高潮喷水A片免费| 五月丁香在线| 色婷五月丁香久亚洲| 欧美日韩成人在线观看| 少妇水多A片太爽了| 激情图片婷婷| 天天檫天天爽| 色婷婷激情| 99热国产这里只有精品| 熟女激情网| 日韩黄色电影| 激情小说色五月| 色色色色五月天| 99色色色色| 久色视频首页| 狠狠久久婷五月| 婷婷色狠狠| 色色色热| 91天天操天天干天天射| 色五月丁香五月天| 六月婷五月丁香| 五月天堂婷婷| 久久久久久久久久久久63| 亚洲亚洲人成综合网络| 成人五月丁香社区| 深夜激情网| 综合色五月天| 四月婷婷五月色综合| 五月婷婷综合影院| 五月天丁香久久综合| 超碰人人草| 婷婷色网站| 五月天最新网| 99久久99热这里只有精品| 婷婷五月激情热播| 色哟哟www| 欧美操我| 欧美色必爱| 性做爰A片免费视频A片直播| 中文AV网| 97热视频| 超碰成人av| 九九婷婷网五月天| 人人做天天爱| 婷婷狠狠五月综合| 欧美激情xxxXX| 丁香六月激| 超碰免费成人| 性生活视频98791| 91xxxx九色| 色色色色色日韩午夜激情| 国产婷伊人| 全部老头和老太XXXXX| 激情五月婷| 色综合com| 五月丁香操婷逼| 91久久五月天| 综合XX网| 久久婷婷亚洲| 色婷婷激情| 精品人妻一区| 五月丁香婷婷综合网| av狠狠操| 婷婷五月激情视频在线| 五月 婷婷 成人| 中文字幕婷婷五月天在线观看| 丁香婷婷六月激情综合| 99热精品一区| 噜噜噜噜在线| 五月丁香婷婷综合网色欲| 五月天激情日色在线| 五月丁香激情综合六月涩涩爱| 狠狠操天天操天天操| 深爱激情四射| 色五月丁香婷婷综合| 婷婷综合网伊人| 色婷婷狠狠久久综合五月| 五月激情丁香| 亚洲激情97五月天| 五月激情婷婷丁香| 天天日综合| 久久五月婷婷丁香| 久久色婷婷| 中文字幕在线免费观看视频| 亚洲综合99| 日日操夜夜爽| 免费看欧美成人A片无码| 成人视频网| 国产XXXX搡XXXXX搡麻豆| 五月综合激情啪啪啪啪啪| 91在线观看九区| 欧美碰碰碰| 丁香五月先锋| 超碰九色| 激情五月婷婷网在线观看| 五月婷婷综合色拍| 久久成人人妻| 色婷久| 天天插天天插天天插天天插| 九九色色| 日本91在线播放| 婷婷丁香五月天色色| 五月丁香色综合| 大香网伊人久久综合| 激情99。| 99热日韩| 人人人操| 热久久这里只有精品| 大香焦A∨| 偷拍九九五月丁香婷婷| 婷婷久久久| 第四色婷婷色五月| 日本成人噜噜噜| 我爱大香蕉| 色五月激情五月| 综合网啪| 久久五月视频| 中文字幕在线免费看线人| 色婷婷无吗| 久久综合爱| 五月天婷婷色播在线网| 婷婷五月六月丁香| 婷婷丁香人妻天天爽| 综合色色五月| 亚洲99在线| 99热精在线九九久久保| 99综合色| 99热在线播放| 操91综合网| 色热久| WWW.桔色成人.COM| 五月天丁香成人社| 久久精品99国产精品日本| 日韩AV一区二区三区| 五月婷婷色| 日本 @ va 免费| 狠狠丁香| 久久曰9| 91日本在线| 人人人va亚洲视频在线| 五月丁香六月香香蕉| 婷婷五月激情欧美大胆视频| 综合99综合久久久久久久| 婷婷五月天视频在线观看| 国产avapp 网| 丁香婷婷老熟女综合网| -91九色大屁股| 五月天成人在线播放丁香| 丁香五月香蕉| 日本丰满久久| 日日日,com| 色色色热热热| 国产美女无遮挡裸体毛片A片 | 五月婷婷啪| 激情色播| 激情视频91| 色五月成人在线| 99热综合网| 99久久五月天| 婷婷综合激情五月综合| 九久9精品| 丁香五月色色婷| 亚洲日韩人妻操逼| 秋霞A V毛片| 日韩有码一区| 色情五月天se| 色婷婷基地| 婷婷久久18| 丁香婷婷五月六月天| 天天激情站| 铁牛TV人妻| 丁香六月五月婷婷| 亚洲亚洲人成综合网络 | 婷婷亚洲影院| 亚洲 欧洲 国产 伦综合| 操嫩逼电影| 五月婷婷色五月| 色婷婷777狠狠| 天天爽综合网| 综合AV网| 日本婷婷网| av色色国产| 涩综合网| 99在线热视频| 中文av在线观看| 婷婷五月深爱五月| 91操人人操| 五月婷高清视频| 五月天婷婷丁香| 天天噜日日噜综合无码| 66成人网| 五月天婷婷色色首页| 国产精品婷婷午夜在线观看| 国产婷婷色综合AV蜜臀AV | 狠狠艹狠狠艹| 五月婷色| 九九久久五月天综合伊人| 亚洲精品在线视频| 密臀av无码人妻精品| 五月天婷婷爱| 免费观看日韩成人av| 色狠狠色噜噜噜a天堂一区| 国产精品成人AV在线观看春天| 精品无码av丁香五月激情| 激情五月综合婷婷| 噜噜狠狠| 婷婷金品综合视频| 色色色欧美| 天天爽人人综合免费7799| 99精品视频偷拍| 久久东京热婷婷五月| 国产熟女大叫受不了| 激情亚洲婷婷| 玖玖在线| 伊人久久大香网| 久久狼人天堂| 日韩成人av在线| 人妻22p| 五月在线| 五月丁香综合激情在线观看| 亚洲中文字幕网| 丁香五月图片| 高清一区二区三区日本久| 人人爽网| 91小黄书网址在线观看| 久热精品免费视频4| 99热这里只有免费| 激情综合另类| www.色五月| 欧美日本国产欧美日本韩国99| 色五月婷婷在线| www.婷婷| 99热免费| 亭亭五月激情亚洲在线| 亚洲成人电影在线免费观看| 99久久6| 婷婷成人AV| 丁香色婷婷| 五月丁香啪啪拍| 狠狠色噜噜狠| 婷婷五月天免费视频| 九九精品热播| 色综合激情| 婷婷六月丁香激情综合| 99欧美精品99日本精品| 五月婷婷开心五月| 99riAv1国产在线观看| 综合色色色| 五月天婷婷色小说| se婷97| 青青草原亚洲天堂| 98毛片| 思思热99er| 啪色综合| 六月婷婷深深爱| 五月丁香婷婷欧美色图视频五月丁香777电影 | 五月激情婷婷图片基地| 日本精品。999| 婷婷五月欧美综合| 激情五月天综合| 婷婷黄色| 北京熟妇搡BBBB搡BBBB| 天天做天天爱天天综合| 日韩日比视频| 中文字幕在线免费观看视频| 亚洲人妻一区二区 | 影音先锋按摩| 九九操屄| 婷婷六月天天| 丁香五月天天日| 青青色com久久| 综合久久婷婷| 青青草婷婷综合五月| cao久久| 婷婷丁香五月综合| 色色五月婷婷丁香| 久热成人| 九久久九精品视频| 成人电影AV在线观看| 69五月天视频| 色婷婷色综合激情91| 色播综合| 91精品久久久久、久五月天| 涩涩涩,com| 欧美月久久| 亚洲无AV在线中文字幕| 日日操夜夜爽| 欧洲激情五月天| 啪啪综合|