N K
/
analoghalls6
motor spins
Fork of analoghalls5 by
Embed:
(wiki syntax)
Show/hide line numbers
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 }
Generated on Fri Jul 15 2022 12:15:05 by 1.7.2