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

Dependencies:   mbed

Fork of analoghalls6 by N K

Committer:
nki
Date:
Fri Mar 06 19:12:53 2015 +0000
Revision:
9:d3b70c15baa9
Parent:
6:99ee0ce47fb2
Child:
10:b4abecccec7a
loop is closed.;

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 9:d3b70c15baa9 12 _inverter->SetDtcA(va/2.0f + 0.5f);
nki 9:d3b70c15baa9 13 _inverter->SetDtcB(((-va + sqrt(3.0f)*vb)/2.0f)/2.0f + 0.5f);
nki 9:d3b70c15baa9 14 _inverter->SetDtcC(((-va - sqrt(3.0f)*vb)/2.0f)/2.0f + 0.5f);
nki 6:99ee0ce47fb2 15
nki 9:d3b70c15baa9 16 /*
nki 9:d3b70c15baa9 17 _inverter->SetDtcA((LutSin(va)/2.0f)+0.5f);
nki 9:d3b70c15baa9 18 _inverter->SetDtcB((LutSin(va - 120.0f)/2.0f)+0.5f);
nki 9:d3b70c15baa9 19 _inverter->SetDtcC((LutSin(va + 120.0f)/2.0f)+0.5f);
nki 9:d3b70c15baa9 20 */
nki 6:99ee0ce47fb2 21
nki 9:d3b70c15baa9 22 test_DtcA = vb/2.0f + 0.5f;
nki 9:d3b70c15baa9 23 test_DtcB = ((-vb + sqrt(3.0f)*va)/2.0f)/2.0f + 0.5f;
nki 9:d3b70c15baa9 24 test_DtcC = ((-vb - sqrt(3.0f)*va)/2.0f)/2.0f + 0.5f;
nki 6:99ee0ce47fb2 25
nki 6:99ee0ce47fb2 26
nki 6:99ee0ce47fb2 27 /*
nki 6:99ee0ce47fb2 28 _inverter->SetDtcA(1.0f);
nki 6:99ee0ce47fb2 29 _inverter->SetDtcB(0.5f);
nki 6:99ee0ce47fb2 30 _inverter->SetDtcC(1.0f);
nki 6:99ee0ce47fb2 31 */
nki 9:d3b70c15baa9 32 }
nki 9:d3b70c15baa9 33
nki 9:d3b70c15baa9 34 float SinusoidalModulator::LutSin(float theta) {
nki 9:d3b70c15baa9 35 if (theta < 0.0f) theta += 360.0f;
nki 9:d3b70c15baa9 36 if (theta >= 360.0f) theta -= 360.0f;
nki 9:d3b70c15baa9 37 return sinetab[(int) theta] * 2.0f - 1.0f;
nki 9:d3b70c15baa9 38 }
nki 9:d3b70c15baa9 39
nki 9:d3b70c15baa9 40 float SinusoidalModulator::LutCos(float theta) {
nki 9:d3b70c15baa9 41 return LutSin(90.0f - theta);
bwang 0:54cf32d35f4d 42 }