久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

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

STM32CubeMX正交編碼器配置實(shí)戰(zhàn):原理、步驟與踩坑指南 1. 從轉(zhuǎn)輪上的幾根線說起正交編碼器到底解決了什么問題做電機(jī)控制、小車底盤、云臺角度反饋的朋友多半都遇到過同一個困惑怎么準(zhǔn)確知道電機(jī)現(xiàn)在轉(zhuǎn)了多少圈、轉(zhuǎn)向是正還是反用霍爾傳感器只能測個大概用光碼盤配合普通IO讀又得盯著電平邊沿?cái)?shù)脈沖稍微一轉(zhuǎn)快了程序就亂套。直到你接觸了正交編碼器Quadrature Encoder再配合STM32定時器自帶的編碼器模式這件事才真正變得優(yōu)雅起來。正交編碼器本質(zhì)上就是一種通過兩組相位相差90度的方波信號來傳遞位置和方向信息的傳感器。A相和B相各自輸出脈沖電機(jī)每轉(zhuǎn)過一個固定角度就產(chǎn)生一個邊沿。因?yàn)閮上嘈盘栔g有90度的相位差所以控制器只需要判斷A相和B相誰先跳變、誰后跳變就能知道軸是正轉(zhuǎn)還是反轉(zhuǎn)。更關(guān)鍵的是利用A、B兩相的共同邊沿可以把一圈的物理分辨率直接翻四倍這就是常說的4倍頻。比如編碼器一圈輸出500個脈沖4倍頻之后控制器每圈能分辨2000個計(jì)數(shù)單位。STM32的定時器外設(shè)在設(shè)計(jì)上就內(nèi)置了編碼器接口模式。也就是說硬件層面已經(jīng)幫你把A、B兩相的判向和計(jì)數(shù)邏輯做完了不需要外部判向電路也不需要占用CPU中斷去逐個邊沿判斷。你只需要把編碼器的A、B相接在定時器的兩個通道輸入上配置好工作模式計(jì)數(shù)器就會自動加一或減一整個過程零CPU負(fù)擔(dān)。對工程實(shí)踐來說這意味著三件事接線簡單、實(shí)時性好、分辨率高。接線方面只需兩根信號線加電源地實(shí)時性方面計(jì)數(shù)由硬件完成不會因?yàn)橹袛囗憫?yīng)延遲而丟脈沖分辨率方面天然支持4倍頻不用額外算法就能拿到更精細(xì)的位置信息。我最早接觸這個功能是在做一個雙輪差速小車的時候。當(dāng)時用的是500線增量式編碼器加直流減速電機(jī)MCU是STM32F103RCT6。最初的方案是用外部中斷讀A相再用GPIO判斷B相電平來定方向結(jié)果車速一快中斷頻繁觸發(fā)主循環(huán)直接卡死測速數(shù)據(jù)還時不時跳變。后來換用定時器的編碼器模式整個測速鏈路瞬間輕松了。本文就圍繞STM32CubeMX中的正交編碼器配置完整講一遍原理、配置步驟、代碼集成和實(shí)際踩坑經(jīng)驗(yàn)給正準(zhǔn)備做運(yùn)動控制的朋友一個可直接參考的路徑。2. 硬件層的關(guān)鍵判斷編碼器類型、接口電壓和定時器選型2.1 增量式編碼器與絕對式編碼器的區(qū)別談到正交編碼器第一件事是分清增量式和絕對式。STM32定時器的編碼器模式主要配合增量式編碼器使用。增量式編碼器輸出A、B兩相方波可能還有Z相零位脈沖它的特點(diǎn)是只輸出相對位置變化量斷電后無法記憶絕對位置。絕對式編碼器直接輸出當(dāng)前角度的二進(jìn)制編碼值一般走SPI、SSI或者并口不走定時器編碼器模式這條路。我自己項(xiàng)目里用過兩類增量式編碼器一種是光電式碼盤上刻著密密麻麻的柵格通過光柵透射產(chǎn)生方波信號另一種是磁式利用磁阻傳感器感知磁鐵旋轉(zhuǎn)角度變化輸出也同樣是A、B正交信號。光電式精度高但怕塵土油污磁式抗污染能力強(qiáng)價(jià)格相對便宜在小型機(jī)器人關(guān)節(jié)和電機(jī)尾軸上很常見。STM32的編碼器模式對這兩類都適用因?yàn)闅w根到底它只識別電平跳變和相位關(guān)系不在乎信號是光還是磁產(chǎn)生的。2.2 信號電平匹配3.3V與5V編碼器的處理編碼器供電電壓常見的有5V和3.3V兩種。許多工業(yè)級編碼器都是5V供電輸出高電平是5V這個電壓直接進(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)識否則串電阻分壓之后再進(jìn)MCU。我在一個項(xiàng)目中用的是歐姆龍E6B2-CWZ6C額定供電5V到24V輸出是開集電極方式必須外部加上拉電阻才能有明確的高電平。那時候?yàn)榱耸∈轮苯影演敵鲂盘栆紽103的PA0和PA1上實(shí)測能用但波形邊沿比較緩后來在信號線上并聯(lián)了100pF電容去毛刺波形立刻干凈了不少。如果你的編碼器是推挽輸出邊沿會比較陡直接接3.3V供電的編碼器則最簡單完全不用考慮電平轉(zhuǎn)換。下表是我判斷編碼器接口適配性時常用的參考編碼器輸出類型輸出電平是否可直接接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差分信號否否需要差分轉(zhuǎn)單端電路2.3 定時器選型為什么優(yōu)先選帶編碼器模式的通用定時器STM32家族里高級定時器TIM1、TIM8通用定時器TIM2、TIM3、TIM4、TIM5等都支持編碼器接口模式。選型時主要看三點(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)時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)一定會溢出。雖然可以通過溢出中斷配合擴(kuò)展位數(shù)但如果你同時做多路電機(jī)控制溢出中斷會時不時打斷主流程增加復(fù)雜度。這也是我后來做四輪小車時優(yōu)先選TIM2的原因32位計(jì)數(shù)器讓位置計(jì)數(shù)變得非常省心。另外CubeMX的引腳分配視圖里可以直接搜索TIM2_CH1、TIM2_CH2這樣的復(fù)用功能標(biāo)識誰和誰共用一個引腳會高亮顯示底層引腳沖突一目了然。選定時器時我習(xí)慣先在CubeMX里把引腳分配方案拖一遍確認(rèn)沒有沖突再回去畫PCB能省掉后面不少飛線改板的麻煩。3. 定時器編碼器模式的內(nèi)部機(jī)制計(jì)數(shù)方向判定的硬核邏輯3.1 為什么硬件判向比中斷判向更可靠軟件判向的思路通常是A相觸發(fā)外部中斷進(jìn)中斷后讀B相電平高電平代表正轉(zhuǎn)低電平代表反轉(zhuǎn)。這個方法在小車慢速運(yùn)行時沒問題但轉(zhuǎn)速起來之后中斷的響應(yīng)延遲會引入判斷誤差。更麻煩的是如果A相毛刺較多可能在極短時間內(nèi)觸發(fā)多次中斷造成計(jì)數(shù)錯誤。硬件編碼器模式?jīng)]有這個問題。STM32的編碼器接口邏輯同時監(jiān)視兩個輸入信號在每個信號邊沿處進(jìn)行一次采樣綜合兩個信號的電平狀態(tài)判斷方向。因?yàn)榕袛噙壿嬐耆捎布M合電路實(shí)現(xiàn)不依賴指令執(zhí)行速度所以只要信號頻率在定時器時鐘能處理的范圍內(nèi)就不會出錯。判斷方向和計(jì)數(shù)的本質(zhì)邏輯可以理解成一個兩輸入的狀態(tài)機(jī)。A、B兩相各有兩個電平狀態(tài)高、低組合起來有四種狀態(tài)。編碼器每轉(zhuǎn)過一個最小角度單位組合狀態(tài)就變化一次變化的方向則決定了計(jì)數(shù)器是加一還是減一。這有點(diǎn)像我們判斷一個人往哪邊走看到腳印從左邊挪到右邊就知道他往右走了。硬件在每個邊沿看的是上一個狀態(tài)和當(dāng)前狀態(tài)的關(guān)系而不是單看一路信號。3.2 三種計(jì)數(shù)模式為什么不選X1和X2直接上X4STM32的編碼器模式可以在CubeMX里配置三種計(jì)數(shù)方式X1模式只在一個通道的邊沿計(jì)數(shù)X2模式在兩個通道的邊沿計(jì)數(shù)X4模式在四個邊沿計(jì)數(shù)也就是每個完整信號周期產(chǎn)生四個計(jì)數(shù)脈沖。三種模式的差異直接反映在分辨率上。X1模式一圈計(jì)500個數(shù)以500線編碼器為例X2模式一圈計(jì)1000個數(shù)X4模式一圈計(jì)2000個數(shù)。很多人會糾結(jié)選哪個好我的建議是只要計(jì)數(shù)器位數(shù)夠用直接X4模式。X4模式不光分辨率最高而且每個邊沿都在更新計(jì)數(shù)器角度變化信息更平滑低速時的測速表現(xiàn)也更細(xì)膩。代價(jià)僅僅是計(jì)數(shù)器溢出更快但在32位計(jì)數(shù)器面前這個代價(jià)基本可以忽略。CubeMX中的配置項(xiàng)叫做Encoder Mode下拉里會出現(xiàn)Encoder Mode TI1、Encoder Mode TI2、Encoder Mode TI1 and TI2三個選項(xiàng)。第一個對應(yīng)X1模式第二個對應(yīng)X1模式只是計(jì)數(shù)沿選擇的通道不同第三個才是X4模式。填的時候注意別選錯我早期就誤選過Encoder Mode TI1結(jié)果分辨率只到了一半查了半天資料才發(fā)現(xiàn)是這里的問題。3.3 計(jì)數(shù)方向、溢出中斷和Counter Period的配合邏輯編碼器模式下計(jì)數(shù)器是一個雙向計(jì)數(shù)器。有人說編碼器模式下定時器的ARPE自動重裝載預(yù)裝載和重裝載值沒有意義這句話是不準(zhǔn)確的。編碼器模式下計(jì)數(shù)器會在0和自動重裝載值之間來回計(jì)數(shù)上溢和下溢都會觸發(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。這個特性非常有用。假設(shè)你的編碼器一圈4倍頻之后正好是2000個脈沖把Counter Period設(shè)為2000那么讀回來的CNT值就直接對應(yīng)當(dāng)前角度在0到2000之間的位置根本不需要額外做取模運(yùn)算。做云臺和機(jī)械臂角度控制時這個特性可以省掉大量運(yùn)算代碼。需要注意的一件事是CubeMX里Counter Period填的值對應(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)。下面我用一個表格梳理三種模式下的關(guān)鍵參數(shù)建議方便你配置時對照檢查配置項(xiàng)X1模式X2模式X4模式一圈計(jì)數(shù)脈沖500線50010002000Counter Period建議值499或500999或10001999或2000低速測速細(xì)膩度一般較好最佳溢出中斷頻率最低中等最高3.4 初始化時清零計(jì)數(shù)的兩種方式項(xiàng)目啟動時位置必須從一個已知的狀態(tài)開始。清零計(jì)數(shù)器常見有兩種做法一種是調(diào)用__HAL_TIM_SET_COUNTER(htim, 0)直接把計(jì)數(shù)器寫入0另一種是開啟定時器后向TIM_SR寄存器的UIF位寫0等待一次更新事件完成清零。實(shí)際上最方便的還是第一種因?yàn)镠AL庫提供現(xiàn)成宏一條語句搞定。如果你接的編碼器有Z相零位脈沖還可以把Z相接在另一個IO上通過外部中斷或者輪詢方式檢測到零位信號時清零計(jì)數(shù)器這樣每次上電后機(jī)器都能自動找到機(jī)械原點(diǎn)。對于不帶Z相的編碼器只能采用上電找限位開關(guān)的方式歸零或者在機(jī)械結(jié)構(gòu)上做一個固定參考點(diǎn)讓電機(jī)轉(zhuǎn)到參考點(diǎn)時執(zhí)行一次清零操作。4. STM32CubeMX配置實(shí)操一步步點(diǎn)出一份可用的工程4.1 新建工程與時鐘樹設(shè)置打開STM32CubeMX新建工程選擇你的具體芯片型號。這里以STM32F103RCT6為例如果你用的是其他型號流程大同小異。先到Pinout Configuration界面左側(cè)Categories欄里找到SYS把Debug設(shè)為Serial Wire。這一步很重要否則默認(rèn)的JTAG會占用部分引腳后面配置編碼器輸入時可能出現(xiàn)引腳灰色不可選的情況。接著配置RCCHSE選擇Crystal/Ceramic Resonator。然后進(jìn)Clock Configuration把系統(tǒng)時鐘設(shè)為72MHz。F103的編碼器定時器時鐘來自APB1APB1的最高頻率是36MHz但定時器時鐘會自動倍頻到72MHz這個細(xì)節(jié)不用手動干預(yù)。不過你需要知道編碼器模式下定時器能處理的最高信號頻率和這個時鐘有關(guān)72MHz的定時器時鐘足以覆蓋絕大多數(shù)編碼器的信號頻率。4.2 TIM2的Encoder Mode配置細(xì)節(jié)在Categories里找到TIM2點(diǎn)擊進(jìn)去在Mode一欄把Combined Channels設(shè)為Encoder Mode。此時下方會出現(xiàn)兩個輸入通道的配置選項(xiàng)Channel1和Channel2都會自動變成Input Capture Indirect Mode之類的顯示不需要手動修改CubeMX會自動關(guān)聯(lián)。接著在Configuration一欄里設(shè)置參數(shù)Counter Period根據(jù)上一章的公式計(jì)算如果500線編碼器用X4模式填1999。填1999的意思是從0數(shù)到1999共2000個值正好對應(yīng)一圈。Encoder Mode選Encoder Mode TI1 and TI2。Polarity默認(rèn)的Rising Edge即可不需要改動。只有在編碼器信號接反、方向反了的時候才考慮通過取反極性來修正方向。有個小技巧在配置完TIM2后到右側(cè)的Pinout視圖確認(rèn)一下TIM2_CH1和TIM2_CH2映射到了哪個引腳。如果不滿意默認(rèn)映射可以在芯片視圖里直接點(diǎn)擊引腳旁邊的復(fù)用功能文字下拉重新選擇。這樣不用改PCB布局也能靈活調(diào)整。4.3 打開中斷還是DMA實(shí)際場景的選擇依據(jù)編碼器模式單獨(dú)工作不需要中斷也不需要DMA。計(jì)數(shù)器是硬件自己跑的你想讀位置時直接讀CNT寄存器就行。但從工程實(shí)用性角度建議開啟更新中斷尤其是需要做測速或者位置溢出管理的時候。在NVIC Settings標(biāo)簽頁里勾選TIM2 global interrupt然后在代碼里實(shí)現(xiàn)定時器周期中斷回調(diào)就能實(shí)現(xiàn)定期采集位置值。如果你只是偶爾讀取一下當(dāng)前位置比如操作員按鍵觸發(fā)的機(jī)械臂點(diǎn)動就不必開中斷輪詢讀取CNT足夠。開了中斷反而會頻繁打斷主循環(huán)增加功耗和復(fù)雜度。選擇標(biāo)準(zhǔn)只有一個你是否需要在計(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ù)組做的是后級數(shù)據(jù)處理不是編碼器模式本身的要求。4.4 生成代碼前的最后檢查清單點(diǎn)擊Project Manager設(shè)置好工程名稱、存儲路徑和工具鏈。這里有幾個容易忽略的檢查點(diǎn)需要確認(rèn)IDE選項(xiàng)要和本機(jī)安裝的版本對應(yīng)MDK-ARM選對應(yīng)版本或者選STM32CubeIDE。代碼生成選項(xiàng)里Generated files框下勾選Generate peripheral initialization as a pair of .c/.h files per peripheral這樣每個外設(shè)單獨(dú)生成文件和頭文件后續(xù)維護(hù)方便。如果勾選了Initialize all peripherals with their default settings可能會把沒配置的外設(shè)也生成初始化代碼增加編譯時間建議不勾。確認(rèn)無誤后點(diǎn)擊GENERATE CODE。生成的工程放在你指定的路徑下打開MDK或者CubeIDE就能直接編譯。注意第一次編譯之前在魔術(shù)棒或項(xiàng)目屬性里檢查C/C編譯器選項(xiàng)是否選中了Use MicroLIB。STM32標(biāo)準(zhǔn)庫全功能時需要較少棧空間也會影響printf之類的重定向這些雖然不是編碼器專屬配置但能讓后續(xù)調(diào)試順暢不少。5. 生成代碼解讀與業(yè)務(wù)代碼集成怎么把CNT變成有用的速度5.1 HAL庫初始化流程里發(fā)生了什么打開生成的tim.c文件你會看到MX_TIM2_Init函數(shù)里面有幾段關(guān)鍵代碼。第一段是會話語句和結(jié)構(gòu)體賦值配置Prescaler、CounterMode、Period和ClockDivision。需要特別注意的是編碼器模式下ClockDivision位置和采樣控制有關(guān)一般默認(rèn)值即可不要去調(diào)整預(yù)分頻值。HAL_TIM_Encoder_Init這個函數(shù)比普通定時器初始化多做了什么它會調(diào)用定時器底層初始化函數(shù)把編碼器模式寫入到定時器的控制寄存器里并配置兩個輸入通道為映射模式。更重要的是它設(shè)置了輸入濾波器的相關(guān)參數(shù)。在CubeMX界面的Input Filter選項(xiàng)里你可以填0到15的數(shù)字。這個濾波器是數(shù)字信號濾波器用于濾除信號線上的窄毛刺。實(shí)際工程中如果編碼器線纜較長或者電機(jī)電磁干擾較重把輸入濾波調(diào)到2到4左右能大幅減少誤計(jì)數(shù)。調(diào)太高會讓有效信號的最小脈寬變長影響極限轉(zhuǎn)速下的計(jì)數(shù)準(zhǔn)確度。5.2 啟動編碼器接口HAL_TIM_Encoder_Start和Start_IT的區(qū)別代碼生成后不會自動啟動定時器。你需要在主程序的初始化階段調(diào)用HAL_TIM_Encoder_Start來啟動編碼器接口。這里有一個常見的坑有人用了編碼器模式但忘了啟動定時器CNT寄存器永遠(yuǎn)是0怎么轉(zhuǎn)電機(jī)都沒反應(yīng)查了老半天。如果開啟了更新中斷則要調(diào)用HAL_TIM_Encoder_Start_IT這樣才能在計(jì)數(shù)器溢出時觸發(fā)中斷回調(diào)。不帶_IT的版本永遠(yuǎn)進(jìn)不了中斷。不要記混這兩個接口的名字我在一個四軸機(jī)械臂的項(xiàng)目里就吃過這個虧只調(diào)了Start沒調(diào)Start_IT中斷服務(wù)函數(shù)里怎么調(diào)試都不進(jìn)最后對著手冊逐行查才發(fā)現(xiàn)是調(diào)用錯了API。啟動編碼器之后讀位置的接口是__HAL_TIM_GET_COUNTER(htim2)。這個宏返回當(dāng)前計(jì)數(shù)器的值也就是編碼器從啟動或上次清零到現(xiàn)在的位置變化量。如果當(dāng)前方向是反轉(zhuǎn)讀回的值會從計(jì)數(shù)上限往下遞減你不需要判斷正負(fù)CNT值本身就是有方向性的位置信息。5.3 周期測速兩次采樣差值與M法測速編碼器最常見的應(yīng)用場景是測速度。M法測速的思路是在固定時間窗口內(nèi)統(tǒng)計(jì)脈沖數(shù)用計(jì)數(shù)差值除以時間得到速度。實(shí)現(xiàn)起來非常簡單開啟一個基礎(chǔ)定時器比如TIM6配置成1ms中斷在中斷回調(diào)里讀取CNT值減去上一次的CNT值差值就是1ms內(nèi)的脈沖變化量。用這個差值乘以一個換算系數(shù)就能得到轉(zhuǎn)速。換算系數(shù)怎么算舉個例子編碼器500線4倍頻后一圈2000個脈沖1ms采到100個脈沖那么每秒就是100000個脈沖除以2000就是50圈/秒也就是3000轉(zhuǎn)/分鐘。代碼里可以寫成 speed_rpm (delta_count * 60) / (2000 * 0.001) / 60簡化之后其實(shí)就是按比例算。為了防止計(jì)數(shù)器溢出帶來的跳變?nèi)绻麅纱尾钪到^對值超過計(jì)數(shù)范圍的一半就做一次補(bǔ)償修正。比如Counter Period設(shè)為1999如果這次讀到100上次讀到1900直接算差值是-1800但實(shí)際可能是正轉(zhuǎn)了200個脈沖發(fā)生了回繞需要判斷差值大于半周期就減掉一個滿周期。這個判斷邏輯是測速代碼里最容易出錯的地方務(wù)必處理。5.4 和PWM控制配合一個位置閉環(huán)的最簡樣例有了速度和位置信息就能做最簡單的閉環(huán)控制。比如你要讓電機(jī)轉(zhuǎn)到設(shè)定位置就可以寫一個比例控制器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)大了會振蕩。通常的做法是先讓電機(jī)在一個固定占空比下運(yùn)行觀察編碼器讀數(shù)是否穩(wěn)定再逐步加大Kp觀察響應(yīng)曲線。完整的PID還要加上積分項(xiàng)消除靜差和微分項(xiàng)抑制超調(diào)這里只是演示閉環(huán)控制的框架足以說明編碼器數(shù)據(jù)如何注入到控制鏈路中。6. 實(shí)測踩坑記錄從波形毛刺到方向反了我遇到過的五個典型問題6.1 A、B相接反導(dǎo)致計(jì)數(shù)方向反轉(zhuǎn)這是新手最容易碰到的問題。STM32CubeMX中默認(rèn)的計(jì)數(shù)方向是A相超前B相為正轉(zhuǎn)如果你的編碼器線序恰巧反了電機(jī)正轉(zhuǎn)時計(jì)數(shù)器的值反而在減小。排查這個問題很簡單手動緩慢正轉(zhuǎn)電機(jī)打開調(diào)試器看CNT值的變化方向。如果發(fā)現(xiàn)反了有兩個解決辦法一是在硬件上把A、B兩相信號對調(diào)二是在CubeMX的Polarity設(shè)置里把其中一個通道的極性設(shè)為Falling Edge。從項(xiàng)目維護(hù)角度看改軟件極性更省事因?yàn)椴挥脛咏泳€。需要注意的是改極性不僅會影響計(jì)數(shù)方向還會影響計(jì)數(shù)邊沿的位置本質(zhì)上等于把采樣點(diǎn)平移了90度。如果你同時還用了Z相零位零位脈沖的位置和計(jì)數(shù)器的匹配關(guān)系可能會因此偏一位不過對大多數(shù)應(yīng)用沒有影響。6.2 布線太長導(dǎo)致波形邊沿抖動數(shù)字濾波器的正確設(shè)置編碼器線纜超過30厘米又沒有采用雙絞屏蔽線時A、B相波形邊沿容易出現(xiàn)振鈴和毛刺。毛刺導(dǎo)致的結(jié)果是異常計(jì)數(shù)有時正轉(zhuǎn)一下計(jì)數(shù)器跳好幾個數(shù)有時反轉(zhuǎn)時計(jì)數(shù)反而增加。逐一對硬件進(jìn)行改動可能比較麻煩但STM32定時器自帶的輸入濾波器能在軟件層面解決大部分問題。在CubeMX的Input Filter字段中填入合適值就可以開啟濾波。這個濾波器的原理是只有當(dāng)信號連續(xù)穩(wěn)定N個采樣周期后才確認(rèn)電平變化。Filter值越大抗干擾越強(qiáng)同時對真實(shí)信號的延遲也越大。編碼器轉(zhuǎn)速不高時直接把濾波值設(shè)到8都行但高速場合需要核算一下最大可接受延遲。以72MHz定時器時鐘為例Filter值為8時最短可識別的信號脈寬大約是8個采樣周期即大約110納秒的脈沖寬度要求。如果編碼器最高轉(zhuǎn)速下信號脈寬小于這個值就會丟脈沖。6.3 編碼器零點(diǎn)漂移Z相清零與CNT自動回繞的區(qū)別很多編碼器帶有Z相也叫Index信號每圈出一個脈沖。利用Z相可以精確確定機(jī)械零位。有人直接把Z相接在普通IO上在中斷里用軟件清零CNT。另一種實(shí)現(xiàn)方式是利用定時器的編碼器接口和Z相輸入的特性在硬件層面自動復(fù)位計(jì)數(shù)器但STM32的編碼器模式并不內(nèi)置Z相清零邏輯除非額外使用定時器的外部觸發(fā)復(fù)位功能。如果你需要Z相清零最常規(guī)的做法就是外部中斷加軟件清零。不過要小心Z相脈沖寬度和A相脈寬相關(guān)如果Z相信號在電機(jī)高速旋轉(zhuǎn)時變得很窄外部中斷可能會漏觸發(fā)。我用的E6B2-CWZ6C編碼器Z相脈寬是A相脈寬的四分之一低速完全沒問題高速時最好用輸入捕獲來測量脈寬避免漏掉。6.4 計(jì)數(shù)器溢出處理在CubeMX里留足余量的設(shè)計(jì)思路如果你用的是16位定時器計(jì)數(shù)器溢出是一個繞不開的問題。以500線編碼器X4模式為例Counter Period設(shè)為1999那么它范圍只有0到1999遠(yuǎn)小于65535這種情況下計(jì)數(shù)器每隔一圈就會溢出一次。每次溢出都需要在中斷里把溢出計(jì)數(shù)值加到一個軟件擴(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ù)的問題要在中斷里操作共享變量時注意加臨界區(qū)保護(hù)防止主循環(huán)讀數(shù)據(jù)時讀到一半被中斷改寫造成高字節(jié)和低字節(jié)屬于不同時刻的快照。6.5 機(jī)械安裝誤差造成的輕微零速抖動最后說一種比較隱蔽的情況電機(jī)靜止時計(jì)數(shù)器讀數(shù)卻在小幅跳動。這種情況多半是機(jī)械振動帶動編碼器碼盤微小擺動A、B相在臨界邊沿附近輕微顫抖導(dǎo)致硬件捕捉到多次跳變。解決方法和毛刺類似適當(dāng)增大輸入濾波值同時在應(yīng)用層做一個小范圍的死區(qū)判斷連續(xù)多次讀到同一位置才認(rèn)為電機(jī)靜止。這一類問題不會影響大范圍運(yùn)動控制但如果你在做云臺增穩(wěn)或精密定位就非常致命。我在做小型云臺時零速抖動導(dǎo)致畫面緩慢漂移排查了很久才發(fā)現(xiàn)是電機(jī)減速箱的微小回程間隙帶動編碼器碼盤抖動最后通過調(diào)高輸入濾波器值和增加死區(qū)閾值解決了。這類經(jīng)驗(yàn)很難在芯片手冊里找到只能靠現(xiàn)場調(diào)試總結(jié)。7. 數(shù)據(jù)鏈路之外為什么我強(qiáng)烈建議你把編碼器數(shù)據(jù)流單獨(dú)封裝7.1 底層寄存器操作與上層控制邏輯解耦寫編碼器相關(guān)代碼時我強(qiáng)烈建議把編碼器的讀取和處理封裝成獨(dú)立模塊不要在主循環(huán)里直接到處調(diào)用__HAL_TIM_GET_COUNTER。原因很簡單第一如果以后換了MCU平臺只需要修改底層封裝上層控制邏輯完全不用動第二相同的位置數(shù)據(jù)會在不同地方用到比如顯示、閉環(huán)控制、日志如果直接散落在各處代碼改起來苦不堪言。我自己習(xí)慣的封裝方式是這樣的單獨(dú)建一個encoder.c和encoder.h提供Encoder_Init、Encoder_GetPosition、Encoder_GetSpeed、Encoder_Clear等接口。在上層代碼里所有模塊都只調(diào)用這幾個接口看不到任何硬件寄存器操作。調(diào)試的時候也只需要在這幾個接口里加入日志打印就能看到全系統(tǒng)的位置變化情況。7.2 一種更可靠的位置累加方法定時采樣配合溢出補(bǔ)償對于需要長時間記錄位置的應(yīng)用單純依賴CNT寄存器是不夠的因?yàn)橐绯銮辶銜G數(shù)據(jù)。推薦的做法是用固定周期定時器中斷比如1kHz讀取一次CNT值并累加到軟件位置變量里同時處理溢出回繞。這樣即使主程序被其他任務(wù)阻塞位置也不會丟。舉個具體實(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; }這個方法把溢出的判斷條件統(tǒng)一封裝在一個中斷函數(shù)里主程序在任何時刻讀取的都是連續(xù)的軟件累加位置徹底擺脫了計(jì)數(shù)回繞的困擾。而且position_sum是32位有符號變量即便長時間運(yùn)行也不容易溢出實(shí)際項(xiàng)目中一年半載跑下來都沒問題。7.3 使用場景擴(kuò)展從單軸測速到多軸同步如果你的項(xiàng)目不只是一個電機(jī)而是像機(jī)械臂、四輪小車這樣多個電機(jī)協(xié)同工作每個電機(jī)一個定時器測速頻率要保持一致控制周期也要盡量同步。最簡單的方法是利用同一個基礎(chǔ)定時器觸發(fā)所有電機(jī)的采樣中斷在同一個中斷回調(diào)里完成所有編碼器的數(shù)據(jù)采集和速度解算。這樣不同軸之間的數(shù)據(jù)天然同步控制解算不容易出現(xiàn)因?yàn)闀r間戳不一致導(dǎo)致的偏差。多軸系統(tǒng)里的另一個注意點(diǎn)是所有編碼器共用一個電源時多個電機(jī)同時啟動會造成電源電壓跌落可能讓編碼器輸出波形畸變。解決方法是每個編碼器電源附近都加一個去耦電容并且在MCU端的信號線上加RC濾波或施密特觸發(fā)器緩沖。這個細(xì)節(jié)是我們在做四輪小車時發(fā)現(xiàn)的當(dāng)時只給主控供電一個電機(jī)啟動瞬間編碼器讀數(shù)就亂跳排查了很久才發(fā)現(xiàn)是電源軌受到干擾。8. 從配置到穩(wěn)定運(yùn)行的最后一段路我最想讓你記住的三件事回頭再看整個STM32CubeMX正交編碼器方案其實(shí)主要就三件事。第一原理上要搞懂A、B兩相正交信號如何通過相位關(guān)系產(chǎn)生位置和方向信息硬件編碼器模式為什么能替代中斷判向方案。第二配置上要選對定時器、選對引腳、選對Encoder Mode和Counter Period這三樣決定了物理層能不能正常計(jì)數(shù)。第三工程上要做好溢出處理、信號濾波和模塊封裝這三件事決定了系統(tǒng)長時間跑下來穩(wěn)不穩(wěn)定。最后的建議是不要一上來就追求花哨的算法先把編碼器數(shù)據(jù)讀準(zhǔn)、讀穩(wěn)、讀連續(xù)再談后面的PID和運(yùn)動規(guī)劃。你把一個編碼器通道吃透了其他通道都是復(fù)制粘貼的事情。我自己第一次調(diào)通編碼器模式時看到電機(jī)轉(zhuǎn)一圈讀數(shù)從0走到2000再歸零那種踏實(shí)感是單純寫GPIO中斷判向完全體會不到的。希望這篇內(nèi)容能幫你少走幾個彎路一次就把編碼器這塊做利索。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
精品国产乱码久久| 加勒比无码一区二区三区| 成人在线永久| 98一区二区精品| AV一区观看| 天天久久| 东京热毛片调教| 久草色悠悠在线视频| 日本精品第一视频在'| 欧美综合国产精品久久丁香| 强奸乱伦免费网站| 亚洲欧美清纯| 青青操在线视频| 日本久久综合| 久久97资源 网| AV中文在线| 国产成年免费大片黄在线观看| 国内伊人久久久久久网站视频| 91N综合网在线| 午夜精品久久久久| 欧美日韩亚洲天堂网| 亚州精人品大香蕉| 加勒比无码一区二区三区| 新版天堂中文资源8在线| 天天操天天干一区二区 | 亚洲伊人久久精品影院| 成人A片男人的天堂| 久久久久骚| 男人天堂.AB| 九九久久九九久久| 蜜臀av在线播放一区二区三区| 精品国产久热在线观看| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 中美日韩毛片| 麻豆福利视频导航| 欧美91久久久久| 亚洲精品一卡二卡三卡福利视频网站| 欧美日韩美女精品久草一区二区三区| 久久后入制服| 成人怡红院| 外国91| 日本操大逼| 国产成人99久久亚洲综合| 欧美夜夜草视频| 日韩av在线精品观看| 人妻9117c| 手机在线视频国内精品| 亚洲中文字幕精品久久久久久直播 | a在线视频免费观看| 一区在线观看中文字幕| 花野真衣| 天天亚洲| 美国日韩黄色片| 丁香婷婷色五月| 91女网站| 国产一区二区精品久久久不卡蜜臀| 91精品久久久久| 夜夜夜夜久久久久| 精品国产人成在线| 天天射影院| 亚洲综合影视| 中文字幕免费在线观看| 美女被啪到深处抽搐视频| 国产一国产一级毛片古装| 人人弄人人摸| 青草视频在线看看看看看看看看看| 黄页大片在线观看| 日本高清视频在线观看黄已三辽| 91福利网在线观看| 五月丁香成人网| 欧美大香蕉97| 老鸭窝成人免费毛片视频| 欧美性第一页| 五月丁香激情综合网| 欧美18禁91| 青青草五月份天| 久9re热视频这里只有精品| 亚洲熟女性高潮久久久| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 精品999一区二区| 中文字幕国产| 欧美少妇第一页| 偷拍欧美亚洲| 无码av永久免费专区网站| 亚洲国产精品久久久久久久久久| 色拍偷亚洲| 亚洲色图欧洲| 99性爱| 亚洲欧美日韩电影网站一区 | 色蜜AV| 美女上床网站| 精品人妻av在线播放| 亚洲图片 91| 久久国产精品视频| 睡产熟女乱伦| 久久偷偷色综合蜜桃| 伊人热综合| 婷婷五月天小说| 久污| 青娱乐国产精品| 久久水蜜臀亚洲AV无码精品| 精品久久久久久中文字幕视频免费| 日韩乱伦视频| 欧美综合亚洲| 激情四射五月天| 成人天天爽| 十八禁av无码免费网站APP| 人妻丝袜无 码视频专区| 久久久久国色αv免费观看| 五月天亚洲网| 日韩人妻大香蕉| 国产九月婷婷| 亚洲 综合 第一页| 亚洲春色欧美激情自拍| 99热色这里只有精品| 又黄又硬又粗又长国产视频| 久久女婷| AV乱伦专区| 亚洲av总站| 久久婷婷电影网| 人妻精品4K4K4K4K4| 欧中美三级一区二区三区| 国产精品无套内谢| 999色欧美中文字幕| 日韩不卡在线一区二区| 激情四射婷婷六月天| 日韩综合成人免费视频| 97超碰资源网| 国产精品香蕉热久久新品| 久久久九| 一区二区三区精品黑丝白丝酒店对鸡| 乱人乱色一区二区三区免费| 1024亚洲中文字幕久在线看片你懂的| 成人av福利在线观看| 啊啊啊啊在线观看网址| 中文字幕aⅴ在线视频| 青青欧美| 日韩精品区二区三区不卡| 97色网| 一区二区三区四区色图| TS人妖另类精品视频系列| 宗合情欲网| 国产欧美日韩一区二区三区| 欧美高潮| 一区二区三区国产精产| 久久久亚洲欧美综合| 成人情色综合网| 志村玲子视频一区二区| 四虎影视永久在线免费| 又黄又硬又粗又长国产视频| 日韩中字av一区| 蜜乳AV.COM| 欧洲色综合| 日本亚洲vr欧美不卡高清专区| 亚欧毛片基地国产毛片基地| 男女啊啊啊啊啊| 超碰 另类 欧美| 精品国产丝袜一区二区三区乱码| 色色97爱| 九九九九九九九九九九九九九九九女| 丁香五月激情啪啪| 黄色视频60分钟| 另类图片五月天| 人妻少妇蜜桃视频欧美一区| 国产午夜无码片在线观看影视 | 操高情无码| 五月天人妻综合| 熟妇人妻一区二区三区| 中文字暮97| 国产AV无码AV| 婷婷av在线中文字幕| 伊人午夜福利视频| 欧美日韩淫加| 久久极品一区二区| 国产免费久久久久| 国产精品一区av在线| 亚洲高清综合网| 欧美九一精品久久久熟妇| 青青爽| 欧美色色色| 家庭乱伦国产精品| 欧美加勒比| 久久久久久久六六| 中文字幕第23区| 日日干夜夜操视频h| 高清无码国产亚洲| 九九久久一区二区伦理| 香港澳门日本三级网站| 亚洲视频精选| 男人天堂新在线| av草草在线电影| 九九夜精品九九在线| 男人的天堂2019AV| 97蜜桃综合| 亚州伊人色综台| 久综合网| 免费观看啪视频| 色婷婷影视| 欧美人人AAA| 午夜影美女日鸡鸡天天视频国产| 欧美一级特黄淫片在线观看| 懂色天天爱天天日天天射天天澡| 婷婷干黄色| 日日操免费视频| 天天插网| 91AV入口| 夜嗨影院| 丁香五月久久| 色妹子A V| 亚洲欧洲美腿丝袜| 国产超碰在线一区| 精品人妻一区二区乱码一区二区| 伊人嫩草| AV一起草在线| 欧美一级久久久久久久大片动画| 天美麻花大全视频| 婷婷久久综合| 啊啊啊 在线观看| 无码91| 再深点灬舒服灬太大了好硬好爽| 大香蕉宗合网在线| 亚洲丝袜天堂| 91N综合网在线| 三四中文字幕| 97亚洲中文| 亚洲一区二区三区婷婷| 欧美自拍偷拍综合图片| 亚洲成av人片色午夜乱码| 99热精品免费| 91天美传媒精品| 中文字幕伊人| 天天看夜夜看日日干| 精品丝袜无码一区二区三APP| 亚洲色欲天天天堂色欲网女| 日日操天天操| 精品一区二区麻豆| 神马久久午夜| 26uuu性物| 偷看洗澡一二三区美女| 四虎影视在线| 欧美少妇高潮| 国产日韩无码一区二区三区久久区| 亚洲国产精品V?在线播放| 超碰在线香蕉| 夜夜嗷嗷一区二区| 亚州色综合| αⅴ天堂| 久久精精区一区二区一蜜桃一区二区| 亚欧洲一区二区视频| 亚州性色| h无码动漫在线观看| 伊人亚洲国产一成人久久精品,久久| 97这里都是精品| 99国内熟女露脸视频| 视频二区美腿制服人妻欧美| 成人小说视频在线精品欧美| 久久久啊啊| 久湿久久 | 啪啪啪综合网| 午夜AV污污污| 强奸乱伦AV一天堂网| 2021久久国产综合精品青草| 影音综合网| 亚洲色婷婷综合久久一区二区三区| 成人性爱免费播放| 夜色五月天| 超碰久草| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 97爱爱爱| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 久久久久国产精品久久久| 欧美系列在线一区二区| 九九九九97| 成人精品久久久午夜福利| 99热综合| 大香蕉懂9| 玖玖玖玖精品国产剧情| 97在线观视频免费观看| 亚洲精品性爱片| 91女人的网站| 中文操逼字幕| 高凊专区人人操| 女优大全 - 91n| 无套内射性感少妇视频| 亚洲在线综合| 精品国产肉丝袜在线拍国语| 久久成人午夜狠狠| 精品超碰国产| 蜜臀99久久国产| 久久欧美性爱视频| 欧美色交| 中文乱码99| 国产无码久久高清| 一区| 欧美麻豆成人同性GⅤ在线| 人人妻人人色| h4610国产人妻| 黄色不卡视频| 激情接吻视频久久久久久| 久草久日| 人人爱操| 91在线视频国产网站| 操少妇很爽av| 囯戸精品高潮呻吟旡码| 丝袜美腿校园春色| 色香色欲天天综合网天天来吧 | 丁香色婷婷| 精品人妻一区二区三区不卡断| 激情五月天丁香社区| 亚洲色性| 亚洲涩涩| 国内精品久久久久影院亚洲| 最新亚洲黄色免费电影| 精品中文日韩字幕视频| 日本岛国黄色网址| 国产在线观看一区二区三区| 日本99一区二区| 国产综合永久精品日韩鬼片| 国产蜜臀精品一区二区尤物| 96久久科窝| 欧美一区二区三区互相| 国模久久在线| 高凊专区人人操| 人妻啪| 女人18精品一区二区三区| 看日韩美女二区三区免费操逼视频| 四虎精品永久在线播放| 中文字幕AV片| 国产农村妇女一区二区| 亚洲AV无码国产精品久久久久| 大香蕉草草| 成人精品视频一区二区| 欧美精品久久久久久久久88| 国产综合日韩伦理| 中出91视频| 夜夜操天天肏| www.色操逼| 美女操逼A A| 99精品无码| 在线 亚洲 网爆 自拍| 福利色色| 51一区二区三区| 东京热毛片177b2viP| 综合av影片| 91N欧美| aaaa少妇高潮大片| 人人摸.人人色| 91白嫩| 98超碰日本| 精品一区96| 婷婷亚洲综合| 美国一区二区免费视频| 国产丝袜欧美在线视频| 凹凸视频在线一区二区| 精品人妻15区| 日本久久久精品电影| 亚洲图片欧美制度| 色妹子A V| 国产精品亚洲一区二区三区四区| 91丨豆花丨熟女| 92一区二区| 3级毛片一二| 天堂亚洲精品久久老牛| 国产乱弄免费在线视频。| 一区二区你上我| 国产精品亚洲美女久久久久| 国产男女无套视频免费观看| 99久久e免费热视| 精品久久久久久AV无码| 精品无码一区二区三区色欲| 欧美97爱| 大香蕉一级黄色片久久| …亚洲黄色厕厕女女在线播…| 久久超碰天天| 怡红院成人视频| 亚洲AV色图一区| 碰人碰碰人人开房人肉| 欧美玖玖爱免费玖玖| 啊啊啊啊啊在线视频| 江都AV在线| 极品丝袜无码| 欧美日韩大陆黑人少妇99| 色诱avtt| 狠狠亚洲| 欧美日韩97在线| 伊人网在线点播| 九九九成人| 麻豆色约约| 久久久久久久久久久久色网| 欧美色性情| 亚洲97在线| 欧美人体性爱互联网第一页婷婷日本| 亚洲欧美日韩偷拍色图| 欧美探花网| 国产综合永久精品日韩鬼片| 偷窥自拍A片| 天天操夜夜操| 精品大久久| 久久超碰98| 日日日大屁股骚女人精品| 色噜噜人妻av 中文字幕| 五月丁香在线| 欧美日动态视频| 超碰久久网| 日韩欧美天堂| 青青草中文字幕| 你懂的在线观看区国产| 日本色色色视频| 天天弄天天操| 国厂麻豆77q4| 高清无码91| 久久久久久久强迫| 亚洲砖码砖专无区2023| 爽爽歪在线视频| 人人澡综合涩| 青青草大香蕉视频| 强奸乱伦大香蕉| 99精品热| 熟妇高潮精品一区二区三区下载| 国产9熟妇视频网站| 午夜精品久久99蜜桃的功能章节| 成人无遮挡毛片免费看| 另类专区在线观看| 色网综合网| 啊啊啊啊啊啊好多水| 久久精品久久九九精品| 精品超碰中文在线| 插入粉嫩少妇视频| 成人一级性爱| 久操高青| 99热在线只有精品| 黄片免费看黄片免费看| 区一二区日韩亚洲乱码av电影| 青青草一区二区三区四| 综合久| 75大香蕉| 另类图片综合| 久碰视频| 欧美97av| 黄色欧美性爱视频| 日韩在线97| aa片毛片| 蜜桃色色网站视频三区| 亚洲色图欧美色图综合| 岛国片国产成人亚洲播放| 91男女啊啊啊| 999精品乱码| 黄片免费看黄片免费看| 天天爱综合网| 国产精品激情久久久久久久| 偷拍超碰| 色网站导航大全| 成年女人一区| 久久超碰97| 九九热超碰| 男人的天堂Va| 1024香蕉视频| 91色狼| 六月丁丁香| 天美传媒精品久久视频| 美女自卫慰黄网站免费| 无卡一区=区| 操逼片中文| 囯产精品强| 欧美一区二区三区另类精品| 粉嫩小泬久久久一区二区| 亚洲色图尤物视频| 超碰夫妻97| 亚欧性爱无码| 97超碰这里只有精品| 先锋色眉乱伦资源| 九九九草| 亚洲操操| 久久久久九九九| 色女网日韩| а√天堂资源官网在线资源| 日本一区99| 加勒比在线观看一区二区| 农村妇女精品一区二区| 久久久精品视频免费观看| 久久妇| 中文字幕成人| 99久久久无码国产精品性啊聊| 91丝袜美女| 亚洲,日韩,欧美,成人播放| 欧美色图成人网一区二区 | 午夜120视频在线观看| 91AV天美在线视频| 九热视频| 精品无码欧美三级| 少妇色综合| 97av在线视频| 国产区日韩区在线观看| 大香蕉琪琪日本女优不卡| 色成人Www精品永久观看| 9九九国产| 欧美中文字幕男人天堂久久精品 | 亚洲一区二区精品福利| 777超碰| AV天堂男人的天堂| 屁屁影院一区二区三区国产| 欧美色九九| 三级片大波波| 国产 v乱码一区二| 国产v亚洲v日韩v欧美v片另类| 一区二区精品更新提醒| 亚洲一区日韩| 91校园春色长篇| 激情五月综合开心五月| 精品人妻一区二区三区蜜桃视频| 久久久一热在线播放| 色色色欧美| 野狼福利社区| 欧洲性人爱视频| 日日夜夜精品| 男人的天堂1024| 秋霞色色影院| 国产精品诱惑| 超碰成人人人爽人人爽| 久久久久亚洲Av无码专区老牛影视| 97久久精品亚洲中六字幕| 久久久久国产精品喷潮免费观看臀| 蜜臀AV一区二区三区| 日韩成人午夜精品久久高潮| 影音先锋国产精品| 一级性爱啪啪视频| 亚洲人妻在线精品| 自拍六区| 欧美色图自拍| 日本精品免费一区二区三区四区| 亚洲黑丝在线| 国产女人91精品嗷嗷嗷嗷| 一区AV| 伊人欧美大香蕉视频| 伊人伊人LD| JULIA人妻风俗店中出电影| 深田咏美亚洲精品福利社| 狠狠色噜噜狠狠狠狠2018| 嗯嗯啊啊啊好爽| 俺去啦自拍| 欧美日韩青操| 做爱福利视频一区二区| 国产美女91视频| 亚洲国产一区二区三区在线| 91美女中出| 91久久久久久久| 黄色一级视| 色乱二区| 粉嫩在线一区二区懂色| 久草福利在线资源站| 二男一女成人A片| 91午夜无码| 超碰人人操97碰| 日韩操逼性鲍| 天天摸夜夜添无码小视频| 免费国产电影一区二区| 亚洲精品免费中文字幕| 色欲三区| 国产精品视频麻豆入口| 男女激情黄色网址| 久久精品三级影视| 国产亚洲99久久精品| 亚洲精品亚洲人成人网| 日韩有码免费视频| 日韩伦理久 久久 清纯| 日韩精品三区四区| 青草香蕉网| 亚洲色图综合网| 五十路熟女,国产欧美精品区一区二区三区 | 吖在线不卡一区二区国产剧情| 久久av无码| 人人摸.人人色| 国产成人手机视频激情| 性做久久久久久免费观看软件| 乱老女人一区二区视频| 精品少妇后入一区二区三区四区人妻巨乳| 男人的天堂在线有码| 一区二区三区四区五区高清无码永久视频 | 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 丁香九月激情啪| www.99热| 亚洲美女30b| 天天操天天日青青草超碰av| 欧洲综合色| 探花视频免费观看国产专区| 国产亚洲精品美女久久久| 成人美女av| 天堂岛av| 国产情色在线| 爱爱啊啊啊| 园内精品自拍视频在线播放| 国产成人+综合亚洲+天堂| 亚洲国产一区二区三区在线| AV丝袜东京热| 97网色| 少妇一级婬片免费放一级a性色.| 国产成人无码久久精品| 大香蕉欧美伊| 激情小说激情视频| 小日子操bb在线看| 日韩精品99999| 97er欧美性| 97资源久久| 欧美强奸乱能| 九九九久千久久激情蜜桃在线看 | 国产 日韩,欧美 自拍| 亚洲乱伦图片视频| 大香蕉伊利av| 97亚洲自在精品在线观看| 国产精品无码成人精品| 婷婷综合网站| 97视频在线免费播放| 久久一区二区三区四区五区| 91动漫操逼视频| 日韩AV一区二区三区三州三州| 无码九九| 99在线无码精品秘 入口黑人| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 欧美最大综合网| 亚洲日韩精品久久久久一区壹牛 | 婷婷激情丁香| 日本一级二级三级网站| 人妻一区久久二区三区色播| 欧美 亚洲 第一页| 色综合色综合网| 色偷综合| 免费又黄又裸乳的视频| 精品久久久久黄少妇| 午夜在线播放| 精品人妻伦一二三区久久| 碰人碰碰人人开房人肉| 3028国产精品| 天天操美美| 人妻献身系列第54部| 成 人 影视 一区 二区 三区 四区| 中文字幕免费在线观看| 亚欧性爱ab| 欧美中字不卡| 91人妻尻屄视频| 91精产一区二区三区| 亚洲一区日韩精品| 超碰碰97| 大香蕉www.超碰| 最新av在线| 视频黄色国产一级| 97精品国产精品免费观看| 日本高清视频xxxx| 搞中出视频在线观看| 久久性爱精品一区| 乱欲性色| 久久久精品视频免费观看| 综合性视频99| www.狠狠| 国产精品人妻无码久久久互動交流| 中文字幕一区 二区三四五 区日 日骚| 国产999精品久久久| 久久99热这里只频精品6学生| 国产搭汕a级片| 婷婷激情五月综合| 97综合网| 欧美在线啊啊啊| 两性色网| 中文字幕一区二区三区四五区| 99操99| 久久69| 99精品网站| 夜嗨影院| 97在线免费视频观看| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 日韩中文字幕国产| 超碰97在线中文| 久热大香蕉| A级在线视频| 超碰综合色| 日韩精品一区的| 久久久999| 日韩欧美偷拍美女视频| 伊人久久大香大香线蕉中文| 超碰95| 亚洲熟久久| 九九AV| 小日子操bb在线看| 免费视频观看60秒| 性欧美体内射精| 欧美强奸一区二区诱惑| 亚洲成a人v欧美综合天堂下载| 亚洲精品骚逼| 色噜噜婷婷| 老子午夜伦不卡影院| 国产97综合| 在线人妻熟女一区二区三区四区五区| 国产操偷| 黑人精品一区二区在线播放| 88在线一区二区三区| 一二三啪啪专区| 色噜噜人妻丝袜a∨先锋影| 91狠狠| 超碰 欧美| 国产精品网站免费| 亚洲另类综合欧美| 日韩性爱电影一区 | 日韩电影天堂视频一区二区| 夜夜爽77777| 中文字幕aⅴ在线视频| 91天天看| 国产白丝AV| 肉丝无码中文高清| 青娱乐大香蕉| 99热亚洲天堂| 狠狠干狠狠干| 国产又大又硬又长又粗| 乱伦一二三区| 亚洲国产精品无码AV久久| 精品超碰色| 夜夜操中文字幕| 蜜桃中文字日产乱幕4区| 五月丁香婷婷色| 国产精品成人蜜臀AV在线| 国产精品免费1区2区视频| 91少妇人妻| 一二三四区电影| 午夜精品久久久99热蜜桃的功能特点| 97久久精品国产| 精品免费1| 中文字幕高清20页视频| 欧美成va视频网站| 操逼片中文| 黑人操一区二区| 超碰人人操97碰| 日韩免费av片高清无码| 久久久久久网址| 啪啪啪综合网| 欧美日韩第一页| 欧美黄色片AAAAA| 人人干人人操人人..com| 操逼不卡中文字幕| 51一区二区三区| 97人妻免费中文字幕| 无码国产Av| 多毛小伙内射老太婆| 精品日韩中文在线| 日韩无码黄色片| 乱伦Av网| 国产一区二区视频在线播放| 色官网在线| 9久精品| 国产刺激视频| 日韩av女优在线免费一区| 欧美日韩99精品麻豆传媒| 久久久久精| 老熟女熟妇| 最新av在线| 97久久天天综合色天天综合色电影| 亚洲偷91色| 亚洲日精品| 色噜噜国产精品视频一区二区| 无码人妻一区二区三区免费九色| 91人妻在线视频| CCYY草草影院地址入口| 亚洲成人性爱网站在线播放| 国产精品国产自产高清AV| 奇米狠999| 激情五月丁香五月| 婷婷国产精品九区| 久久亚洲色图中文字幕| 日韩欧美~中文字| 91丨人妻丨国产丨丝袜| 丰满美女一级毛片在线播放| 国产亚洲美日韩Aⅴ中文字幕无码成人| 国产精品女久久久久av爽| 色婷婷丁香| 欧美中文字幕男人天堂久久精品 | 亚洲国产精品9999在线观看| 午夜黄色免费在线观看| 亚洲欧洲偷拍一区| 粉嫩AV一区夜夜嗨| 国语精品av| 五月丁香六月综合缴清无码| 青娱乐久久艹| 国产日本熟女顶级一区二区三区视频| 亚洲第一二区另类图| 人人操人人精品影片| 亚洲91色| 操逼视频亚洲| 后入 亚洲 美女 射| 性欧美精| 日韩精品在线视频,日韩精品……| 亚洲欧美综合区自拍另类| 国产精品999zyz| 欧美.亚洲.另类.丝袜.制服.诱惑| 97日视频| 网友自拍第一页| 人人摸人人干人人拍97| 99.色网| 33044男人的天堂深夜备| 免费看黄片现成| 性爱视频久久| 久久 久久国内精品亚洲| 91操熟女| 亚洲人妻av| 欧美大色交| 91大神精品长腿在线观看网站| 久久精品美女一区| 热久日综合| 国产精品白丝| 激情av| 日本黄页视频在线观看| 人人操人人摸avav| 一品道视频一区二区三区| 黑人粗大V S日韩女优视频| 一个色导综合| 一二三啪啪专区| 精品欧美乱码久| 性爱av在线免费观看| 熟女网站最新| 中文字幕,人妻,日韩| 九九热免费国产视频婷婷伊人| 久久久久久久久久久精| 国产高清成人mv在线观看| 青青青青草av在线观看| 欧美999| 中文字幕高清20页视频| 性欧美| 日本五十路熟女一区二区| 九九九影院| 69少妇一区二区| 免費人妻夜夜爽天天爽爽一区| 亚洲欧美日韩激情不卡| 婷婷色婷婷| AV天堂因数| 91久久婷婷| 夜夜夜夜久久久久| 久久五月综合| 9久热这里只有精品| 激情av| 亚欧美综合网| 精品超碰中文在线| 九九九九免费| 久久一区无码| 国产91影院| 少妇毛片久久| 免费av高清无码| 色 亚洲 91| 黄片com.| 深爱伊人影院| 蜜臀少妇一区二区| 成人毛片免费| 亚洲天堂人人妻| 综合欧美激情网| 久久久少妇诱惑精品视频| www.人人cao| 欧美 亚洲| 偷窥自拍亚洲色图| 中国操逼无码| 久久人妻无码毛片A片麻豆| 99热只有这里有精品| 2017天天操天天日| 色蜜AV| 色色网91| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 丁香婷婷五月| 亚洲熟女一区| 九九热超碰| 亚洲 无码 偷拍| 亚洲综合贴图91| 丁香激情网| 国产a片操逼| 五月天AV资源| 亚洲情色五月天 | 男女性扦B| 色色亚洲| 日逼视频日本| 极品色综合| 婷婷丁香一区二区三区| 日本在线不卡v二区| 欧美色图91| 色婷婷婷五月天激情四射| 亚洲欧洲国产综合av| 神马久久久久久| 欧美影音在线| 调教熟妇 久久久久久| 欧美日韩黄片精品在线| 成人区人妻精品一| 欧美精品双插| 大奶啊啊好爽| 近亲乱伦一区二区| 日韩操啪| 日比av无码| 夜夜骑操视频| 大香蕉伊人亚洲| 亚洲福利中文字幕在线| 肏逼视频日本| 91N综合网| 亚洲精品1区| 1956日韩精品| 国产AV超爽| 可以在线观看的黄色网址| 亚洲男人天堂AV| 亚洲情色 无码专区| 91 国产丝袜在线放观看| 日韩精品一区的| 亚洲第一免费视频| 欧美亚洲天堂| julia国产在线 | 蜜臀99久久精品久久久懂爱| 色哟哟av| 免费亚洲国产精品久久一区| 高树玛利亚无码流出| 色婷婷电影| 97精品在线| 富二代亚洲精品99| 日本福利社| 中文字幕在线日亚洲9| 欧美另类精品xxxx| 乱操乱伦AV| 人人操人人摸人人骑| 99re28在线观看| 密臀国产在线| 在线五区| 人妻熟女一区二区| 色香在线| AV在线资源| 欧洲一区二区三区免费| 亚洲射综合网| 中文字幕加勒比海高清无码免费视频 | 色月天AV导航| 国产伦精品免编号公布| 99re视频在线观看这里只有精品| 人妻乱仑一区二区三区| 2019天天干天天操| 国产亚洲女v在线观看| 国产成人 综合亚洲 天堂| 国产在线能看的你懂的| 国产内射爽爽大片| 日韩国产精品人妻无码久久久| 欧美亚洲情色| 国产亚洲色婷婷久久99精品91 - 百度| 一本久道久久综合狠狠爱一密臀精 | 啊啊啊无码| 亚洲精品97| 欧美18老人禁| wwwxxx日本爽| AV网站高清无码在线观看| 91社操逼| 日本三级R| 91啪啪视频| 久久精品人体AV| 蜜色网色哟哟| 97精品久久久久久久| 小明看看网址| 九热超碰| 久午视频| a男人的天堂久久一级A毛片| 国产精品盗摄 偷窥盗摄| 在线a v| 在线播放中文字幕| 蜜臀久久久久久999| 蜜桃久久久久久久| 99在线视频播放| 桑老女人九区| 蜜臀久久99精品久久久电影| 亚洲欧洲自拍图片专区满春格| 亚洲av综合色区图片亚洲| 亚洲色图殴美色图激情乱伦| www.激情| 亚洲自拍一区夜夜操| 日韩黄色小说| 蜜臀99久久精品久久久久| 性爱综合一区二区| 精品性爱一二三区| 人人乐大香蕉| 婷婷五月天无码 | 五月综合婷婷久久网站| 99色视频| 你草精品在线视频| 久草电影网| 日本爽爽爽爽爽爽免费视频| 国产熟女免费观看久久| 日日干夜夜干| 综合色拍| 大色综合| 午夜国产成人福利视频| 日本一区二区电影网站| 国产日产欧产美韩系列麻豆免费| 99久久99久久免费精品蜜臀| 波多野结衣先锋影音| 狠狠操夜夜操蜜桃视频三区| 久久一二三四五六七八九区区| 欧美午夜熟妇黑人精品91| 欧美性爱精品七区| 五月婷婷丁香| 91成人社区| 久操视频在线观看| 日韩av影片在线观看| 夜夜操91744565| 高潮9999外国| 日本免费一级AAA大片器| 亚洲激情网一二三四区| 久久九精品| 日韩在线国产字幕| 亚洲精品国产精品乱码不99| 涩爱AV在线| 中文字幕乱码在线观看| 日韩一级特黄av毛片| 91女人的网站| 97超碰9| 欧美系列在线一区二区| 成人日韩中文字幕| 中文字幕精品码亚洲| 人妻aa| 久久大陆| www.亚洲黄色| 91天天日| 亚洲欧美清纯| 亚洲图片偷拍视频区| 男人把坤坤插入女人的下体 | 99久久综合| 91天天| 五月天激情网图片| 97超碰影音| 特级丰满少妇一级AAAA爱毛片 | 国产精品自在自拍视频| 激情综合av| 无码免费在线观看黄色片| 中文字幕视频在线观看一区二区| 欧美亚州综合网图片| 激情视屏国产乱伦强奸| 欧美日韩人妻婷婷一区| 中文字幕国产| 天天综合网1| 日本成人A片网站| 97 超碰 人人做 人人爱| 中文字幕丰满人妻日本| 日韩乱码Av| 久久久9999| 视频在线观看一二三区| 99久久99久久免费精品蜜臀| 欧美少妇熟女| 秋霞色色影院| oumeisetupian| 激情黄色片在线观看| 人人操天天爽| 性videos欧美熟妇hdx| 91亚州欧美| 性爱Av免费| 9ⅰ久久久天天| 国产免费永久精品无码| 中文字幕一二三av| 婷婷精品视频| 成人性交免费视频| 色香阁在线| 国产精品盗摄 偷窥盗摄| 热久久国产精品视频大陆精品| 欧美日韩国产另类综合| 亚洲男人综合网| 很很热性爱视频| 超碰久超碰久| 日韩无码嘿咻黑热久| 国语对白露脸XXXXXX| 欧洲精品一区二区三区| 国产美女mm131爽爽爽爽| 密臀国产在线| 97视频网站在线观看| 日韩在线地址一| 啊啊啊久久久视频| 九九综合久久| 四虎国产精品永久在线囯在线| 国产久久一区二区| 日韩国产中文字幕| 久操电影| 亚洲自拍欧美色综合| 色综合色欲色综合色综合色综合| 色综合天天爱去电影网| 亚洲最大的黄色电影网站。| 久久久久久亚洲中文| 欧美肥臀在线| 中文字幕91综合| 精品一区二区成人| 久久久91| 极品粉嫩少妇视频| 欧美一级色| 欧美激情性久久久久久| 亚洲乱熟女一区二区| 欧美日韩m| 韩国成人精品久久久免费看| 欧美综合色图网| 日本啊啊啊啊啊视频| 国模少妇一区二区三区| 大肥女高潮bbwbbwhd视频| 成熟熟女国产精品一区二区| 涩涩五月天| 亚洲导航深夜福利| 欧美日韩资源| 综合情欲网| 青青草视频在线观看一区二区| 久久精品国产免费观看99| 久久久久久久强迫| 妇女乱色二区| 欧亚第一综合网| 男人兔费天堂| 国产亚州高清国产拍精| 国产精品国产亚洲区艳妇糸列| 疯操AV| 综合97亚洲| 北条麻妃99精品青青久久| 在线啊v一区| 国产精品美女在线一区| 91人妻少妇| 99re这里只有精品2| 动漫av中文| 亚洲棕合电彰| 一本一道人妻久久一区二区三区| 国产一区二区在线电影| 国产美女销魂在线观看不卡| 91青青草| 亚洲小说视频| 国产三级中文字幕粉嫩| 人妻人妻天天碰| 神马午夜久久久| 尤物av网站| 91久久国产综合久久| 亚洲日本韩国在线| 围产精品一区二区三区视频播放| 国产无码精品高清| 国产午夜精品在线观看| 91欧美综合| 亚洲狠| 一区二区视频在看| 色亚洲欧美| 欧美97se| 97亚洲自在精品在线观看| 伊人久久亚洲色欲综合网站| 青青草色插素人| 综合色拍| 日本男人插女人的逼黄色| 懂色AV中文| 97精品第3页| 国产97在线视频| 色色99| 国产毛片精品一区二区色欲黄A片| 黄色欧美性爱视频| 亚洲成人美女无吗| 1024人妻熟女一区二区三区| 91久久精品中文字幕| 久草网站免费在线观看| 天天搞在线综合网| 欧美,日韩综合久久| 成人麻豆av电影网站| 女同女同恋久久级三级| 黄片视频,下载| 日本熟女中文字幕一区| 曰本人妻人人澡人人夹| 欧美午夜视频精品久久| 手机在线观看不卡无码av| 国产又粗又长又爽又色| 五月丁香婷婷综合网| 99热在线观看| 偷窥自拍亚洲色图| 2025亚洲男人天堂| 欧美色图下一页|