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

Committer:
JonFreeman
Date:
Fri Aug 07 13:06:03 2020 +0000
Revision:
4:28cc0cf01570
Parent:
3:43cb067ecd00
Child:
5:6ca3e7ffc553
Ready to test Aug.2020 pcb

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JonFreeman 1:450090bdb6f4 1
JonFreeman 4:28cc0cf01570 2 #define GPS_ // Not the crap one I tried!
JonFreeman 1:450090bdb6f4 3
JonFreeman 3:43cb067ecd00 4 const double ALTERNATOR_DESIGN_VOLTAGE = 14.0; // Used to scale down max field pwm when available voltage higher than this
JonFreeman 3:43cb067ecd00 5 const double DRIVER_NEUTRAL = 0.18; // Proportion of driver's pot travel deemed to be zero power request
JonFreeman 3:43cb067ecd00 6 const uint32_t eeprom_page = 17; // Determines where in eeprom 'settings' reside
JonFreeman 3:43cb067ecd00 7 const int eeprom_page_size = 32;
JonFreeman 3:43cb067ecd00 8 const int PWM_PERIOD_US = 1800 ; // Was 2400, May want to reduce this, note would require change of resistor value on board
JonFreeman 0:77803b3ee157 9
JonFreeman 3:43cb067ecd00 10 enum {TABL0, TABL1, TABL2, TABL3, TABL4, TABL5, TABL6, TABL7, TABL8, TABL9, TABL10,
JonFreeman 3:43cb067ecd00 11 TABL11, TABL12, TABL13, TABL14, TABL15, TABL16, TABL17, TABL18, TABL19, TABL20,
JonFreeman 3:43cb067ecd00 12 WARM_UP_DELAY, WARMUP_SERVO_POS, OP_MODE, SPEED_CTRL_P, SERVO_DIR, FUT27, FUT28, FUT29, FUT30, FUT31 } ;
JonFreeman 0:77803b3ee157 13
JonFreeman 3:43cb067ecd00 14 struct sldandt {
JonFreeman 3:43cb067ecd00 15 const uint32_t min, max, de_fault; // min, max, default
JonFreeman 3:43cb067ecd00 16 const char * txt; // description
JonFreeman 3:43cb067ecd00 17 char val;
JonFreeman 1:450090bdb6f4 18 } ;
JonFreeman 1:450090bdb6f4 19
JonFreeman 3:43cb067ecd00 20
JonFreeman 3:43cb067ecd00 21 class ee_settings_2020 {
JonFreeman 3:43cb067ecd00 22 char new_settings[eeprom_page_size + 2];
JonFreeman 0:77803b3ee157 23 public:
JonFreeman 3:43cb067ecd00 24 ee_settings_2020 () ; // Constructor
JonFreeman 3:43cb067ecd00 25 int load () ;
JonFreeman 3:43cb067ecd00 26 int save () ;
JonFreeman 3:43cb067ecd00 27 char rd (uint32_t i) ;
JonFreeman 3:43cb067ecd00 28 bool wr (char c, uint32_t i) ; // Write one setup char value to private buffer 'settings'
JonFreeman 3:43cb067ecd00 29 sldandt * inform (uint32_t which) ;
JonFreeman 0:77803b3ee157 30 } ;
JonFreeman 0:77803b3ee157 31
JonFreeman 2:8e7b51353f32 32 const int MAX_PARAMS = 12; // Up from 10 May 2020
JonFreeman 3:43cb067ecd00 33 struct parameters { // Used in Command Line Interpreter, stores user input values
JonFreeman 3:43cb067ecd00 34 int32_t position_in_list, numof_dbls;
JonFreeman 1:450090bdb6f4 35 double dbl[MAX_PARAMS];
JonFreeman 1:450090bdb6f4 36 } ;
JonFreeman 0:77803b3ee157 37
JonFreeman 1:450090bdb6f4 38
JonFreeman 3:43cb067ecd00 39 /*
JonFreeman 3:43cb067ecd00 40 - Position the Cursor:
JonFreeman 3:43cb067ecd00 41 \033[<L>;<C>H
JonFreeman 3:43cb067ecd00 42 Or
JonFreeman 3:43cb067ecd00 43 \033[<L>;<C>f
JonFreeman 3:43cb067ecd00 44 puts the cursor at line L and column C.
JonFreeman 3:43cb067ecd00 45 - Move the cursor up N lines:
JonFreeman 3:43cb067ecd00 46 \033[<N>A
JonFreeman 3:43cb067ecd00 47 - Move the cursor down N lines:
JonFreeman 3:43cb067ecd00 48 \033[<N>B
JonFreeman 3:43cb067ecd00 49 - Move the cursor forward N columns:
JonFreeman 3:43cb067ecd00 50 \033[<N>C
JonFreeman 3:43cb067ecd00 51 - Move the cursor backward N columns:
JonFreeman 3:43cb067ecd00 52 \033[<N>D
JonFreeman 3:43cb067ecd00 53
JonFreeman 3:43cb067ecd00 54 - Clear the screen, move to (0,0):
JonFreeman 3:43cb067ecd00 55 \033[2J
JonFreeman 3:43cb067ecd00 56 - Erase to end of line:
JonFreeman 3:43cb067ecd00 57 \033[K
JonFreeman 3:43cb067ecd00 58
JonFreeman 3:43cb067ecd00 59 - Save cursor position:
JonFreeman 3:43cb067ecd00 60 \033[s might not work
JonFreeman 3:43cb067ecd00 61 - Restore cursor position:
JonFreeman 3:43cb067ecd00 62 \033[u might not work
JonFreeman 3:43cb067ecd00 63 */
JonFreeman 3:43cb067ecd00 64