Prius IPM controller

Dependencies:   mbed

Fork of analoghalls5_5 by N K

util/transforms.cpp

Committer:
nki
Date:
2015-03-14
Revision:
27:846c08fb3697
Parent:
14:1cc975207995
Child:
33:e7b132029bae

File content as of revision 27:846c08fb3697:

#include "includes.h"
#include "transforms.h"
#include "fastmath.h"

void Transforms::Clarke(float a, float b, float *alpha, float *beta) {    
    *alpha = a;
    *beta = (a + 2.0f * b)/sqrt(3.0f);
}

void Transforms::InverseClarke(float alpha, float beta, float *a, float *b) {
    *a = alpha;
    *b = -0.5 * alpha + sqrt(3.0f) / 2.0f * beta;
}

void Transforms::Parke(float beta, float alpha, float theta, float *d, float *q) {  
    //reversed alpha and beta order to make d and q ~=constant.
    //I did this because alpha was found to be sinusoidal and beta was found to be cosinusoidal.  the equation has to take the form sin^2 + cos^2, not sin*cos + sin*cos.
    float cos = FastCos(theta);
    float sin = FastSin(theta);

    *d = alpha * cos + beta * sin;
    *q = -alpha * sin + beta * cos;

}

void Transforms::InverseParke(float d, float q, float theta, float *alpha, float *beta) {  
    float cos = FastCos(theta);
    float sin = FastSin(theta);

    *alpha = cos * d - sin * q;
    *beta = sin * d + cos * q; 
                              
}