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.
Dependencies: mbed-dev-f303 FastPWM3
main.cpp
- Committer:
- benkatz
- Date:
- 2016-02-05
- Revision:
- 0:4e1c4df6aabd
- Child:
- 1:b8bceb4daed5
File content as of revision 0:4e1c4df6aabd:
#include "mbed.h"
#include "PositionSensor.h"
#include "Inverter.h"
#include "SVM.h"
#include "FastMath.h"
#include "Transforms.h"
#include "CurrentRegulator.h"
PositionSensorEncoder encoder(8192,0);
Inverter inverter(PA_5, PB_10, PB_3, PB_7, 0.02014160156, 0.00005);
CurrentRegulator foc(&inverter, &encoder, .005, .5);
Ticker testing;
//SPWM spwm(&inverter, 2.0);
//DigitalOut Dbg_pin(PA_15);
using namespace FastMath;
using namespace Transforms;
float offset = 0;//-0.24;
/*
float v_alpha = 0;
float v_beta = 0;
float i_d = 0;
float i_q = 1;
float v_d = 0;
float v_q = -.2;
float f;
float theta;
*/
extern "C" void TIM2_IRQHandler(void) {
// flash on update event
if (TIM2->SR & TIM_SR_UIF & TIM2->CNT>0x465) {
inverter.SampleCurrent();
}
TIM2->SR = 0x0; // reset the status register
}
/*
void PrintEncoder(void){
printf("%f\n\r", encoder.GetElecPosition());
//printf("%f\n\r", encoder.GetMechPosition());
//printf("%d\n\r", TIM3->CNT-0x8000);
}
*/
void Loop(void){
foc.Commutate();
}
/*
void voltage_foc(void){
theta = encoder.GetElecPosition() + offset;
InvPark(v_d, v_q, theta, &v_alpha, &v_beta);
spwm.Update_DTC(v_alpha, v_beta);
//output.write(theta/6.28318530718f);
}
*/
/*
void open_loop(void){
f = t.read();
v_alpha = 0.1f*sin(10.0f*f);
v_beta = 0.1f*cos(10.0f*f);
spwm.Update_DTC(v_alpha, v_beta);
}
*/
int main() {
wait(1);
testing.attach(&Loop, .0001);
//inverter.EnableInverter();
while(1) {
}
}