Index

About the project

  1. about this documentation in HTML
  2. License

Development tools

  1. Linux
    1. Step-by-step tutorial development tools
      1. Tools to build the firmware
        1. stm8-binutils-gdb
      2. Tools to flash the firmware
        1. How to erase and unlock protected read memory
      3. Hardware tools to flash and debug the firmware
      4. (optional) Tools do flash and debug the firmware
      5. (optional) Tools to debug using serial port
      6. (optional) Tools to see diffs on the source code
  2. Windows
  3. C library
  4. Other tools
    1. Battery voltage boost step-up converter

Motor controllers

  1. BMSBattery S series
    1. BMSBattery S06S
      1. S06ST (torque sensor version)
      2. S06S-BL (Bluetooth version)
      3. PWM signals
        1. very low speed - 6 steps
        2. low speed up to max speed - sineware
      4. Phase B current signal
      5. Throttle
    2. BMSBattery S12S
      1. Programming header
      2. PWM signal at max speed - sineware
      3. Phase B and motor total current signals
    3. BMSBattery bottle battery controller
    4. LCD control panel
      1. LCD protocol
    5. Bluetooh
      1. DIY Bluetooth module
    6. How to open the controller and solder the programming header
    7. Hardware mods
  2. Other controllers
    1. BMSBattery S06P
      1. various info
        1. 01
        2. 02
    2. Kunteng 18 mosfets motor controller
    3. Lishui motor controllers
      1. LSW-675
        1. Datasheets
        2. PWM signals
    4. JinHui motor controllers
  3. GreenEBikeKit

Motors

  1. BMSBattery Q75
  2. BMSBattery Q85
  3. BMSBattery Q100
  4. BMSBattery Q100C

Torque sensors

  1. BMSBattery torque sensor

Datasheets and application notes

  1. STM8S105C6T6
    1. Interrupts

Motor control

  1. Torque speed
  2. Motor control scheme of S06S controller
  3. BLDC 6 steps
  4. PWM schemes
    1. So, Which PWM Technique is Best? (Part 1)
    2. So, Which PWM Technique is Best? (Part 2)
    3. So, Which PWM Technique is Best? (Part 3)
    4. So, Which PWM Technique is Best? (Part 4)
    5. So, Which PWM Technique is Best? (Part 5)
    6. So, Which PWM Technique is Best? (Part 6)
    7. So, Which PWM Technique is Best? (Part 7)
  5. PWM control and Dead Time Insertion
  6. Low inductance motors
  7. Throttle Control Modes
  8. Phase angle FOC
  9. PWM frequency VS motor eRPM
    1. Max motor speed using FOC
    2. Kelly controllers ultra high speed
  10. Sinusoidal Control of BLDCM with Hall Sensors Based
  11. Self-Learn Hall Sensor Calibration Mode
  12. STM8S105 Alternatives
  13. Regeneration
    1. Regen in SimonK firmware

Various

  1. Endless-sphere.com forum messages
    1. 2017.04.25 - Initial forum message
    2. 2017.05.08 - First flash and debug on a dev board
    3. 2017.05.18 - First code flashing and running
    4. 2017.05.20 - more new information
    5. 2017.08.23 - SxxP versus SxxS versus LSW-675
    6. 2017.09.01 - Trying to figure out an algorithm to automatically adjust ui8_position_correction_value
    7. 2017.09.02 - How to do FOC on the BMSBattery S06S/Kunteng STM8 motor controllers
    8. 2017.09.03 - more ideas about zero crossing for FOC
    9. 2017.09.05 - measuring IQ current and manually adjusting position_correction_value
    10. 2017.09.15 - our OpenSource firmware efficiency compared to Lishui 12 FET FOC
    11. 2017.09.19 - measuring motor current
    12. 2017.10.23 - FOC and no FOC comparison
  2. STM8S003 board
  3. 2017.12.01 - Regen ebrake like coast brakes

Clipping

  1. 2017.05.22 - Hackaday Links: May 21, 2017

Smart BMS with bluetooth

2017.09.02 - How to do FOC on the BMSBattery S06S/Kunteng STM8 motor controllers


On FOC hardware, typically at least 2 phase currents are measured while on the BMSBattery S06S/Kunteng STM8 motor controllers only 1 phase current is measured. Also FOC needs processing power and we see cheap hardware using like the STM32F103 32 bits that can do the math algorithm while the STM8 8 bits can't.

I think BMSBattery S06S/Kunteng STM8 motor controllers do a kind of simplification of FOC. They can do FOC with much less resolution but that may be enough for this application where the target price of this motor controllers is ultra low. Next, I describe the way I think they achieve FOC.

The following documentation considers that you are familiar with FOC documentation.

The next image shows the 3 phase currents, phased out 120º of each other. On Kunteng STM8 motor controller, only 1 phase current is measured - let's say it is phase A (green line).
images/80-1.png
Image 01

ia = green line
ib = red line
ic = dark blue line
hall sensor signal = light blue line

On FOC hardware, typically at least 2 phase currents are measured and since the sum of the 3 phase currents are zero (ia + ib + ic = 0), the third current is calculated.

The next image shows the same current as vectors while teta is zero. Every current is placed 120º phased out of each other.
images/80-2.png
Image 2

The sum of the current values can be represented on the quadrature axis Q and Q (gray color). At the specific moment when teta is zero, ia, ib, ic D axis components results in ID component which should be the max possible value for ID amps (100%). ia, ib, ic Q axis components: ia Q is zero as ia is placed on D axis; ib Q and iC Q have the same value but opposite directions and so they cancel out -- IQ is zero amps (0%).

The next image shows the phase A current with teta 90º relative to motor rotor position - at FOC we want it to be at 90º where happens max efficiency of the motor.
images/80-3.png
Image 3

hall sensor signal = light blue line

As we can see, ID have the max value, the top of sinewave phase A current value. IQ is measured 90º compared to ID and the phase A current is 0. On FOC we want to keep/control IQ = 0 and that will mean a constant 90º of the phase current relative to motor rotor position, where happens max efficiency of the motor. ID is the value current value that we will also want to control and results of the motor torque.

The next image shows the phase A current with teta 45º relative to motor rotor position. As we can see, IQ is not zero and ID is not the max value -- motor will vibrate, make noise and asking to much current: will be very inefficient.
images/80-4.png
Image 4

The next image shows the phase A current with teta 0º relative to motor rotor position (I think motor would not even work/run on this situation). As we can see, IQ is max value and ID is zero value. With ID zero, we have zero torque meaning motor would not run, I think all the current/torque would be used to block the motor instead of making it rotating.
images/80-5.png
Image 5

Conclusion
I think we can do FOC on the BMSBattery S06S/Kunteng STM8 motor controllers by doing the following:

• please refer to image 3. On this situation, if we read phase current B on Kunteng STM8 motor controller:
◇ point B: the read value is the IQ current
◇ point A: the read value is the ID current

• to do FOC, we need:
◇ keep IQ current = 0
▪ adjust the PWM sinewave phase angle that we generate, to keep IQ at zero amps value
◇ keep ID current at the value we desire, that will result the effective motor current/torque
▪ adjust PWM duty_cycle value to keep ID at the amps value we desire