Electric Locomotive control system. Touch screen driver control, includes regenerative braking, drives 4 brushless motors, displays speed MPH, system volts and power
Dependencies: BSP_DISCO_F746NG FastPWM LCD_DISCO_F746NG SD_DISCO_F746NG TS_DISCO_F746NG mbed
throttle.cpp
- Committer:
- JonFreeman
- Date:
- 2017-11-13
- Revision:
- 1:8ef34deb5177
File content as of revision 1:8ef34deb5177:
/*
This file about using model control servo to drive the throttle of Honda GX120 engine
Using a model control servo to set the throttle of Honda GX120 petrol engine
First thoughts 12 Nov 2017.
Servo driven by positive pulse of duration 1000 to 2000 micro sec. Repetition rate 50Hz
Will first try repeating in 32ms loop giving repetirion rate approx 30 Hz.
Pos pulse generated by setting to 1 in 32ms handler and starting a 'timeout'
... as part of 32ms code
if (torque_demand < 0.01) {
throttle (TICKOVER);
}
else { // got positive torque demand
throttle (MID_REVS);
}
throttle_servo_pulse_out = 1;
throttle_servo_pulse_width.attach_us (&servo_pulse_lo, global_throttle_us);
*/
#include "mbed.h"
#include "Electric_Loco.h"
static const int
SERVO_RANGE = 1000, // micro sec difference between max and min
SERVO_OFFSET = 1000, // min servo pulse width micro sec
TICKOVER = SERVO_OFFSET + 0,
MID_REVS = SERVO_OFFSET + 500,
RANGE_MULTIPLIER = SERVO_RANGE + SERVO_OFFSET - MID_REVS;
DigitalOut throttle_servo_pulse_out (D8); // now defined in throttle.cpp
Timeout throttle_servo_pulse_width;
void throttle_servo_pulse_lo () { // Interrupt handler called at end of 'Timeout'
throttle_servo_pulse_out = 0; // end servo positive pulse
}
int throttle (double torque_demand, double speed_mph) { // called from main every 31ms
int duration_us;
if (throttle_servo_pulse_out != 0)
return -1; // pulse positive already
if (torque_demand < 0.01) {
duration_us = TICKOVER;
}
else { // got positive torque demand
double tmpd = torque_demand * RANGE_MULTIPLIER;
duration_us = MID_REVS + (int) tmpd;
}
throttle_servo_pulse_out = 1; // start servo positive pulse
throttle_servo_pulse_width.attach_us (&throttle_servo_pulse_lo, duration_us);
return 0;
}
// endof New Nov 2017 Controlling throttle of Honda engine