
MBED Application board used to control frequency and duty cycle of injector valves
Diff: coil-driver.cpp
- Revision:
- 0:9b2c760c8e5c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/coil-driver.cpp Tue Jul 25 14:29:20 2017 +0000 @@ -0,0 +1,49 @@ +// Begin sample code +/* +#include "mbed.h" +#include "rtos.h" +#include "coil-driver.h" +// Coil parameters [control pin, spike time (us), hold time period (us), hold time pulse width (us)] +Coil orange(A0, 500, 40, 3); // Valve driven by pin A0, 500us spike time, 25kHz PWM at 7.5% duty cycle + +Coil yellow(A1, 5000, 40, 6); // Valve driven by pin A1, 5ms spike time, 25kHz PWM at 15% duty cycle + +int main() +{ + while (true) { + orange.on(); + yellow.on(); + Thread::wait(500); + orange.off(); + yellow.off(); + Thread::wait(500); + } +} +*/ +// End sample code + +#include "coil-driver.h" + +// Default constructor +Coil::Coil(PinName _controlPin, uint16_t _spikeus, uint16_t _holdperiod_us, uint16_t _holdpulse_us) + : controlOut(_controlPin), + spikeus(_spikeus), + holdperiod_us(_holdperiod_us), + holdpulse_us(_holdpulse_us) +{ + controlOut.write(0.0); // Ensure coil output is off by default + controlOut.period_us(holdperiod_us); // PWM control period (uint16_t microseconds) + +}; + +void Coil::on() +{ + controlOut.write(1.0); + wait_us(spikeus); + controlOut.pulsewidth_us(holdpulse_us); +} + +void Coil::off() +{ + controlOut.write(0.0); +} \ No newline at end of file