Rotor Angle measurement from QEP through TMS320F2812

Altair Forum User
Altair Forum User
Altair Employee
edited October 2020 in Community Q&A

Submitted by rajinmlinus on Thu, 02/06/2014 - 11:57 

Dear Sir/ Madam

I am using TMS320F2812 dsp Processor. To get the rotor angle i have used QEP encoder and the QEP encoder will produce the pulse of 2000 per cycle. In visim i am using F281x quadrature encoder. please any one explain how we can get the rotor angle from the block and i need to give this rotor angle for the DQ to ABC conversion of the PMSM stator current. I have gone through the example available. I am in unable to understand.

Also, can any one tell me in worked example for one cycle how much pulses they have considered.

Tagged:

Answers

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited November 2020

    Submitted by Anders89 on Sun, 02/09/2014 - 11:21.

    To use the angle in DQ to ABC (Park) transform as they are provided by VisSim/ECD, you must normalize it to unity scale, so multiply it by 1/(encoder count). This normalization to unity is also required for the QEP Speed calculator. See attached diagram below. (you must be signed in to see it).

    Unable to find an attachment - read this blog

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited June 2016

    Submitted by rajinmlinus on Tue, 02/11/2014 - 10:59.

    Thank you sir for your reply. My doubt is the processor frequency is 4 times faster than the outside frequency. If the encoder pulses are 2000 counts for one cycle we have to multiply the output by (1/8000)=0.000125 right?. This is happening in the file pmsm31B2.vsm. If i am wrong please correct me.

    Rajin M Linus

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited June 2016

    Submitted by Anders89 on Tue, 02/11/2014 - 11:22.

    Not sure what you mean by the processor frequency is 4 times faster than the outside frequency. After normalizing the encoder counts you must multiply by the number of pole pairs and do modulo 1 so that you get a complete angle 'revolution' for each pole pair. So if there are 2000 counts per mechanical revolution, and there are 4 pole-pairs of magnets, you multiply the encoder count by 4/2000 = .002, then you take modulo 1 to get 4 mini-rotations per mechanical rotation.

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited June 2016

    Submitted by rajinmlinus on Sat, 08/02/2014 - 18:27.

    Dear Anders Is the attached file is for the encoder pulse of 2000 counts? If so can you tell me how the theta offset is -1 in the attached file. Thank you

    Rajin M Linus

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited June 2016

    Submitted by pete on Tue, 08/05/2014 - 20:13.

    Rajin, in the file 'PMSM31B2.vsm' that was attached previously, in the quadrature encoder normalization logic, there is a fixed-point sum of -1 where the input has been negated. This is fed into a merge block that tests to see if the angle is negative and adds one if it is. The reason for subtracting -1 instead of simply adding 1 is due to the fx1.16 fixed-point format being used. Since there is only a single sign bit and the rest are fractional bits, you can represent -1 but not 1 due to two's complement arithmetic The conditional addition of 1 is only needed to account for use of a negative angle offset, in the PMSM31B2.vsm diagram the angle offset is not used, so you can remove that logic if you want.

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited June 2016

    Submitted by stenod on Fri, 01/29/2016 - 16:21.

    In vissim source code file, I am placing eQEP1 (embeded>F280x>)block. What should be its(eQEP block) parameter setting(count mode=? position reset=? etc) . and how will i see output of eQEP in debug file. Shall I connect any block at QPOSCNT1 terminal of eQEP block in source code. Please suggest