![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
i2c working
Fork of BAE_FRDMTESIN2 by
ACS.cpp@10:ed6d3b8d1d56, 2014-12-16 (annotated)
- Committer:
- greenroshks
- Date:
- Tue Dec 16 07:44:54 2014 +0000
- Revision:
- 10:ed6d3b8d1d56
- Parent:
- 0:8b0d43fe6c05
working
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
greenroshks | 0:8b0d43fe6c05 | 1 | #include "ACS.h" |
greenroshks | 0:8b0d43fe6c05 | 2 | |
greenroshks | 0:8b0d43fe6c05 | 3 | |
greenroshks | 0:8b0d43fe6c05 | 4 | PwmOut PWM1(PTD4); //Functions used to generate PWM signal |
greenroshks | 0:8b0d43fe6c05 | 5 | //PWM output comes from pins p6 |
greenroshks | 0:8b0d43fe6c05 | 6 | Serial pc1(USBTX, USBRX); |
greenroshks | 0:8b0d43fe6c05 | 7 | |
greenroshks | 0:8b0d43fe6c05 | 8 | |
greenroshks | 0:8b0d43fe6c05 | 9 | void FUNC_ACS_GENPWM() |
greenroshks | 0:8b0d43fe6c05 | 10 | { |
greenroshks | 0:8b0d43fe6c05 | 11 | printf("\nEnterd PWMGEN function\n"); |
greenroshks | 0:8b0d43fe6c05 | 12 | double DCx = 0; //Duty cycle of Moment in x, y, z directions |
greenroshks | 0:8b0d43fe6c05 | 13 | double ix = 0; //Current sent in x, y, z TR's |
greenroshks | 0:8b0d43fe6c05 | 14 | float timep = 0.02 ; |
greenroshks | 0:8b0d43fe6c05 | 15 | double Mx=1.5; //Time period is set to 0.2s |
greenroshks | 0:8b0d43fe6c05 | 16 | //Moment in x, y, z directions |
greenroshks | 0:8b0d43fe6c05 | 17 | |
greenroshks | 0:8b0d43fe6c05 | 18 | |
greenroshks | 0:8b0d43fe6c05 | 19 | ix = Mx * 0.3 ; //Moment and Current always have the linear relationship |
greenroshks | 0:8b0d43fe6c05 | 20 | |
greenroshks | 0:8b0d43fe6c05 | 21 | if( ix>0&& ix < 0.006 ) //Current and Duty cycle have the linear relationship between 1% and 100% |
greenroshks | 0:8b0d43fe6c05 | 22 | { |
greenroshks | 0:8b0d43fe6c05 | 23 | DCx = 6*1000000*pow(ix,4) - 377291*pow(ix,3) + 4689.6*pow(ix,2) + 149.19*ix - 0.0008; |
greenroshks | 0:8b0d43fe6c05 | 24 | PWM1.period(timep); |
greenroshks | 0:8b0d43fe6c05 | 25 | PWM1 = DCx/100 ; |
greenroshks | 0:8b0d43fe6c05 | 26 | } |
greenroshks | 0:8b0d43fe6c05 | 27 | else if( ix >= 0.006&& ix < 0.0116) |
greenroshks | 0:8b0d43fe6c05 | 28 | { |
greenroshks | 0:8b0d43fe6c05 | 29 | DCx = 1*100000000*pow(ix,4) - 5*1000000*pow(ix,3) + 62603*pow(ix,2) - 199.29*ix + 0.7648; |
greenroshks | 0:8b0d43fe6c05 | 30 | PWM1.period(timep); |
greenroshks | 0:8b0d43fe6c05 | 31 | PWM1 = DCx/100 ; |
greenroshks | 0:8b0d43fe6c05 | 32 | } |
greenroshks | 0:8b0d43fe6c05 | 33 | else if (ix >= 0.0116&& ix < 0.0624) |
greenroshks | 0:8b0d43fe6c05 | 34 | { |
greenroshks | 0:8b0d43fe6c05 | 35 | |
greenroshks | 0:8b0d43fe6c05 | 36 | DCx = 212444*pow(ix,4) - 33244*pow(ix,3) + 1778.4*pow(ix,2) + 120.91*ix + 0.3878; |
greenroshks | 0:8b0d43fe6c05 | 37 | PWM1.period(timep); |
greenroshks | 0:8b0d43fe6c05 | 38 | PWM1 = DCx/100 ; |
greenroshks | 0:8b0d43fe6c05 | 39 | } |
greenroshks | 0:8b0d43fe6c05 | 40 | else if(ix >= 0.0624&& ix < 0.555) |
greenroshks | 0:8b0d43fe6c05 | 41 | { |
greenroshks | 0:8b0d43fe6c05 | 42 | printf("\nACS entered if\n"); |
greenroshks | 0:8b0d43fe6c05 | 43 | DCx = 331.15*pow(ix,4) - 368.09*pow(ix,3) + 140.43*pow(ix,2) + 158.59*ix + 0.0338; |
greenroshks | 0:8b0d43fe6c05 | 44 | PWM1.period(timep); |
greenroshks | 0:8b0d43fe6c05 | 45 | PWM1 = DCx/100 ; |
greenroshks | 0:8b0d43fe6c05 | 46 | } |
greenroshks | 0:8b0d43fe6c05 | 47 | else if(ix==0) |
greenroshks | 0:8b0d43fe6c05 | 48 | { |
greenroshks | 0:8b0d43fe6c05 | 49 | DCx = 0; |
greenroshks | 0:8b0d43fe6c05 | 50 | PWM1.period(timep); |
greenroshks | 0:8b0d43fe6c05 | 51 | PWM1 = DCx/100 ; |
greenroshks | 0:8b0d43fe6c05 | 52 | } |
greenroshks | 0:8b0d43fe6c05 | 53 | else |
greenroshks | 0:8b0d43fe6c05 | 54 | { |
greenroshks | 0:8b0d43fe6c05 | 55 | // printf("!!!!!!!!!!Error!!!!!!!!!"); |
greenroshks | 0:8b0d43fe6c05 | 56 | } |
greenroshks | 0:8b0d43fe6c05 | 57 | |
greenroshks | 0:8b0d43fe6c05 | 58 | |
greenroshks | 0:8b0d43fe6c05 | 59 | printf("\nExited PWMGEN function\n"); |
greenroshks | 0:8b0d43fe6c05 | 60 | } |
greenroshks | 0:8b0d43fe6c05 | 61 |