搜索
bottom↓
回复: 89

求教:弄了个旋转编码开关,就是转起来没完没了那种,应该怎么用呀。

[复制链接]

出0入93汤圆

发表于 2009-3-6 16:37:54 | 显示全部楼层 |阅读模式
买的和下面这个图类似,不过多了一个按键的功能,也就是既能旋转,也能按。


(原文件名:QQ截图未命名.jpg)

一侧两个脚。确定是按键功能,
另一侧是三个脚,应该就是图上说的C和1和2了。应该怎么测试呀,怎么量都是不导通的,也没有示波器观测波形。这东西怎么用?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2009-3-6 16:46:59 | 显示全部楼层
从输入那里加电压,在两个输出脚可以测到不同相位关系的脉冲,从而确定旋转方向。

出330入0汤圆

发表于 2009-3-6 16:49:28 | 显示全部楼层
它的意思是:向右旋转时:1相先通,然后1、2相都通,然后1相不通2相通,周而复始……
            向左旋转时:2相先通,然后1、2相都通,然后2相不通1相通,周而复始……
通过判别1,2相的相位关系,可以判断出编码器在向哪边旋转。

出0入0汤圆

发表于 2009-3-6 16:58:03 | 显示全部楼层
如楼上说:
在12都通的时候开中断,读是1或2哪个为高电平,旋转方向就判断出来了。

出0入0汤圆

发表于 2009-3-6 17:43:28 | 显示全部楼层
就像TEK示波器上面的调整开关?

出0入93汤圆

 楼主| 发表于 2009-3-6 18:49:41 | 显示全部楼层
是导通的意思吗?开始我也是这样理解的。也就是我把1和2上拉到电源,C接地,然后分别判断1和2的点位就可以吗?
我没有示波器,反正用万用表量,这三个引脚任意两个是没有导通过的,
就是即便是如上面说的,导通也是导通脉冲,不知道对不对。

出0入0汤圆

发表于 2009-3-6 21:03:12 | 显示全部楼层
关注,。

出0入0汤圆

发表于 2009-3-6 21:26:03 | 显示全部楼层
我最近买了5个,用中断很好办,我用在51上了。
那个玩意儿可以往下按的,两个脚的那边就是按钮了,你按下去就可以测得两个脚是导通了。
至于三个脚的那边,中间接地,另外两个接MCU的引脚,其中一个接中断最好了,一旦触发中断,马上检测另外一脚的高低电平状态就可以判断旋转方向了。
这有个帖子,画了波形的,程序不一定可以用
http://www.jdzj.com/pic/Class348/Class383/20080727161849.html
我给你一点资料

我买的那种经过实验在接MCU脚和地之间接上102或者103的电容可以完美消抖,104的不行!
点击此处下载 ourdev_424134.pdf(文件大小:464K) (原文件名:EC12E.pdf)
点击此处下载 ourdev_424135.pdf(文件大小:203K) (原文件名:ENCODER_CAUTION.pdf)

(原文件名:EC12E_C_21.GIF)

出0入0汤圆

发表于 2009-3-6 21:39:31 | 显示全部楼层
104真的不行

ps楼上能介绍下出编码器比较多的公司牌子,我对选型很感兴趣,感谢感谢~~~~
  pdf介绍很明白啊,貌似日本风格。

出0入162汤圆

发表于 2009-3-6 21:48:08 | 显示全部楼层
好像很贵,国内的都做不好

出0入0汤圆

发表于 2009-3-6 21:49:32 | 显示全部楼层
它推荐的是102:首先5v加电阻上拉,再过10k缓冲(是这个作用吗?),再挂102下拉到大地。两相位共用电源地。
拜拜楼上的达人

出330入0汤圆

发表于 2009-3-6 21:59:44 | 显示全部楼层
是导通的意思吗?开始我也是这样理解的。也就是我把1和2上拉到电源,C接地,然后分别判断1和2的点位就可以吗?
我没有示波器,反正用万用表量,这三个引脚任意两个是没有导通过的,
就是即便是如上面说的,导通也是导通脉冲,不知道对不对。
================================================
有点盲目了,手册上让你 C 接地了吗?看你的手册图片好象没这样指出啊,1,2脚输出的应该是不同相位的高低电平,而不是互相之间通不通!

出0入0汤圆

发表于 2009-3-6 22:10:50 | 显示全部楼层
当然不买国内的。

出0入0汤圆

