motor spins

Dependencies:   mbed

Fork of analoghalls5 by Bayley Wang

Committer:
nki
Date:
Wed Mar 04 15:33:32 2015 +0000
Revision:
6:99ee0ce47fb2
Parent:
5:ee1e6c84c302
3/4;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 1:1f58bdcf2956 1 #include "includes.h"
bwang 1:1f58bdcf2956 2 #include "core.h"
bwang 1:1f58bdcf2956 3 #include "sensors.h"
bwang 1:1f58bdcf2956 4 #include "meta.h"
nki 4:fdadf4a3577a 5 #include "lut.h"
bwang 1:1f58bdcf2956 6
bwang 1:1f58bdcf2956 7 unsigned long StatusUpdater::_time;
bwang 1:1f58bdcf2956 8
bwang 1:1f58bdcf2956 9 StatusUpdater::StatusUpdater(Inverter *inverter, Motor *motor, User *user) {
bwang 1:1f58bdcf2956 10 _inverter = inverter;
nki 4:fdadf4a3577a 11 _motor = motor;
bwang 1:1f58bdcf2956 12 _user = user;
bwang 1:1f58bdcf2956 13 _fast_sample_rate = 5000;
bwang 1:1f58bdcf2956 14 _slow_sample_rate = 10;
bwang 1:1f58bdcf2956 15
bwang 1:1f58bdcf2956 16 _time_ticker.attach_us(&time_upd_isr, 50);
bwang 1:1f58bdcf2956 17 }
bwang 1:1f58bdcf2956 18
bwang 1:1f58bdcf2956 19 void StatusUpdater::Config(int fast_sample_rate, int slow_sample_rate) {
bwang 1:1f58bdcf2956 20 _fast_sample_rate = fast_sample_rate;
bwang 1:1f58bdcf2956 21 _slow_sample_rate = slow_sample_rate;
bwang 1:1f58bdcf2956 22 }
bwang 1:1f58bdcf2956 23
bwang 1:1f58bdcf2956 24 void StatusUpdater::time_upd_isr() {
nki 4:fdadf4a3577a 25 _time+= 50;
nki 4:fdadf4a3577a 26 }
nki 4:fdadf4a3577a 27
nki 4:fdadf4a3577a 28 float StatusUpdater::LutSin(float theta) {
nki 4:fdadf4a3577a 29 if (theta < 0.0f) theta += 360.0f;
nki 4:fdadf4a3577a 30 if (theta >= 360.0f) theta -= 360.0f;
nki 4:fdadf4a3577a 31 return sinetab[(int) theta];
nki 4:fdadf4a3577a 32 }
nki 4:fdadf4a3577a 33
nki 4:fdadf4a3577a 34 float StatusUpdater::LutCos(float theta) {
nki 4:fdadf4a3577a 35 return LutSin(90.0f - theta);
bwang 1:1f58bdcf2956 36 }
bwang 1:1f58bdcf2956 37
bwang 1:1f58bdcf2956 38 void StatusUpdater::Start() {
bwang 1:1f58bdcf2956 39 _time = 0;
bwang 1:1f58bdcf2956 40 int fast_us = 1000000 / _fast_sample_rate;
bwang 1:1f58bdcf2956 41 int slow_us = 1000000 / _slow_sample_rate;
bwang 1:1f58bdcf2956 42
bwang 1:1f58bdcf2956 43 int last_fast = 0;
bwang 1:1f58bdcf2956 44 int last_slow = 0;
bwang 1:1f58bdcf2956 45
nki 4:fdadf4a3577a 46 for(;;) {
bwang 1:1f58bdcf2956 47 if (_time - last_fast > fast_us) {
nki 6:99ee0ce47fb2 48
bwang 1:1f58bdcf2956 49 _motor->UpdateState();
bwang 1:1f58bdcf2956 50 _inverter->UpdateVbus();
bwang 1:1f58bdcf2956 51 last_fast = _time;
nki 6:99ee0ce47fb2 52
nki 6:99ee0ce47fb2 53 pc->printf("%f %f %f %f %f\n\r", _motor->angle, _motor->I_c, _motor->I_b, test_alpha, test_beta);
nki 6:99ee0ce47fb2 54 //pc->printf("%f %f %f %f\n\r", _motor->angle);
nki 6:99ee0ce47fb2 55
bwang 1:1f58bdcf2956 56 }
nki 4:fdadf4a3577a 57
bwang 1:1f58bdcf2956 58 if (_time - last_slow > slow_us) {
nki 6:99ee0ce47fb2 59
bwang 1:1f58bdcf2956 60 _user->UpdateState();
bwang 1:1f58bdcf2956 61 _motor->UpdateTemp();
bwang 1:1f58bdcf2956 62 _inverter->UpdateTemp();
bwang 1:1f58bdcf2956 63 last_slow = _time;
nki 6:99ee0ce47fb2 64
nki 6:99ee0ce47fb2 65 //pc->printf("%f %f\n\r", _inverter->va, _inverter->vb);
bwang 1:1f58bdcf2956 66 }
bwang 1:1f58bdcf2956 67 }
bwang 1:1f58bdcf2956 68 }