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.
Revision 1:50fceb76f482, committed 2015-08-28
- 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();
}
}