0% found this document useful (0 votes)
207 views

Keyes Rotary Encoder Module Ky-040

The document discusses the Keyes KY-040 rotary encoder module. It explains that the encoder outputs signals indicating the direction of rotation and position. It provides details on how the encoder works internally and describes the pinouts. Schematics of the module and an evaluation circuit are included to help understand how to interface it with an Arduino board.

Uploaded by

api-481856123
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
207 views

Keyes Rotary Encoder Module Ky-040

The document discusses the Keyes KY-040 rotary encoder module. It explains that the encoder outputs signals indicating the direction of rotation and position. It provides details on how the encoder works internally and describes the pinouts. Schematics of the module and an evaluation circuit are included to help understand how to interface it with an Arduino board.

Uploaded by

api-481856123
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

16/6/2015 KY­040 Arduino Tutorial, Schematics and more.

 | Henry's Bench

Henry's Bench
a place for the electronic hobbyist

Menu 

KEYES KY-040 ARDUINO ROTARY ENCODER USER WELCOME!!


MANUAL Privacy Policy
Contents [show]
About Me

The Keyes KY-040 Rotary Encoder


The Keyes KY-040 rotary encoder is a rotary input device (as in knob) that ON EBAY…
provides an indication of how much the knob has been rotated AND what
direction it is rotating in.
ON AMAZON…
Its a great device for stepper and servo motor control.  You could also use it to
control devices like digital potentiometers.

  TOP POSTS & PAGES


The ACS712 Current Sensor
Rotary Encoder Basics with an Arduino

A rotary encoder has a fixed number of positions per revolution.   These positions are easily felt as small ACS712 Current Sensor User
“clicks” you turn the encoder. Manual
The Keyes module that I have has thirty of these positions.
MAX31855 Arduino K
On one side of the switch, there are three pins.   They are normally referred to as A, B and C.   Thermocouple Sensor:
In the case of the KY-040,  they are oriented as shown. Manual and Tutorial
Inside the encoder there are two switches.  Once switch connects pin A to pin C and the Keyes KY-040 Arduino
other switch connects pin B to C. Rotary Encoder User Manual
In each encoder position, both switches are either opened or closed.  Each click causes U8glib Arduino OLED
these switches to change states as follows: Tutorial 1: Hello World on
Steroids
If both switches were closed,  turning the encoder either clockwise or counterclockwise one
position will cause both switches to open
If both switches are open, turning the encoder either clockwise or counterclockwise one FOLLOW ME ON TWITTER
position will cause both switches to close.
Tweets Follow
The illustration below is representative of how the switch is constructed.
Capn Fatz 1 Jun
@CaptainFatz
Simple and straightforward.

henrysbench.capnfatz.com/henrys-bench/a…

Capn Fatz 31 May


@CaptainFatz
Playing Music on CNC
crazymakerprojects.capnfatz.com/playing-music-…
pic.twitter.com/M2oLcFsmfc

As you can see, the angular position of the A terminal and the B terminal is such that:

Rotating the switch clockwise will cause the switch connecting A and C to change states first.
Rotating the switch counterclockwise will cause the switch connecting B and C to change states first.

If we were to represent the opening an closing of the switches as wave forms, it would look something like
this.

Capn Fatz 28 May


@CaptainFatz
Arduino Goofy Eyes
crazymakerprojects.capnfatz.com/arduino-goofy-…
pic.twitter.com/MMWpRKD55i

http://henrysbench.capnfatz.com/henrys­bench/keyes­ky­040­arduino­rotary­encoder­user­manual/ 1/4
16/6/2015 KY­040 Arduino Tutorial, Schematics and more. | Henry's Bench

Essentially,   determining which switch changed states first is how the direction of rotation of rotating is
determined.

If A changed states first, the switch is rotating in a clockwise direction. Capn Fatz 27 May
@CaptainFatz
If B changed states first, the switch is rotating in a counter clockwise direction. 1000W Battery Powered LED Flashlight
crazymakerprojects.capnfatz.com/1000w-battery-…

