top of page

Arduino : How to read an incremental encoder

  • Pawit Kochakarn
  • Oct 16, 2016
  • 1 min read

This is the first installment of my new Arduino series in which I show you how to implement various engineering concepts into an Arduino environment:

This post is about a part of a project I did over the summer which involves making a reaction-wheel controlled inverted pendulum.

Part of that project was to write a piece of code using Arduino IDE to be able to read the angle position of an incremental optical encoder connected to the pendulum arm in order to be controlled by a motor connected to a Arduino Mega2560 board and H-Bridge Motor Driver.

The encoder I used was at 400 ppr (pulses per revolution) which means the encoder sends 400 pulses to the Arduino micrcontroller every time a full revolution has been turned by the pendulum (365 degrees). This means our code would have to convert the PWM signal sent from the encoder into degrees through the serial monitor in the Arduino IDE software for the angle to be easily read.

I have also used two built-in interrupt pins (pin 0 and 1 for Mega2560). An Interrupt's function is to make sure that the Arduino responds quickly to changes in pulse signal. When a rising or falling edge is detected in the PWM square wave from the encoder, the pin interrupts whatever the Arduino is doing, and executes the ISR (interrupt service routine) designed to react to the change in pulses. Once that routine has finished, the processor goes back to its normal loop in the program.

Comments


Read more:

    "Let's go invent tomorrow instead of worrying about what happened yesterday" 

                                                                                                       Steve Jobs

    computer_engineering_science_tech_3072x2048
    Computer Screens
    Modern Digital Watch
    Computer Circuit Board Macro
    Globalization concept
    Online Monitoring
    black_keyboard_lights_macbook_hi_tech_hd_wallpaper-wide

    © 2020 Tech Kingdom

    Contact Us : official.techkingdom@gmail.com

    bottom of page