SEN0230 Incremental Photoelectric Rotary Encoder - 400P/R


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.


Board Overview

SEN0230 Gravity: IR Kit for Arduino Board Overview
Num Label Description
Red VCC Power +
Black GND Power -
White A Pulse A (Need pull-up Resistor)
Green B Pulse B (Need pull-up Resistor)


Direction & Interrupt count


Connection Diagram

SEN0230 Gravity: IR Kit for Arduino Connection Diagram

Sample Code

 * @file  SEN0230.ino
 * @brief  Two phase quadrature encoder(Incremental)
 * @n  To determine motor with encode (CW OR CCW)
 * @copyright  Copyright (c) 2010 DFRobot Co.Ltd (
 * @license  The MIT License (MIT)
 * @author  Dongzi(
 * @version  V1.0
 * @date  2016-5-26

#define  A_PHASE 2
#define  B_PHASE 3
unsigned int flagA = 0;  //Assign a value to the token bit
unsigned int flagB = 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.print("CW: ");
  delay(1000);// Direction judgement

void interrupt()// Interrupt function
{ char i;
  i = digitalRead( B_PHASE);
  if (i == 1)
    flagA += 1;
    flagB += 1;


SEN0230 Gravity: IR Kit for Arduino OUTPUT

Expected Results

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

SEN0230 Gravity: IR Kit for Arduino Expected Results


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