Introduction

This is an industrial incremental photoelectric rotary encoder with aluminum material, metal shell and stainless steel shaft. It generates AB two-phase orthogonal pulse signal though the rotation of the grating disk and optocoupler. 400 pulses/round for each phase, and 1600 pulses/round for dual-phase 4 times output. This rotary encoder supports max 5000 r/min speed. And it can be used for speed, angle, angular velocity and other data measurement. The photoelectric rotary encoder has a NPN open collector output. It could work with Microcontroller with internal pull-up resistors directly. And it is using 750L05 voltage regulator chip, which has a DC4.8V-24V wide range power input, compatible with Arduino, STM32, PLC and other types of microcontrollers.

Note: NPN open collector output needs pull-up resistors for the oscilloscope display.

Specification

Board Overview

Num Label Description
White VCC Power +
Black GND Power -
Red A Pulse A (Need pull-up Resistor)
Green B Pulse B (Need pull-up Resistor)

Tutorial

Direction & Interrupt count

Requirements

Connection Diagram

Arduino Connection

Sample Code

/***************************************************
  Two phase quadrature encoder(Incremental)
* ****************************************************
   To determine motor with encode (CW OR CCW)

  @author Dong
  @version  V1.0
  @date  2016-5-26
  All above must be included in any redistribution
* ****************************************************/
#define  A_PHASE 2
#define  B_PHASE 3
unsigned int flag_A = 0;  //Assign a value to the token bit
unsigned int flag_B = 0;  //Assign a value to the token bit
/** *  */
void setup() {
  pinMode(A_PHASE, INPUT);
  pinMode(B_PHASE, INPUT);
  Serial.begin(9600);   //Serial Port Baudrate: 9600
  attachInterrupt(digitalPinToInterrupt( A_PHASE), interrupt, RISING); //Interrupt trigger mode: RISING
}
void loop() {

  Serial.print("CCW:  ");
  Serial.println(flag_A);
  Serial.print("CW: ");
  Serial.println(flag_B);
  delay(1000);// Direction judgement

}
void interrupt()// Interrupt function
{ char i;
  i = digitalRead( B_PHASE);
  if (i == 1)
    flag_A += 1;
  else
    flag_B += 1;
}

OUTPUT

code_out.png

Expected Results

Use the interruption to detect the rotation direction and count cylinder number.
SEN0230_Serial_Data.png

FAQ

Q1. Why I can't get any feedback from the encoder?
A. Please connect pull-up resistor to phase A & B
For any questions, advice or cool ideas to share, please visit the DFRobot Forum.

More Documents

DFshopping_car1.png Get Incremental Photoelectric Rotary Encoder - 400P/R from DFRobot Store or DFRobot Distributor.

Turn to the Top