Code for 'Smart Regulator' featured in 'Model Engineer', November 2020 on. Contains all work to August 2020 including all code described. Top level algorithm development is quite spares, leaving some work for you! Any questions - jon@jons-workshop.com
Dependencies: mbed BufferedSerial Servo2 PCT2075 I2CEeprom FastPWM
Alternator.h
00001 /******************************************************************************* 00002 DON'T FORGET TO REMOVE SOLDER LINKS SB16 AND SB18 ON L432KC BOARD 00003 *******************************************************************************/ 00004 00005 //#define GPS_ // Not the crap one I tried! 00006 00007 const double ALTERNATOR_DESIGN_VOLTAGE = 14.0; // Used to scale down max field pwm when available voltage higher than this 00008 const double DRIVER_NEUTRAL = 0.18; // Proportion of driver's pot travel deemed to be zero power request 00009 const uint32_t eeprom_page = 17; // Determines where in eeprom 'settings' reside 00010 const int eeprom_page_size = 32; 00011 const int PWM_PERIOD_US = 1800 ; // Was 2400, May want to reduce this, note would require change of resistor value on board 00012 00013 enum {TABL0, TABL1, TABL2, TABL3, TABL4, TABL5, TABL6, TABL7, TABL8, TABL9, TABL10, 00014 TABL11, TABL12, TABL13, TABL14, TABL15, TABL16, TABL17, TABL18, TABL19, TABL20, 00015 WARM_UP_DELAY, WARMUP_SERVO_POS, OP_MODE, SPEED_CTRL_P, SERVO_DIR, FUT27, FUT28, FUT29, FUT30, FUT31 } ; 00016 00017 struct sldandt { 00018 const uint32_t min, max, de_fault; // min, max, default 00019 const char * txt; // description 00020 char val; 00021 } ; 00022 00023 00024 class ee_settings_2020 { 00025 char new_settings[eeprom_page_size + 2]; 00026 public: 00027 ee_settings_2020 () ; // Constructor 00028 int load () ; 00029 int save () ; 00030 char rd (uint32_t i) ; 00031 bool wr (char c, uint32_t i) ; // Write one setup char value to private buffer 'settings' 00032 sldandt * inform (uint32_t which) ; 00033 } ; 00034 00035 const int MAX_PARAMS = 12; // Up from 10 May 2020 00036 struct parameters { // Used in Command Line Interpreter, stores user input values 00037 int32_t position_in_list, numof_dbls; 00038 double dbl[MAX_PARAMS]; 00039 } ; 00040 00041 00042 /* 00043 - Position the Cursor: 00044 \033[<L>;<C>H 00045 Or 00046 \033[<L>;<C>f 00047 puts the cursor at line L and column C. 00048 - Move the cursor up N lines: 00049 \033[<N>A 00050 - Move the cursor down N lines: 00051 \033[<N>B 00052 - Move the cursor forward N columns: 00053 \033[<N>C 00054 - Move the cursor backward N columns: 00055 \033[<N>D 00056 00057 - Clear the screen, move to (0,0): 00058 \033[2J 00059 - Erase to end of line: 00060 \033[K 00061 00062 - Save cursor position: 00063 \033[s might not work 00064 - Restore cursor position: 00065 \033[u might not work 00066 */ 00067
Generated on Fri Jul 22 2022 15:22:19 by
1.7.2