For coursework of group 3 in SOFT564Z
Dependencies: Motordriver ros_lib_kinetic
Battery_Monitor.hpp@4:8afc50a3e4ac, 2019-11-30 (annotated)
- Committer:
- Jonathan738
- Date:
- Sat Nov 30 10:59:09 2019 +0000
- Revision:
- 4:8afc50a3e4ac
- Parent:
- 3:7da9888ac8dc
- Child:
- 11:0b9098ec11c7
Added Debug code, re-factored existing code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jonathan738 | 3:7da9888ac8dc | 1 | #include "mbed.h" |
Jonathan738 | 4:8afc50a3e4ac | 2 | #include "General.hpp" |
Jonathan738 | 4:8afc50a3e4ac | 3 | #include "Pins.h" |
Jonathan738 | 4:8afc50a3e4ac | 4 | |
Jonathan738 | 4:8afc50a3e4ac | 5 | #define Minimum_VBatt 3.6f |
Jonathan738 | 4:8afc50a3e4ac | 6 | #define Maximum_VBatt 5.0f |
Jonathan738 | 4:8afc50a3e4ac | 7 | #define PWM_Freq 200.0f |
Jonathan738 | 4:8afc50a3e4ac | 8 | |
Jonathan738 | 4:8afc50a3e4ac | 9 | #ifndef Define_ONCE_Battery_Monitoring |
Jonathan738 | 4:8afc50a3e4ac | 10 | #define Define_ONCE_Battery_Monitoring |
Jonathan738 | 3:7da9888ac8dc | 11 | |
Jonathan738 | 4:8afc50a3e4ac | 12 | class Battery_Monitor |
Jonathan738 | 4:8afc50a3e4ac | 13 | { |
Jonathan738 | 4:8afc50a3e4ac | 14 | public: |
Jonathan738 | 4:8afc50a3e4ac | 15 | Battery_Monitor(PinName Batt_PIN, int sample_Freq, PinName RED_Channel, PinName GREEN_Channel, PinName BLUE_Channel): V_Batt(Batt_PIN), Sample_Freq(sample_Freq), Channel_1(RED_Channel), Channel_2(GREEN_Channel), Channel_3(BLUE_Channel) |
Jonathan738 | 4:8afc50a3e4ac | 16 | { |
Jonathan738 | 4:8afc50a3e4ac | 17 | this->Channel_1.write(0.0f); |
Jonathan738 | 4:8afc50a3e4ac | 18 | this->Channel_1.period(1.0f/PWM_Freq); |
Jonathan738 | 4:8afc50a3e4ac | 19 | this->Channel_2.write(0.0f); |
Jonathan738 | 4:8afc50a3e4ac | 20 | this->Channel_2.period(1.0f/PWM_Freq); |
Jonathan738 | 4:8afc50a3e4ac | 21 | this->Channel_3.write(0.0f); |
Jonathan738 | 4:8afc50a3e4ac | 22 | this->Channel_3.period(1.0f/PWM_Freq); |
Jonathan738 | 4:8afc50a3e4ac | 23 | |
Jonathan738 | 4:8afc50a3e4ac | 24 | this->BattCheck.attach(this, &Battery_Monitor::battCheck, 1/Sample_Freq); |
Jonathan738 | 4:8afc50a3e4ac | 25 | }; |
Jonathan738 | 4:8afc50a3e4ac | 26 | |
Jonathan738 | 4:8afc50a3e4ac | 27 | float GetBatteryLevel(void) |
Jonathan738 | 4:8afc50a3e4ac | 28 | { |
Jonathan738 | 4:8afc50a3e4ac | 29 | return Battery_Level; |
Jonathan738 | 4:8afc50a3e4ac | 30 | } |
Jonathan738 | 4:8afc50a3e4ac | 31 | |
Jonathan738 | 4:8afc50a3e4ac | 32 | private: |
Jonathan738 | 4:8afc50a3e4ac | 33 | void battCheck(void); |
Jonathan738 | 4:8afc50a3e4ac | 34 | int Sample_Freq; |
Jonathan738 | 4:8afc50a3e4ac | 35 | |
Jonathan738 | 4:8afc50a3e4ac | 36 | float Battery_Level; |
Jonathan738 | 4:8afc50a3e4ac | 37 | |
Jonathan738 | 4:8afc50a3e4ac | 38 | Ticker BattCheck; |
Jonathan738 | 4:8afc50a3e4ac | 39 | AnalogIn V_Batt; |
Jonathan738 | 4:8afc50a3e4ac | 40 | |
Jonathan738 | 4:8afc50a3e4ac | 41 | PwmOut Channel_1; |
Jonathan738 | 4:8afc50a3e4ac | 42 | PwmOut Channel_2; |
Jonathan738 | 4:8afc50a3e4ac | 43 | PwmOut Channel_3; |
Jonathan738 | 4:8afc50a3e4ac | 44 | }; |
Jonathan738 | 3:7da9888ac8dc | 45 | |
Jonathan738 | 3:7da9888ac8dc | 46 | #endif |