发表于 2009-3-6 22:19:58 | 显示全部楼层
常开,旋转通过某固定部位则接通一下

出0入0汤圆

发表于 2009-3-6 22:30:39 | 显示全部楼层
【8楼】 LiAsO 黄海潜水艇
积分:76
派别:
等级:------
来自:江苏
        104真的不行

ps楼上能介绍下出编码器比较多的公司牌子,我对选型很感兴趣,感谢感谢~~~~
  pdf介绍很明白啊,貌似日本风格。
  --------------------------
我在淘宝买的 2.5元一个
http://item.taobao.com/auction/item_detail.jhtml?item_id=195e03565c6fe9a29e5b183909849733&x_id=0db1

出0入0汤圆

发表于 2009-3-6 22:31:46 | 显示全部楼层
【9楼】 AWEN2000
------------
你说的是旋转编码器,检查角度变化的,不一样的

出0入0汤圆

发表于 2009-3-6 22:34:17 | 显示全部楼层
【10楼】 LiAsO 黄海潜水艇
积分:76
派别:
等级:------
来自:江苏
        它推荐的是102:首先5v加电阻上拉,再过10k缓冲(是这个作用吗?),再挂102下拉到大地。两相位共用电源地。
拜拜楼上的达人
--------------------------------------
要是买我的那种,不要按图上的接,不要电阻的,就是中间的接地,两边的用102和中间连接消抖。

我的代码

void INT0_ISR() interrupt 0
{
        switch(mode_flag)
        {
                case        0x01:
                        {
                                if(cswb==0)
                                DACV++;
                                if(cswb==1)
                                DACV--;
                        }
                break;

                case 0x02:
                {
                                if(cswb==0)
                                DACV=DACV+10;
                                if(cswb==1)
                                DACV=DACV-10;
                }
                break;

                case        0x04:
                        {
                                if(cswb==0)
                                        {
                                        if(F_value<60 && F_value>=0)
                                                {F_value++;}
                                                else
                                                        {F_value=0x00;}
                                        }
                                               
                                if(cswb==1)
                                        {
                                        if(F_value<60 && F_value>=0)
                                                {F_value--;}
                                                else
                                                        {F_value=0x00;}
                                        }
                        }
                break;

                case        0x08:
                                                {
                                if(cswb==0)
                                        {
                                        if(S_value<24 && S_value>=0)
                                                {S_value++;}
                                                else
                                                        {S_value=0x00;}
                                        }
                                               
                                if(cswb==1)
                                        {
                                        if(S_value<24 && S_value>=0)
                                                {S_value--;}
                                                else
                                                        {S_value=0x00;}
                                        }
                        }
                break;
                default:
                ;
        }
}

貌似我得到的方向是反的,不知道是不是因为资料的CW方向是从底面看的?

出0入10汤圆

发表于 2009-3-6 22:53:27 | 显示全部楼层
为什么104的电容不行,102、103反而行?不是电容大一些,效果好些么

出0入0汤圆

发表于 2009-3-6 22:56:04 | 显示全部楼层
为什么104的电容不行,102、103反而行?不是电容大一些,效果好些么
----------------------------------
这个不是做电源,电容值要合适才行

出330入0汤圆

发表于 2009-3-7 19:06:49 | 显示全部楼层
频率高、转的快的时候要用102,转动慢的时候用104。我看到的计数器,要在内部人工设置频率档位,如5K,30两个档。

出0入0汤圆

发表于 2009-3-7 19:51:52 | 显示全部楼层
频率高、转的快的时候要用102,转动慢的时候用104。我看到的计数器,要在内部人工设置频率档位,如5K,30两个档。
-------------------------------------------------------
我倒是直接通吃快慢,104的快慢都不行,不同厂家、不同型号可能要求的电容不一样。

出0入0汤圆

发表于 2009-3-7 22:07:36 | 显示全部楼层
今天用反相器实验了一把消除颤抖,md,失败。。还是找找rc滤波的办法了。
软件做不来,咱就硬件实现。

出0入0汤圆

发表于 2009-3-7 22:10:05 | 显示全部楼层
。。。程序我也没编好,惭愧。

出330入0汤圆

发表于 2009-3-8 15:11:41 | 显示全部楼层
不仅要靠电容剔除毛刺干扰,还需要稳压二极管管辅助。

出0入0汤圆

发表于 2009-3-8 17:17:03 | 显示全部楼层
我玩过鼠标滚轮那种,用示波器观察确实有相差的波形

