Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MotCon2 QEI USBDevice mbed
Homepage
Teensy 3.2 Quadrature Encoder Motor Control with USB Serial Connection¶

MC33926 Motor control board Pinout (Pololu board https://www.pololu.com/product/1212)¶
| MC Board | Teensy 3.2 |
|---|---|
| INV | D5 (Direction Pin) |
| SLEW | Vcc (3.3V) |
| EN | Vcc (3.3V) |
| FB | 220 ohm to ground, 1K in series with 4.7uF low pass to A0 on Teensy (current read) |
| !SF | Not Connected |
| !PWM / D1 | GND |
| PWM/!D2 | D4 (PWM Pin) |
| IN1 | GND |
| IN2 | Vcc (3.3V) |
| VDD | Vcc (3.3V) |
| GND | GND |
| Vin | Not Connected |
| Encoder Channels | Teensy 3.2 |
|---|---|
| PhaseA | D2 |
| PhaseB | D3 |
// Tensy 3.2 QEI, USBSerial, MotCon example
// J. Bradshaw - 20180111
#include "mbed.h"
#include "USBSerial.h"
#include "MotCon.h"
#include "QEI.h"
QEI enc1(D2,D3,NC,1024, QEI::X2_ENCODING);
MotCon mot(D4, D5); //pwm, dir
USBSerial pc;
Serial ser1(D1,D0); // tx, rx
DigitalOut led1(LED1);
AnalogIn current(A0);
int main() {
wait(2.0);
//pc.baud(9600); //NO BAUD RATE FOR USBSerial object
pc.printf("\r\n%s\r\n", __FILE__); //display the filename (this source file)
//pc.printf("%s %s\n",__TIME__,__DATE__);
pc.printf("Version 1.0 - rev %s J. Bradshaw\r\n", __DATE__);
enc1.reset();
while(1) {
for(float p=0; p<2.0*3.14159; p += 0.01) {
float pwm_dc = sin(p);
mot.mot_control(pwm_dc);
float encoder1 = (float)enc1.getPulses();
//pc.printf("%7.2f %7.2f %5.3f\r\n", pwm_dc, encoder1, current.read());
led1 = !led1;
wait(0.005);
}
}
}