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

Files at this revision

API Documentation at this revision

Comitter:
JonFreeman
Date:
Sat Nov 10 17:08:21 2018 +0000
Parent:
8:93203f473f6e
Child:
10:e40d8724268a
Commit message:
About to work on hand control state machine to remove need of power cycle for direction change

Changed in this revision

F401RE.h Show annotated file Show diff for this revision Revisions of this file
cli_BLS_nortos.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/F401RE.h	Sat Aug 18 12:51:35 2018 +0000
+++ b/F401RE.h	Sat Nov 10 17:08:21 2018 +0000
@@ -136,6 +136,9 @@
 //  If used as servo output, code gives pin to 'Servo' - seems to work
 InterruptIn Servo1_i    (PB_8); //  Pin 61  to read output from rc rx
 InterruptIn Servo2_i    (PB_9); //  Pin 62  to read output from rc rx
+//  *** NOTE *** Above InterruptIn Servo using PB pins seems not to work, probably due to other Port B pins used as PortOut (try PortInOut?)
+//  Nov 2018 - Yet to try using PC14, PC15, free now as 32k768 xtal not fitted
+
 
 //  Pin 63  VSS
 //  Pin 64  VDD
--- a/cli_BLS_nortos.cpp	Sat Aug 18 12:51:35 2018 +0000
+++ b/cli_BLS_nortos.cpp	Sat Nov 10 17:08:21 2018 +0000
@@ -1,4 +1,4 @@
-//  DualBLS2018_03
+//  DualBLS2018_06
 #include "mbed.h"
 #include "BufferedSerial.h"
 
@@ -295,6 +295,11 @@
     void (*f)(struct parameters &);   //  points to function
 }  ;
 
+
+/**
+struct  kb_command const loco_command_list[] = {
+List of commands accepted from external controller through opto isolated com port 9600, 8,n,1
+*/
 struct  kb_command const loco_command_list[] = {
     {"ls", "Lists available commands", menucmd},
     {"?", "Lists available commands, same as ls", menucmd},
@@ -324,6 +329,10 @@
 //const int numof_loco_menu_items = sizeof(loco_command_list) / sizeof(kb_command);
 
 
+/**
+struct  kb_command const loco_command_list[] = {
+List of commands accepted from external pc through non-opto isolated com port 9600, 8,n,1
+*/
 struct  kb_command const pc_command_list[] = {
     {"ls", "Lists available commands", menucmd},
     {"?", "Lists available commands, same as ls", menucmd},
--- a/main.cpp	Sat Aug 18 12:51:35 2018 +0000
+++ b/main.cpp	Sat Nov 10 17:08:21 2018 +0000
@@ -32,7 +32,7 @@
 */
 
 #if defined (TARGET_NUCLEO_F401RE)  //  CPU in 64 pin LQFP
-#include    "F401RE.h"
+#include    "F401RE.h"  //  See here for warnings about Servo InterruptIn not working
 #endif
 #if defined (TARGET_NUCLEO_F446ZE)  //  CPU in 144 pin LQFP
 #include    "F446ZE.h"
@@ -731,7 +731,7 @@
 void    hand_control_state_machine  ()  {
     static  int new_hand_controller_state = HAND_CONT_STATE_BEGIN;
 //    static  int old_hand_controller_state = HAND_CONT_STATE_BEGIN;
-    static  int old_hand_controller_direction = T5, t = 0;
+    static  int old_hand_controller_direction = T5, t = 0;              //  Nov 2018 confirms Rob and Quentin obs, direction read at powerup
     static  double  brake_effort, drive_effort, pot_position, old_pot_position = 0.0;
     if  (T5 != old_hand_controller_direction)   {   //  1 Forward, 0 Reverse
         pc.printf   ("Direction change! Power off then on again to resume\r\n");