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: main.cpp
- Revision:
- 15:2591e2008323
- Parent:
- 13:ef7a06fa11de
- Child:
- 16:d1e4b9ad3b8b
--- a/main.cpp Sat Nov 30 16:34:58 2019 +0000
+++ b/main.cpp Sat Nov 30 18:40:30 2019 +0000
@@ -52,10 +52,10 @@
*/
#if defined (TARGET_NUCLEO_F401RE) // CPU in 64 pin LQFP
-#include "F401RE.h" // See here for warnings about Servo InterruptIn not working
+#include "F401RE.h"
#endif
#if defined (TARGET_NUCLEO_F411RE) // CPU in 64 pin LQFP
-#include "F411RE.h" // See here for warnings about Servo InterruptIn not working
+#include "F411RE.h"
#endif
#if defined (TARGET_NUCLEO_F446ZE) // CPU in 144 pin LQFP
#include "F446ZE.h" // A thought for future version
@@ -566,9 +566,6 @@
} // 32Hz original setting for loop repeat rate
loop_flag = false; // Clear flag set by ticker interrupt handler. WHEN LAST CHECKED this was about every 32ms
- RC_chan_1.validate_rx(); // Tests for pulse width and repetition rates being believable signal from radio control
- RC_chan_2.validate_rx(); // bool return values not noted here, these 2 lines are pointless.
-
switch (mode.rd(COMM_SRC)) { // Look to selected source of driving command, act on commands from wherever
case 0: // Invalid
break;
@@ -612,6 +609,28 @@
motors_restore.attach_us (&restorer, 25);
}
#endif
+#define SERVO_OUT_TEST
+#ifdef SERVO_OUT_TEST
+// static double servo_angle = 0.0; // For testing servo outs
+ // servo out test here December 2018
+
+ // Tests for pulse width and repetition rates being believable signal from radio control
+ if (RC_chan_1.validate_rx())
+ Servo1 = RC_chan_1.normalised();
+ if (RC_chan_2.validate_rx())
+ Servo2 = RC_chan_2.normalised();
+// RC_chan_2.validate_rx();
+
+
+/*
+ servo_angle += 0.01;
+ if (servo_angle > TWOPI)
+ servo_angle -= TWOPI;
+ Servo1 = ((sin(servo_angle)+1.0) / 2.0);
+ Servo2 = ((cos(servo_angle)+1.0) / 2.0);
+*/
+ // Yep! Both servo outs work lovely December 2018
+#endif
if (flag_8Hz) { // do slower stuff
flag_8Hz = false;
@@ -637,17 +656,6 @@
pc.printf ("Temp %.2f\r\n", tmprt);
}*/
}
-//#define SERVO_OUT_TEST
-#ifdef SERVO_OUT_TEST
- static double servo_angle = 0.0; // For testing servo outs
- // servo out test here December 2018
- servo_angle += 0.01;
- if (servo_angle > TWOPI)
- servo_angle -= TWOPI;
- Servo1 = ((sin(servo_angle)+1.0) / 2.0);
- Servo2 = ((cos(servo_angle)+1.0) / 2.0);
- // Yep! Both servo outs work lovely December 2018
-#endif
} // End of if(flag_8Hz)
} // End of main programme loop
}