Dual Brushless Motor ESC, 10-62V, up to 50A per motor. Motors ganged or independent, multiple control input methods, cycle-by-cycle current limit, speed mode and torque mode control. Motors tiny to kW. Speed limit and other parameters easily set in firmware. As used in 'The Brushless Brutalist' locomotive - www.jons-workshop.com. See also Model Engineer magazine June-October 2019.

Dependencies:   mbed BufferedSerial Servo PCT2075 FastPWM

Update 17th August 2020 Radio control inputs completed

Revision:
11:bfb73f083009
Child:
12:d1d21a2941ef
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Radio_Control_In.h	Sat Jan 19 11:45:01 2019 +0000
@@ -0,0 +1,37 @@
+#include "mbed.h"
+#ifndef MBED_JONS_RADIO_CONTROL_IN_H
+#define MBED_JONS_RADIO_CONTROL_IN_H
+
+/**class   RControl_In
+    Jon Freeman
+    Jan 2019
+
+    Checks for __-__ duration 800-2200us
+    Checks repetition rate in range 5-25ms
+*/
+class   RControl_In         //  Class to Read servo style pwm input _____-_____
+{
+    InterruptIn pulse_in;
+    Timer   t;
+    int32_t pulse_width_us, period_us, pulse_count;
+    double  lost_chan_return_value;
+    void    RadC_rise ();
+    void    RadC_fall ();
+public:
+//    RControl_In   ()    ;       //  Default Constructor
+    RControl_In   (PinName inp) : pulse_in(inp)   {    //  Default Constructor
+        pulse_in.mode   (PullDown);
+        pulse_in.rise(callback(this, &RControl_In::RadC_rise));     // Attach handler to the rising interruptIn edge
+        pulse_in.fall(callback(this, &RControl_In::RadC_fall));     // Attach handler to the falling interruptIn edge
+        pulse_width_us = period_us = pulse_count = 0;
+        lost_chan_return_value = 0.0;
+    }   ;
+    bool        validate_rx ()  ;   //  Informs whether signal being rx'd
+    void        set_lost_chan_return_value  (double)  ; //  set what 'normalised' returns when no signal
+    uint32_t    pulsecount  ()  ;     //  will count up at frame rate when radio control all working well
+    uint32_t    pulsewidth  ()  ;
+    uint32_t    period      ()  ;
+    double      normalised  ();   //  Returns 0.0 <= p <= 1.0 or something else when rc not active
+}   ;
+
+#endif