Max W / Mbed 2 deprecated Scooter_vonvorne

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
drummer
Date:
Fri Aug 28 10:11:55 2015 +0000
Parent:
0:e939a25fbcad
Commit message:
Stand bei der Pr?sentation

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Aug 26 10:44:27 2015 +0000
+++ b/main.cpp	Fri Aug 28 10:11:55 2015 +0000
@@ -12,25 +12,24 @@
 #define ZUSTAND_MAX_HINTEN 3
 
 
-DigitalOut EnableP(PB_10);
-PwmOut InP(PB_1);
-DigitalOut EnableN(PB_11);
-PwmOut InN(PA_6);
+PwmOut InN(D3);
+Timer timer1;
+AnalogIn SpannungHallSensor(A0);
+AnalogIn SpannungVorKabel(A3);
+AnalogIn SpannungNachKabel(A4);
 
-AnalogIn SpannungHallSensor(A0);
+Serial pc(SERIAL_TX, SERIAL_RX); // PINS EINSTELLEN!
 
 
+DigitalIn BremsTaster(PC_0);
+
 DigitalOut LampeVorne(PA_4);    //Scheinwerfer
 DigitalOut LampeHinten(PA_5);
+
 /*
 DigitalOut EnableUSB(PB_12);
 
 
-
-
-
-DigitalIn BremsTaster(PC_0);
-
 AnalogIn SpannungBatterie(PB_0);
 AnalogIn SpannungNachPMOS(PB_2);
 
@@ -38,13 +37,41 @@
 Serial Bluetooth(SERIAL_TX, SERIAL_RX);
 
 
-const int PMOS_Widerstand = 0.02;
+
 */
-const int PERIODEN_DAUER = 10000;
+
+const float Kabel_Widerstand = 0.32;
+
+const int PERIODEN_DAUER = 20000;
+
+const float MAX_LADUNG = 5800;
+const float MAX_ABFLUSS = 5000;
+
+
+int time1;
+float vol_vorher, akkustand, strom, akku_abfluss;
+float vol_nachher;
 
 
+void SpannungVorher(){
+    vol_vorher = 0;
+    
+    for (int i = 0; i < 300; i++) {
+        vol_vorher += SpannungVorKabel.read() * 3.3 * 6;
+    }
+    vol_vorher /= 300;
+}
 
+void SpannungNachher(){
+    vol_nachher = 0;
     
+    for (int i = 0; i < 300; i++) {
+        vol_nachher += SpannungNachKabel.read() * 3.3 * 6;
+    }
+    vol_nachher /= 300;
+}
+
+       
 float HallSensorWert(){
     float messung;
     messung = SpannungHallSensor.read() - 0.27; // read adc and rearange the voltage_value,because its 0.27 when the throttle is off
@@ -62,6 +89,12 @@
     return messung;
 }
 
+int BremsTasterWert(){
+    int TasterWert;  
+    TasterWert = BremsTaster.read(); // read breaksensor value(1/0)
+    return TasterWert; // return value
+}
+
 
 
 int ZustandVorne = 0;
@@ -87,38 +120,65 @@
     }
 }
 
+float HallSensorWertM = 0;
+
+void MotorInit() {
+    InN.period_ms(PERIODEN_DAUER);
+    InN.pulsewidth_us(0);
+}
+
+void GeschwindigkeitSetzen(){    
+        HallSensorWertM = HallSensorWert();
+
+        InN.pulsewidth_us(PERIODEN_DAUER*HallSensorWertM);
+}
+
+    
+float Ladung_Abfluss(int time, float vol_vorher,float vol_nachher){
+    float ladung;
+    strom = (vol_vorher - vol_nachher) / (Kabel_Widerstand);
+    ladung = strom*time;
+    akku_abfluss = akku_abfluss + ladung;
+    return akku_abfluss;
+    
+}
+    
+void MessungInit() {
+    time1 = 0;
+    vol_vorher = 0, akkustand = 0, akku_abfluss = 0;
+    vol_nachher = 0;
+}
+
+void MessungStarten() {
+        timer1.start();
+        SpannungVorher();
+        SpannungNachher();
+}
+
+void MessungStoppen() {
+    time1 = timer1.read_us();
+    timer1.stop();
+    timer1.reset();
+    akkustand = MAX_LADUNG - Ladung_Abfluss(time1, vol_vorher, vol_nachher);
+    pc.printf("Spannung_Batterie=%f, Spannung_nachher=%f, Strom=%f, Akkustand=%f --- \n",vol_vorher,vol_nachher, strom, akkustand);
+}
+
+    
 
 int main() {
-    EnableN = 1;
-    InN.period_us(PERIODEN_DAUER);
-    EnableP = 1;
-    InP.period_us(PERIODEN_DAUER);
     
+    MotorInit();
+    MessungInit();
+
     while(1) {
 
-        
+        MessungStarten();
         
-       InP.pulsewidth_us(PERIODEN_DAUER*HallSensorWert());
-       InN.pulsewidth_us(PERIODEN_DAUER*HallSensorWert());
-       
-       //InP.pulsewidth_us(PERIODEN_DAUER*0.5);
-      //InN.pulsewidth_us(PERIODEN_DAUER*0.5);
-       
-       
-       //LichtEinstellenVorne(VORNE_LEUCHTEN);
-       //LichtEinstellenHinten(HINTEN_LEUCHTEN);
-       
-       //wait(5);
+        if (vol_vorher > 13.2) {
+            GeschwindigkeitSetzen();
+        }
         
-       // LichtEinstellenVorne(VORNE_BLINKENSCHNELL);
-       //LichtEinstellenHinten(HINTEN_BLINKEN);
-       
-       //wait(5);
-       
-       // LichtEinstellenVorne(VORNE_AUS);
-       //LichtEinstellenHinten(HINTEN_AUS);
-       
-      // wait(5);
+        MessungStoppen();
         
     }
 }