(1) When I read the forums on one day I think I understand what the ESC is doing, yet on another day I am confused again. How about Mr Tekin including a simple description of the basic algorithm in ONE PLACE (eg: the Tekin website) so that everyone can be referenced to. If the algorithm gets updated then everyone knows where to look (the modification history can be used to show the evolution of the algorithm). The algorithm description does not have to give away any detailed trade secrets (if any). Trawling through the forums is a major pain in the butt.
(2) Here is one suggestion for the algorithm description that might appear on the Tekin website.
An insight into the proprietary algorithm used to increase motor RPM will provide drivers with the necessary background to setup their ESC and Motor combination to their optimal values. These values will typically vary from one track to another. In this context, the Tekin ESC has several operating modes. Within each mode, the ESC can be in one or more states. Within each state, the ESC behaves in a particular manner. Therefore, the key to success is to gain a basic understanding of the ESC behaviour in each state (and the trigger which causes the transition between states).
In this context, the allowed states (within each mode) are as follows:
-- Sensored Only Mode: ------The only state is the "SensoredState".
-- Sensorless Only Mode: -----The only state is the "SensorlessState".
-- Dual Mode: ----------------The only states are the "SensoredState" and "SensorlessState".
Note that there may be other states (eg: "PowerUpBuiltInTestState", "ChangeDeviceSettingsState") which are not relevant to this discussion.
In the "SensorlessState" the ESC firmware uses an algorithm to advance the motor timing (aka "Boost"). A simplified version of the algorithm looks something like the following logic:
---- IF (Current => 50A) AND (Throttle =>75%) THEN ESC_Timing = Zero (degrees)
---- IF (Current =< 60A) AND (Throttle =>90%) THEN ESC_Timing = UserBoostSetting (degrees)
---- IF (Current =< 30A) AND (Throttle =>90%) THEN ESC_Timing = UserTurboSetting (degrees)
Note 1: This means that off the start, the car gets maximum torque, and down the straight it gets maximum timing. The best of both worlds.
Note 2: The UserBoostSetting value is set via the Hotwire User Interface (it is not available via the ESC user interface).
Note 3: This algorithm does not use motor RPM as an input, as different wind motors have different **maximum** RPM values.
Special Note 4: The UserTurboSetting is a glean in someone's eye at present.
** WARNING **
The combined UserBoostSetting + EndbellMotorTiming value must be less than 30 to 40 degrees in total. If this value is exceeded, damage may result to the motor.
Target motor temperature is between 160 and 180 degrees Fahrenheit (71 to 82 degrees Celsius). If this value is exceeded, damage may result to the motor.
In the "SensoredState" the ESC does not provide any Boost. All timing advance is via the timing on the motor itself.
In DualMode, the ESC firmware uses an algorithm to transition from the "SensoredState" to the "SensorlessState". A simplified version of the algorithm looks something like the following logic:
IF MotorRPM < ThresholdRPM
THEN CurrentState = SensoredState
ELSE CurrentState = SensorlessState
Note 1: The ThresholdRPM value is typically very small - just enough to get the car moving. The maximum RPM value (which varies from one wind motor to another) is not relevant to this value.
Note 2: The ThresholdRPM value is internal to the ESC firmware and is not modifiable by the user.
Note 3: You can move your car wheels by hand, and the ESC firmware will detect this motor RPM change.
(* Mr Tekin to modify any or all of the above as appropriate to get the correct story*)
(* I'm just making a guess-timate *)
(* The various forums have totally confused me about SensoredState and SensorlessState behaviour *)
(* Appears like States and Modes are getting confused on the forums *)
Hope this helps stimulate debate
PS: I'm happy to update this description based on any factual input.