熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2021-6-4 22:37
正文摘要:本帖最后由 mxlslf 于 2021-6-4 22:40 編輯 情況說(shuō)明:在做單片讀取編碼器的AB相信號(hào)時(shí),選用ATMEGA328P單片機(jī),把A相信號(hào)接到單片機(jī)INT0外部中斷上,B相接到另一個(gè)引腳上。識(shí)別到A相發(fā)生中斷時(shí)計(jì)數(shù)器加1計(jì)數(shù),并 ... |
mxlslf 發(fā)表于 2021-6-8 09:02 如果在主循環(huán)里判斷次數(shù)和方向 除非你用一個(gè)片子專門去掃編碼器 否則 主循環(huán)時(shí)間不一定 有可能錯(cuò)過(guò) 所以中斷是相對(duì)最可靠的 但中斷里不適于做防抖 即便是計(jì)時(shí)器防抖或者變量累加防抖 都有可能在第二個(gè)脈沖過(guò)來(lái)的時(shí)候沖突 如果處理沖突 又可能造成中斷內(nèi)程序太多 那么理想的狀態(tài)就是中斷中得到的是確定脈沖 所以我認(rèn)為編碼器的消抖用硬件消抖 單片機(jī)中斷計(jì)數(shù) 可以在中斷函數(shù)里用兩個(gè)標(biāo)記分別對(duì)比以確定方向 硬件消抖實(shí)際上也有點(diǎn)缺點(diǎn) 要么容錯(cuò)低 要么體積大 要么成本高 硬件消抖簡(jiǎn)單的就是用個(gè)0.1uf電容 這方法是假定抖動(dòng)會(huì)在十幾毫秒內(nèi) 隨使用編碼器那東西會(huì)越來(lái)越接觸不良 到后期誤判很多 另一種是用門電路做消抖 我沒(méi)試過(guò) 但至少布線上要多一大坨東西 還有就是專門的消抖片子 有專門干這個(gè)的芯片 但那東西好貴啊 感覺(jué)很不值得 至于最終怎么弄 我認(rèn)為主要是看速率 就是編碼器擰多快 如果1s擰一下 那無(wú)所謂什么方法了 最便宜最簡(jiǎn)單的都不是問(wèn)題 如果特別快 或者脈沖特別多的編碼器 講真 我覺(jué)得只能用專門的芯片 好象叫什么增量觸發(fā)之類的 專用芯片 也特別貴 當(dāng)時(shí)就是看見價(jià)格直接就忽略了 |
http://www.zg4o1577.cn/bbs/dpj-181681-1.html用這個(gè)代碼爽的很 |
select microcontroller with quadrature encoder interface . |
你的這種做法,像你說(shuō)的中斷計(jì)數(shù)影響程序工作,B信號(hào)判向也很難。簡(jiǎn)單的方法是AB信號(hào)經(jīng)D觸發(fā)器判向,判向后的信號(hào)給單片機(jī),A或B給T計(jì)數(shù),這樣做,單片機(jī)負(fù)擔(dān)輕,不影響其他程序。 |
只要主函數(shù)周期夠短,可以不用外部中斷,改用查詢方式。編碼器的AB信號(hào)隨便用2個(gè)IO口。 |
Powered by 單片機(jī)教程網(wǎng)