出0入0汤圆

发表于 2009-3-8 18:32:23 | 显示全部楼层
我试过in4148,不灵。

出0入93汤圆

 楼主| 发表于 2009-3-8 18:53:47 | 显示全部楼层
周末没上,发现已经这么多资料了。周一过去试试应该就可以了。感谢大家。

出0入0汤圆

发表于 2009-3-8 21:42:11 | 显示全部楼层
【22楼】 LiAsO 黄海潜水艇
------------------
用中断还是数编码?我用中断很方便,一中断就检查另外一脚的电平,结果就出来了。

出0入0汤圆

发表于 2009-3-8 22:00:23 | 显示全部楼层
http://blog.ednchina.com/lb6035/123874/message.aspx

这个东东原来叫
           Rotary Encoder switch
恩,资料搜索全开》》》》(做爆气状)

ps  。。。。。。编程不在行,没法提供好的修改建议。sorry。

出330入0汤圆

发表于 2009-3-8 22:01:53 | 显示全部楼层
我用的旋转编码器接入电路(A、B两相)


(原文件名:旋转编码器接入.JPG)

出0入0汤圆

发表于 2009-3-9 11:32:35 | 显示全部楼层
29楼的线路也太夸张了吧,其实这种旋转编码器不需要硬件滤波的,用软件就可以了,用定时器,1-1.5毫秒查询一次就可以很好地工作了

出0入0汤圆

发表于 2009-3-9 21:42:02 | 显示全部楼层
试一试再串一个小电阻

出0入0汤圆

发表于 2009-3-9 21:47:38 | 显示全部楼层
两个参考电路,intersil官方上的,
        AN1231
        AN170
点击此处下载 ourdev_424657.pdf(文件大小:124K) (原文件名:an1231.pdf)
点击此处下载 ourdev_424658.pdf(文件大小:122K) (原文件名:an170.pdf)

出0入0汤圆

发表于 2009-3-9 22:59:30 | 显示全部楼层
29楼的线路也太夸张了吧,其实这种旋转编码器不需要硬件滤波的,用软件就可以了,用定时器,1-1.5毫秒查询一次就可以很好地工作了

*****************

主要是光耦隔离

出0入93汤圆

 楼主| 发表于 2009-3-10 09:10:10 | 显示全部楼层
我加了个103的电容,没有电阻,用STM32内部上拉直接接AB两相,中断某引脚判断另一个高低电平,经常出现误判。

出330入0汤圆

发表于 2009-3-10 09:22:05 | 显示全部楼层
关于旋转编码器,以前有过很好的讨论,我刚去翻这个论坛的旧帖子,很可惜,居然有不少很好的回复弄丢了。看来恢复的还不彻底。等下,我到自己的硬盘里去翻翻看。

出330入0汤圆

发表于 2009-3-10 09:31:16 | 显示全部楼层
有一个帖子里提供了这样一个方案,我姑且把它称为“旋转编码器鉴相输出”(不知道叫法如何)——指的是:旋转方向不同,两路(out1、out2)只有一路输出,反过来,MCU得到哪路输出,也就得到编码器正在朝哪边旋转。


(原文件名:旋转编码器鉴相输出2.jpg)


(原文件名:旋转编码器鉴相输出1.jpg)

出0入0汤圆

发表于 2009-3-10 09:35:27 | 显示全部楼层
用中断来处理这种器件不是好的办法,这种旋转编码开关我已用过多年了,不需要硬件抗干扰,直接接到CPU上就可以了,用定时器1-1.5MS读一次状态就是最好的.

出0入0汤圆

发表于 2009-3-10 09:36:14 | 显示全部楼层
这东西仪器上用得很多

出0入0汤圆

发表于 2009-3-10 21:35:30 | 显示全部楼层
判别方向还比较好办,这两个pwm波形相位差90度,经过d类触发器就行。
关键是读出脉冲数的方法。还有转速快慢的问题。、

出0入0汤圆

发表于 2009-3-11 07:39:23 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2009-3-11 11:37:58 | 显示全部楼层
【36楼】 zcllom 星罗棋布  

这是我做的一个简单的仿真


其实 我们在产品上用的就是这种接法

飞梭 很灵敏 可以保证不丢转,反应速度非常快

用软件写的可能就会慢点

出0入0汤圆

