practice for PID control
Dependencies: PID QEI USBDevice mbed
Diff: main.cpp
- Revision:
- 3:e9aeee8b41e4
- Parent:
- 2:b46f1a4c42fb
- Child:
- 4:adf167473520
diff -r b46f1a4c42fb -r e9aeee8b41e4 main.cpp --- a/main.cpp Thu Apr 17 07:14:37 2014 +0000 +++ b/main.cpp Sat Apr 19 05:08:16 2014 +0000 @@ -56,9 +56,14 @@ uint8_t i = 0; int epls[2] = {0, 0}; float rps = 0; + + //IO,DAconverter and PID parameters configuretion. initialize(); + + //this block is the demonstration of PID control until BOOT switch is pushed. while(SW == 1) { + //this block is the outputs DAC data and revolution per second of motor. if(i == 100) { i = 0; @@ -66,14 +71,19 @@ vcom.printf("DAC.d :%012d\n", dac.bit.D); vcom.printf("rps :%12.4f", rps); } + + //led is blinked to display the loop of PID control. i++; gled = i; + //calculate rps. epls[1] = wheel.getPulses(); rps = ((float)(epls[1] - epls[0]) / PIDRATE) / 3600; epls[0] = epls[1]; controller.setProcessValue(rps); dac.bit.D = (int)controller.compute(); + + //send a command to change output of voltage. cs = 0; spi.write(dac.command); cs = 1; @@ -85,6 +95,8 @@ epls[0] = 0; timer.reset(); timer.start(); + vcom.printf("%d,%d,%f\n" , timer.read_ms(), dac.bit.D, rps); + i = 0; while(1) { if(SW == 0)