Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc....

16
B. E. Boser 1 Electronics for IoT Rotary Encoder Bernhard E. Boser University of California, Berkeley [email protected] IoT49: Encoder

Transcript of Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc....

Page 1: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 1

Electronics for IoT

Rotary Encoder

Bernhard E. BoserUniversity of California, Berkeley

[email protected]

IoT49: Encoder

Page 2: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 2

Rotary Encoder

IoT49: Encoder

Page 3: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 3

Optical Encoder

IoT49: Encoder

Page 4: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 4

IR Encoder

IoT49: Encoder

Page 5: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 5

Counts per Revolution (CPR)

IoT49: Encoder

Page 6: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 6

Example: Distance Traveled

IoT49: Encoder

Page 7: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 7

Encoder Readout

IoT49: Encoder

Page 8: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 8

Limitations

IoT49: Encoder

Page 9: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 9

Quadrature Encoder

IoT49: Encoder

Page 10: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 10

Quadrature Encoder Output

Forward Reverse

IoT49: Encoder

Page 11: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 11

Quadrature Encoder “Decoding”

Forward Reverse

IoT49: Encoder

Page 12: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 12

Quadrature Decoder Output

Forward Reverse

IoT49: Encoder

Page 13: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 13

Decoder Readout Hardware Support

IoT49: Encoder

Page 14: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 14

ESP32 uPython “Decoder”

• called “ENC”

IoT49: Encoder

Page 15: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 15

ENC Functions

IoT49: Encoder

Page 16: Rotary Encoder - People @ EECS at UC Berkeleyboser/courses/49... · 2018-03-07 · enc. enc. enc. enc. enc. count() cound and clear() pause() resume( ) clear() returns the current

B. E. Boser 16

Summary

• Encoders monitor rotation

• Only relative angle / position

• Quadrature encoders– To distinguish forward / backward

• Decoder readouta) Interrupt handler, orb) Dedicated hardware counters

Ref: http://embeddedsystemengineering.blogspot.com/2016/07/arm-cortex-m3-stm32f103-tutorial.html

IoT49: Encoder