发表于 2009-3-11 11:38:31 | 显示全部楼层
【楼主位】 friendljy


在哪里 买的? 多少钱一个?

出0入0汤圆

发表于 2009-3-11 12:36:20 | 显示全部楼层
不知道鼠标的滚轮是否可以代替?

出0入0汤圆

发表于 2009-3-11 13:02:32 | 显示全部楼层
鼠标上的就是这种

出0入0汤圆

发表于 2009-3-11 20:34:32 | 显示全部楼层
【41楼】 yuhang

只有一个jk触发器就行么?

出0入93汤圆

 楼主| 发表于 2009-3-12 13:10:53 | 显示全部楼层
【42楼】 yuhang
在哪里 买的? 多少钱一个?


北京中发市场,配帽子要15大洋一个,只是一个样片,无所谓价格了。
上面不是有人贴2.5一个的么。
以后正式用,打算用楼主位帖的图片那个,是美卡诺的。还没有问价格。

经过试验,定时1ms扫描一次,效果很不错,判断很简单,
进入定时中断如果两个都没有按下,复位一个标志位。
进入定时中断如果标志位是复位的,如果A按下,则置位标志位,表示正转。
进入定时中断如果标志位是复位的,如果B按下,则置位标志位,表示反转。
经试验,没有误判,转得太快,有漏判,不影响我使用。

中断弄了很久不好用。

出0入93汤圆

 楼主| 发表于 2009-3-12 13:13:02 | 显示全部楼层
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8) && (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)))
        {
                NKEY = 0;
        }
        if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8))
        {
                if((NKEY == 0) && (FILESHOW == 0))
                {
                        NKEY = 1;
                        FILESHOW = 1;
                        DIRECTION = RIGHT;
                }
        }
        if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7))
        {
                if((NKEY == 0) && (FILESHOW == 0))
                {
                        NKEY = 1;
                        FILESHOW = 1;
                        DIRECTION = LEFT;
                }
        }

FILESHOW主程序处理完后复位,放置重入。

出0入0汤圆

发表于 2009-5-25 22:46:16 | 显示全部楼层
其实你们买的都是最基本的。

我客户用的一个就350RMB,转不尽,带确认键.

出0入0汤圆

发表于 2009-10-28 12:13:07 | 显示全部楼层
最近正好要搞这个,挖出来。

出0入0汤圆

发表于 2010-1-15 14:12:39 | 显示全部楼层
如何确定脉冲数啊?貌似大部分的都是转一周24个脉冲。

出0入0汤圆

发表于 2010-1-27 10:16:15 | 显示全部楼层
做个记号先,已经买了几个开关,试试

出0入0汤圆

发表于 2010-1-27 15:02:48 | 显示全部楼层
老帖被顶出来
学习了

出0入0汤圆

发表于 2010-1-27 16:07:21 | 显示全部楼层
MARK 单键飞梭
MARK 飞旋开关

出0入0汤圆

发表于 2010-1-27 17:58:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-20 00:01:00 | 显示全部楼层
回复【33楼】robinyuan
-----------------------------------------------------------------------

延时1ms.硬件上任何东西都不需要加.就拿编码开关来就好了.工作很稳定.

出0入0汤圆

发表于 2010-3-20 07:57:23 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2010-3-20 19:09:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-25 17:42:24 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-3-25 18:58:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-25 19:35:40 | 显示全部楼层
mark下

出0入0汤圆

发表于 2011-1-3 22:23:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-4 00:09:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-4 08:52:13 | 显示全部楼层
以前在论坛看到傻孩子对编码器简洁精辟的结论:
1)需要至少用到一个外中断和一个普通引脚。在每一个中断的上升沿或下降沿(注意这里是或的关系,意思是必须  
从两个边沿中选择一个边沿来触发中断)读取普通引脚的电平,高电平,计数器增加,低电平计数器减小。这两个  
引脚分别接编码器的A和B两根信号。  

2)如果你想实现两倍频,则需一个外中断和一个普通引脚,在每一个中断变化边沿(同时包括上升沿和下降沿),比较  
中断引脚的电平与普通引脚的电平,如果相同则计数器增加,如果不同则计数器减小。  

3)如果你想实现4倍频,则需要两个外中断引脚,对于A信号的外中断来说,每一个变化的边沿都检查A,B两个信号电平  
是否相同,相同则计数器增加,不同则计数器减小;对于B信号的外中断来说,每一个变化的边沿都检测A、B两信号电  
平是否相同,相同则计数器减小,不同则计数器增加。

