working-est copy with class-based code. still open loop

Dependencies:   mbed

Fork of analoghalls6 by N K

Committer:
nki
Date:
Sun Mar 08 00:45:28 2015 +0000
Revision:
10:b4abecccec7a
Parent:
9:d3b70c15baa9
uguu;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 0:54cf32d35f4d 1 #include "includes.h"
nki 9:d3b70c15baa9 2 #include "core.h"
bwang 1:1f58bdcf2956 3 #include "meta.h"
nki 9:d3b70c15baa9 4 #include "sensors.h"
nki 9:d3b70c15baa9 5 #include "lut.h"
bwang 0:54cf32d35f4d 6
nki 6:99ee0ce47fb2 7 void SinusoidalModulator::Update(float va, float vb) {
nki 6:99ee0ce47fb2 8 _inverter->va = va;
nki 6:99ee0ce47fb2 9 _inverter->vb = vb;
nki 6:99ee0ce47fb2 10
nki 9:d3b70c15baa9 11 //inverse \alpha \beta (Clarke) transform
nki 10:b4abecccec7a 12 _inverter->SetDtcA(va);
nki 10:b4abecccec7a 13 _inverter->SetDtcB(((-va + sqrt(3.0f)*vb)/2.0f));
nki 10:b4abecccec7a 14 _inverter->SetDtcC(((-va - sqrt(3.0f)*vb)/2.0f));
nki 10:b4abecccec7a 15
nki 10:b4abecccec7a 16 /*
nki 10:b4abecccec7a 17 test_alpha = va;
nki 10:b4abecccec7a 18 test_beta = ((-va + sqrt(3.0f)*vb)/2.0f);
nki 10:b4abecccec7a 19 */
nki 6:99ee0ce47fb2 20
nki 9:d3b70c15baa9 21 /*
nki 9:d3b70c15baa9 22 _inverter->SetDtcA((LutSin(va)/2.0f)+0.5f);
nki 9:d3b70c15baa9 23 _inverter->SetDtcB((LutSin(va - 120.0f)/2.0f)+0.5f);
nki 9:d3b70c15baa9 24 _inverter->SetDtcC((LutSin(va + 120.0f)/2.0f)+0.5f);
nki 9:d3b70c15baa9 25 */
nki 6:99ee0ce47fb2 26
nki 9:d3b70c15baa9 27 test_DtcA = vb/2.0f + 0.5f;
nki 9:d3b70c15baa9 28 test_DtcB = ((-vb + sqrt(3.0f)*va)/2.0f)/2.0f + 0.5f;
nki 9:d3b70c15baa9 29 test_DtcC = ((-vb - sqrt(3.0f)*va)/2.0f)/2.0f + 0.5f;
nki 6:99ee0ce47fb2 30
nki 6:99ee0ce47fb2 31
nki 6:99ee0ce47fb2 32 /*
nki 6:99ee0ce47fb2 33 _inverter->SetDtcA(1.0f);
nki 6:99ee0ce47fb2 34 _inverter->SetDtcB(0.5f);
nki 6:99ee0ce47fb2 35 _inverter->SetDtcC(1.0f);
nki 6:99ee0ce47fb2 36 */
nki 9:d3b70c15baa9 37 }
nki 9:d3b70c15baa9 38
nki 9:d3b70c15baa9 39 float SinusoidalModulator::LutSin(float theta) {
nki 9:d3b70c15baa9 40 if (theta < 0.0f) theta += 360.0f;
nki 9:d3b70c15baa9 41 if (theta >= 360.0f) theta -= 360.0f;
nki 9:d3b70c15baa9 42 return sinetab[(int) theta] * 2.0f - 1.0f;
nki 9:d3b70c15baa9 43 }
nki 9:d3b70c15baa9 44
nki 9:d3b70c15baa9 45 float SinusoidalModulator::LutCos(float theta) {
nki 9:d3b70c15baa9 46 return LutSin(90.0f - theta);
bwang 0:54cf32d35f4d 47 }