Simulink eQEP block for speed calculation with C2000 MCU

54 views (last 30 days)
Hi all! ;)
I am working with a C2000 Microcontroller from Texas Instruments. I try to calculate the shaft speed of a DC machine in Simulink using my F28377S-LaunchPad. I already established the high speed measurement using the QPOSCNT signal. My problem/question is about the low speed measurement: I want to use the QCPRD signal to calculate the shaft speed. I already asked for help in the TI E2E forums. You can find the discussion here:
Somebody told me to monitor the QEPST.UPEVNT signal because the timer value is latched into the QCPRD register everytime the QEPST.UPEVNT (unit position event) happens. Does somebody know a way to monitor this signal in Simulink? I cannot find this option in the eQEP block.
Best regards, Armin
Armin Lensker
Armin Lensker on 22 Mar 2018
Hello Canberk!
I attached screenshots of the content of the two subsystems:
These are the regular algorithms (for high speeds and low speeds) that TI suggests in their reference manual for the eQEP modules.
Best regards, Armin

Sign in to comment.

Answers (4)

Venkatesh Chilapur
Venkatesh Chilapur on 23 Aug 2017
Hi Armin,
Right now, via our eQEP block, we are not supporting the monitoring of QEPST.UPEVNT signal in Simulink.
However, as a workaround, the "Memory Copy" block can be used and the reference of this signal be provided to be able to read it's state.
Please refer example model "c28035pmsmfoc_cla" shipped with our support package, on how "Memory Copy" can be used. (c28035pmsmfoc_cla -> Hall Sensor C)
You may then design the model to read "QUPRD" around the QEPST.UPEVNT signal and see if it helps.
Venkatesh C
Hello all,
I am working on similar problem. I am using F28379D DSP processor and 1024 pulses per revolution encoder to determine the speed. I am using it with Simulink with block eQEP C28x.
Can somebody suggest me a working example as of hpw to configure C28x QEP block for the same .It would be really helpful and grateful !!!
Best Regards
Salil Patwardhan

Sign in to comment.

Michael Valasek
Michael Valasek on 29 Mar 2018
Edited: Michael Valasek on 29 Mar 2018
Thank you much Armin,
I checked your suggested links. There not much more information than in sprug05 from TI says. I will try to approximate the position with continuous function such as regression of spline function. Then to derive that approximated function to get the velocity. I hope that it works. I will report then the results. This is interesting:
Thank you
  1 Comment
Armin Lensker
Armin Lensker on 30 Mar 2018
Hello Michael! I think you have not read the blog posts entirely until the end because there is indeed much more information than in sprug05 by TI! The blog suggests using a "two phase type PLL" which I think is some kind of state of the art when it comes to encoder measurement filters. Best regards, Armin

Sign in to comment.

Pradyumna Ranjan Ghosh
Pradyumna Ranjan Ghosh on 22 Mar 2019
I am working on estimation of rotor speed and position of an AC machine connected to DC machine via eQEP blocks using DSP F28377s through an encoder. I am observing speed and rotor position through DAC. As per your instructions, speed estimation was good when DC machine is used as motor and AC machine as generator. However, when I am observing the speed while implementing v/f control on the AC machine, the motor was rotating at the speed as given by command, but estimation through encoder was incorrect.
I am attaching the model as per convenience. Do I need to change the switching frequency? Is there any problem of interrupt mismatch for speed calculation?
I would be extremely thankful.
Pradyumna Ranjan Ghosh

Bui Tuyen
Bui Tuyen on 17 Sep 2022
You can see this video

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!