![](/media/cache/profiles/dee5807257e44b600e247c814cc12734.jpg.50x50_q85.jpg)
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); } } }
main.cpp
- Committer:
- jebradshaw
- Date:
- 2018-01-11
- Revision:
- 0:f429a7e2e92c
- Child:
- 1:9ffb6825058f
File content as of revision 0:f429a7e2e92c:
#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); } } }