出50入0汤圆

发表于 2011-1-4 09:01:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-4 12:08:00 | 显示全部楼层
看到大家的解码程序很复杂。
我的很简单。每毫秒查一次。如果只有一线为低(上拉),就记下当前值。等到全为高时取出值。就是几句话。
怎么测(实验室)都没发现问题。

出0入0汤圆

发表于 2011-1-4 12:13:17 | 显示全部楼层
还有一种增量式编码器,怎么调都不成(0-F)。
原因是,器件在生产加工时的精度不是足够高,在一个量到(序增或序减)时中间插入别的值。并且不能滤除。

出0入0汤圆

发表于 2011-3-25 18:57:44 | 显示全部楼层
记号。

出0入0汤圆

发表于 2011-4-30 22:54:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-4 17:33:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-4 17:40:22 | 显示全部楼层
飞梭 好东西,很方便

出0入0汤圆

发表于 2011-5-4 22:05:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-9 12:29:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-7 19:32:54 | 显示全部楼层
此贴需mark

出0入0汤圆

发表于 2011-6-7 21:23:30 | 显示全部楼层
编码器一般用于 调音量或者收音机的波段,车载导航上很常用,我们做的是3.3V上拉4.7k,旋转用mcu的AD脚检测用于做音量,+或者-,104的电容滤波 。按压是用作跟按键一样的功能。

出0入0汤圆

发表于 2011-8-11 22:52:31 | 显示全部楼层
回复【64楼】wwwdege
以前在论坛看到傻孩子对编码器简洁精辟的结论:  
1)需要至少用到一个外中断和一个普通引脚。在每一个中断的上升沿或下降沿(注意这里是或的关系,意思是必须   
从两个边沿中选择一个边沿来触发中断)读取普通引脚的电平,高电平,计数器增加,低电平计数器减小。这两个   
引脚分别接编码器的a和b两根信号。   
2)如果你想实现两倍频,则需一个外中断和一个普通引脚,在每一个中断变化边沿(同时包括上升沿和下降沿),比较   
中断引脚的电平与普通引脚的电平,如果相同则计数器增加,如果不同则计数器减小。   
3)如果你想实现4倍频,则需要两个外中断引脚,对于a信号的外中断来说,每一个变化的边沿都检查a,b两个信号电平   
是否相同,相同则计数器增加,不同则计数器减小;对于b信号的外中断来说,每一个变化的边沿都检测a、b两信号电   
平是否相同,相同则计数器减小,不同则计数器增加。  

-----------------------------------------------------------------------

确实很精辟!
可以检测转动速度,不同的转速用不同的倍频输出:
低速时用基频输出,保证调节精度;
高速时用4倍频输出,保证调节的速度;
中速时用2倍频输出,精度和速度兼顾;
要达到更高的调节精度,可以对基频进行分频。

出0入0汤圆

发表于 2011-8-12 16:38:23 | 显示全部楼层
学习的好贴。

出0入0汤圆

发表于 2011-10-31 10:30:37 | 显示全部楼层
这个要学习一下~~正好要用到~

出0入0汤圆

发表于 2011-11-1 12:01:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-1 13:02:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-4-21 08:55:32 | 显示全部楼层
谢谢,受教了。
头像被屏蔽

出0入0汤圆

发表于 2012-5-2 16:30:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-3-29 14:20:54 | 显示全部楼层
回复很经典

出0入0汤圆

发表于 2013-7-11 09:58:12 | 显示全部楼层
Mark飞梭

出0入0汤圆

发表于 2013-7-19 09:51:27 | 显示全部楼层
那位大神帮忙捣鼓下程序出来?

出0入0汤圆

发表于 2015-6-8 22:57:55 | 显示全部楼层
用STM32可以直接读取~

出0入0汤圆

发表于 2015-7-16 14:48:13 | 显示全部楼层
留下脚印 学习~

出0入0汤圆

发表于 2016-7-4 11:01:20 | 显示全部楼层
mark 旋转编码器

出0入0汤圆

发表于 2019-2-20 17:44:18 | 显示全部楼层
lljyes 发表于 2009-3-6 17:43
就像TEK示波器上面的调整开关?

是的,360度旋转

出0入0汤圆

发表于 2023-8-10 09:02:24 | 显示全部楼层
谢谢,了解下旋转编码器工作原理
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 05:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表