working-est copy with class-based code. still open loop
Fork of analoghalls6 by
modulators.cpp@10:b4abecccec7a, 2015-03-08 (annotated)
- Committer:
- nki
- Date:
- Sun Mar 08 00:45:28 2015 +0000
- Revision:
- 10:b4abecccec7a
- Parent:
- 9:d3b70c15baa9
uguu;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |