Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of foc-ed_in_the_bot_compact by
Revision 3:9b20da3f0055, committed 2016-03-18
- Comitter:
- bwang
- Date:
- Fri Mar 18 10:52:45 2016 +0000
- Parent:
- 2:eabe8feaaabb
- Child:
- 4:a6669248ce4d
- Commit message:
- code is clean, code works
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri Mar 18 10:07:35 2016 +0000
+++ b/main.cpp Fri Mar 18 10:52:45 2016 +0000
@@ -23,16 +23,19 @@
float d_integral = 0.0f, q_integral = 0.0f;
float last_d = 0.0f, last_q = 0.0f;
-float d_ref = 0.0f, q_ref = -50.0f;
+float d_ref = -0.0f, q_ref = -50.0f;
-float d_filtered = 0.0f;
-float q_filtered = 0.0f;
+void main_loop();
+void zero_current();
+void config_globals();
+void startup_msg();
extern "C" void TIM1_UP_TIM10_IRQHandler(void) {
if (TIM1->SR & TIM_SR_UIF ) {
adval1 = ADC1->DR;
adval2 = ADC2->DR;
ADC1->CR2 |= 0x40000000;
+ //while((ADC1->SR & ADC_SR_EOC) == 0 || (ADC2->SR & ADC_SR_EOC) == 0) {}
}
TIM1->SR = 0x00;
}
@@ -135,22 +138,21 @@
}
void main_loop() {
- //float p = pos.GetElecPosition() - POS_OFFSET + PI / 2;
p = pos.GetElecPosition() - POS_OFFSET;
if (p < 0) p += 2 * PI;
float sin_p = sinf(p);
float cos_p = cosf(p);
- //float pos_dac = 0.85f * p / (2 * PI) + 0.05f;
- //DAC->DHR12R2 = (unsigned int) (pos_dac * 4096);
+ float pos_dac = 0.85f * p / (2 * PI) + 0.05f;
+ DAC->DHR12R2 = (unsigned int) (pos_dac * 4096);
ia = ((float) adval1 / 4096.0f * AVDD - I_OFFSET - ia_supp_offset) / I_SCALE;
ib = ((float) adval2 / 4096.0f * AVDD - I_OFFSET - ib_supp_offset) / I_SCALE;
ic = -ia - ib;
- float u = ib;//ic;
- float v = ic;//ia;
+ float u = ib;
+ float v = ic;
alpha = u;
beta = 1 / sqrtf(3.0f) * u + 2 / sqrtf(3.0f) * v;
@@ -158,11 +160,8 @@
d = alpha * cos_p - beta * sin_p;
q = -alpha * sin_p - beta * cos_p;
- d_filtered = 0.9f * d_filtered + 0.1f * d;
- q_filtered = 0.9f * q_filtered + 0.1f * q;
-
- float d_err = d_ref - d;//_filtered;
- float q_err = q_ref - q;//_filtered;
+ float d_err = d_ref - d;
+ float q_err = q_ref - q;
d_integral += d_err * KI;
q_integral += q_err * KI;
@@ -180,15 +179,9 @@
if (vq < -1.0f) vq = -1.0f;
if (vq > 1.0f) vq = 1.0f;
- DAC->DHR12R2 = (unsigned int) (-q * 20 + 2048);
+ //DAC->DHR12R2 = (unsigned int) (-q * 20 + 2048);
//DAC->DHR12R2 = (unsigned int) (-vd * 2000 + 2048);
- //vd = 0.0f;
- //vq = -1.0f;
-
- //float phase = asinf(vd / sqrtf(vq * vq + vd * vd));
- //DAC->DHR12R2 = (unsigned int) (phase / (PI / 2.0f) * 2000 + 2048);
-
float valpha = vd * cos_p - vq * sin_p;
float vbeta = vd * sin_p + vq * cos_p;
@@ -199,10 +192,6 @@
set_dtc(a, 0.5f + 0.5f * va);
set_dtc(b, 0.5f + 0.5f * vb);
set_dtc(c, 0.5f + 0.5f * vc);
-
- //set_dtc(a, 0.5f + 0.5f * cosf(p));
- //set_dtc(b, 0.5f + 0.5f * cosf(p + 2 * PI / 3));
- //set_dtc(c, 0.5f + 0.5f * cosf(p - 2 * PI / 3));
}
int main() {
@@ -212,14 +201,7 @@
Ticker loop;
loop.attach_us(main_loop, 200);
- //vd = 0.0f;
- //vq = 1.0f;
-
for (;;) {
-
- printf("%f\n\r", vd);
- wait_ms(100);
-
/*
q_ref = 0.0f;
wait(3);
@@ -227,18 +209,8 @@
state = !state;
q_ref = -50.0f;
wait(3);
- */
-
- /*
- vq = 0.0f;
- wait(3);
toggle = state;
state = !state;
- vq = -1.0f;
- wait(3);
*/
-
- //toggle = state;
- //state = !state;
}
}
