Add quadrature encoder starter course

This commit is contained in:
Kacper 2026-04-07 19:47:37 -04:00
commit 032ef0a15b
5 changed files with 140 additions and 0 deletions

View file

@ -0,0 +1,32 @@
---
title: Meet the Quadrature Encoder
summary: Learn what the A and B channels are and why their phase offset lets you count motion.
chapter: Reading Encoder Signals
order: 1
tags:
- encoders
- motors
- feedback
estimated_minutes: 8
---
# Meet the Quadrature Encoder
A quadrature encoder gives you two square-wave signals, usually called `A` and `B`.
Those signals toggle as the shaft turns. The important detail is that they do not toggle at the same time. One channel leads the other by a quarter of a cycle, which is where the name quadrature comes from.
That phase offset gives you two useful facts:
1. You can count edges to measure motion.
2. You can compare which signal leads to determine direction.
## What you should observe
- Slow rotation produces clean transitions you can inspect with a logic analyzer.
- Reversing the shaft swaps which channel leads.
- More pulses per revolution means finer position measurement.
## Checkpoint
Capture both channels while rotating the shaft by hand and confirm that one channel leads the other.

View file

@ -0,0 +1,33 @@
---
title: Counting Direction and Steps
summary: Decode edges from the A and B channels to recover step count and direction.
chapter: Reading Encoder Signals
order: 2
tags:
- decoding
- interrupts
- firmware
estimated_minutes: 10
---
# Counting Direction and Steps
Once you can read the A and B channels, the next job is decoding.
The most common approach is:
- trigger on an edge
- read both channels
- use a lookup table or state machine to update the count
If your decoder sees illegal state jumps, you are probably dropping edges or reading a noisy signal.
## Practical notes
- Start with low shaft speed.
- Add debounce or filtering only if the hardware needs it.
- Test forward and reverse explicitly.
## Checkpoint
Write firmware that increments a counter when the shaft turns forward and decrements when it turns backward.

View file

@ -0,0 +1,32 @@
---
title: Measuring Wheel Speed
summary: Convert encoder counts over time into rotational speed for a drive wheel.
chapter: Using Encoder Feedback
order: 1
tags:
- speed
- odometry
- robotics
estimated_minutes: 9
---
# Measuring Wheel Speed
Position counts become useful control signals once you add time.
To estimate wheel speed:
1. sample the encoder count at a fixed interval
2. subtract the previous count from the current count
3. divide by the sample period
4. convert counts per second into revolutions per second or wheel surface speed
## Why this matters
Speed feedback is the bridge between open-loop motor commands and predictable robot motion.
If two drive motors get the same PWM value but spin at different speeds, your robot will drift. Encoder-based speed estimation lets you detect and correct that mismatch.
## Checkpoint
Plot wheel speed over time while ramping the motor command up and down.

View file

@ -0,0 +1,34 @@
---
title: Closing the Loop with a PID
summary: Use encoder speed feedback to hold a target wheel speed with a simple controller.
chapter: Using Encoder Feedback
order: 2
tags:
- control
- pid
- robotics
estimated_minutes: 12
---
# Closing the Loop with a PID
With encoder speed feedback in place, you can command a target speed and adjust motor output based on error.
The basic control loop is:
- measure current speed
- compute `error = target - measured`
- update the controller
- send the new motor command
Start simple. A proportional controller is often enough to prove the loop works before adding integral or derivative terms.
## What good behavior looks like
- the wheel reaches the target speed quickly
- overshoot stays limited
- the response remains stable when load changes
## Checkpoint
Tune a controller so the wheel returns to the target speed after you briefly drag on the tire by hand.