(SKU:SEN0235)EC11 Rotary Encoder Module旋转编码器

来自DFRobot Product Wiki
跳转至: 导航搜索
EC11

目录

概述

DFRobot新品EC11旋转编码器,转为DIY电子爱好者设计。通过输出的A、B相位差和脉冲个数,可以精确的获取旋转的方向和旋转弧度。可以应用在汽车电子、多媒体音箱、仪器仪表、智能家居等.

性能描述

  • 工作电压:3.3V~5V
  • 工作电压:3.3V~5V
  • 全回转角度:360度(无止档点)
  • 回转寿命:30000+200 Cycles
  • 接触电阻:≤100mΩ
  • 绝缘阻抗:100MΩ以上
  • 振荡:<10ms按压
  • 工作温度:-30℃~+80℃
  • 模块尺寸:33.8 × 22.4(mm)/1.3 x 1.1(inches)
  • 安装孔尺寸:内径3.1mm/外径6mm


接口说明

EC11接口说明图
  • A:A相输出口
  • B:B相输出口
  • C:按键输出口,当按下时输出低电平

当顺时针旋转时,A、B输出相位差如下图所示:

Fig1:AB相位差


教程

这里采用两个终端,分别接到A、B输出端,连线如下图所示:

EC11接线图
int encoderPinA = 2;
int encoderPinB = 3;
int buttonPin = 4;

volatile int lastEncoded = 0;
volatile long encoderValue = 0;

long lastencoderValue = 0;

int lastMSB = 0;
int lastLSB = 0;

long readEncoderValue(void){
    return encoderValue/4;
}

boolean isButtonPushDown(void){
  if(!digitalRead(buttonPin)){
    delay(5);
    if(!digitalRead(buttonPin))
      return true;
  }
  return false;
}

void setup() {
  Serial.begin (9600);

  pinMode(encoderPinA, INPUT); 
  pinMode(encoderPinB, INPUT);
  pinMode(buttonPin, INPUT);

  digitalWrite(encoderPinA, HIGH); //turn pullup resistor on
  digitalWrite(encoderPinB, HIGH); //turn pullup resistor on

  //call updateEncoder() when any high/low changed seen
  //on interrupt 0 (pin 2), or interrupt 1 (pin 3) 
  attachInterrupt(0, updateEncoder, CHANGE); 
  attachInterrupt(1, updateEncoder, CHANGE);

}

void loop(){ 
  //Do stuff here

  if(isButtonPushDown()){
    Serial.println("you push button down!!!");
  }
  Serial.println(readEncoderValue());
  delay(50); //just here to slow down the output, and show it will work  even during a delay
}


void updateEncoder(){
  int MSB = digitalRead(encoderPinA); //MSB = most significant bit
  int LSB = digitalRead(encoderPinB); //LSB = least significant bit

  int encoded = (MSB << 1) |LSB; //converting the 2 pin value to single number
  int sum  = (lastEncoded << 2) | encoded; //adding it to the previous encoded value

  if(sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) encoderValue ++;
  if(sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) encoderValue --;

  lastEncoded = encoded; //store this value for next time
}


当顺时针旋转时,脉冲计数会增加,反之脉冲计数会减小;按下按钮时,会打印“you push button down”信息,打印效果如下图所示:

打印信息图

常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。


更多


DFshopping car1.png [Link DFRobot商城购买链接]

个人工具
名字空间

变换
操作
导航
工具箱