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