Simulink eQEP block for speed calculation with C2000 MCU

조회 수: 41 (최근 30일)
Armin Lensker
Armin Lensker 2017년 8월 22일
답변: Bui Tuyen 2022년 9월 17일
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
  댓글 수: 2
Canberk Suat Gurel
Canberk Suat Gurel 2018년 3월 22일
Hello Armin,
I have seen your post on I was wondering what is inside the subsystems shown by the red arrows below:
Thank you, best regards.
Armin Lensker
Armin Lensker 2018년 3월 22일
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

댓글을 달려면 로그인하십시오.

답변 (4개)

Venkatesh Chilapur
Venkatesh Chilapur 2017년 8월 23일
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
  댓글 수: 4
Armin Lensker
Armin Lensker 2018년 3월 25일
편집: Armin Lensker 2018년 3월 25일
Hello Michael!
Look at the comment to my first post, I attached some screenshots of my models there. The algorithm will usually not have its best performance at low speeds because of the nature of the approach. However, the algorithm proposed by TI is not optimal: A better solution is the use of a "two phase type PLL". You can find much literature about it, i.e. on IEEE Xplore. The following blog provides a very good introduction into the topic: Blog Part 1 Blog Part 2 Blog Part 3
Best regards, Armin
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

댓글을 달려면 로그인하십시오.

Michael Valasek
Michael Valasek 2018년 3월 29일
편집: Michael Valasek 2018년 3월 29일
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
Armin Lensker
Armin Lensker 2018년 3월 30일
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

댓글을 달려면 로그인하십시오.

Pradyumna Ranjan Ghosh
Pradyumna Ranjan Ghosh 2019년 3월 22일
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 2022년 9월 17일
You can see this video

Community Treasure Hunt

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

Start Hunting!

Translated by