H2M Teststand / Mbed 2 deprecated H2M_Snippets

Dependencies:   mbed

Fork of Low_Cost_PWM by Hans Dampf

Committer:
Racer01014
Date:
Wed Sep 10 12:59:51 2014 +0000
Revision:
6:f97371e6bc3e
Parent:
3:77adbd7956b9
-

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Racer01014 0:13b8e78aee30 1 #include "mbed.h"
Racer01014 0:13b8e78aee30 2
Racer01014 2:5798dde60822 3
Racer01014 2:5798dde60822 4 #define PI 3.1415926
Racer01014 2:5798dde60822 5 #define DMS_torque_factor 0.3
Racer01014 2:5798dde60822 6
Racer01014 0:13b8e78aee30 7 //*******************************************
Racer01014 0:13b8e78aee30 8 //****INPUTS*********************************
Racer01014 2:5798dde60822 9
Racer01014 2:5798dde60822 10 PwmOut Motor_Fet(p22);
Racer01014 2:5798dde60822 11
Racer01014 2:5798dde60822 12 DigitalIn Light_Barrier(p14);
Racer01014 0:13b8e78aee30 13
Racer01014 2:5798dde60822 14 DigitalOut Fet_Brake(p21);
Racer01014 2:5798dde60822 15 DigitalOut Mux_0(p15);
Racer01014 2:5798dde60822 16 DigitalOut Mux_1(p16);
Racer01014 0:13b8e78aee30 17
Racer01014 2:5798dde60822 18 AnalogIn DMS_Value(p17);
Racer01014 0:13b8e78aee30 19
Racer01014 0:13b8e78aee30 20 //*******************************************
Racer01014 2:5798dde60822 21 //****COMM***********************************
Racer01014 2:5798dde60822 22
Racer01014 2:5798dde60822 23 Serial pc(USBTX, USBRX); // tx, rx
Racer01014 2:5798dde60822 24
Racer01014 2:5798dde60822 25 //*******************************************
Racer01014 2:5798dde60822 26 //****Timer**********************************
Racer01014 2:5798dde60822 27
Racer01014 2:5798dde60822 28 Timer Light;
Racer01014 2:5798dde60822 29
Racer01014 2:5798dde60822 30 void read_sensors(void);
Racer01014 2:5798dde60822 31
Racer01014 2:5798dde60822 32 //****************************************************
Racer01014 2:5798dde60822 33 //****MAIN-FUNCTION***********************************
Racer01014 0:13b8e78aee30 34
Racer01014 0:13b8e78aee30 35 int main()
Racer01014 0:13b8e78aee30 36 {
Racer01014 2:5798dde60822 37 bool lock = 0;
Racer01014 2:5798dde60822 38 int diff_rpm = 0, spec_rpm = 0, time_passed = 0, DMS_Value = 0;
Racer01014 2:5798dde60822 39 int Motor_C = 0, Motor_V = 0, Brake_C = 0, Brake_V = 0;
Racer01014 2:5798dde60822 40 int Temp_0 = 0, Temp_1 = 0, Temp_2 = 0, Aux = 0;
Racer01014 2:5798dde60822 41 float torque = 0, Mech_Power = 0 , act_rps = 0, act_rpm = 0;
Racer01014 2:5798dde60822 42 float Elec_Power = 0;
Racer01014 2:5798dde60822 43
Racer01014 0:13b8e78aee30 44
Racer01014 2:5798dde60822 45
Racer01014 2:5798dde60822 46
Racer01014 2:5798dde60822 47
Racer01014 2:5798dde60822 48 Motor_Fet.period_us(20000); //20ms period servo signal
Racer01014 2:5798dde60822 49 Motor_Fet.pulsewidth_us(900); //900us startup value
Racer01014 0:13b8e78aee30 50
Racer01014 2:5798dde60822 51
Racer01014 2:5798dde60822 52 //**************************Main-Circle*******************************
Racer01014 0:13b8e78aee30 53
Racer01014 0:13b8e78aee30 54 while(1)
Racer01014 0:13b8e78aee30 55 {
Racer01014 0:13b8e78aee30 56 //**************************LIGHTBARRIER*******************************
Racer01014 2:5798dde60822 57
Racer01014 2:5798dde60822 58 //Light_Barrier_Low = Trigger
Racer01014 2:5798dde60822 59 if (!Light_Barrier) //Detects Falling Edge of the Light_Barrier
Racer01014 2:5798dde60822 60 {
Racer01014 2:5798dde60822 61
Racer01014 2:5798dde60822 62 if (!lock) //Asures First Run since detected Edge
Racer01014 2:5798dde60822 63 {
Racer01014 2:5798dde60822 64 Light.stop(); //Stops Timer
Racer01014 2:5798dde60822 65 time_passed = Light.read_us();
Racer01014 2:5798dde60822 66 Light.start(); //Starts Timer
Racer01014 2:5798dde60822 67 lock = 1; //Asures just one counter-increase per Falling Edge -> Locks timer
Racer01014 0:13b8e78aee30 68 }
Racer01014 0:13b8e78aee30 69 }
Racer01014 0:13b8e78aee30 70 else
Racer01014 2:5798dde60822 71 lock = 0; //Unlocks timer-lock with High-Level of Light_Barrier
Racer01014 0:13b8e78aee30 72
Racer01014 0:13b8e78aee30 73 //**************************LIGHTBARRIER*******************************
Racer01014 2:5798dde60822 74
Racer01014 2:5798dde60822 75
Racer01014 2:5798dde60822 76 //**************************RPS****************************************
Racer01014 2:5798dde60822 77
Racer01014 2:5798dde60822 78 act_rps = (1 / time_passed) * 1E06;
Racer01014 2:5798dde60822 79 act_rpm = act_rps * 60;
Racer01014 2:5798dde60822 80
Racer01014 2:5798dde60822 81 //**************************RPS****************************************
Racer01014 0:13b8e78aee30 82
Racer01014 0:13b8e78aee30 83
Racer01014 0:13b8e78aee30 84 //**************************Specified-rpm******************************
Racer01014 0:13b8e78aee30 85
Racer01014 2:5798dde60822 86 if (pc.readable()) //Just call if theres a value...
Racer01014 2:5798dde60822 87 {
Racer01014 2:5798dde60822 88 scanf("%i", &spec_rpm);
Racer01014 2:5798dde60822 89 }
Racer01014 2:5798dde60822 90
Racer01014 2:5798dde60822 91 //**************************Specified-rpm******************************
Racer01014 0:13b8e78aee30 92
Racer01014 2:5798dde60822 93 //**************************Diff-rpm***********************************
Racer01014 2:5798dde60822 94
Racer01014 2:5798dde60822 95 diff_rpm = spec_rpm - (time_passed * 0.0036);
Racer01014 2:5798dde60822 96
Racer01014 2:5798dde60822 97 //**************************Diff-rpm***********************************
Racer01014 2:5798dde60822 98
Racer01014 2:5798dde60822 99
Racer01014 2:5798dde60822 100 //**************************Set-PWM************************************
Racer01014 2:5798dde60822 101
Racer01014 2:5798dde60822 102 Motor_Fet.pulsewidth_us();
Racer01014 2:5798dde60822 103
Racer01014 2:5798dde60822 104 //**************************Set-PWM************************************
Racer01014 2:5798dde60822 105
Racer01014 2:5798dde60822 106
Racer01014 2:5798dde60822 107 //**************************Read-Sensors*******************************
Racer01014 2:5798dde60822 108
Racer01014 2:5798dde60822 109 read_sensors();
Racer01014 2:5798dde60822 110
Racer01014 2:5798dde60822 111 //**************************Read-Sensors*******************************
Racer01014 2:5798dde60822 112
Racer01014 2:5798dde60822 113
Racer01014 2:5798dde60822 114 //**************************DMS****************************************
Racer01014 2:5798dde60822 115
Racer01014 3:77adbd7956b9 116 torque = DMS_Value * DMS_torque_factor; //Calculating torque
Racer01014 0:13b8e78aee30 117
Racer01014 2:5798dde60822 118 //**************************DMS****************************************
Racer01014 2:5798dde60822 119
Racer01014 2:5798dde60822 120 //**************************Mech-Power*********************************
Racer01014 2:5798dde60822 121
Racer01014 2:5798dde60822 122 Mech_Power = torque * 2 * PI * act_rps; //Calculating Mechanical Power
Racer01014 2:5798dde60822 123
Racer01014 2:5798dde60822 124 //**************************Mech-Power*********************************
Racer01014 2:5798dde60822 125
Racer01014 2:5798dde60822 126 //**************************Elec-Power*********************************
Racer01014 2:5798dde60822 127
Racer01014 2:5798dde60822 128 Elec_Power = Motor_V * Motor_C;
Racer01014 2:5798dde60822 129
Racer01014 2:5798dde60822 130 //**************************Elec-Power*********************************
Racer01014 2:5798dde60822 131
Racer01014 2:5798dde60822 132
Racer01014 0:13b8e78aee30 133 }
Racer01014 2:5798dde60822 134 }
Racer01014 0:13b8e78aee30 135
Racer01014 2:5798dde60822 136 void read_sensors(void)
Racer01014 2:5798dde60822 137 {
Racer01014 3:77adbd7956b9 138 int Messwert_0 = 0, Messwert_1 = 0;
Racer01014 3:77adbd7956b9 139
Racer01014 3:77adbd7956b9 140 Mux_0 = 0, Mux_1 = 0;
Racer01014 3:77adbd7956b9 141
Racer01014 3:77adbd7956b9 142 //Selection of Multiplexer states
Racer01014 3:77adbd7956b9 143
Racer01014 3:77adbd7956b9 144 for (int i=0; i<=4; i++) {
Racer01014 3:77adbd7956b9 145
Racer01014 3:77adbd7956b9 146
Racer01014 3:77adbd7956b9 147 Mux_0 = i&0x01;
Racer01014 3:77adbd7956b9 148 Mux_1 = (i>>1)&0x01;
Racer01014 3:77adbd7956b9 149 wait(0.00001);
Racer01014 3:77adbd7956b9 150
Racer01014 3:77adbd7956b9 151 Messwert_0 = Messkanal_0.read_u16();
Racer01014 3:77adbd7956b9 152 Messwert_1 = Messkanal_1.read_u16();
Racer01014 3:77adbd7956b9 153
Racer01014 3:77adbd7956b9 154 switch(i) {
Racer01014 3:77adbd7956b9 155 case 0: {
Racer01014 3:77adbd7956b9 156 Temperatur_1 = Messwert_0 ;
Racer01014 3:77adbd7956b9 157 Motorspannung = Messwert_1 * 0.000515 - 0.05 ; //Gute Näherung von 2- ~23V. Dannach zu niedrig.Z-Diode
Racer01014 3:77adbd7956b9 158 break;
Racer01014 3:77adbd7956b9 159 }
Racer01014 3:77adbd7956b9 160
Racer01014 3:77adbd7956b9 161 case 1: {
Racer01014 3:77adbd7956b9 162 Temperatur_2 = Messwert_0 ;
Racer01014 3:77adbd7956b9 163 Motorstrom = Messwert_1 * 0.000396 - 4.15;//
Racer01014 3:77adbd7956b9 164 break;
Racer01014 3:77adbd7956b9 165 }
Racer01014 3:77adbd7956b9 166
Racer01014 3:77adbd7956b9 167 case 2: {
Racer01014 3:77adbd7956b9 168 Temperatur_3 = Messwert_0;
Racer01014 3:77adbd7956b9 169 Bremsenspannung = Messwert_1 * 0.000515 - 0.05;//Gute Näherung von 2- ~23V. Dannach zu niedrig.Z-Diode
Racer01014 3:77adbd7956b9 170 break;
Racer01014 3:77adbd7956b9 171 }
Racer01014 3:77adbd7956b9 172
Racer01014 3:77adbd7956b9 173 case 3: {
Racer01014 3:77adbd7956b9 174 Aux = Messwert_0 / 1629;
Racer01014 3:77adbd7956b9 175 Bremsenstrom = Messwert_1; //* 0.00032 - 15.8;
Racer01014 3:77adbd7956b9 176 break;
Racer01014 3:77adbd7956b9 177 }
Racer01014 3:77adbd7956b9 178
Racer01014 3:77adbd7956b9 179
Racer01014 3:77adbd7956b9 180 }
Racer01014 3:77adbd7956b9 181
Racer01014 3:77adbd7956b9 182 }
Racer01014 0:13b8e78aee30 183 }
Racer01014 2:5798dde60822 184