MBED Application board used to control frequency and duty cycle of injector valves

Dependencies:   mbed-rtos mbed

Committer:
iwolf32
Date:
Tue Jul 25 14:29:20 2017 +0000
Revision:
0:9b2c760c8e5c
REV1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
iwolf32 0:9b2c760c8e5c 1 // Begin sample code
iwolf32 0:9b2c760c8e5c 2 /*
iwolf32 0:9b2c760c8e5c 3 #include "mbed.h"
iwolf32 0:9b2c760c8e5c 4 #include "rtos.h"
iwolf32 0:9b2c760c8e5c 5 #include "coil-driver.h"
iwolf32 0:9b2c760c8e5c 6 // Coil parameters [control pin, spike time (us), hold time period (us), hold time pulse width (us)]
iwolf32 0:9b2c760c8e5c 7 Coil orange(A0, 500, 40, 3); // Valve driven by pin A0, 500us spike time, 25kHz PWM at 7.5% duty cycle
iwolf32 0:9b2c760c8e5c 8
iwolf32 0:9b2c760c8e5c 9 Coil yellow(A1, 5000, 40, 6); // Valve driven by pin A1, 5ms spike time, 25kHz PWM at 15% duty cycle
iwolf32 0:9b2c760c8e5c 10
iwolf32 0:9b2c760c8e5c 11 int main()
iwolf32 0:9b2c760c8e5c 12 {
iwolf32 0:9b2c760c8e5c 13 while (true) {
iwolf32 0:9b2c760c8e5c 14 orange.on();
iwolf32 0:9b2c760c8e5c 15 yellow.on();
iwolf32 0:9b2c760c8e5c 16 Thread::wait(500);
iwolf32 0:9b2c760c8e5c 17 orange.off();
iwolf32 0:9b2c760c8e5c 18 yellow.off();
iwolf32 0:9b2c760c8e5c 19 Thread::wait(500);
iwolf32 0:9b2c760c8e5c 20 }
iwolf32 0:9b2c760c8e5c 21 }
iwolf32 0:9b2c760c8e5c 22 */
iwolf32 0:9b2c760c8e5c 23 // End sample code
iwolf32 0:9b2c760c8e5c 24
iwolf32 0:9b2c760c8e5c 25 #include "coil-driver.h"
iwolf32 0:9b2c760c8e5c 26
iwolf32 0:9b2c760c8e5c 27 // Default constructor
iwolf32 0:9b2c760c8e5c 28 Coil::Coil(PinName _controlPin, uint16_t _spikeus, uint16_t _holdperiod_us, uint16_t _holdpulse_us)
iwolf32 0:9b2c760c8e5c 29 : controlOut(_controlPin),
iwolf32 0:9b2c760c8e5c 30 spikeus(_spikeus),
iwolf32 0:9b2c760c8e5c 31 holdperiod_us(_holdperiod_us),
iwolf32 0:9b2c760c8e5c 32 holdpulse_us(_holdpulse_us)
iwolf32 0:9b2c760c8e5c 33 {
iwolf32 0:9b2c760c8e5c 34 controlOut.write(0.0); // Ensure coil output is off by default
iwolf32 0:9b2c760c8e5c 35 controlOut.period_us(holdperiod_us); // PWM control period (uint16_t microseconds)
iwolf32 0:9b2c760c8e5c 36
iwolf32 0:9b2c760c8e5c 37 };
iwolf32 0:9b2c760c8e5c 38
iwolf32 0:9b2c760c8e5c 39 void Coil::on()
iwolf32 0:9b2c760c8e5c 40 {
iwolf32 0:9b2c760c8e5c 41 controlOut.write(1.0);
iwolf32 0:9b2c760c8e5c 42 wait_us(spikeus);
iwolf32 0:9b2c760c8e5c 43 controlOut.pulsewidth_us(holdpulse_us);
iwolf32 0:9b2c760c8e5c 44 }
iwolf32 0:9b2c760c8e5c 45
iwolf32 0:9b2c760c8e5c 46 void Coil::off()
iwolf32 0:9b2c760c8e5c 47 {
iwolf32 0:9b2c760c8e5c 48 controlOut.write(0.0);
iwolf32 0:9b2c760c8e5c 49 }