This guide is designed to help you understand how to program your BBS motor controller, and understand how each setting affects your riding experience. In my opinion, out of the box, the BBS motors aren't tuned very well. Fortunately, programming is relatively easy and takes no time once you understand how each setting works.
PLEASE NOTE, there is the potential to brick your motor controller during flashing if you do not follow the manufacturer's instructions. This guide is intended to help you understand the process however it's provided on an as-is-where-is basis.
Motor programming software:
The software I used to program my Bafang motor is a modified version by Penoff. You can download his excellent programming software from his page or alternatively download it here
USB COM port drivers:
You may need to install the appropriate USB serial drivers in order to successfully connect to the USB programming cable. Depending on the model of cable purchased, you may need to download and install USB serial drivers. I’ve included the 2 most common driver types below, use whatever is recommended by the seller of your specific cable.
CP210 Download
CH341 Download
Connecting the cable:
1. Switch off the battery of your e-bike
2. Unplug the display cable (as shown below)
3. Connect the programming cable to the display cable (as shown below)
4.Turn on the battery of your e-bike (as shown below)
5. Plug in the programming cable to your PC
Before programming:
Before you change any settings, I highly recommend you backup the default settings. That way if you have a backup if something goes wrong with your settings
Select the COM port that your USB programming cable is connected to. Hitting the magnifying glass will automatically select the correct port.
Now click ”Connect”
Now click “Read flash” in the right bottom corner of the program.
You should now see all your settings.
Click ”File” in the left top corner of the program.
Click ”save as” and save your file at a location that you can access later if necessary.
You now have created a backup you can use later if problems occur.
Programming:
At first glance, the programming may be a little intimidating using a bunch of convoluting words that you may be confusing at first glance. Fortunately, I found the article at EDRIVENET most helpful in describing the function of each setting.
First, start the programming software and select the COM port that your USB programming cable is connected to. Hitting the magnifying glass will automatically select the correct port.
Now click ”Connect”
Now click “Read flash” in the right bottom corner of the program.
You should now see all your settings.
Basic tab
Pedal Assitance tab
Here are my preferred settings
Basic tab:
Pedal assist tab
Low Battery Protection = Once the battery reaches this voltage, it will stop any further discharge to protect the battery
Current Limit = This value (measured in Amps) sets the maximum current the motor can draw from the battery. To comply with local laws in New Zealand, when using the bike on public roads, I set the current limit at 5.7 which keeps the maximum power output below the legal 300watts (5.7A x 52V = 296.4watts peak power) However, you can set this according to your needs (just don't exceed the current you motor controller is rated for)
Assist levels 0~9 = Each assist profile can be programmed to give the rider a percentage of the maximum current limit & speed limit (you can cycle through each profile by using the + or – button on the handlebar-mounted controller). I experimented with setting different speed limits in each profile but I found it to be quite annoying and overly complicated. To simplify my riding experience, my preferred setup is to set all the profile's speed limits to 100%. Then all you have to do is decide what percentage of the current limit you assign to each profile. I opted to have each profile setup in 10% increments (for example Profile 1 is 10%, profile 2 is 20% and so on) but you could simplify it further by setting the first 4 profiles at 25%, 50%, 75% and 100%
(My preferred setup pictured below)
Speed Meter Type: External, Wheel Meter
This is the only speed sensor that works with the Bafang BBSxx, this setting is the default. So don’t change it unless you know what you are doing
Speed Meter Signal: 1
The only setting that works is 1, again default. Don’t change it unless you know what you are doing
Wheel Diameter [Inch]:
Set this setting to match your wheel diameter.
Pedal Sensor Type: DoubleSignal-24
This is the only setting that works correctly. Don’t change it unless you know what you are doing
Designated Assist Level: By Display’s Command
In order to change the number of assist levels with your display set this to ”By Display’s Command”. This is the only setting that makes sense because it’s convenient to be able to change this in the display settings.
Speed Limit: By Display’s Command
In order to change the speed limit with the help of the display you have to set this to ”By Display’s Command”. If you want the e-bike to be limited to a certain speed that cannot be changed on the display, you have to assign a certain speed to this setting. If you want the e-bike to limited to 25km/h, select 25km/h. You then can’t change the speed limit on the display of the e-bike. This can be useful depending on the laws in your area.
Start Current[%]: 10
This setting will determine how quickly the motor gets up to full power. Which will play a factor in how fast the e-bike will accelerate. I recommend 10 because then your drive train won’t be under a lot of strain as you accelerate. If you want higher acceleration you can set this value to 20 or 30 but, keep in mind your drivetrain will be under less strain during take-off with modest values.
Slow-start Mode(1-8): 4
This setting will decide how fast the current will increase when accelerating. I recommend 4, because this is a nice sweet spot. If you increase the slow start, your start will be really slow and jerky. If you decrease the slow start, you will accelerate faster but, keep in mind your drivetrain will be under less strain during take-off with modest values.
Start Degree (Signal No.): 4
This setting will decide after what number of steps the motor will start assisting. I recommend 4 because this results in a responsive system. It also is not too responsive, which is good. If you want the pedal assist to start the fastest when you just pedal a small bit, change it to 2. Changing it to 0 or 1 may cause problems, so I do not recommend it.
Work Mode (Angular Pedal Speed/wheel*10): Undetermined
Changing this setting doesn’t do anything noticeable. Leave it to default which is undetermined.
Stop Delay [x10ms]: 25
This setting will determine how fast the motor will stop assisting when you stop pedaling. If you have brakes sensors installed, I recommend 25, because it is nice that it won’t stop immediately. And if you want the motor to stop straight away, you just hit the brakes. If you don’t have brake sensors, however, set this to 10. 10 is the lowest value that will work properly.
Current Decay (1-8): 8
The lower this setting, the faster the drive unit will decrease power as you pedal faster. You don’t want the power to cut down a lot if you pedal faster, so leave this to 8.
Stop Decay [x10ms]: 0
This setting determines the amount of time the system takes to reduce the power when you stop pedaling. For safety, I recommend the motor stops assisting immediately, so I leave this setting at 0.
Keep Current[%]: 80.
This is a very important setting that determines how much effort the rider has to put in to maintain a constant speed. Lower values mean the motor does less work which saves battery but the rider has to do more work. Higher values mean the motor does more work which uses up more battery but the rider isn’t having to work so hard. Ultimately it’s a balancing act between battery usage and rider effort that you have to decide between. My preferred number was 80% since my assist levels are set at 10% increments, they already gave me good control over battery consumption.
Start Voltage [x100mV]: 11
This setting will determine the throttle response. Leave this setting to 11, changing it can give problems to the response of your throttle.
End Voltage [x100mV]: 36
This setting decides at which level the throttle will stop. If you want a wider range of control with your throttle you can set this to a maximum of 42.
Mode: Current
This setting decides whether the throttle acts as a current throttle or as a speed throttle. I recommend “current” since this is easier to calculate by your controller. If your throttle responds jerky, you can try setting this to speed.
Designated Assist Level: By Display’s Command
This will decide how many levels of throttle power you will have. I recommend this setting to be the same as the amount of pedal-assist levels. Therefore leave it at ”By Display’s Command”, then it will be the same as what is set on the display’s settings. The setting on the display will set this setting and the pedal-assist setting at the same time. So they always will be equal. Take care not to hit the throttle in too high of a gear in level 9, this can burn out your controller.
Speed Limit: 30km/h
This setting doesn’t imply that the maximum speed with the throttle is 30km/h. The speed limit is overwritten by the throttle, so you will go as fast as you want. This setting works as a sort of cruise control, If you pedal and use the throttle at the same time, the motor will cut off above 30km/h. So you can maintain that speed. So set this setting to the desired ”cruise control” speed.
Start Current [%]: 10
This setting will decide how much current the motor will immediately draw when the throttle is engaged. I do not recommend settings this higher than 10, otherwise, you risk wheelieing the bike because of the power. You also risk burning out your controller if set too high. If you have a weak drive train or IGH decrease this number even more
Thanks for this great post, i find it very interesting and very well thought out and put together. I look forward to reading your work in the future. his explanation