Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
6 years, 9 months ago. This question has been closed. Reason: Duplicate question
Stepper Motor Issue
Hello, I am experimenting with 2 steppers to make them run together using Threads. I am using STM32 Nucleo F767ZI development board. One of the stepper motors vibrates too much while running the code. But, they run smoothly while making them run separately. I think the issue is with the threads. What could be the better solution?
#include "mbed.h" #include "stepperMotor.h" Serial pc(USBTX, USBRX); int recepticlestepspeed = 400 ; //motor speed for recepticle conveyor stepper int recepticlenumstep = 800; int microtrackstep_speed = 400 ; //motor speed for microtrack conveyor stepper int microtracknumstep = 133; Thread *t1; Thread *t2; Thread *t3; Thread *t4; sMotor recepticle_conveyor(PF_5, PF_10, PA_7, PF_2); sMotor microtrack_conveyor(PA_3, PC_0, PC_3, PF_3); DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); void func_stepper1() { for(int i = 0; i<6; i++) { microtrack_conveyor.step(microtracknumstep, 0 , microtrackstep_speed); } } void func_stepper2() { recepticle_conveyor.step(recepticlenumstep, 1 , recepticlestepspeed); } void func_stepper2_return() { recepticle_conveyor.step(recepticlenumstep, 0 , recepticlestepspeed); } void func_stepper1_return() { for(int i=0; i<6; i++) microtrack_conveyor.step(microtracknumstep , 1 , microtrackstep_speed); } int main() { int t; while(1) { pc.printf("\n\r Press 1 to start: "); pc.scanf("%d", &t); if(t == 1) { if(t1) delete t1; if(t2) delete t2; t1 = new Thread; t2 = new Thread; t1->start(func_stepper1); t2->start(func_stepper1); wait(5); if(t3) delete t3; if(t4) delete t4; t3 = new Thread; t4 = new Thread; t3->start(func_stepper1_return); t4->start(func_stepper2_return); } } }