motor spins

Dependencies:   mbed

Fork of analoghalls5 by Bayley Wang

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers inverter.cpp Source File

inverter.cpp

00001 #include "includes.h"
00002 #include "core.h"
00003 #include "sensors.h"
00004 
00005 Inverter::Inverter(PinName ph_a, PinName ph_b, PinName ph_c, PinName en, VoltageSensor *sense_bus, TempSensor *sense_t) {
00006     _en = new DigitalOut(en);
00007     Disable();
00008     
00009     _pwm_a = new PwmOut(ph_a);
00010     _pwm_b = new PwmOut(ph_b);
00011     _pwm_c = new PwmOut(ph_c);
00012     _pwm_a->period_us(100);
00013     _pwm_b->period_us(100);
00014     _pwm_c->period_us(100);
00015     
00016     _sense_bus = sense_bus;
00017     _sense_t = sense_t;
00018     
00019     SetDtcA(0);
00020     SetDtcB(0);
00021     SetDtcC(0);
00022     
00023     TIM2->CR1 &= ~(TIM_CR1_CEN);
00024     TIM2->CR1 |= TIM_CR1_CMS;
00025     TIM2->CR1 |= TIM_CR1_CEN;
00026     
00027     UpdateVbus();
00028     UpdateTemp();
00029     Enable();
00030 }
00031 
00032 void Inverter::SetDtcA(float dtc) {
00033     if (dtc < 0) dtc = 0.0f;
00034     if (dtc > 1.0f) dtc = 1.0f;
00035     *_pwm_a = dtcA = dtc;
00036 } 
00037 
00038 void Inverter::SetDtcB(float dtc) {
00039     if (dtc < 0) dtc = 0.0f;
00040     if (dtc > 1.0f) dtc = 1.0f;
00041     *_pwm_b = dtcB = 1.0f - dtc;
00042 } 
00043 
00044 void Inverter::SetDtcC(float dtc) {
00045     if (dtc < 0) dtc = 0.0f;
00046     if (dtc > 1.0f) dtc = 1.0f;
00047     *_pwm_c = dtcC = dtc;
00048 }
00049 
00050 void Inverter::Enable() {
00051     *_en = 0;
00052 }
00053 
00054 void Inverter::Disable() {
00055     *_en = 1;
00056 }
00057 
00058 float Inverter::UpdateVbus() {
00059     return v_bus = _sense_bus->GetVoltage();
00060 }
00061 
00062 float Inverter::UpdateTemp() {
00063     return temp = _sense_t->GetTemp();
00064 }