KY-040 Pin Outs pic.twitter.com/SZKGSfAIUB

The pin outs for this rotary encoder are identified in the illustration below.

The module is designed so that a low is output when the switches are closed and a high when the switches
are open. Capn Fatz 25 May
@CaptainFatz
The low is generated by placing a ground at Pin C and passing it to the CLK and DT pins when switches are Arduino Coca Cola Can Piano
closed. crazymakerprojects.capnfatz.com/arduino-coca-c…
pic.twitter.com/jdcxXjW16N
The high is generated with a 5V supply input and pullup resistors, such that CLK and DT are both high when
switches are open.

Not previously mentioned is the existence of of push button switch that is integral to the encoder.   If you
push on the shaft, a normally open switch will close.    The feature is useful if you want to change switch
function.   For example,  you may wish to have the ability to between coarse and fine adjustments.

Keyes Rotary Encoder Schematic


A schematic for this module is provided below.   R2 and R3 in the schematic are pull up resistors.
Tweet to @CaptainFatz
Click on it for a bigger view.

Keyes KY-040 Evaluation Circuit


Successfully implementing the Rotary Encoder into any project requires a clear understanding of everything
that has been discussed thus far.    If you’re still a little fuzzy,  you may wish to throw together the
evaluation circuit illustrated below:

VERY SLOWLY rotate then encoder shaft both clockwise and counterclockwise.   Notice which LEDs change
state first with rotation.

KY-040 Arduino Tutorial


Module Connection to the Arduino
Pretty straight forward…   All you need to do is connect four wires to the module.

http://henrysbench.capnfatz.com/henrys­bench/keyes­ky­040­arduino­rotary­encoder­user­manual/ 2/4
16/6/2015 KY­040 Arduino Tutorial, Schematics and more. | Henry's Bench

The Arduino Sketch


This is  a simple sketch that shows how to count the encoder position and how to determine direction of
rotation.    It has no switch debounce,  nor does it us interrupts.    A fully developed application might need
to incorporate these in order to make it robust.

 int pinA = 3;  // Connected to CLK on KY­040
 int pinB = 4;  // Connected to DT on KY­040
 int encoderPosCount = 0; 
 int pinALast;  
 int aVal;
 boolean bCW;

 void setup() { 
   pinMode (pinA,INPUT);
   pinMode (pinB,INPUT);
   /* Read Pin A
   Whatever state it's in will reflect the last position   
   */
   pinALast = digitalRead(pinA);   
   Serial.begin (9600);
 } 

 void loop() { 
   aVal = digitalRead(pinA);
   if (aVal != pinALast){ // Means the knob is rotating
     // if the knob is rotating, we need to determine direction
     // We do that by reading pin B.
     if (digitalRead(pinB) != aVal) {  // Means pin A Changed first ­ We're Rotating Clockwise
       encoderPosCount ++;
       bCW = true;
     } else {// Otherwise B changed first and we're moving CCW
       bCW = false;
       encoderPosCount­­;
     }
     Serial.print ("Rotated: ");
     if (bCW){
       Serial.println ("clockwise");
     }else{
       Serial.println("counterclockwise");
     }
     Serial.print("Encoder Position: ");
     Serial.println(encoderPosCount);
     
   } 
   pinALast = aVal;
 } 

Share this:

     More

ADD A COMMENT
Your email address will not be published. Required fields are marked *

Name

Email

Website

http://henrysbench.capnfatz.com/henrys­bench/keyes­ky­040­arduino­rotary­encoder­user­manual/ 3/4
16/6/2015 KY­040 Arduino Tutorial, Schematics and more. | Henry's Bench

ADD COMMENT

RedWaves theme by Themient

http://henrysbench.capnfatz.com/henrys­bench/keyes­ky­040­arduino­rotary­encoder­user­manual/ 4/4

You might also like