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 S06SC
    3. BMSBattery S12S
      1. Programming header
      2. PWM signal at max speed - sineware
      3. Phase B and motor total current signals
    4. BMSBattery bottle battery controller
    5. LCD control panel
      1. LCD protocol
    6. Kunteng mobile app
    7. Bluetooh
      1. DIY Bluetooth module
    8. How to open the controller and solder the programming header
    9. 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


  1. BMSBattery Q75
  2. BMSBattery Q85
  3. BMSBattery Q100
  4. BMSBattery Q100C
  5. Tongsheng TSDZx mid drive motors

Development tools

  1. Linux
    1. Step-by-step tutorial development tools
      1. Hardware tools to flash and debug the firmware
      2. Tools to build the firmware
        1. stm8-binutils-gdb
      3. Tools to flash the firmware
        1. How to erase and unlock protected read memory
      4. (optional) Tools to 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 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. PID algorithm - negative output values
  14. Regeneration
    1. Regen in SimonK firmware
  15. FOC
    1. Shane Colton documentation and firmware
      1. Firmware
      2. Part 1: Field-Oriented
      3. Part 2: Field-Oriented
      4. Sensorless Pneu Scooter - part 1
      5. Sensorless Pneu Scooter - part 2
      6. Sensorless Pneu Scooter - part 3
      7. Observer
        1. Sensorless - 2011.04.10
        2. Sensorless - 2011.07.05

Datasheets and application notes

  1. STM8S105C6T6
    1. Interrupts
  2. 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
    13. 2018.01.10 - How to measure FOC_READ_ID_CURRENT_ANGLE_ADJUST
    14. 2018.02.20 - Reading motor phase current from the DC link current (shunt)

Torque sensors

  1. BMSBattery torque sensor


  1. STM8S003 board
  2. 2017.12.01 - Regen ebrake like coast brakes
  3. BEMF


  1. 2017.05.22 - Hackaday Links: May 21, 2017

Smart BMS with bluetooth

So, Which PWM Technique is Best? (Part 1)

So, Which PWM Technique is Best? (Part 1)

Dave Wilson, Motion Products Evangelist, Texas Instruments
So, which PWM technique is best for your motor control application? In case you haven’t guessed, this is somewhat of a trick question. It’s kind of like asking “which ice-cream flavor is the best”, since everybody knows that the answer is obviously “chocolate chip.” There aren’t quite as many flavors of PWM as there are ice cream, but there are perhaps more of them than you realize. And which one works best for your application obviously depends on your application. So let’s spend some time over the next few blogs looking at different PWM topologies, along with their advantages and disadvantages, in an effort to pick the one that’s right for you.

For those of you who are more experienced motor control engineers, please indulge me for a moment while I set the stage for this topic. It is not possible to have a meaningful discussion about different PWM techniques without first understanding how energy transfer occurs in a motor. When studying energy transfer, we typically refer to a two dimensional speed-torque diagram as shown below, where speed is the x-axis, and torque is the y-axis.
If you multiply speed times torque, you get power. So area in the above diagram corresponds to power. The blue areas are regions where the motor power is positive (i.e., the motor is converting electrical power into mechanical power). But the red areas on the graph indicate regions where the motor power is negative (i.e., the motor is converting mechanical power into electrical power). This is where you can run into problems if you are not careful. If the motor is generating electrical power, you need to have some place for that power to go. If your application is an electric vehicle coasting down a hill, the generated electrical energy can be put to good use by charging the batteries. But if you have an electric drive which needs to stop its load abruptly, the resulting generator action can destroy the drive if there is no place to put the energy.

Some PWM topologies will inherently prevent regeneration of energy back into your electrical supply. In fact, some will only allow the motor to spin in one direction and generate torque in that same direction. These drives as you might expect are called single-quadrant drives and operate either in quadrant 1 or quadrant 3. A typical example of such a drive is shown below, where a PWM signal is applied to a single transistor. These types of motor drives are common in applications where cost is critical, such as toys, electric baby swings, and so on. The motor can only spin in one direction and generate torque in that same direction. If you try to decelerate the motor (i.e., generate negative braking torque) by lowering the duty cycle, the motor will simply coast down slowly. This is because there is no way with this configuration to create negative current in the motor. All of the kinetic energy in the spinning load is eventually dissipated as heat in the load’s friction, and none of it is converted back into electricity.
However, if you want the motor to go forward AND backward, you need to provide a way to drive the motor current in the negative direction. You could achieve this with a separate negative power supply, but this is usually cost prohibitive. A more common approach is to put the motor in an “H-Bridge” as shown below. Now you have four transistors, each capable of being switched ON and OFF independently. This allows for some rather interesting possibilities since we now have a configuration capable of operating in all four quadrants. How you switch the transistors with respect to each other will determine which power quadrants the motor will operate in.
In our next blog, we will investigate how to use the above H-Bridge configuration to create a unipolar two-quadrant drive.