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
Diff: Radio_Control_In.h
- 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