久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5965|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)如何能高效讀取編碼器的AB相信號(hào)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本帖最后由 mxlslf 于 2021-6-4 22:40 編輯

情況說明:在做單片讀取編碼器的AB相信號(hào)時(shí),選用ATMEGA328P單片機(jī),把A相信號(hào)接到單片機(jī)INT0外部中斷上,B相接到另一個(gè)引腳上。識(shí)別到A相發(fā)生中斷時(shí)計(jì)數(shù)器加1計(jì)數(shù),并判斷B相的電平高低得出是正轉(zhuǎn)還是反轉(zhuǎn)。同時(shí),上位機(jī)會(huì)通過串口下發(fā)指令給單片機(jī),讓單片機(jī)把相應(yīng)的管腳打開和關(guān)閉操作。實(shí)際PCB板做好后,發(fā)現(xiàn)上位機(jī)發(fā)送的串口指令有時(shí)候是沒有被執(zhí)行,這樣的情況在10次里面有4次的樣子。

情況分析:我分析是否是因?yàn)橥獠恐袛啻驍嗔藛纹瑱C(jī)接收串口指令。
判斷過程:于是我把外部中斷脈沖線拔掉,程序正常,單片機(jī)100%接收到串口指令,并正確控制。
提出問題:單片機(jī)如何能高效讀取編碼器的AB相信號(hào)?是否有串口緩存的芯片,可以把上位機(jī)發(fā)送給單片機(jī)的串口指令緩存起來,單片機(jī)從緩存芯片處逐個(gè)取走指令?




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2021-6-5 08:28 | 只看該作者
只要主函數(shù)周期夠短,可以不用外部中斷,改用查詢方式。編碼器的AB信號(hào)隨便用2個(gè)IO口。
回復(fù)

使用道具 舉報(bào)

板凳
ID:752974 發(fā)表于 2021-6-5 08:29 | 只看該作者
你的這種做法,像你說的中斷計(jì)數(shù)影響程序工作,B信號(hào)判向也很難。簡單的方法是AB信號(hào)經(jīng)D觸發(fā)器判向,判向后的信號(hào)給單片機(jī),A或B給T計(jì)數(shù),這樣做,單片機(jī)負(fù)擔(dān)輕,不影響其他程序。
回復(fù)

使用道具 舉報(bào)

地板
ID:883242 發(fā)表于 2021-6-5 20:02 | 只看該作者
select microcontroller with quadrature encoder interface .
回復(fù)

使用道具 舉報(bào)

5#
ID:28415 發(fā)表于 2021-6-8 09:02 | 只看該作者
munuc_w 發(fā)表于 2021-6-5 08:29
你的這種做法,像你說的中斷計(jì)數(shù)影響程序工作,B信號(hào)判向也很難。簡單的方法是AB信號(hào)經(jīng)D觸發(fā)器判向,判向后 ...

我借鑒了網(wǎng)上別人寫的文檔,這樣改進(jìn):用雙D觸發(fā)器74HC74讀取A,B兩相,OUT1如果有輸出脈沖說明是正轉(zhuǎn),OUT2如果有輸出脈沖說明是反轉(zhuǎn)。您覺得這樣是否可行?我要對(duì)OUT1和OUT2進(jìn)行計(jì)數(shù)的話,是直接在主循環(huán)程序里直接讀OUT1和OUT2端口的電平,還是用外部中斷計(jì)數(shù)的方式讀入 這樣您覺得哪個(gè)更優(yōu)?

51hei圖片_20210608085947.png (45.73 KB, 下載次數(shù): 69)

51hei圖片_20210608085947.png
回復(fù)

使用道具 舉報(bào)

6#
ID:450849 發(fā)表于 2021-6-8 10:07 | 只看該作者
http://www.zg4o1577.cn/bbs/dpj-181681-1.html用這個(gè)代碼爽的很
回復(fù)

使用道具 舉報(bào)

7#
ID:47286 發(fā)表于 2021-6-8 10:54 | 只看該作者
mxlslf 發(fā)表于 2021-6-8 09:02
我借鑒了網(wǎng)上別人寫的文檔,這樣改進(jìn):用雙D觸發(fā)器74HC74讀取A,B兩相,OUT1如果有輸出脈沖說明是正轉(zhuǎn),OU ...

如果在主循環(huán)里判斷次數(shù)和方向 除非你用一個(gè)片子專門去掃編碼器 否則 主循環(huán)時(shí)間不一定 有可能錯(cuò)過 所以中斷是相對(duì)最可靠的 但中斷里不適于做防抖 即便是計(jì)時(shí)器防抖或者變量累加防抖 都有可能在第二個(gè)脈沖過來的時(shí)候沖突 如果處理沖突 又可能造成中斷內(nèi)程序太多 那么理想的狀態(tài)就是中斷中得到的是確定脈沖 所以我認(rèn)為編碼器的消抖用硬件消抖 單片機(jī)中斷計(jì)數(shù) 可以在中斷函數(shù)里用兩個(gè)標(biāo)記分別對(duì)比以確定方向

硬件消抖實(shí)際上也有點(diǎn)缺點(diǎn) 要么容錯(cuò)低 要么體積大 要么成本高 硬件消抖簡單的就是用個(gè)0.1uf電容 這方法是假定抖動(dòng)會(huì)在十幾毫秒內(nèi) 隨使用編碼器那東西會(huì)越來越接觸不良 到后期誤判很多 另一種是用門電路做消抖 我沒試過 但至少布線上要多一大坨東西 還有就是專門的消抖片子 有專門干這個(gè)的芯片 但那東西好貴啊 感覺很不值得

至于最終怎么弄 我認(rèn)為主要是看速率 就是編碼器擰多快 如果1s擰一下 那無所謂什么方法了 最便宜最簡單的都不是問題 如果特別快 或者脈沖特別多的編碼器 講真 我覺得只能用專門的芯片 好象叫什么增量觸發(fā)之類的 專用芯片 也特別貴 當(dāng)時(shí)就是看見價(jià)格直接就忽略了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线a视频网站 | 中文字幕一区二区在线观看 | 亚洲毛片在线 | 亚洲精品一区二区网址 | 国产免费一区二区 | 久久中文字幕电影 | 99亚洲精品 | 亚洲一区二区三区在线视频 | 午夜国产羞羞视频免费网站 | 欧美一级在线 | 高清国产午夜精品久久久久久 | 激情一区二区三区 | 狠狠干天天干 | 久久国产精品亚洲 | 亚洲一区二区中文字幕 | 国产精品久久国产精品99 | 国产一级片 | 精品久久伊人 | 亚洲精品国产一区 | 一级黄色片日本 | 91色在线视频 | 国产在线精品一区二区三区 | 91视频电影| 亚洲成在线观看 | 国产激情视频网址 | 亚洲经典一区 | 521av网站 | 亚洲国产精品久久久久秋霞不卡 | 欧美精品乱码久久久久久按摩 | 美女视频. | 精品成人一区二区 | 伦理午夜电影免费观看 | 91精品国产综合久久久久 | 99视频在线播放 | 日韩在线视频一区二区三区 | 久草在线在线精品观看 | 99亚洲精品| 毛片区 | 午夜天堂精品久久久久 | 久久国产欧美日韩精品 | 成人影 |