Example program for the Teensy 3.2 micro-controller board using the QEI quadrature encoder library, the USBSerial.h library for serial port interface, and MotCon.h for motor control
Dependencies: MotCon2 QEI USBDevice mbed
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); } } }
Diff: main.cpp
- Revision:
- 0:f429a7e2e92c
- Child:
- 1:9ffb6825058f
diff -r 000000000000 -r f429a7e2e92c main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jan 11 18:34:37 2018 +0000 @@ -0,0 +1,33 @@ +#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); +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); + } + } +}